public class OWLInAboxTranslator
extends Object
Translates an OWL TBox into a "shadow" representation in the ABox.
Each class in O is a named individual in O' (the same IRI is used - if O and O' are used together
this introduces punning)
A subset of class axioms in O are translated to ObjectPropertyAxioms in O'
A SubClassOf B ==> OPE(A' SubClassOf' B')
A SubClassOf R some B ==> OPE(A' R' B')
A' is a type-level counterpart of A. We re-use the same IRI (punning), but in OWL2 terms they are
distinct entities.
Here R' denotes a type-level counterpart of R.
"SubClassOf'" is an OWL2-DL ObjectProperty that is a type-level counterpart of the RDFS/OWL-Full rdfs:subClassOf property
A subset of axioms for R are also shadowed:
Transitive(R) ==> Transitive(R')
R <- S o T ==> R'<- S' o T'
New axioms are introduced:
R' o SubClassOf' ==> R'
SubClassOf' o R' ==> R'
Other class axioms
Equivalence axioms currently have an incomplete translation. Currently only "genus-differentia" style
are translated:
X = G and R1 some Y1 and ..
==>
X' sameAs GenId
GenId SubClassOf' G'
GenId R1' Y1,
....
Where GenId is an auto-generated IRI (e.g. using a UUID) to avoid falling outside OWL2
Validity and completeness
The translation is not complete, in that not every entailment in the tbox has a shadow in the
abox
The translation is intended to be valid, but there is no proof as yet. Intuitively, it should
be safe to translate A SubClassOf R some B ==> A' R' B' provided we do not also carry over
certain other axioms. For example, we do not do anything with InversePropertiesAxioms. We do not
want to state "nucleus (individual) part_of (type level) cell (individual)" and infer
"cell (individual) has_part (type level) nucleus (individual)"
The same holds for symmetry axioms
Motivation
Whilst reasoning over a "traditional" OWL representation is best for the ontology
development part of the lifecycle, it is not optimal for querying and reasoning with data.
A rich TBox can be problematic in SPARQL, triplestores, and RDF-level representations in general
Even in an OWL environment, answering questions such as "what are the descendants of 'finger'" and
receiving a part_of edge to 'limb' are not directly supported in OWL reasoners - it is necessary to
materialize R-some-Y classes.
More generally, because classes are part of the TBox and not in the domain of discourse, certain
kinds of queries are harder. These include queries for homologous structures, where these structures
are traditionally represented as classes.
Interpretation
This shadow ABox can be thought of as an RO-2005 (Smith et al) ontology, where C' denotes a universal or
type (considered part of the domain of discourse, hence are OWL2-DL individuals),
and R' denotes a type-level relation (connecting types -
which in the abox-shadow are modeled as OWL individuals).
However, no philosophical interpretation is imposed.
It may be the case that a different relationship between C and C' is desired. For example, if
C is an anatomical structure, it may be useful to have C' be interpreted as a kind of 'pattern',
either the pattern of C itself, or some kind of specification of C.
Practicalities
The resulting shadow ABox should fall in the subset of OWL2 supported by Elk.
However, getObjectPropertyValues(ind, pe) is not yet supported (0.3.2) which limits the
ability to do certain kinds of queries (e.g. finger partOfTLR ?x)
Elk also lacks support for ObjectInverseOf, which means we cannot circumvent the above
by asking for ?x inverse(partOfTLR) finger.
TODO
TODO - allow customized translation such that TLRs are only created for RO-2005 temporal translations
- Author:
- cjm