From: Peter F. Patel-Schneider ([email protected])
Date: 10/09/01
From: Ian Horrocks <[email protected]>
Subject: Re: more thoughts on daml+oil.daml
Date: Tue, 9 Oct 2001 00:45:37 -0400
> On October 3, Peter F. Patel-Schneider writes:
> > It occurs to me that we could include more of the ``semantics'' of DAML+OIL
> > in daml+oil.daml. For example, we could do more with lists, perhaps
> > something like:
>
> I was under the impression that we had decided NOT to do this kind of
> thing, because it suggests some meaning that is not supported by the
> semantics. For example, in the case of lists, the restrictions are
> meaningless unless "rest" is a daml:ObjectProperty. Even if rest were
> a daml:ObjectProperty, then specifying a list with multiple "rest"
> lists would not (necessarily) lead to an inconsistency, but to the
> inference that all these lists are "equivalent" (their elements are to
> be interpreted as the same resources).
>
> What we really want to say is that lists should have a certain
> structure, and that anything else is just an error. I don't think we
> should be fostering the common misconception that this is what is
> expressed by a DAML+OIL restriction.
>
> Ian
How about the following?
My goal is to see if it is possible to capture more of the semantics of
DAML+OIL in daml+oil.daml without giving the impression that there is more
there than there really is. The idea is that daml+oil.daml should still be
valid RDF Schema, and loose nothing that was there before, but that it
should also have a DAML+OIL reading.
Note that there are a couple of substantive changes hidden in this new
version of daml+oil.daml!
peter
<!-- $Revision: 1.8 $ of $Date: 2001/10/09 $. -->
<!-- This is the official RDFS definition of the DAML+OIL constructs.
It contains no labels or comments, to reduce the amount of information
needed to define DAML+OIL. -->
<rdf:RDF
xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
xmlns ="http://www.daml.org/2001/03/daml+oil#"
>
<rdf:Description rdf:about="">
<versionInfo>$Id: daml+oil.daml,v 1.8 2001/10/09 pfps Exp $</versionInfo>
<imports rdf:resource="http://www.w3.org/2000/01/rdf-schema" />
</rdf:Description>
<!-- (meta) classes of "object" and datatype classes -->
<Class rdf:ID="Class">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</Class>
<Class rdf:ID="Datatype">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</Class>
<!-- Pre-defined thing/nothing most/least-general (object) classes. -->
<Class rdf:ID="Thing">
<sameClassAs rdf:resource="rdfs:Resource" />
<unionOf>
<List>
<first rdf:resource="#Nothing" />
<rest>
<List>
<first>
<Class>
<complementOf rdf:resource="#Nothing" />
</rdfs:Class>
</first>
<rest rdf:resource="#nil" />
</List>
</rest>
</List>
</unionOf>
</Class>
<Class rdf:ID="Nothing">
<complementOf rdf:resource="#Thing" />
</Class>
<!-- Terms for equivalence and difference. -->
<ObjectProperty rdf:ID="equivalentTo">
</ObjectProperty>
<ObjectProperty rdf:ID="sameClassAs">
<rdfs:subPropertyOf rdf:resource="#equivalentTo" />
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf" />
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#Class" />
</ObjectProperty>
<ObjectProperty rdf:ID="samePropertyAs">
<rdfs:subPropertyOf rdf:resource="#equivalentTo" />
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#subPropertyOf" />
</ObjectProperty>
<ObjectProperty rdf:ID="sameIndividualAs">
<rdfs:subPropertyOf rdf:resource="#equivalentTo" />
<rdfs:domain rdf:resource="#Thing" />
<rdfs:range rdf:resource="#Thing" />
</ObjectProperty>
<ObjectProperty rdf:ID="disjointWith">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#Class" />
</ObjectProperty>
<ObjectProperty rdf:ID="differentIndividualFrom">
<rdfs:domain rdf:resource="#Thing" />
<rdfs:range rdf:resource="#Thing" />
</ObjectProperty>
<!-- Terms for building classes from other classes. -->
<Class rdf:ID="ClassList">
<rdfs:subClassOf rdf:resource="#List">
<intersectionOf>
<List>
<first>
<Restriction>
<onProperty rdf:resource="#first">
<toClass rdf:resource="#Class">
</Restriction>
</first>
<rest>
<List>
<first>
<Restriction>
<onProperty rdf:resource="#rest">
<toClass rdf:resource="#ClassList">
</Restriction>
</first>
<rest rdf:resource="#nil">
</List>
</rest>
</List>
</intersectionOf>
</Class>
<ObjectProperty rdf:ID="unionOf">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#ClassList" />
</ObjectProperty>
<ObjectProperty rdf:ID="disjointUnionOf">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#ClassList" />
</ObjectProperty>
<ObjectProperty rdf:ID="intersectionOf">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#ClassList" />
</ObjectProperty>
<ObjectProperty rdf:ID="complementOf">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#Class" />
</ObjectProperty>
<!-- Term for building classes by enumerating their elements -->
<ObjectProperty rdf:ID="oneOf">
<rdfs:domain rdf:resource="#Class" />
<rdfs:range rdf:resource="#List" />
</ObjectProperty>
<!-- Terms for building classes by restricting their properties. -->
<Class rdf:ID="Restriction">
<rdfs:subClassOf rdf:resource="#Class" />
</Class>
<ObjectProperty rdf:ID="onProperty">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property" />
</ObjectProperty>
<ObjectProperty rdf:ID="toClass">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</ObjectProperty>
<rdf:Property rdf:ID="hasValue">
<rdfs:domain rdf:resource="#Restriction" />
</rdf:Property>
<ObjectProperty rdf:ID="hasClass">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</ObjectProperty>
<!-- Note that cardinality restrictions on transitive properties, or -->
<!-- properties with transitive sub-properties, compromise decidability. -->
<DatatypeProperty rdf:ID="minCardinality">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<DatatypeProperty rdf:ID="maxCardinality">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<DatatypeProperty rdf:ID="cardinality">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<ObjectProperty rdf:ID="hasClassQ">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</ObjectProperty>
<DatatypeProperty rdf:ID="minCardinalityQ">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<DatatypeProperty rdf:ID="maxCardinalityQ">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<DatatypeProperty rdf:ID="cardinalityQ">
<rdfs:domain rdf:resource="#Restriction" />
<rdfs:range rdf:resource="http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger" />
</DatatypeProperty>
<!-- Classes and Properties for different kinds of Property -->
<Class rdf:ID="ObjectProperty">
<rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property" />
</Class>
<Class rdf:ID="DatatypeProperty">
<rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property" />
</Class>
<!-- Terms for building and limiting Properties -->
<ObjectProperty rdf:ID="inverseOf">
<rdfs:domain rdf:resource="#ObjectProperty" />
<rdfs:range rdf:resource="#ObjectProperty" />
</ObjectProperty>
<Class rdf:ID="TransitiveProperty">
<rdfs:subClassOf rdf:resource="#ObjectProperty" />
</Class>
<Class rdf:ID="UniqueProperty">
<rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property" />
</Class>
<Class rdf:ID="UnambiguousProperty">
<rdfs:subClassOf rdf:resource="#ObjectProperty" />
</Class>
<!-- List terminology. -->
<Class rdf:ID="List">
<rdfs:subClassOf>
<Restriction #maxCardinality="1">
<onProperty rdf:resource="#first">
</Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<Restriction #maxCardinality="1">
<onProperty rdf:resource="#rest">
</Restriction>
</rdfs:subClassOf>
</Class>
<ObjectProperty rdf:ID="first">
<rdfs:domain rdf:resource="#List" />
<rdfs:range rdf:resource="#Thing" />
</ObjectProperty>
<ObjectProperty rdf:ID="rest">
<rdfs:domain rdf:resource="#List" />
<rdfs:range rdf:resource="#List" />
</ObjectProperty>
<Class rdf:ID="Empty">
<rdfs:subClassOf rdf:resource="List">
<rdfs:subClassOf>
<Restriction #cardinality="0">
<onProperty rdf:resource="#rest">
</Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<Restriction #cardinality="0">
<onProperty rdf:resource="#first">
</Restriction>
</rdfs:subClassOf>
</Class>
<Empty rdf:ID="nil">
</Empty>
<!-- A class for ontologies themselves... -->
<Class rdf:ID="Ontology">
</Class>
<rdf:Property rdf:ID="versionInfo">
</rdf:Property>
<!-- Importing, i.e. assertion by reference -->
<rdf:Property rdf:ID="imports">
</rdf:Property>
</rdf:RDF>
This archive was generated by hypermail 2.1.4 : 04/02/02 EST