2016-12-28 37 views
1

我遇到了OntClass.listSubClasses問題。我用這個方法在一個循環中,其正常工作,直到一個給定的點:ConversionException到OntClass?

for(Iterator i = class.listSubClasses() ; i.hasNext() ;) { 
    System.out.println(((OntClass) i.next()).getLocalName()); 
} 

然後,以下異常顯示出來:

Exception in thread "main" org.apache.jena.ontology.ConversionException: Cannot convert node http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#AXE to OntClass: it does not have rdf:type owl:Class or equivalent 
    at org.apache.jena.ontology.impl.OntClassImpl$1.wrap(OntClassImpl.java:82) 
... 
org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55) 
    at rocks.novateam.axis.sow.poc.backend.ontology.RegisterManager.main(RegisterManager.java:194) 

這是奇怪的。

在本體論,這裏是這個特殊類的定義:

<!-- http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#AXE --> 

    <rdf:Description rdf:about="http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#AXE"> 
     <rdfs:subClassOf rdf:resource="http://titan.be/axis-csrm/datamodel/ontology/0.4#Register"/> 
    </rdf:Description> 

這是一個datamodel.owl文件,這是一個在OntModel我使用。

<!-- http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#AXE --> 

<owl:Class rdf:about="http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#AXE"> 
    <rdfs:subClassOf rdf:resource="http://titan.be/axis-csrm/interoperabilitymodel/ontology/0.4#Entity"/> 
    <rdfs:label xml:lang="en">Autonomous eXchange Entity</rdfs:label> 
</owl:Class> 

這在interoperabilitymodel.owl,其在所述第一本體的進口。

這個導入機制似乎不是問題,因爲還有其他類從相同的本體導入,不會導致程序崩潰。

有什麼想法?

回答

0

是不是因爲#AXE沒有被定義爲OWL類?

這是一個RDFS:subclassof所以它必須是一個RDFS:類,但這並不意味着它也是一個貓頭鷹:類

+0

如果這是個問題,怎麼會把它當作一個班級來考慮,我該如何改變這個問題? – RichouHunter

+0

我認爲錯誤必須在某處:您聲明「這是在第一個本體中導入的互操作性模式.owl」。也許這個文件不能正確地導入你的OntModel – ChristophE

相關問題