通过 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、公理或表达式。
使用 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、公理或表达式。