我输入了N + 1个项目,其中N是role / OWLObjectProperty,最后一个是概念/ OWLClass。 问题是我必须生成像这样的OWLClassExpression,考虑输入(a,b,C):
OWLClassExpression axiom = factory.getOWLObjectSomeValuesFrom( factory.getOWLObjectProperty( "#a") , factory.getOWLObjectSomeValuesFrom(factory.getOWLObjectProperty("#b", C));
这很简单,因为我只有2个角色,但我需要一个N个角色的通用解决方案,因为我无法预测用户的输入。 公理将是嵌套的,但我不知道是否有可能构建这样的结构。
答案 0 :(得分:0)
有可能 - 您可以使用递归构建表达式的方法调用替换C,或者可以将其缩减为列表。例如,您以相反的顺序导航的属性列表,从公理杠杆(C)开始,并将先前创建的对象包装在新的类表达式中。
但是,owl api没有实用程序类来执行此操作,您必须从头开始编写代码。