繁体   English   中英

ConversionException到OntClass?

[英]ConversionException to an OntClass?

我遇到了OntClass.listSubClasses 我在一个循环中使用这个方法,它在给定点之前工作正常:

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 ,它是在第一个本体中导入的。

这种导入机制似乎不是问题,因为从同一本体导入的其他类也不会导致程序崩溃。

任何想法?

是不是因为tyour #AXE没有被定义为OWL类?

它是一个rdfs:subclassof所以它必须是一个rdfs:class,但这并不意味着它也是一个owl:class

所以,最后,这个问题与Jena的OntModel严格性有关。 设置为非严格模式解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM