- 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