- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Fri, 20 Jul 2007 16:53:06 +0100
- To: Michael Kifer <kifer@cs.sunysb.edu>
- CC: RIF WG <public-rif-wg@w3.org>
Michael Kifer wrote:
>> Unless I'm missing something there is nothing in that section concerning
>> typed literal data values. There seems to be no mention of them in
>> either the abstract syntax or the semantics, just a list of xsd types at
>> the front. Is that material now somewhere else or is it work in
>> progress or am I just blind? [*]
>>
>> Similarly whilst the introduction says that IRIs are used to refer to
>> individuals, predicates and functions the abstract syntax doesn't yet
>> support that. [Reasonable at this stage, I'm just noting it so we don't
>> forget it.]
>
>
> Dave,
> I have now updated the document to include the discussion of the abstract data
> type in the formal/concrete syntax and semantics. Will appreciate feedback.
Thanks.
I'm not completely happy with those sections yet. I'll outline my
comments below but if you'd rather I generated some alternative draft
text sections, to be critiqued in return, then I could do so. It just
seemed preferable to agree the principles before getting too much into
word-smithing.
** Summary
My reservations are:
- treatment of rif:iri (surprise :-) )
- request for abstract syntax modifications (relates to above)
- need for XMLLiteral
and at a minor presentational level:
- separation of abstract, human-readable and XML syntax discussion?
- degree of tie in to XML Schema datatypes
- trivial terminology quibble
** Treatment of rif:iri
I'm not convinced we should be treating rif:iri as a datatype.
Setting aside rif:iri for a moment, then the set Const has subsets
Const\sub{xsd:string} etc and elements which are members of none of
those subsets. In the example:
purchase(?Buyer ?Seller book(?Author "LeRif"^^xsd:string)
USD("49"^^xsd:long))
then the Consts identified by 'purchase', 'book' and 'USD' are all of
latter category. These are simply Consts (with associated signatures
induced by context, e.g. Const(purchase) has signature p4{} as well as i{}).
As we know from previous discussions, I would like to use IRIs as the
lexical label for all of those Consts, you would like to permit both
simple strings and IRIs.
My preferred solution to this is to divide Const into three subsets:
ConstL - semantically unconstrained, labelled by simple strings
ConstW - semantically unconstrained, labelled by IRIs (w for "web")
ConstD - typed constants comprising subsets Const\sub{xsd:string} etc,
each subset constrains I\sub{C} according to the lexical-to-value
mapping of the associated datatype so that each instance denotes a fixed
semantic object.
In the abstract syntax (and thus the human and XML concrete syntaxes)
these would be distinguished.
In terms of the semantics, ConstL and ConstW place no constraints on
I\sub{C} just as for non-typed Consts at the moment.
The advantages of this are (a) it makes clear that IRIs are here just
used as identifiers, (b) it makes the treatment of constants labelled by
local-strings and those labelled by IRIs symmetric, (c) it makes it
easier for dialects to restrict the syntax to require all Consts to be
denoted by IRIs as might be desired in a dialect to support exchange of
RDF rules.
** Abstract syntax modifications
Currently the abstract syntax does not provide for datatype labelling.
The section "Syntax for Primitive Types" demonstrates a human and XML
concrete syntax for this but given the WG's decision to maintain the
asn06 abstract syntax as primary then that needs updating as well.
Given my above suggestion for treatment of IRIs then I would suggest
replacing:
[[[
class TERM
subclass Const
property name: xsd:string
]]]
by something like:
[[[
class TERM
subclass CONST
subclass ConstL
property name: xsd:string [1]
subclass ConstW
property iri: xsd:anyURI
subclass ConstD
property lex: xsd:string
property type: xsd:anyURI
]]]
In practice it would be nice to identify the subclasses by context
rather than explicit class labels so, abusing asn06 notation, an
alternative might be:
[[[
class TERM
subclass Const
subclass CONSTL
property name: xsd:string
subclass CONSTW
property iri: xsd:anyURI
subclass CONSTD
property lex: xsd:string
property type: xsd:anyURI
]]]
For the fully striped XML syntax this would imply:
<Const><name>USD</name></Const>
<Const><iri>http://example.com/ISO4217/usd</iri></Const>
<Const><lex>42</lex><type>http://www.w3.org/2001/XMLSchema#int
</type></Const>
For a prettified XML syntax this might imply something like:
<Const rif:name="USD" />
<Const rif:iri="http://example.com/ISO4217/usd" />
<Const xsi:type="xsd:int">42</Const>
For the human readable syntax this might be:
USD
<http://example.com/ISO4217/usd>
"42"^^xsd:int or 42
** XMLLiteral
To improve RDF compatibility I think we also need the datatype
rdf:XMLLiteral to be added to the list of datatypes for this dialect
(and the core).
** Presentational: separation of abstract, human-readable and XML syntax
Currently the sub-section "Syntax for Primitive Types" comes as part of
the "Concrete syntax" section but it covers more than that including
subtype relationships.
I'd be inclined to split that section up. Put the discussion on the
value spaces and subtype relationships in the earlier section "Primitive
data types" and put the discussion on human readable and XML concrete
syntax in their respective sub-sections.
If you would rather keep the material together then perhaps at least
raise it one level up the section hierarchy.
** Presentational: degree of tie in to XML Schema datatypes
The semantics section currently says:
[[[
Interpretation of primitive data types. We now explain how primitive
data types are integrated into the semantics of the basic RIF logic.
The XML Schema Part 2: Datatypes specification defines the value space
for each XML data type, including the data types such as xsd:decimal,
which are of interest to RIF. The value space is different from the
so-called lexical space. Lexical space refers to the syntax of the
constant symbols that belong to a particular primitive data type. For
instance, "1.2"^^xsd:decimal and "1.20"^^xsd:decimal are two different
constants in RIF and in the lexical space of the XML data types.
However, these two constants are interpreted by the same element of the
value space of the xsd:decimal type.
Formally, each of the XML data types supported by RIF comes with a value
space, denoted by Dtype (for instance, Dxsd:decimal), and a mapping, IC:
Consttype → Dtype. These value spaces and the corresponding mappings are
defined by the XML Schema Part 2: Datatypes specification.
]]]
Whilst that's OK the phrasing ties the discussion of the nature of
datatypes specifically to XML Schema whereas we want dialects to be able
to define other datatypes and even for this dialect I think we also need
rdf:XMLLiteral.
How about phrasing it like this:
[[[
Interpretation of primitive data types. We now explain how primitive
data types are integrated into the semantics of the basic RIF logic.
Each primitive datatype _type_ is defined by four components:
1. a non-empty set of character strings called the lexical space of d;
2. a non-empty set called the value space of d, denoted by D_type_
3. a mapping from the lexical space of d to the value space of d
IC: Const_type_ → D_type_
4. an IRI which identifies the datatype.
In the case of the datatypes xsd:long, xsd:string, xsd:decimal,
xsd:time, xsd:dateTime then the lexical space, value space, lexical to
value mapping and identifying IRI of each are defined by the XML Schema
Part 2: Datatypes specification [XSD].
Note that lexical space refers to the syntax of the constant symbols
that belong to a particular primitive data type. For instance,
"1.2"^^xsd:decimal and "1.20"^^xsd:decimal are two different constants
in RIF and in the lexical space of the XML data types. However, these
two constants are interpreted by the same element of the value space of
the xsd:decimal type.
In the case of the datatype rdf:XMLLiteral then the lexical space, value
space, lexical to value mapping and identifying IRI are all defined by
the RDF Concepts specification [XML-LITERAL].
[XSD] http://www.w3.org/TR/xmlschema-2/
[XML-LITERAL] http://www.w3.org/TR/rdf-concepts/#dfn-rdf-XMLLiteral
]]]
** Presentational: trivial quibble
In the subsection "Syntax for Primitive Types" it says:
[[[
The part of such symbols that occurs inside the double quotes is called
a _literal_ of the symbol.
]]]
could we use _lexical form_ (or something similar) instead of _literal_
there? That would tie in with the later semantics section and would
avoid further overloading of the name literal.
Hope this helps somewhat.
Dave
[1] Minor footnote: for the "name" property of ConstL I've left it as an
xsd:string, however the current concrete human readable syntax will not
work with unconstrained strings as const names (it implicitly expects
names to have no spaces and no punctuation like '(' and ')', we should
either constrain the abstract syntax, extend the concrete syntax, or
point out that the concrete human-readable syntax cannot carry all legal
instance documents.
At some point we should review the human readable syntax, it is not yet
fully specified. However, it seems like a low priority (compared to the
abstract syntax, semantics and concrete XML syntax) which is why this
comment is relegated to a footnote.
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Friday, 20 July 2007 15:53:35 UTC