Skip to main content
 首页 » 编程设计

python之使用 rdflib python 使用 sparql DELETE 查询时出错

2025年05月04日11mq0036

我正在尝试使用 python 的 rdflib 库从 RDF 图中删除三元组,但没有成功。我的查询是从 http://www.w3.org/TR/sparql11-update/#delete 中学到的 follwong .

plugin.register( 
    'sparql', rdflib.query.Processor, 
    'rdfextras.sparql.processor', 'Processor') 
plugin.register( 
    'sparql', rdflib.query.Result, 
    'rdfextras.sparql.query', 'SPARQLQueryResult') 
 
bdel= graph.query("""  
PREFIX bibo: <http://purl.org/ontology/bibo/>                        
DELETE  {?s ?p ?o} 
WHERE {  
         ?s bibo:reproducedIn ?o.  
      }""") 

它给出以下错误,解决此问题的任何线索。提前致谢。

pyparsing.ParseException: Expected "SELECT" (at char 116), (line:4, col:17) 

请您参考如下方法:

如上所述,您似乎正在尝试使用 graph.query,它确实只需要“SELECT”版本的 SPARQL 查询。为了运行任何 SPARQL 更新 as defined here ,您将需要改用 graph.processUpdate()。 对于您的示例,大致如下:

processUpdate(graph, """  
PREFIX bibo: <http://purl.org/ontology/bibo/>                        
DELETE  {?s ?p ?o} 
WHERE {  
?s bibo:reproducedIn ?o.  
}""") 

希望这对您有所帮助!