阅读Jena中远程等效的本体类

时间:2013-03-31 00:25:28

标签: jena owl dbpedia

当我运行“getEquivalentClass()”并且我的equivalentClass是远程的(EX: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>

有可能吗?我失去了很多时间找到这个解决方案。

谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

耶拿用户名单 Dave Reynolds 的回答:

这与资源是否为远程无关,而是本地模型是否知道资源确实是一个类。

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

m.setStrictMode(false);

另一种方法是启用推理,因此推断可以推断出它是owl:equivalentClass断言的对象,http://dbpedia.org/data3/Film.rdf必须是一个类。但推论在这里是过度的。

BTW这是错误的URI,电影的dbpedia资源URI实际上是:

  http://dbpedia.org/ontology/Film