Standard DLs cannot model arbitrarily connected structures. For example, in DLs it is not possible to say that "the heard consists of the left and the right ventricle separated by a septum". In fact, modeling such arbitrarily connected structures in DLs has been a long-standing open problem in DL reasearch.
Recently, we have proposed to solve this problem using description graphs. The idea is that you can just "draw" your strcture as a graph and then add it to the ontology. In our work, we have formalized the semantics of description graphs, showed how they complement standard DLs from the modeling perspective, and have developed a reasoning procedure. For more information, please refer to the technical report Structured Objects in OWL: Representation and Reasoning. On this page, we explain how to use description graphs in HermiT.
Since description graphs are quite a novel formalism, no syntax for them exists yet. The only way to express a description
graph is through HermiT API. The class org.semanticweb.HermiT.DescriptionGraph represents a description graph.
The class provides the following constructor:
DescriptionGraph(String name,AtomicConcept[] atomicConceptsByVertices,Edge[] edges,Set<AtomicConcept> startConcepts)
The meaning of the parameters is as follows.
nameatomicConceptsByVerticesedgesDescriptionGraph.Edge objects determines the edges in the graph. The constructor
for edges is Edge(AtomicAbstractRole atomicAbstractRole,int fromVertex,int toVertex).
The atomicAbstractRole parameter determines the role labeling the edge, the fromVertex
parameter labels the index of the vertex at which the edge originates, and toVertex
determines the intex of the vertex which the edge points to.startConceptsA set of description graphs can be passed to the constructor of the DLOntology object. After that, you can use
the standard methods for reasoning.
In our technical report, we have described a tool that can be used to transform standard DL ontologies into description graphs. The source for the tool can be downloaded here. The tool depends on KAON2 and on the JGraphT library. Please download these libraries and put them into your classpath.
The main class in the tool is uk.ac.ox.comlab.remodeling.BuildHybridKB. The tool does not provide for
a command line interface; rather, you will have to edit the code to point it to an ontology. You will also need
to define appropriately the contents of the graphObjectProperties local variable -- this defines the
graph roles (see the tool's pseudo-code in the paper). The tool will then produce a DLOntology that will be
serialized into a .ser file. You can then use this file as explained on HermiT's Web page. The tool will
also produce a .gml file that contains a visualization of the graph. You can examine this file using the
yEd graph viewer.