从OWL本体中获得部分课程

时间:2019-03-13 20:27:01

标签: java owl-api hermit

我有一个用protègè构成的本体,我定义了一个名为part-Of的ObjectPropertyenter image description here

我正在解析OWLClass,试图找出子类是否为part-Of所解析的类。在这种情况下,当子类At_HomeANA具有以下PHE签名时,我正在解析subclass of enter image description here 我已经尝试过:

OWLDataFactory df = manager.getOWLDataFactory();
    OWLObjectProperty partOf = df.getOWLObjectProperty("part-Of");
    OWLClassExpression c = df.getOWLObjectSomeValuesFrom(partOf, target);
    NodeSet<OWLClass> subClasses = hermit.getSubClasses(c, true);
    if(subClasses.isEmpty()) {
        //System.out.println("\tQuesta classe non ha parti");
        res[0] = null;
    }
    else {
        for(Node<OWLClass> parte : subClasses) {
            risultato.add(parte.getRepresentativeElement().getIRI().getFragment());
        }
        res[0] = risultato;
    }

其中targetAt_Home OWLClass,但是该方法继续返回空的NodeSet,因此,即使At_Home也没有任何部分ANAPHE是它的组成部分。
所需结果应为NodeSet,其中包含OWLClass“ ANA”和“ PHE”

1 个答案:

答案 0 :(得分:1)

  

df.getOWLObjectProperty("part-Of");

这是问题所在。您需要使用资产的完整IRI,而不仅仅是片段。这与您的本体中所述的属性不匹配。