- From: Jim Hendler <hendler@cs.umd.edu>
- Date: Thu, 12 Sep 2002 15:39:06 -0400
- To: "Smith, Michael K" <michael.smith@eds.com>, "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>, www-webont-wg@w3.org
Seems to me today's phone call revealed a problem. We want to be able to define an ontology as a "container" in which a set of statements lives. This doesn't necessarily imply that this container is either closed or immutable (this message doesn't want to address those issues) but rather to give you a place that makes statements about the ontology (heretofore called its metadata) and also to say what URIs are in it (not necessarily uniquely). I've been discussing this with a researcher in my lab, Bijan Parsia, and he's come up with a solution that is relatively elegant, consistent with the RDF approach to the world, and has a precedent in RSS, a widely used language. I think this is similar to what Mike Smith was talking about today with using XMLbase, but might be more RDF friendly and also a little easier to implement (since everything can stay in the graph) The idea is that we can simply extend the owl:ontology to define its classes in a manner similar to how RSS defines a channel (for those who know that) -- that is, we create an owl:ontology statement that includes a pointer to the set of URIs which it includes (could be just class definitions, could be more). This would look something like this: <rdf:RDF {namespaces} > <owl:class rdf:ID="foo"> <restriction ... (etc) /> </owl:class> <owl:class rdf:ID="bar"> <restriction ... (etc) /> </owl:class> <owl:class rdf:ID="baz"> <restriction ... (etc) /> </owl:class> <owl:Ontology rdf:ID="OntologyName"> <owl:ontologyDefines rdf:parsetype="collection"> <owl:ontologyClass :foo /> <owl:ontologyClass :bar /> <owl:ontologyClass :baz /> </owl:ontologyDefines> <dc:creator rdf:ID="me" /> {other metadata} </owl:Ontology> </rdf:RDF> The beauty of this is that I could now handle imports in various ways - I could import an entire ontology with an imports statement within this <owl:Ontology ...> <owl:imports URI2 /> and extend it <owl:Defines ...> <owl:ontologyClass :notInURI2> </owl:defines> ... <owl:Ontology> I could include classes from other ontologies (Without importing the whole thing) by simply including them in my owl:ontologyDefines collection <owl:OntologyClass cyc:dog> and I get for free some new properties that seem quite desirable - in particular, I could create multiple ontologies in a document by including pointers to different subsets <owl:ontology rdf:ID="Pets"> ... <owl:ontologyDefines> ... dog ... cat </owl:ontologyDefines></owl:ontology> <owl:ontology rdf:ID="Felines"> ... <owl:ontologyDefines> ... lion cat tiger </owl:ontologyDefines></owl:ontology> I think that version info could also be handled in here, although still working on details. I also think this works syntactically whether we put ontologies into the domain of discourse or not -- I personally wouldn't prefer to, but could go either way. -JH p.s. For the RDFS fans, the owl:ontologyDefines would be invertible into rdfs:isDefinedBy statements - which is a nice bonus. p.p.s. If we really want to get fancy, we could let the owl:ontologyDefines statement be any RDF collection, meaning an ontology designer could use either a collection, making it closed, or a bag, making it open - thus letting the user have some ability to control how extensible the solution is. -- Professor James Hendler hendler@cs.umd.edu Director, Semantic Web and Agent Technologies 301-405-2696 Maryland Information and Network Dynamics Lab. 301-405-6707 (Fax) Univ of Maryland, College Park, MD 20742 240-731-3822 (Cell) http://www.cs.umd.edu/users/hendler
Received on Thursday, 12 September 2002 15:39:22 UTC