你好,
我正在使用 Java OWL API(版本 5)并想检查一个类是否是另一个类的子类。现在我正在通过获取预期子类的所有父类(super class)并检查此列表是否包含预期父类(super class)来执行此操作。这种方法有效,但如果类和我的本体变大,我需要做很多,它不是很有效。
在以前的 OWL API 版本中,OWLClassReasoner 中似乎有一个 isSubclassOf(.., ..) 方法。但在当前版本中,两者都不再存在。
我是否忽略了什么,如果没有,是否有更有效的方法来完成这项任务?
最佳答案
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);
关于java - 猫头鹰 API : Good substitution for isSubclassOf method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759948/