LANG: owl:import - Two Proposals

As requested at yesterday's telecon, I have prepared two proposals for
adding imports to OWL. Both of these proposals describe syntax,
semantics and pros and cons.

Proposal #1
The imports syntax is outside of the RDF domain of discourse. This is
accomplished by having imports (and versioning) information be declared
outside of RDF. In particular, there is an owl:Ontology tag that wraps
all OWL ontologies. The content of this tag is import and versioning
tags followed by the RDF content of the ontology. This has the nice side
effect that the content of an ontology is finally nested within an
ontology element.

Here's an example:

<owl:Ontology xmlns="...">
   <!-- multiple imports are allowed in separate elements -->
   <owl:imports resource="..." />
   <owl:imports resource="..." />
   <owl:priorVersion version="..." />
   <owl:backCompatWith version="..." />

        <!-- all of our class and property statements go here -->

Thus, RDF parsers can just ignore the surrounding XML content and still
get "partial understanding" of it. OWL tools can use this extra
information in whatever ways are deemed fit for OWL. Note that this
is a perfectly valid use of RDF according to both the current
recommendation and the new syntax under consideration by RDF Core.

OWL data documents can also import ontologies using the following

<owl:Data xmlns="...">
   <!-- multiple imports are allowed in separate elements -->
   <owl:imports resource="..." />
   <owl:imports resource="..." />
        <!-- all of the RDF statements go here -->

If an OWL document A contains an imports tag for document B, then if
B OWL entails P, then A OWL entails P. This could
be implemented by simply merging the graph of B with that of A,
and applying the OWL semantics to the merged graph.

- Any potential misuse of imports is syntactically prohibited

- Solution extends nicely to accommodate ontology versioning information

- Having the contents of an ontology enclosed by the <Ontology> tags is
very intuitive

- Syntax is acceptable to most existing RDF parsers

- Imports and versioning information actually describe the graph (which
cannot be represented in RDF itself, since RDF does not provide the
ability to make statements about graphs)

- Can't access imports and versioning information from within RDF.

Proposal #2
The imports syntax is in the domain of discourse of RDF, but not OWL.
Essentially we have a class called owl:Ontology and a property
owl:imports which can hold between a pair of Resources. Statements
are made about the current document using an empty URI reference
(this assumes that this expands to the current URI context).
The meaning of any statements which include
owl:imports as a subject or object is undefined. Syntactically, this
approach is the same as that of DAML+OIL. For example:

<rdf:RDF xmlns="..." ...>
<owl:Ontology about="">
  <owl:imports resource="..." />
  <owl:imports resource="..." />

<!-- all class and property statements go here -->


Data documents can imports other documents with the following variation
of the syntax:

<rdf:RDF xmlns="..." ...>
<rdf:Description about="">
  <owl:imports resource="..." />
  <owl:imports resource="..." />

<!-- all other RDF statements go here -->


As far as RDF is concerned, owl:Ontology is just another class, and
owl:imports is just another property. The following triples are
defined in the OWL namespace:

owl:Ontology rdf:type rdfs:Class
owl:imports rdf:type rdf:Property
owl:imports rdfs:domain rdfs:Resource
owl:imports rdfs:range rdfs:Resource

In OWL, any other statements which include owl:Ontology or owl:imports
as a
subject or object are undefined. The semantics are as follows:

If a graph contains a triple of the form:

A owl:imports B

then graph A entails P iff the merge of graphs A and B entail P 
(where merge is as defined in the draft RDF model theory [1]).

- It is possible to query an RDF graph to obtain information about
what resources are ontologies and which ontologies import others.

- Having valid syntax that has undefined semantics may lead to reduced
interoperability. In particular, some users may build ontologies that
rely on the arbitrary decisions made by their favorite tool vendors.

- It is unclear what it should mean if a document C contains the
statement A owl:imports B. Should this be another undefined construct?
If so, how can you determine from a graph if the subject of an imports
statement is the URI of the document from which the imports statement

- The fact that an ontology's classes and properties do not occur
between the <Ontology> tags is unintuitive

- The use of about="" to make statements about the enclosing document
seems like a hack. In particular is seems like we could be confusing the
notion of a document that describes an ontology and the concept of an
ontology itself. 

- The approach only partially succeeds in its goals, because although it
represents ontologies and their properties, it loses the ability to
recognize the boundaries of an ontology (i.e., what it contains) as soon
as two or more graphs are merged together. In particular, if this
approach is extended for use with versioning, then we lose the ability
to know which statements come from which version of an ontology.

Implicit in both of these proposals is that if an ID is mentioned
without importing the ontology from which it comes, then the statements
of the ontology are NOT necessarily entailed.

Given the pros and cons of each proposal, I have a strong preference for
proposal #1, but could live with proposal #2 if the WG was certain that
its benefits outweighs its numerous costs.



Received on Friday, 27 September 2002 11:06:03 UTC