如何解决SPARQL警告?

时间:2015-03-22 08:26:46

标签: testing rdf sparql dbpedia rdflib

我正在尝试检索漫画书的名字。我正在尝试建立一个本体论。 Inkers有dbpprop,我导入了rdlib和sparqlWrapper,而我遇到了以下错误。有没有人理解这个问题?

  Abcde-MacBook-Pro:example Abcde$ python basicTest.py 
  WARNING:rdflib.term:  does not look like a valid URI, trying to serialize     this will break.
  Abcde-MacBook-Pro:example Abcde$ python basicTest.py 
  Traceback (most recent call last):
  File "basicTest.py", line 78, in <module>
  g = sparql.query().convert()
  File "build/bdist.macosx-10.10-intel/egg/SPARQLWrapper/Wrapper.py", line 535, in query
  File "build/bdist.macosx-10.10-intel/egg/SPARQLWrapper/Wrapper.py", line 513, in _query
  SPARQLWrapper.SPARQLExceptions.EndPointInternalError:    EndPointInternalError: endpoint returned code 500 and response. 

  Response:
   Virtuoso RDF01 Error Bad variable value in CONSTRUCT: "Malcolm Jones III"    (tag 246 box flags 0) is not a valid subject, only object of a triple can be a     literal

 SPARQL query:
 define sql:big-data-const 0 
 #output-format:application/rdf+xml

我的代码看起来像

CONSTRUCT {
  ?comics ma:inked_by ?inker .
  ?inker rdf:type ma:Inker .  
 } 
   WHERE{
   ?comics rdf:type dbpedia-owl:Comics .
   ?comics foaf:name ?name .
   OPTIONAL {?comics dbpprop:inkers ?inker}
   FILTER regex(str(?name), "Batman") 
   }"""

1 个答案:

答案 0 :(得分:5)

我认为当你?inker出局时会出现问题。有时它是一个URI,有时它是一个字符串。例如,以下是前两位输出:

"Malcolm Jones III"
http://dbpedia.org/resource/Vince_Colletta

我认为您需要以您的着墨器是URI或字符串的方式更改代码。以下内容将保存本体中的URI(如果存在)。如果您需要字符串,请改用?inkername

CONSTRUCT {
    ?comics ma:inked_by ?inker.
    ?inker a ma:Inker.  
}
where {
    ?comics a dbpedia-owl:Comics.
     ?comics foaf:name ?name .
optional{
    ?comics dbpprop:inkers ?inker.
    ?inker foaf:name ?inkername.
}
FILTER regex(str(?name), "Batman") 

}