我想使用owl API检查类不相交的公理。我的问题。我有两个类 ChickenTopping 和 HamTopping .ChickenTopping类有一个公理的子类 hasSpiciness some Hot 和HamTopping类有一个axiom的子类 hasSpiciness some Mild 。这些 Hot 和 Mild 类是脱节的。由于公理的子类,ChickenTopping和HamTopping类是脱节的。那么如何检查给定的HamTopping类是否与Chicken类不相交?
答案 0 :(得分:2)
Galigator已经提到了一些你可以使用的reasoners。
要检查某个类是否与另一个已知类不相交,创建OWLReasoner
后,您可以使用以下代码:
OWLClass a = ...
OWLClass b = ...
OWLReasoner reasoner = ...
OWLDataFactory df = ...
OWLAxiom axiom = df.getOWLDisjointClassesAxiom(Arrays.asList(a, b));
boolean classesAreDisjoint = reasoner.isEntailed(axiom);