【问题标题】:Read a remote equivalentClass of ontology in Jena阅读耶拿的远程等效本体类
【发布时间】:2013-03-31 00:25:28
【问题描述】:

当我运行“getEquivalentClass()”并且我的等价类是远程的(例如:http://dbpedia.org/data3/Film.rdf)时引发错误:

无法将节点 http://dbpedia.org/data3/Film.rdf 转换为 OntClass:它没有 rdf:type owl:Class 或等效项

我的代码是:

OntModel m = ModelFactory.createOntologyModel();
    m.read("http://localhost/ontology/my_ontology.owl#Film");
    Resource r = m.getResource(outputs.get(i).getParamType().getURI().toString());
    OntClass filmClass = (OntClass) r.as( OntClass.class );
    for (Iterator j = filmClass.listEquivalentClasses(); j.hasNext(); ) {
        System.out.println(j.next());
    }

电影本体(my_ontology.owl#Film):

<owl:Class rdf:about="#Film">
<rdfs:subClassOf rdf:resource="#Media"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:minCardinality>
<owl:onProperty rdf:resource="#Title"/>
</owl:Restriction>
</rdfs:subClassOf>
<owl:equivalentClass rdf:resource="http://dbpedia.org/data3/Film.rdf"/>
</owl:Class>

有可能吗?我浪费了很多时间来寻找这个解决方案。

谢谢你的帮助!

【问题讨论】:

    标签: jena owl dbpedia


    【解决方案1】:

    Dave Reynolds 的 Jena 用户列表的答案:

    与资源是否远程无关,而与本地模型是否知道资源真的是一个类有关。

    最简单的解决方案是设置:

    m.setStrictMode(false);
    

    另一种方法是启用推理,以便推理可以从它是 owl:equivalentClass 断言的对象这一事实推断出http://dbpedia.org/data3/Film.rdf 必须是一个类。但是这里的推理是多余的。

    顺便说一句,这是错误的 URI,电影的 dbpedia 资源 URI 实际上是:

      http://dbpedia.org/ontology/Film
    

    【讨论】:

      猜你喜欢
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多