OWL API: isSubclassOf 方法的良好替代
OWL API: Good substitution for isSubclassOf method
你好,
我正在使用 Java OWL API(版本 5)并想检查 class 是否是另一个 class 的子class =23=]。现在,我正在通过获取预期子 class 的所有超级 class 并检查此列表是否包含预期的超级 class 来执行此操作。这种方法有效,但如果 classes 并且如果我的 ontology 变大,我需要做很多,它不是很有效。
在 OWL API 的先前版本中,OWLClassReasoner 中似乎有一个 isSubclassOf(.., ..) 方法。但在当前版本中,两者都不再存在。
我是否忽略了什么,如果没有,是否有更有效的方法来完成这项任务?
OWLClassReasoner
是一个 OWLAPI 2 class - 我相信 OWLAPI 2 的最后一个版本是在 2009 年左右,所以可以说代码已经过时了。
使用真正的推理器(即 OWLAPI 5 的 HermiT 或 Openllet 之一 - 它们可以在 Maven Central 上找到),您可以使用以下代码:
OWLReasoner reasoner = ...
OWLClass a = ...
OWLClass b = ...
boolean bIsSuperclass = reasoner.getSuperClasses(a, false).containsEntity(b);
你好,
我正在使用 Java OWL API(版本 5)并想检查 class 是否是另一个 class 的子class =23=]。现在,我正在通过获取预期子 class 的所有超级 class 并检查此列表是否包含预期的超级 class 来执行此操作。这种方法有效,但如果 classes 并且如果我的 ontology 变大,我需要做很多,它不是很有效。
在 OWL API 的先前版本中,OWLClassReasoner 中似乎有一个 isSubclassOf(.., ..) 方法。但在当前版本中,两者都不再存在。
我是否忽略了什么,如果没有,是否有更有效的方法来完成这项任务?
OWLClassReasoner
是一个 OWLAPI 2 class - 我相信 OWLAPI 2 的最后一个版本是在 2009 年左右,所以可以说代码已经过时了。
使用真正的推理器(即 OWLAPI 5 的 HermiT 或 Openllet 之一 - 它们可以在 Maven Central 上找到),您可以使用以下代码:
OWLReasoner reasoner = ...
OWLClass a = ...
OWLClass b = ...
boolean bIsSuperclass = reasoner.getSuperClasses(a, false).containsEntity(b);