owl:Ontology and imports

To widen the imports discussion a bit, we're a little confused about
what do with the following situations. Remember that what we're
trying to do is build some application support for OWL models,
which effectively involves producing a structure that implements
something that looks very like the abstract syntax. So an ontology
has a bunch of classes, properties and individuals in it and these
have various definitions etc. In order to cope with the fact that
we can have triples that say things like:

x rdf:type owl:Ontology

in an ontology, we also need to record information about
ontologies. So take the following example:

Case 1:

URL A:
--------------
A rdf:type owl:Ontology
B rdf:type owl:Ontology
C rdf:type owl:Ontology
B owl:imports C

What do we do here? Well, I can see that we probably want to record
the fact that A has some reference to the ontologies B and C, and
that within this context there's an assertion that B imports C.
But does it have an operational semantics with respect
to A? Are there any triples that I have to fetch now ?

Case 2:

URL A:
-------------------
A rdf:type owl:Ontology
B rdf:type owl:Ontology
C rdf:type owl:Ontology
B imports C
A imports B

According to the specification we will have to import everything that we
can find at B. If we have to import everything that we can find at C as
well (which I assume is the case), then there are some additional
operational semantics here.

There are also some round tripping/import issues connected to the use
of owl:Ontology.

Say I state
<owl:Ontology rdf:about="">
               <owl:imports rdf:resource="X" />
</owl:Ontology>

in file A:

after parsing we have a triple saying
<A, rdf:type, owl:Ontology>

Now if I deserialize it again into a new file, say B, what should I do
write?

<A, rdf:type, owl:Ontology>
or
<B, rdf:type, owl:Ontology>
or
<owl:Ontology rdf:about="">

There is no way to tell the correct intention. If I change it to B,
the imports breaks since triples are not connected in any way if they
share the same subject. So I might end up with a triple

<A, imports, C>

in file/URL B

The imports problems boil down again to RDF since the file (not the
RDF model) imports another file/URL. So it is meta-information outside
the RDF model which itself constitutes the ontology. The same is true
for the Ontology meta-information, which should talk about the model
URL.

In KAON, inclusion was realised a completely different way, by writing
inclusion as a XML preprocessor statement. One can then enforce the
deserialization of imported entities before the particular RDF file is
deserialized.

  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE rdf:RDF (View Source for full doctype...)>
  <?include-rdf
logicalURI="http://kaon.semanticweb.org/2001/11/kaon-root"?>
  <?model-attribute key="OIModel.version" value="206"?>
  <rdf:RDF xml:base="http://kaon.semanticweb.org/kaon/server/component"
           xmlns:kaon="http://kaon.semanticweb.org/2001/11/kaon-lexical#"
           xmlns:a="http://kaon.semanticweb.org/kaon/server/component#"
           xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
    ....
   </rdf:RDF>


Cheers,

	Sean & Raphael

-- 
Sean Bechhofer
seanb@cs.man.ac.uk
http://www.cs.man.ac.uk/~seanb

Received on Thursday, 20 February 2003 11:25:48 UTC