Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-1715

Improvements to Fuseki request dispatch



    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: Jena 3.12.0
    • Fix Version/s: Jena 3.13.0
    • Component/s: Fuseki
    • Labels:


      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".

      <#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 ;
          ] ;


          Issue Links



              • Assignee:
                andy Andy Seaborne
                andy Andy Seaborne
              • Votes:
                0 Vote for this issue
                2 Start watching this issue


                • Created:

                  Time Tracking

                  Original Estimate - Not Specified
                  Not Specified
                  Remaining Estimate - 0h
                  Time Spent - 20m