I am using Openllet to compute the class hierarchy of an ontology. I discovered a case, where Openllet does not infer a SubClass axiom, although it is entailed. I cross-checked with HermiT and ELK, which both infer the axiom.
- Here is a minimal example:
Prefix(:=<http://example.org#>)
Ontology(
Declaration(Class(:A))
Declaration(Class(:B))
Declaration(ObjectProperty(:p))
ReflexiveObjectProperty(:p)
EquivalentClasses( :B ObjectSomeValuesFrom(:p :A) )
)
OWLOntologyDocumentSource source = new FileDocumentSource(ontFile, new FunctionalSyntaxDocumentFormat());
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ont = manager.loadOntologyFromOntologyDocument(source);
OpenlletReasonerFactory rf = new OpenlletReasonerFactory();
OWLReasoner openllet = rf.createReasoner(ont);
// compute class hierarchy
InferredSubClassAxiomGenerator subClassGenerator = new InferredSubClassAxiomGenerator();
if (openllet.isConsistent()) {
openllet.precomputeInferences(InferenceType.CLASS_HIERARCHY);
Set<OWLSubClassOfAxiom> subClassAxioms = subClassGenerator.createAxioms(manager.getOWLDataFactory(), openllet);
}
I am using Openllet to compute the class hierarchy of an ontology. I discovered a case, where Openllet does not infer a SubClass axiom, although it is entailed. I cross-checked with HermiT and ELK, which both infer the axiom.
The problem: The axiom
SubClassOf(:A :B)is entailed but not inferred by Openllet.Here is the call from my program: