- From: Bijan Parsia <bparsia@cs.man.ac.uk>
- Date: Thu, 29 Nov 2007 14:19:56 +0000
- To: OWL WG <public-owl-wg@w3.org>
(I never get official actions. Bleah.)
This is to kick off discussion of owl:imports. Imports was a
controversial feature in the WebOnt Working Group (being subject to
some formal objections) and are somewhat confusing (something I
believed about them for a long time was just revealed to me to have
been totally wrong; i.e., I presumed partially based on tool behavior
that imports were location based). Furthermore, since OWL went rec,
there have been other developments (including XInclude)
====OWL 1.0====
Looking at the normative statements about owl:imports in OWL 1.0
<http://www.w3.org/TR/owl-semantics/>:
From section 2.1:
There are also several built-in ontology properties; they are
owl:imports, owl:priorVersion, owl:backwardCompatibleWith, and
owl:incompatibleWith. Ontology annotations that use owl:imports have
the extra effect of importing the target ontology.
[[This is in a normative section but seems to be informative.]]
And from 3.4:
Aside from this local meaning, an owl:imports annotation also
imports the contents of another OWL ontology into the current
ontology. The imported ontology is the one, if any, that has as name
the argument of the imports construct. (This treatment of imports is
divorced from Web issues. The intended use of names for OWL
ontologies is to make the name be the location of the ontology on the
Web, but this is outside of this formal treatment.)
[[This is the normative claim about imports in the direct semantics.
Note that this is a *name based* account, though the suggestion is
that it is location oriented with names being locations. In practice,
I think it's often location oriented with no "name checking".]]
From 5.3:
Definition: Let K be a collection of RDF graphs. K is imports closed
iff for every triple in any element of K of the form x owl:imports
u . then K contains a graph that is the result of the RDF processing
of the RDF/XML document, if any, accessible at u into an RDF graph.
The imports closure of a collection of RDF graphs is the smallest
import-closed collection of RDF graphs containing the graphs.
[[This seems entirely location based! Thus, location based behavior
is, perhaps, legal, but in OWL Full. Bleargh!]]
From section 2.1, we should note, that ontology ids are optional. By
2.1 and 3.4 these would be unimportable in OWL DL (at least), but
importable under OWL Full (assuming you had them accessible at the
appropriate URI).
====OWL 1.1====
From <http://www.w3.org/2007/OWL/wiki/Syntax>
From section 3:
In OWL 1.0, owl:imports was a special annotation URI, which denotes
that an ontology imports another ontology. In OWL 1.1, imports are
not ontology annotations, but are a separate primitive, as discussed
next; the owl:imports annotation property has no built-in meaning.
Each ontology contains a possibly empty set of import declarations.
An ontology O directly imports an ontology O' if O contains an import
declaration whose value is the ontology URI of O'. The relation
imports is defined as a transitive closure of the relation directly
imports. The axiom closure of an ontology O is the smallest set
containing all the axioms of O and of all ontologies that O imports.
Intuitively, an import declaration specification states that, when
reasoning with an ontology O, one should consider not only the axioms
of O, but the entire axiom closure of O.
[[Clearly name based.]]
This is the only mention I could find.
==== Tool Behavior ====
[[Test case infrastructure needs reaching critical!!! Can we settle
this soonish?]]
The only existing test I could find was:
http://www.w3.org/TR/owl-test/byFunction#function-imports
I was not able to find any import level tests:
http://www.w3.org/TR/owl-test/#testImportLevel
[[Pointers to more tests welcome.]]
You can run the test in Pellet (at least) with the following command
line invocation (on macs/unix):
./pellet.sh -if http://www.w3.org/2002/03owlt/imports/premises001 -c
TREE -r -cf http://www.w3.org/2002/03owlt/imports/conclusions001 -s OFF
This will show Socrates in the class hierarchy under Man and will
confirm the entailment ("Entailed: Yes")
I created two test cases for imports level:
[1] http://www.cs.man.ac.uk/~bparsia/owl/tests/testImports1.owl
[2] http://www.cs.man.ac.uk/~bparsia/owl/tests/testImports2.owl
Which import the exact same file from two different URIs:
[3] http://www.cs.man.ac.uk/~bparsia/owl/tests/testImported1.owl
[4] http://www.cs.man.ac.uk/~bparsia/owl/tests/testImported2.owl
The argument to the owl:imports statement is [3] and [4]
respectively, but the ontology in each is named [3] only.
Thus, [1] should be in OWL Lite. [2] should be in OWL Full (assuming
no errors on my part). The WonderWeb validator[A] reports them both
as Lite. As does the venerable online pellet demo[B]. Pellet 1.5.1
cmd line reports the same.
One could modify the tests to have non-empty imported to see whether
they, in spite of species issues, do the imports anyway.
Protege4 (webstart edition[C]) will load [3] when [1] is loaded, but
will list [4] as not loaded by [3]. This is correct OWL 1.1 and OWL
DL behavior, but not OWL Full behavior. I regard it as rather
undesirable.
I've not made tests with multiple ontology elements (with different
URIs).
==== Related Work ====
Since OWL 1.0 went to rec, XInclude has also gone to rec:
http://www.w3.org/TR/xinclude/
We may want to allow this as an alternative (or replacement), or to
use it in the XML syntax.
In XML Schema, the schemaLocation attribute provides (multiple) hints
on where to find the schema:
http://www.stylusstudio.com/w3c/schema0/schemaLocation.htm
So, we could give a name/location pair as the value, e.g.,
<owl:Ontology>
<owl:imports>
http://www.cs.man.ac.uk/~bparsia/owl/tests/testImported1.owl
http://www.cs.man.ac.uk/~bparsia/owl/tests/testImported2.owl
</owl:imports>
(the first uri is the name, the second the location). I modeled this
on the schemaLocation use of space delimited pairs, but we could have
a more complex object.
Some W3C specs have an "inclusion/importing" distinction which
generally has to do with visibility of elements. That's probably not
relevant.
==== Conclusion ====
Some clean up is definitely needed. OWL 1.1 loses some functionality
over OWL 1.0 (even if it is a full feature). At least some DL tools
use OWL Full semantics for imports (i.e., location based importing).
I personally don't see the value of name based importing in the
absence of a hinting mechanism...and even then, the identity
conditions of "ontologies" (as opposed to documents) are pretty weak.
There's a lot of recent work on segmenting ontologies, so some sort
of solution for that, or at least hooks for solutions, would be
nice. One could define an XPointer scheme a la [D], or just work
with structured values of imports statements, e.g.,
<owl:Ontology>
<owl:imports>
<owl:ImportsManifest>
<owl:fromOntNamed><owl: Ontology rdf:about="http://
www.cs.man.ac.uk/~bparsia/owl/tests/testImported1.owl"></>
<owl:LocationHints>....</>
<upwardModuleForSignature>...list of terms...</>
</owl:ImportedOntology>
</owl:imports>
This discharges an action I was not assigned :)
Cheers,
Bijan.
[A] http://www.mygrid.org.uk/OWL/Validator
[B] http://www.mindswap.org/2003/pellet/demo.shtml
[C] http://protege.stanford.edu/fileshare/tredmond/webstart.html
[D] http://www.springerlink.com/link.asp?id=uphvk0wy2hfvjqqp
Received on Thursday, 29 November 2007 14:18:29 UTC