INSERT/DELETE/UPDATE query using SPARQLWrapper

The SPARQL queries are send as GET request, but the UPDATE (like INSERT, DELETE, etc.) requires the query be send as a POST request. Just add the following line before sparql.query()

sparql.method = 'POST'

Also, the url for update is different from the query. The update is based on workbench and not sesame url. For example, if the query url is:

http://localhost:8080/openrdf-sesame/repositories/test/

or

http://localhost:8080/openrdf-workbench/repositories/test/query

then the update url would be:

http://localhost:8080/openrdf-workbench/repositories/test/update

Therefore, the UPDATE/INSERT request should look like:

queryString = "INSERT DATA { GRAPH <http://example.com/> { "b" a "c". } }" 
sparql = SPARQLWrapper("http://localhost:8080/openrdf-workbench/repositories/test/update")

sparql.setQuery(queryString) 
sparql.method = 'POST'
sparql.query()

This is not particularly clear from the docs, but I think you can just execute an update statement in the same way that you execute a query:

queryString = "DELETE WHERE { ?s ?p ?o. }" 
sparql = SPARQLWrapper("http://localhost:8080/openrdf-sesame/repositories/test/statements")

sparql.setQuery(queryString) 
ret = sparql.query()

In the case of Sesame, one thing to keep in mind is that the URL for the update endpoint (repositories/<repId>/statements) is not the same as the URL for the query endpoint (repositories/<repId>). See the Sesame protocol docs for details.