【发布时间】:2015-09-02 15:06:42
【问题描述】:
我正在尝试检查本体的一致性。本体只包含对个体的描述,类和语义规则由导入的本体描述。
我认为使用 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;
【问题讨论】:
-
到底是什么问题?您可以使用此方法计算不一致。如果您想获得无法满足的类,则需要使用另一种方法。
标签: java owl ontology consistency owl-api