如何检查一个 OWLClassExpression 是否包含另一个 OWLClassExpression?

How to check if an OWLClassExpression contains another OWLClassExpression?

是否可以使用 OWL API 检查 OWLClass 表达式是否包含另一个 OWLClass 表达式?

分类示例: Taxonomy Image (没有不相交的 classes)

第一个 Class 表达式:"E and C"
第二个 Class 表达式:"A"
第三个 Class 表达式:"D"

我想知道第二个包含第一个,但第三个不包含第一个。

我对 "contains" 的意思是:如果我实例化一个属于第一个(E 和 C classes)的个体,那么那个个体也来自第二个(A class).

您需要使用 OWLReasoner 来执行此操作。通过创建您希望验证的公理来执行测试 - 例如,A subClassOf E and C - 并测试 ontology 是否包含它 (OWLReasoner::isEntailed(OWLAxiom)).

OWLReasoner 实现在 OWL API 之外可用 - 请参阅 Pellet、Openllet、HermiT、FaCT++、JFact(所有这些都可在其各自的网站上找到,并且除了 FaCT++,全部在 Maven Central

上可用