From: Frank van Harmelen ([email protected])
Date: 01/09/01
Deborah Mcguinness wrote: > The namespace error in this document results from the default > namespace being set to the daml+oil URI instead of the daml+oil-ex > URI. > [...] > I suggest that the error be corrected by changing the default > namespace to the URI of daml+oil-ex.daml. In addition, any > usage of resources defined in daml+oil.daml should specifically use > the daml namespace. Jessica, Thanks for spotting this and providing us with a fix. I will update the running copy of daml+oil-ex.daml as you suggested, but have two worries: [1] Stefan, how come your parser didn't spot this?, and [2] Now there is pretty much no unqualified symbol in sight in the entire document, and it's beginning to look pretty ugly. Do namespaces have a habit of always getting in the way? > > I have implemented this solution below. > ---------------------------------------- > > <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 ="http://www.daml.org/2000/12/daml+oil-ex#" > xmlns:daml="http://www.daml.org/2000/12/daml+oil#" > > > > <daml:Ontology rdf:about=""> > <daml:versionInfo>$Id: daml+oil-ex.daml,v 1.1 2001/01/02 18:44:47 mdean Exp $</daml:versionInfo> > <rdfs:comment>An example ontology</rdfs:comment> > <daml:imports rdf:resource="http://www.daml.org/2000/12/daml+oil"/> > </daml:Ontology> > > <rdfs:Class rdf:ID="Animal"> > <rdfs:label>Animal</rdfs:label> > <rdfs:comment> > This class of animals is illustrative of a number of ontological idioms. > </rdfs:comment> > </rdfs:Class> > > <!-- FvH: moved cardinality restriction on parent "out of line" --> > <!-- to simplify first class def + to illustrate out-of-line statements --> > > <rdfs:Class rdf:ID="Male"> > <rdfs:subClassOf rdf:resource="#Animal"/> > </rdfs:Class> > > <rdfs:Class rdf:ID="Female"> > <rdfs:subClassOf rdf:resource="#Animal"/> > <daml:disjointWith rdf:resource="#Male"/> > </rdfs:Class> > > <rdfs:Class rdf:ID="Man"> > <rdfs:subClassOf rdf:resource="#Person"/> > <rdfs:subClassOf rdf:resource="#Male"/> > </rdfs:Class> > > <rdfs:Class rdf:ID="Woman"> > <rdfs:subClassOf rdf:resource="#Person"/> > <rdfs:subClassOf rdf:resource="#Female"/> > </rdfs:Class> > > <rdf:Property rdf:ID="parent"> > <rdfs:domain rdf:resource="#Animal"/> > </rdf:Property> > > <!-- FvH: changed range of father to Male --> > <!-- made exposition easier (and makes more sense in the example as well) --> > > <rdf:Property rdf:ID="father"> > <rdfs:subPropertyOf rdf:resource="#parent"/> > <rdfs:range rdf:resource="#Male"/> > </rdf:Property> > > <!-- FvH: changed cardinality restrictions everywhere to alternative RDF notation to avoid exposed content --> > > <rdfs:Class rdf:ID="Person"> > <rdfs:subClassOf rdf:resource="#Animal"/> > <daml:restrictedBy> > <daml:Restriction> > <daml:onProperty rdf:resource="#parent"/> > <daml:toClass rdf:resource="#Person"/> > </daml:Restriction> > </daml:restrictedBy> > <daml:restrictedBy> > <daml:Restriction daml:cardinality="1"> > <daml:onProperty rdf:resource="#father"/> > </daml:Restriction> > </daml:restrictedBy> > </rdfs:Class> > > <rdfs:Class rdf:about="#Animal"> > <rdfs:comment> > Animals have exactly two parents, ie: > if x is an animal, then it has exactly 2 parents (but NOT vice versa). > </rdfs:comment> > <daml:restrictedBy> > <daml:Restriction daml:cardinality="2"> > <daml:onProperty rdf:resource="#parent"/> > </daml:Restriction> > </daml:restrictedBy> > </rdfs:Class> > > <!-- FvH: used spouse as an example of a maxcardinality constraint --> > > <rdfs:Class rdf:about="#Person"> > <daml:restrictedBy> > <daml:Restriction daml:maxcardinality="1"> > <daml:onProperty rdf:resource="#spouse"/> > </daml:Restriction> > </daml:restrictedBy> > </rdfs:Class> > > <!-- FvH: introduced FullTimeOccupation as an example of a qualified cardinality constraint --> > > <rdfs:Class rdf:about="#Person"> > <daml:restrictedBy> > <daml:Restriction daml:maxcardinalityQ="1"> > <daml:onProperty rdf:resource="#occupation"/> > <daml:hasClassQ rdf:resource="#FullTimeOccupation"/> > </daml:Restriction> > </daml:restrictedBy> > </rdfs:Class> > > <!-- FvH: modifed range of mother to be female (similar to range of father = male) --> > > <daml:UniqueProperty rdf:ID="mother"> > <rdfs:subPropertyOf rdf:resource="#parent"/> > <rdfs:range rdf:resource="#Female"/> > </daml:UniqueProperty> > > <rdf:Property rdf:ID="child"> > <daml:inverseOf rdf:resource="#parent"/> > </rdf:Property> > > <daml:TransitiveProperty rdf:ID="ancestor"> > <rdfs:label>ancestor</rdfs:label> > </daml:TransitiveProperty> > > <daml:TransitiveProperty rdf:ID="descendant"/> > > <rdf:Property rdf:ID="mom"> > <daml:samePropertyAs rdf:resource="#mother"/> > </rdf:Property> > > <rdfs:Class rdf:ID="Car"> > <rdfs:comment>no car is a person</rdfs:comment> > <rdfs:subClassOf> > <rdfs:Class> > <daml:complementOf rdf:resource="#Person"/> > </rdfs:Class> > </rdfs:subClassOf> > </rdfs:Class> > > <!-- @@CAVEAT: daml:collection is an extension of RDF 1.0 syntax; > don't expect existing tools to support it. > @@TODO: specify how it works, implement it. --> > > <!-- FvH: added example of pairwise Disjoint set of classes --> > > <!-- JSJ: Changed the Class references below from begin tags > empty tags. --> > > <daml:Disjoint parseType="daml:collection"> > <rdfs:Class rdf:about="#Car"/> > <rdfs:Class rdf:about="#Person"/> > <rdfs:Class rdf:about="#Plant"/> > </daml:Disjoint> > > <rdfs:Class rdf:about="#Person"> > <rdfs:comment>every person is a man or a woman</rdfs:comment> > <daml:disjointUnionOf parseType="daml:collection"> > <rdfs:Class rdf:about="#Man"/> > <rdfs:Class rdf:about="#Woman"/> > </daml:disjointUnionOf> > </rdfs:Class> > > <rdfs:Class rdf:ID="TallMan"> > <daml:intersectionOf parseType="daml:collection"> > <rdfs:Class rdf:about="#TallThing"/> > <rdfs:Class rdf:about="#Man"/> > </daml:intersectionOf> > </rdfs:Class> > > <!-- FvH: introduced MarriedPerson to illustrate idiomatic use of intersectionOf for biconditional definitions --> > > <rdfs:Class rdf:ID="MarriedPerson"> > <daml:intersectionOf parseType="daml:collection"> > <rdfs:Class rdf:about="#Person"/> > <daml:Restriction daml:cardinality="1"> > <daml:onProperty rdf:resource="#spouse"/> > </daml:Restriction> > </daml:intersectionOf> > </rdfs:Class> > > <!-- FvH: introduced example for sameClassAss --> > > <rdfs:Class rdf:ID="HumanBeing"> > <daml:sameClassAs rdf:resource="#Person"> > </rdfs:Class> > > <Person rdf:ID="Adam"> > <rdfs:label>Adam</rdfs:label> > <rdfs:comment>Adam is a person.</rdfs:comment> > </Person> > > <rdf:Property rdf:ID="height"> > <rdfs:range rdf:resource="#Height"/> > </rdf:Property> > > <rdfs:Class rdf:ID="Height"> > <daml:oneOf parseType="daml:collection"> > <Height rdf:ID="short"/> > <Height rdf:ID="medium"/> > <Height rdf:ID="tall"/> > </daml:oneOf> > </rdfs:Class> > > <!-- TallThing is EXACTLY the class of things whose height is tall --> > > <rdfs:Class rdf:ID="TallThing"> > <daml:sameClassAs> > <daml:Restriction> > <daml:onProperty rdf:resource="#height"/> > <daml:hasValue rdf:resource="#tall"/> > </daml:Restriction> > </daml:sameClassAs> > </rdfs:Class> > > <!-- @@ need example of hasClass qualification --> > > <!-- @@ example of subProperty, label, comment, etc. from RDF/RDFS --> > > </rdf:RDF>
This archive was generated by hypermail 2.1.4 : 04/02/02 EST