【问题标题】:Get part-Of class from OWL Ontology从 OWL Ontology 获取部分课程
【发布时间】:2019-03-13 20:27:01
【问题描述】:

我有一个用 protègè 制作的本体,我定义了一个名为 part-Of 的 ObjectProperty

我正在解析 OWLClass 试图找出子类是否是 part-Of 解析的类。在这种情况下,当子类 ANAPHE 具有以下 subclass of 签名时,我正在解析 At_Home,如图所示 我已经尝试过:

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 是它的部分.
想要的结果应该是带有OWLClass“ANA”和“PHE”的NodeSet

【问题讨论】:

    标签: java owl-api hermit


    【解决方案1】:

    df.getOWLObjectProperty("part-Of");

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

    【讨论】:

    • 所以添加完整的 IRI "semanticweb.org/diego/ontologies/2019/2/..." 应该可以解决问题,但是我怎样才能从我自己没有创建的本体中获得它呢?我的意思是,在 IRI 中有“diego”和“2019/2”之类的部分是可变的,我如何才能找到只有片段名称的正确 ObjectProperty?有办法吗? @Ignazio
    • 我不太明白这个问题。在任何本体中,无论是您创建的还是从其他站点导入的,属性都由绝对 IRI 标识,而不是相对 IRI。在哪种情况下您只有片段名称?
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-09-20
    • 2023-03-20
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多