W3C home > Mailing lists > Public > www-webont-wg@w3.org > September 2002

Lang: owl:ontolgy (was RE: LANG: syntactic version for imports (and other things))

From: Jim Hendler <hendler@cs.umd.edu>
Date: Thu, 12 Sep 2002 15:39:06 -0400
Message-Id: <p0511171eb9a69ccbe3fb@[]>
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 

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 rdf:ID="bar">
   <restriction ... (etc) />

<owl:class rdf:ID="baz">
   <restriction ... (etc) />

<owl:Ontology rdf:ID="OntologyName">
  <owl:ontologyDefines rdf:parsetype="collection">
     <owl:ontologyClass :foo />
     <owl:ontologyClass :bar />
     <owl:ontologyClass :baz />
   <dc:creator rdf:ID="me" />
      {other metadata}


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 

<owl:Ontology ...>
   <owl:imports URI2 />

and extend it

   <owl:Defines ...>
     <owl:ontologyClass :notInURI2>

I could include classes from other ontologies (Without importing the 
whole thing) by simply including them in my owl:ontologyDefines 
   <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">
       ... dog
       ... cat

<owl:ontology rdf:ID="Felines">
       ... lion

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.

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)
Received on Thursday, 12 September 2002 15:39:22 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:56:47 UTC