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