Andy Seaborne created JENA-1715:
-----------------------------------

             Summary: Improvements to Fuseki request dispatch
                 Key: JENA-1715
                 URL: https://issues.apache.org/jira/browse/JENA-1715
             Project: Apache Jena
          Issue Type: Improvement
          Components: Fuseki
    Affects Versions: Jena 3.12.0
            Reporter: Andy Seaborne
            Assignee: Andy Seaborne
             Fix For: Jena 3.13.0


Dispatching HTTP requests in Fuseki can be cleaned up. Some cases are inelegant
bolt-ons (such as operations directly on the dataset). This breaks down when
we try to have detailed configuration of service/endpoint, especially for
access control.

With this JIRA:
      
* There is one dispatch mechanism applied in all case (before, there were 
hard-coded variations).
* Multiple endpoints can be attached to the same service point (a name) whether 
on the datasets ("/dataset") or services (e.g. "/dataset/sparql") giving the 
user freedom of design for naming and access control.
* Operations on "/dataset" and operations on services can dispatch by request 
type (query, update, GSP). This makes "/dataset/sparql" work for all SPARQL 
operations. Currently, that only works on "/dataset". 
* Quads and GSP (Graph Store Protocol) operations are combined into "Extended 
GSP" operations, not a hardcoded dispatch special case.

"Quads" operations are the usual HTTP GET/POST/PUT/PATCH on the dataset itselt, 
(not DELETE, mainly to avoid accidents.
      
There would be no changes to applications using Fuseki configuration files. The
existing vocabulary is used to create new style backwards compatible 
configurations.
Direct use in Fuseki main java builder, will show differences in cases that were
not supposed to work in the first place (accidental features discovered during 
preliminary work for this issue).
Normal usage should be the same.
      
It will now be possible, eventually, to have a new, more powerful configuration:
  
Sketch, not fro this issue, of a query operation on the dataset (there is no 
"name" given),
with access control, timeout, union setting and query result limit, and query 
and update services on "sparql".
{noformat}
<#service> rdf:type fuseki:Service ;
    fuseki:name "/ds" ;
    fuseki:endpoint [
        fuseki:operation     fuseki:Query ;
        fuseki:allowedUsers  (....) ;
        fuseki:timeout       "1000,10000" ;
        fuseki:queryLimit    1000;
        arq:unionGraph       true;
    ] ;
    fuseki:endpoint [
        fuseki:name "sparql" ;  ## becomes "/ds/sparql"
        fuseki:operation     fuseki:Query ;
        ...
    ] ;
    fuseki:endpoint [
        fuseki:name "sparql" ;
        fuseki:operation     fuseki:Update ;
        ...
    ] ;
.
{noformat}




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to