Я использую API объяснения OWL для создания объяснений согласованности / несогласованности. Код:
//some code to load an existing ontology o//
OWLOntologyManager m=OWLManager.createOWLOntologyManager();
OWLOntology o=m.loadOntologyFromOntologyDocument(file);
OWLReasonerFactory rf=new ReasonerFactory();
OWLReasoner r=rf.createReasoner(o);
OWLDataFactory df=m.getOWLDataFactory();
IRI masterIRI = IRI.create("http://www.semanticweb.org/raghavrathi/ontologies/2020/3/Q2#Master");
OWLClass master=df.getOWLClass(masterIRI);
IRI sportmanIRI=IRI.create("http://www.semanticweb.org/raghavrathi/ontologies/2020/3/Q2#Sportsman");
OWLClass sportsman=df.getOWLClass(sportmanIRI);
ExplanationGeneratorFactory<OWLAxiom> genFac = ExplanationManager.createExplanationGeneratorFactory(rf);
ExplanationGenerator<OWLAxiom> explain=genFac.createExplanationGenerator(o);
Set<Explanation<OWLAxiom>> explanations1 = explain.getExplanations(df.getOWLSubClassOfAxiom(master, sportsman));
System.out.println("Explaination OWL Explaination API: "+explanations1);
Ну, это прекрасно работает, чтобы проверить, является ли класс (здесь мастер) подклассом другого класса (здесь спортсмен).
Однако мне было интересно, если то же самое возможно без использования OWLexplanations API и только с OWL API. Где-то в Интернете я видел, что мы можем использовать HSTExplanationGenerator () с OWLAPI, но я не смог найти какой-либо ресурс, где и как он использовался.