您好,
我正在使用Java OWL API(版本5),并想检查一个类是否是另一个类的子类。现在我通过获取预期子类的所有超类来检查此列表是否包含预期的超类。这种方法很有效,但如果是类,我需要做很多事情,如果我的本体变得更大,那就不是很有效了。
在以前版本的OWL API中,似乎OWLClassReasoner中有一个isSubclassOf(..,..)方法。但在目前的版本中,两者都不存在了。
我是否忽视了某些事情,如果没有,是否有更有效的方法来完成这项任务?
答案 0 :(得分:1)
OWLClassReasoner
是一个OWLAPI 2类 - 我相信OWLAPI 2的最后一个版本是在2009年左右,所以说代码已经过时是公平的。
使用真正的推理器(即用于OWLAPI 5的HermiT或Openllet之一 - 可以在Maven Central上找到它们),您可以使用以下代码:
OWLReasoner reasoner = ...
OWLClass a = ...
OWLClass b = ...
boolean bIsSuperclass = reasoner.getSuperClasses(a, false).containsEntity(b);