Use http://fuseki:3030/ds/

When sent to the dataset URL, Fuseki works out which kind of request it is and passes it on the the service if that service is defined (so no /ds/update => this does not make update available by a back door).

Treat the fuseki:service* as controls as to whether the service on this dataset is available.

    Andy

On 27/04/2019 22:31, Martynas Jusevičius wrote:
Hi,

I want both Fuseki's query and update endpoints on /sparql.

I read the answers to this question multiple times:
https://stackoverflow.com/questions/39401777/use-same-url-for-both-query-and-update

but I still don't get what the solution is?

I have pretty much the same setup as the OP:

<#serviceInMemory> a fuseki:Service;
     rdfs:label                   "In-memory, transactional dataset.";
     fuseki:name                  "ds";
     fuseki:serviceQuery          "query";
     fuseki:serviceQuery          "sparql";
     fuseki:serviceUpdate         "sparql"; # override "update"
     fuseki:serviceUpload         "upload" ;
     fuseki:serviceReadWriteGraphStore "data" ;
     fuseki:serviceReadGraphStore "get" ;
     fuseki:dataset <#dataset>
.

But when I attempt a SPARQL query, I get 405:

1 > GET 
http://fuseki:3030/ds/sparql?query=BASE%20%20%20%20%3Chttp%3A%2F%2Flocalhost%3A8080%2F%3E%0A%0ADESCRIBE%20%3C%3E%0AWHERE%0A%20%20%7B%20%3C%3E%20%20%3Fp%20%20%3Fo%20%7D%0A
1 > Accept: application/n-quads,application/rdf+thrift,text/trig
[2019-04-27 21:19:39] Fuseki     INFO  [1] GET
http://fuseki:3030/ds/sparql?query=BASE%20%20%20%20%3Chttp%3A%2F%2Flocalhost%3A8080%2F%3E%0A%0ADESCRIBE%20%3C%3E%0AWHERE%0A%20%20%7B%20%3C%3E%20%20%3Fp%20%20%3Fo%20%7D%0A
[2019-04-27 21:19:39] Fuseki     INFO  [1] 405 HTTP method not
allowed: SPARQL Update : use POST (18 ms)

Looks like having serviceQuery same as serviceUpdate doesn't work.

I'm also wondering if "setting fuseki:serviceQuery and
fuseki:serviceUpdate the same is not necessary and is discouraged"
means that in general SPARQL query and update should be on different
URLs?
Because that is not the case in most (?) triplestores, where /sparql
is often hardcoded for both.

The use case is that our software is processing sd:Service
descriptions, and they only have the sd:endpoint property, which does
not differentiate query and update endpoints:
https://www.w3.org/TR/sparql11-service-description/#sd-endpoint

Or is the idea that both query and update are separate sd:Services?
The downside would be that we would need 2 properties to specify both.

Martynas
atomgraph.com

Reply via email to