我阅读了OWL API文档,大多数示例都是关于创建类公理并将它们添加到本体中。现在,我需要检索类的限制,并提取限制中的元素。
例如,在pizza.owl中,ChessePizza类由限制定义:" Pizza和(hasTopping some CheeseTopping)"。我可以使用" getEquivalentClassesAxioms"获得整个公理的功能。但是我想知道这个公理的细节,比如这个公理中使用的对象属性(hasTopping)和类(CheeseTopping)。有没有什么方法可以提取公理的元素?
答案 0 :(得分:2)
例如,为所有存在性限制提取属性的最佳方法是编写OWLObjectVisitor
。
在访问者中,您为访问者知道的每个类实施visit(OWL... o)
。对于定义A equivalentTo p some Q
的公理,访问者看起来像:
OWLObjectVisitor v = new OWLObjectVisitor() {
public void visit(OWLEquivalentClassesAxiom ax) {
// this is an example of recursive visit
ax.classExpressions().forEach(c->c.accept(v));
}
public void visit(OWLObjectSomeValuesFrom ce) {
OWLObjectPropertyExpression p = ce.getProperty();
// here you can do what you need with the property.
}
};
axiom.accept(v);