如何使用OWL API

时间:2018-01-11 04:29:50

标签: owl-api

我阅读了OWL API文档,大多数示例都是关于创建类公理并将它们添加到本体中。现在,我需要检索类的限制,并提取限制中的元素。

例如,在pizza.owl中,ChessePizza类由限制定义:" Pizza和(hasTopping some CheeseTopping)"。我可以使用" getEquivalentClassesAxioms"获得整个公理的功能。但是我想知道这个公理的细节,比如这个公理中使用的对象属性(hasTopping)和类(CheeseTopping)。有没有什么方法可以提取公理的元素?

1 个答案:

答案 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);