通过 OWL-API 获取所有 OWLAnonymousClassExpressions

Get all OWLAnonymousClassExpressions via OWL-API

使用 OWLAPI 版本 3.5.0。

是否可以在 ontology 中获取所有 OWLAnonymousClassExpressions? 或者甚至是属于单个 OWLClass 的 OWLAnonymousClassExpressions?

您可以通过调用 getSubClassAxiomsForSubClass 方法从 OWLOntology 对象中获取指定的 class 的直接断言超 classes。

这将 return 公理与两种超级 class - 匿名 西方,错误,我的意思是命名。如果迭代结果,则可以使用 isAnonymous 方法 select 匿名 class 表达式。 如果您需要间接超classes,您可以递归地获取任何命名classes 的subclass 公理。

根据您的要求,您可能还想检查等价的 class 公理,因为公理中每个等价的 class 表达式都是所有其他公理的超 class。这些可以使用 getEquivalentClassesAxioms 方法检索。

如果您确实遵循父链接或展开等价关系,则可能需要跟踪您已经处理过的命名 classes,以防出现循环。

如果您想包括推断的超级classes 以及直接断言的超级,您可以创建一个推理器并使用它来查找您选择的 [=30] 的命名超级classes =].然后,您可以通过获取 subclass 公理来检索匿名 superclasses,如上所述。

让我知道这是否有意义,或者示例代码是否有用。

编辑:OWLClassExpressionCollector 也可能有用,因为它从任何 OWLObject 收集所有 class 表达式:ontology、公理或表达式。