2012-11-01 3 views
1

python의 rdflib 라이브러리를 사용하여 RDF 그래프에서 트리플을 삭제하려하지만 성공하지 못했습니다. 내 질문은 http://www.w3.org/TR/sparql11-update/#delete에서 배운 follwong입니다.rdflib python을 사용하여 sparql DELETE 쿼리를 사용하는 중 오류가 발생했습니다.

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) 

답변

2

은 사용하는 쿼리는 SPARQL Query에서 별개의 표준 인 SPARQL Update입니다. 아마도 graph.query 함수는 SPARQL 쿼리 만 필요합니까? 관련 rdflib pages에서 Sparql Update에 대한 언급을 볼 수 없습니다.

this page을 보면 processUpdate() 메서드를 rdflib-sparql 대신 사용해야 할 수도 있습니다.

online validator

은 당신이 실제로 않는 graph.query를 사용하려는 모양, 위에서 언급 한 바와 같이

6

(그것은 나에게 유효한 SPARQL 업데이트처럼 보이지만)이 유효한 SPARQL 쿼리 아니라고 동의 '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. 
}""") 

희망!

관련 문제