调用sync_reasoner时出现Owlready2解析错误

时间:2018-06-21 15:35:54

标签: python ontology protege rdflib owlready

使用protege创建本体,并使用owlready2库从数据库中填充数据。现在,此行给出了此错误:

sync_reasoner(my_world)

这是我遇到的错误:

无法解析本体。找不到合适的解析器,或者解析失败。请参阅下面的解析器日志以获取解释。 尝试了以下解析器: 1)RDFXMLParser 2)OWLXMLParser 3)OWLFunctionalSyntaxOWLParser 4)TurtleOntologyParser 5)OWLOBOParser 6)KRSS2OW​​L 7)ManchesterOWLSyntaxOntologyParser

详细日志:

Parser: RDFXMLParser 
org.xml.sax.SAXParseException; systemId: file:///C:/Users/THARIN~2/AppData/Local/Temp/tmpin0r193y; lineNumber: 1; columnNumber: 8; Element type "http:" must be followed by either attribute specifications, ">" or "/>". 

-------------------------------------------------------------------------------- 
Parser: OWLXMLParser 
org.xml.sax.SAXParseException; systemId: file:///C:/Users/THARIN~2/AppData/Local/Temp/tmpin0r193y; lineNumber: 1; columnNumber: 8; Element type "http:" must be followed by either attribute specifications, ">" or "/>". 

-------------------------------------------------------------------------------- 
Parser: OWLFunctionalSyntaxOWLParser 
Encountered " <FULLIRI> "<http://www.semanticweb.org/yashoda/ontologies/2017/12/MovieOnto> "" at line 1, column 1. 
Was expecting: 
    "Ontology" ... 
     (Line 0) 

-------------------------------------------------------------------------------- 
Parser: TurtleOntologyParser 
uk.ac.manchester.cs.owl.owlapi.turtle.parser.ParseException: Encountered " <ERROR> "< "" at line 64, column 1. 
Was expecting: 
    <EOF>  


-------------------------------------------------------------------------------- 
Parser: OWLOBOParser 
org.coode.owlapi.obo.parser.ParseException: Encountered "<EOF>" at line 941, column 114. 
Was expecting one of: 
    "[" ... 
    <TAG_NAME> ... 
    <QUOTED_STRING> ... 
    <STRING> ... 
    <TAG_VALUE_WS> ... 
    <COMMENT> ... 
     (Line 941) 

-------------------------------------------------------------------------------- 
Parser: KRSS2OWLParser 
de.uulm.ecs.ai.owlapi.krssparser.ParseException: Encountered " ">" "<http://www.semanticweb.org/yashoda/ontologies/2017/12/MovieOnto> "" at line 1, column 1. 
Was expecting: 
    <EOF>  


-------------------------------------------------------------------------------- 
Parser: ManchesterOWLSyntaxOntologyParser 
Encountered <http://www.semanticweb.org/yashoda/ontologies/2017/12/MovieOnto> at line 1 column 1. Expected one of: 
        Individual: 
        AnnotationProperty: 
        Datatype: 
        DataProperty: 
        ObjectProperty: 
        DisjointProperties: 
        ValuePartition: 
        EquivalentClasses: 
        Import: 
        Prefix: 
        DisjointClasses: 
        Class: 
        SameIndividual: 
        DifferentIndividuals: 
 (Line 1) 

1 个答案:

答案 0 :(得分:1)

据我所知(我不是Python程序员),Owlready2使用的是HermiT推理程序版本1.3.8和嵌入式OWLAPI版本。这个版本非常古老-HermiT 1.3.8使用OWLAPI 3,该版本已经不支持几年了。

本体这一部分的解析器错误:

<Movie rdf:about="#Wonder_Woman_">
  <isMadeIn rdf:resource="#Hong Kong"/>
</Movie>

<Country rdf:about="#Hong Kong">
  <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
</Country>

它抱怨#Hong Kong片段-它无法应付空格。更改为:

<Movie rdf:about="#Wonder_Woman_">
  <isMadeIn rdf:resource="#Hong_Kong"/>
</Movie>

<Country rdf:about="#Hong_Kong">
  <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
</Country>

允许解析器处理。从长远来看,Owlready2应该更新到更新的HermiT版本。 OWLAPI可以处理版本4中的文件,而HermiT 1.3.8.413是Protege中使用的版本。