a few issues with daml+oil+concrete (XMLSchema Datatypes)

Looking over the proposed daml+oil+concrete system [1] with an eye
towards implementing some of it, I noticed a few minor problems I have
not seen mentioned on the list.   I hope I haven't misunderstood
anything too badly.

1.  The references to XML Schema objects do not follow the spec [5]
    which mandates the use of xpointer.  I understand this mandate
    might change, so maybe this difference is intended.  In my
    examples below, I'll try to do things the way I understand the
    spec to require.  (Of course this syntax breaks some of the tools
    I used to check my RDF.  Ugh.)

2.  The proposal treats datatypes as if they were the classes which
    conventionally have the same name (eg "integer"), but according to
    the XMLSchema spec, they are not.  For example, [2] contains:

   <rdfs:Class rdf:ID="NonNegativeInteger">
     <rdfs:subClassOf rdf:resource="http://www.w3c.org/xml/xmlschema#integer"/>
   </rdfs:Class>

    and [3] contains:

    <daml:ConcreteProperty rdf:ID="shoesize">
       <rdfs:range rdf:resource="xsd:decimal"/>
    </daml:ConcreteProperty>

    which both seem to be treating these XMLSchema datatypes (integer
    and decimal, respectively) as if they were the classes of numbers.

    But the XML Schema Datatypes spec [4] says that "a datatype is a
    3-tuple, consisting of a) a set of distinct values, called its
    value space, b) a set of lexical representations, called its
    lexical space, ..."  

    So the correct form needs to introduce another property connecting
    the class of objects in the value space with the datatype.   It
    might look like this:

    <!-- #Integer is something which has a "datatype" of integer  -->
     <rdfs:Class rdf:ID="#Integer">
      <datatype 
      resource='http://www.w3.org/2000/10/XMLSchema#xpointer(id("integer"))' />
    </rdf:Description>

    <rdfs:Class rdf:ID="NonNegativeInteger">
      <rdfs:subClassOf rdf:resource="#Integer">
    </rdfs:Class>

    and

    <daml:ConcreteProperty rdf:ID="shoesize">
       <rdfs:range rdf:resource='#Integer' />
    </daml:ConcreteProperty>

    We can solve this easily for the standard datatypes by putting all
    the classes in some ontology, publishing the classes you've been
    using (and using a nicer identifier syntax).  But the distinction
    doesn't go away as long as people keep using xsd:schema to make new
    datatypes.

3.  Using the property rdf:value to link from a point in the value
    space (eg 10) to a point in the lexical space (eg "10") seems
    completely backwards.   That's saying:

          the number 10 has a value which is the string "10"

    when the correct form (IMHO) is

          the number 10 has a lexical representation which is the 
          string "10"

    I know rdf:value is given in RDF M&S, but that doesn't make it
    right.  We need a property lexicalRepresentation (and probably
    canonicalLexicalRepresentation) to be clear here.  (One might
    possibly consider rdf:value an inverse property of those, but I
    think that's too vague to bother with.)

   -- Sandro Hawke

[1] http://www.cs.man.ac.uk/~horrocks/daml+oil/Datatypes/datatypes.html
[2] http://www.cs.man.ac.uk/~horrocks/daml+oil/Datatypes/daml+oil+concrete.daml
[3] http://www.cs.man.ac.uk/~horrocks/daml+oil/Datatypes/daml+oil+concrete-ex.daml
[4] http://www.w3.org/TR/xmlschema-2/#typesystem
[5] http://www.w3.org/TR/xmlschema-2/#schema   (and scroll down a little)

Received on Thursday, 15 February 2001 23:11:09 UTC