OWLAPI 访问超类公理中的对象属性值

OWLAPI access objectProperty value in a superClass axiom

我可以通过以下命令访问 sueprClass 表达式。(运行 OWLAPI v5)

 ont.getSubClassAxiomsForSubClass(cls).forEach(x->x.getSuperClass().getSignature()
    )

每个循环 returns 如:

[<http://www.co-ode.org/ontologies/pizza/pizza.owl#PizzaBase>, <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasBase>]

结果包含对象属性值 IRI 和对象属性本身 IRI。
现在我需要捕获 http://...#PizzaBase.
的 objectProperty 值 这意味着获取结果集中的所有值,但不是最后一个 objectProperty IRI。

我可以将命令转换为数组 (...getSignature().toArray()) 并访问它的值(除了最后一个值是 objectproperty IRI)。
有没有更好的方法或方法来做到这一点?

编写实现 visit(OWLObjectSomeValuesFrom ce)OWLObjectVisitor 并调用 x.getSuperClass().accept(visitor); 然后就可以在ce参数上访问对象属性。

对于这种情况,您也可以将 x.getSuperClass() 的结果转换为 OWLObjectSomeValuesFrom,因为您已经知道要访问的表达式的位置和类型。如果您需要以更通用的方式执行此操作,使用访问者是一种更灵活的方法。