如何解决SPARQL警告?

San*_*ana 0 testing rdf sparql rdflib dbpedia

我试图找回漫画书的inkers名字.我正在尝试建立一个本体论.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
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像

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") 
   }"""
Run Code Online (Sandbox Code Playgroud)

Art*_*mis 5

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

"Malcolm Jones III"
http://dbpedia.org/resource/Vince_Colletta
Run Code Online (Sandbox Code Playgroud)

我认为您需要以您的着墨器是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") 
Run Code Online (Sandbox Code Playgroud)

}