- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Tue, 24 Jul 2007 11:49:45 -0400
- To: Dave Reynolds <der@hplb.hpl.hp.com>
- Cc: RIF WG <public-rif-wg@w3.org>
> Hi Michael, > > > OK, Dave, I think I took care of your comments, so please take a look. > > Hopefully you find this version much better. > > Yes, thank you. > > I'm not sure about the introduction of the two subclasses of PRIMTYPE in > the abstract syntax and they are not described anywhere yet (unless I > missed it). I assume RIFTYPE is supposed to include rif:local and > rif:iri and XMLTYPE is supposed to include xsd:* plus rdf:XMLLiteral. > I don't object, I just don't yet understand the value of such a subdivision. I am not sure either. We are going from ebnf to asn, and due to our imperfect understanding of asn the latter sometimes looks confusing. > When we do a pass at the human readable syntax then the EBNF will need > updating. Const would presumably now be: > Const ::= ''' CONSTNAME ''' | '"' CONSTNAME '"' '^^' TYPENAME I am not sure this is correct. CONSTNAME without the ^^ is used for shorthands. This includes decimals, which are written as 1.23 and local constants, which look like 'a bc'. So, some do not have the quotes. The current doc says: "The first form is used as a shorthand for some data types, like long integers, decimals, local RIF constants, etc. The precise syntax for RIF constants is given in Section Primitive Data Types." I think it is better to leave CONSTNAME undefined here and to explain the syntax in that section on Primitive Data Types. > However, as I said before I'd rather we took a separate pass at the EBNF > concrete syntax, which is currently underspecified. If we do decide that > it is worth having a fully specified EBNF notation then we should > consider including some syntactic machinery to enable prefix declaration > and optional curie format for iris. ok --michael > Dave > -- > Hewlett-Packard Limited > Registered Office: Cain Road, Bracknell, Berks RG12 1HN > Registered No: 690597 England > > > > > > > > thanks > > --michael > > > > > >> 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 Tuesday, 24 July 2007 15:49:52 UTC