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.ukhttp://www.cs.man.ac.uk/~seanb