​
On Sun, 02 Nov 2014 16:39:33 +0000
 Andy Seaborne <[email protected]> wrote:
On 01/11/14 21:34, Erich Bremer wrote:
Hi,

I have been using jena 2.12.1 and sparql on a virtuoso 7.1 server with success for various select queries. I'm now trying to perform sparql
updates using sparql-auth on the same server with:

ParameterizedSparqlString pss2 = new ParameterizedSparqlString("random
sparql update query");
UpdateRequest request = UpdateFactory.create(pss2.toString()); UpdateProcessor ue = UpdateExecutionFactory.createRemote(request,
Settings.SPARQLEndpoint, Settings.authenticator);
ue.execute();

where the authenticator is defined elsewhere as:
public final static HttpAuthenticator authenticator = new
SimpleAuthenticator("dba", "dba".toCharArray());

with a simple SPARQL as

insert data { graph <g1> {<s> <p> <o>}} (shorten URIs for brevity)

but, the above jena code fails.

Enabling debugging on Jena and HTTP recording on Virtuoso shows that Virtuoso receives the query but doesn't insert the triple. However, the same sparql command works via the sparql-auth html interface with the
same credentials.
In looking through the debug output, it looks like authentication between jena and virtuoso is sorted out, but the differences between the success via the sparql-auth html page and the failed jena attempt is that the default sparql-auth web pages does a GET to the server while
Jena is doing a post. Any thoughts? -= Erich
Erich Bremer
http://www.ebremer.com

Erich,

In the SPARQL protocol, queries and updates are considered different languages and go to different endpoints (unlike SQL/JDBC, say).

Also, updates always go by POST. HTTP GET is not suitable for mutating operations - it may be cached for example.

        Andy

Hi Andy,
​
I changed createRemote to createRemoteForm and it works fine now against Virtuoso's /sparql-auth endpoint. 
 - Erich
​
​

Reply via email to