rdflib"重复节点元素"使用OWL / XML文件解析错误

时间:2014-12-02 06:44:21

标签: python owl rdflib

我有一个由其他人在Protege中准备的OWL文件。我正在尝试使用以下Python代码解析它,但不断收到解析错误。

import rdflib
g=rdflib.Graph()
result = g.parse(r'myfile.owl')

  

rdflib.exceptions.ParserError:file:///myfile.owl:461:27:在属性元素中重复节点元素:http://www.w3.org/2002/07/owl#Class

行号和字符编号指的是OWL文件中<Class IRI="#Gas"/>行的开头。这是否表明'SubClassOf'构造是错误的,或者我需要另一个插件来正确使用rdflib,还是其他什么? OWL文件如下所示:

<Declaration>
    <Class IRI="#Acetylene"/>
</Declaration>
<Declaration>
    <Class IRI="#Gas"/>
</Declaration>
...
<SubClassOf>
    <Class IRI="#Acetylene"/>
    <Class IRI="#Gas"/>
</SubClassOf>

2 个答案:

答案 0 :(得分:4)

您在非RDF / XML中显示的XML代码;它是OWL / XML。因此,RDFlib无法解析它也就不足为奇了。 RDFlib 应该能够解析OWL本体的RDF映射的RDF / XML序列化,但这与本体的OWL / XML序列化不同。您应该使用OWL工具将OWL / XML文件转换为RDF / XML文件,或者要求本体的提供者提供RDF / XML序列化。

另见

答案 1 :(得分:0)

我遇到了同样的错误...我解决了用Protege打开本体并以正确的格式(RDF / XML语法)保存的问题

之前:

<Declaration>
    <Class IRI="#Painter"/>
</Declaration>

之后:

<!-- http://www.semanticweb.org/marco.cerliani/ontologies/2019/8/untitled-ontology-2#paint -->

<owl:ObjectProperty rdf:about="http://www.semanticweb.org/marco.cerliani/ontologies/2019/8/untitled-ontology-2#paint">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AsymmetricProperty"/>
    <rdfs:domain rdf:resource="http://www.semanticweb.org/marco.cerliani/ontologies/2019/8/untitled-ontology-2#Painter"/>
    <rdfs:range rdf:resource="http://www.semanticweb.org/marco.cerliani/ontologies/2019/8/untitled-ontology-2#Picture"/>
</owl:ObjectProperty>

这样,您可以始终在python中解析和序列化图