XML datatypes

Some thoughts about integrating XML datatypes with OWL

DAML+OIL currently makes the distinction between ObjectProperties and
DatatypeProperties.

XML Schema makes the distinction between ComplexTypes and SimpleTypes.

Roughly speaking the XML lexical space of a SimpleType is a restriction on a
character string e.g. xsd:string. The lexical space of a ComplexType is a
piece of XML itself.

XML Schema further distinguishes between "local" and "global" types. A local
type is context dependent. Looking through various DAMLs at
http://www.daml.org I notice the following idiom:

<Property rdf:ID="name">
    <rdfs:domain="#book"/>
    ...
</Property>

<Property rdf:ID="name">
    <rdfs:domain="#article"/>
    ...
</Property>

This looks to me like a desire to have something like "local" properties in
DAML, yet isn't legal RDF -- values of an rdf:ID must be unique.

This is a real issue. The solution is to use a hierarchical naming space
(within an ontology) rather than a global space per ontology. For example
the path specifiers:

myont:book/name
myont:article/name

corresponding to the URIs:

http://example.org/myont#book/name
http://example.org/myont#article/name

"bind" the "name" property to the class "book" or "article", much as a local
XML schema declaration.

Back to the ObjectProperty vs. DatatypeProperty: it is not entirely clear to
me that there _need be_ this distinction: Both ObjectProperties ala
ComplexTypes and DatatypeProperties ala SimpleTypes might indicate XML
Schema (or XQuery) datatypes.

For example (I hope I am expressing this in an intelligible fashion !): The
intention is to say that the Property "person.name" has a value of the
indicated type "PersonName" which has the properties:
{family,given,middle,prefix, suffix}. This property "person.name" is the
"same as" a property whose range is the XML Schema type "myxsd:person.name".
By such a mechanism we would have the ability to infer based on D+O/OWL
descriptions as well as provide the syntactic constraints of XML
schema/XQuery

<Property rdf:ID="person.name">
        <samePropertyAs>
                <DatatypeProperty>
                        <rdfs:range rdf:resource="myxsd:person.name"/>
                </DatatypeProperty>
        </samePropertyAs>
        <rdfs:range>
            <Class>
                 <subClassOf>
                      <Restriction>
                           <onProperty rdf:resource="#family"/>
                           <toClass rdf:resource="#string"/>
                      </Restriction>
                 </subClassOf>
                 <subClassOf>
                      <Restriction>
                           <onProperty rdf:resource="#given"/>
                           <toClass rdf:resource="#string"/>
                      </Restriction>
                 </subClassOf>
                 <subClassOf>
                      <Restriction>
                           <onProperty rdf:resource="#middle"/>
                           <toClass rdf:resource="#string"/>
                      </Restriction>
                 </subClassOf>
                ...
            </Class>
        </rdfs:range>
</Property>

Jonathan

Received on Tuesday, 12 March 2002 16:41:20 UTC