Configuration consists of defining the data services (data and actions available on the data) together with configuring the server. Explicitly configuring the server is often unnecessary.
The data services configuration can come from:
FUSEKI_BASE/configuration/
with one data service assembler per file (includes endpoint details and the dataset description.)FUSEKI_BASE
is the location of the Fuseki run area.
See Fuseki Data Services for the architecture of data services.
See Fuseki Security for more information on security.
A Fuseki server can be set up using a configuration file. The command-line arguments for publishing a single dataset are a short cut that, internally, builds a default configuration based on the dataset name given.
The configuration is an RDF graph. One graph consists of one server description, with a number of services, and each service offers a number of endpoints over a dataset.
The example below is all one file (RDF graph in Turtle syntax) split to allow for commentary.
Some useful prefix declarations:
@prefix fuseki: <http://jena.apache.org/fuseki#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> . @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix : <#> .
All datasets are described by assembler descriptions. Assemblers provide an extensible way of describing many kinds of objects.
Each data service assembler defines:
This example offers SPARQL Query, SPARQL Update and SPARQL Graph Store protocol, as well as file upload.
Note: As of Jena 3.13.0, an additional, more expressive configuration for endpoints is available.
The base name is /ds
.
## Updateable in-memory dataset. <#service1> rdf:type fuseki:Service ; fuseki:name "ds" ; # http://host:port/ds fuseki:serviceQuery "sparql" ; # SPARQL query service fuseki:serviceQuery "query" ; # SPARQL query service (alt name) fuseki:serviceUpdate "update" ; # SPARQL update service fuseki:serviceUpload "upload" ; # Non-SPARQL upload service fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write) # A separate read-only graph store endpoint: fuseki:serviceReadGraphStore "get" ; # SPARQL Graph store protocol (read only) fuseki:dataset <#dataset> ; .
<#dataset>
refers to a dataset description in the same file.
This example offers only read-only endpoints (SPARQL Query and HTTP GET SPARQl Graph Store protocol).
This service offers read-only access to a dataset with a single graph of data.
<#service2> rdf:type fuseki:Service ; fuseki:name "/ds-ro" ; # http://host:port/ds-ro fuseki:serviceQuery "query" ; # SPARQL query service fuseki:serviceReadGraphStore "data" ; # SPARQL Graph store protocol (read only) fuseki:dataset <#dataset> ; .
An in-memory dataset, with data in the default graph taken from a local file.
<#books> rdf:type ja:RDFDataset ; rdfs:label "Books" ; ja:defaultGraph [ rdfs:label "books.ttl" ; a ja:MemoryModel ; ja:content [ja:externalContent <file:Data/books.ttl> ] ; ] ; .
<#dataset> rdf:type tdb:DatasetTDB ; tdb:location "DB" ; # Query timeout on this dataset (1s, 1000 milliseconds) ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ; # Make the default graph be the union of all named graphs. ## tdb:unionDefaultGraph true ; .
@@
If you need to load additional classes, or set global parameters, then these go in
FUSEKI_BASE/config.ttl
.
Additional classes can not be loaded if running as a .war
file. You will
need to create a custom .war
file consisting of the contents of the Fuseki
web application and the additional classes
[] rdf:type fuseki:Server ; # Server-wide context parameters can be given here. # For example, to set query timeouts: on a server-wide basis: # Format 1: "1000" -- 1 second timeout # Format 2: "10000,60000" -- 10s timeout to first result, then 60s timeout to for rest of query. # See java doc for ARQ.queryTimeout # ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ; # Load custom code (rarely needed) # ja:loadClass "your.code.Class" ; .
Configurations from Fuseki 1, where all dataset and server setup is in a single configuration file, will still work. It is less flexible (you can't restart these services after stopping them in a running server) and user should plan to migrate to the new layout.
To convert a Fuseki 1 configuration setup to Fuseki 2 style, move each data service assembler and put in its own file under FUSEKI_BASE/configuration/