Description Graphs in HermiT

Overview

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.


Creating Description Graphs

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.

name
The parameter provides a name to the description graph (it has no semantic meaning).
atomicConceptsByVertices
Each ith element gives the label of the ith vertex in the graph. The length of the array determines the number of vertices in the graph.
edges
This array of DescriptionGraph.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.
startConcepts
This is an experimental parameter; currently, it should be set to contain all concepts labeling the vetices in the graph.

A set of description graphs can be passed to the constructor of the DLOntology object. After that, you can use the standard methods for reasoning.


Transformation Tool

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.