Я пытаюсь проверить онтологию на ее непротиворечивость. Онтология включает только описания индивидов, классы и семантические правила описываются импортированной онтологией.
Я думаю, что использование метода isConsistenct будет правильным выбором.
OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createNonBufferingReasoner(mergedOntology);
if(reasoner.isConsistent()){
return "Merged ontology PASSED the consistency test";
}else{
return "Ontology FAILED the consistency test";
}
Каким будет правильный подход к проверке непротиворечивости онтологии, как Protege 5 применяется при запуске рассуждающего?
Обновление кода с помощью Pellet
OWLReasonerFactory reasonerFactory = new PelletReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createNonBufferingReasoner(mergedOntology);
String answer = "";
if(reasoner.isConsistent()){
if(reasoner.getUnsatisfiableClasses().getEntitiesMinusBottom().size()>0){
answer = "Merged ontology FAILED satisfiability test. Unsatisfiable classes detected: " + reasoner.getUnsatisfiableClasses().getEntitiesMinusBottom().size();
}
answer = "Merged ontology PASSED the consistency test";
}else{
answer = "Merged ontology FAILED the consistency test, please review the Axioms or debug using Protege";
//FYI an example how to implement a working debugger can be found on sourceforge's OWL API page under Debugger
}
reasoner.dispose();
return answer;