2013-03-31 60 views
0

当我运行“getEquivalentClass()”和我e​​quivalentClass是远程(EX:http://dbpedia.org/data3/Film.rdf)引发错误:阅读本体的远程equivalentClass在耶拿

无法转换节点http://dbpedia.org/data3/Film.rdf到OntClass:它不具有RDF:类型猫头鹰:类或等效

我的代码是:

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#膜):

<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> 

这是可能的吗?我花了很多时间找到这个解决方案。

谢谢你的帮助!

回答

2

的耶拿用户列表戴夫·雷诺兹的答案:

这不是做的资源是否是远程的,但无论是局部模型都知道,资源真的是一个类。

的最简单的解决办法是只设置:

m.setStrictMode(false); 

另一种方法是使推理,从而推理可以从以下事实,这是猫头鹰的对象推断:equivalentClass断言http://dbpedia.org/data3/Film.rdf必须是类。但推论在这里是过度的。

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

http://dbpedia.org/ontology/Film