我有一個特定的Class URI,我試圖獲取OntClass。該模型是一個常規模型。Jena在試圖轉換爲OntClass時拋出ConversionException
我寫了一些代碼來找出正確的語句是否在模型中,似乎他們是這樣我不明白爲什麼它不會讓我把它看作一個OntClass。 (tblURI是作爲方法參數傳遞的字符串)
Resource tblR = m.createResource(tblURI);
List<Statement> prp = tblR.listProperties().toList();
for(Statement s : prp)
System.out.println(s);
System.out.println(tblR.canAs(OntClass.class));
OntClass tbl = tblR.as(OntClass.class);
這是輸出:
[kps:datasource/EnsembleMS#translation_stable_id, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://www.w3.org/2002/07/owl#Class]
[kps:datasource/EnsembleMS#translation_stable_id, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://www.w3.org/2000/01/rdf-schema#Class]
[kps:datasource/EnsembleMS#translation_stable_id, http://www.w3.org/2000/01/rdf-schema#isDefinedBy, kps:datasource/EnsembleMS]
[kps:datasource/EnsembleMS#translation_stable_id, http://www.w3.org/2000/01/rdf-schema#label, "translation_stable_id"]
false
com.hp.hpl.jena.ontology.ConversionException: Cannot convert node kps:datasource/EnsembleMS#translation_stable_id to OntClass: it does not have rdf:type owl:Class or equivalent
at com.hp.hpl.jena.ontology.impl.OntClassImpl$1.wrap(OntClassImpl.java:81)
at com.hp.hpl.jena.enhanced.EnhNode.convertTo(EnhNode.java:155)
at com.hp.hpl.jena.enhanced.EnhNode.convertTo(EnhNode.java:34)
at com.hp.hpl.jena.enhanced.Polymorphic.asInternal(Polymorphic.java:66)
at com.hp.hpl.jena.enhanced.EnhNode.as(EnhNode.java:110)
at com.KPS.myApp.exampleMethod(myApp.java:123)
爲什麼會拋出異常,我怎樣才能得到一個OntClass與URI tblURI資源?
感謝任何指針
正如我在我的問題的第一行中說的,m是一個常規模型,即不是一個OntModel。 m是否需要成爲一個OntModel才能獲得OntClass?如果是這樣,將模型轉換爲OntModel的最佳方式是什麼? – ec2011 2012-07-23 12:43:40
關於前綴,是否可以提供一個前綴uri作爲m.createResource()的參數? – ec2011 2012-07-23 12:46:01
在編輯的問題中查看您的問題的答案。 – 2012-07-23 14:01:50