Sparql Insert Exception : SPARQLWrapper.SPARQLExceptions.QueryBadFormed

2.3k views Asked by At

I have been having this weird issue, I am trying to insert into a virtuoso graph using SPARQLWrapper library in python. I am able to insert a triple via the browser based endpoint at localhost:8890\sparql , but when I try the same query via my python SparqlWrapper it throws the below error:

SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad request has been sent to the endpoint, probably the sparql query is bad formed.

I feel there is something wrong at configuration end, but failed to identify the same.

PREFIX dbpedia: <http://dbpedia.org/resource/> Insert Data  { GRAPH <test> { <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2' . } }
Traceback (most recent call last):
  File "test.py", line 33, in <module>
    sys.exit(process.run("1"))
  File "test.py", line 27, in run
    result = self.sparql.query().convert()
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 390, in query
    return QueryResult(self._query())
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 363, in _query
    raise QueryBadFormed()
SPARQLWrapper.SPARQLExceptions.QueryBadFormed: QueryBadFormed: a bad request has been sent to the endpoint, probably the sparql query is bad formed.
2

There are 2 answers

10
Joshua Taylor On BEST ANSWER

If you take this to the sparql.org's SPARQL update validator, it will tell you immediately that this is wrong, and where the syntax error is:

Input:

  1 PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
  2 PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
  3 PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
  4 PREFIX owl:     <http://www.w3.org/2002/07/owl#>
  5 PREFIX fn:      <http://www.w3.org/2005/xpath-functions#>
  6 PREFIX apf:     <http://jena.hpl.hp.com/ARQ/property#>
  7 
  8 PREFIX dbpedia: <http://dbpedia.org/resource/>
  9 Insert Data Into GRAPH <test> {
 10   <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2'^^xsd:integer .
 11 }

Syntax error:

Encountered " "into" "Into "" at line 9, column 13.
Was expecting:
    "{" ...

Of course, to find out how to do what you're trying to do, you'll need to look to the spec. The SPARQL 1.1 Update is the place to look, and while I'd advise you to skim through that to get a good idea of what's in there, one example will be enough to show what you need to write:

Example 2:

This SPARQL 1.1 Update request adds a triple to provide the price of a book. As opposed to the previous example, which affected the default graph, the requested change happens in the named graph identified by the IRI http://example/bookStore.

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
INSERT DATA
{ GRAPH <http://example/bookStore> { <http://example/book1>  ns:price  42 } }

Your query needs to be

PREFIX dbpedia: <http://dbpedia.org/resource/>
Insert Data 
{ GRAPH <test> { <http://dbpedia.org/resource/life> <http://umbel.org/umbel/rc/Artist> '2'^^xsd:integer . } }
0
Wilmer E. Henao On

I spent all day battling this problem. I finally found the solution to my version of this problem:

Make sure that your spaces are actually spaces and not just newlines "\n". The editors have no problem with this, SPARQLWrapper doesn't like it.