使用OWLAPI版本3.5.0。
是否可以在本体中获取所有OWLAnonymousClassExpressions? 甚至是属于单个OWLClass的OWLAnonymousClassExpressions?
答案 0 :(得分:2)
您可以通过调用getSubClassAxiomsForSubClass方法从OWLOntology对象获取指定类的直接,声明的超类。
这将返回两种超类的公理 - 匿名和西方,错误,我的意思是命名。如果迭代结果,则可以使用isAnonymous方法选择匿名类表达式。 如果需要间接超类,则可以递归地获取任何命名类的子类公理。
根据您的要求,您可能还需要检查等效的类公理,因为公理中的每个等效类表达式都是所有其他公式的超类。可以使用getEquivalentClassesAxioms方法检索这些内容。
如果您确实遵循父链接或扩展等价,您可能需要跟踪已经处理的命名类,以防有周期。
如果要包含推断的超类以及直接断言的超类,可以创建推理器并使用它来查找所选类的命名超类。然后,您可以通过如上所述获取子类公理来检索匿名超类。
让我知道这是否有意义,或者示例代码是否有用。
编辑:OWLClassExpressionCollector
也可能有用,因为它从任何OWLObject
收集所有类表达式:本体,公理或表达式。