You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by ij...@apache.org on 2011/12/09 22:14:10 UTC

svn commit: r1212639 - in /incubator/jena/site/trunk/content/jena/documentation/serving_data: index.mdtext soh.mdtext

Author: ijd
Date: Fri Dec  9 21:14:10 2011
New Revision: 1212639

URL: http://svn.apache.org/viewvc?rev=1212639&view=rev
Log:
Imported Fuseki documentation from wiki

Added:
    incubator/jena/site/trunk/content/jena/documentation/serving_data/soh.mdtext
Modified:
    incubator/jena/site/trunk/content/jena/documentation/serving_data/index.mdtext

Modified: incubator/jena/site/trunk/content/jena/documentation/serving_data/index.mdtext
URL: http://svn.apache.org/viewvc/incubator/jena/site/trunk/content/jena/documentation/serving_data/index.mdtext?rev=1212639&r1=1212638&r2=1212639&view=diff
==============================================================================
--- incubator/jena/site/trunk/content/jena/documentation/serving_data/index.mdtext (original)
+++ incubator/jena/site/trunk/content/jena/documentation/serving_data/index.mdtext Fri Dec  9 21:14:10 2011
@@ -1,57 +1,512 @@
-Title: Serving RDF data with Fuseki
+Title: Fuseki: serving RDF data over HTTP
 
-## Fuseki
-
-Fuseki is a SPARQL server. It provides the REST-style SPARQL HTTP Update, and SPARQL Query and SPARQL Update using the SPARQL protocol over HTTP.
+Fuseki is a SPARQL server. It provides the REST-style SPARQL HTTP
+Update, and SPARQL Query and SPARQL Update using the SPARQL
+protocol over HTTP.
 
 The relevant SPARQL standards are:
 
- * [SPARQL 1.1 Query](http://www.w3.org/TR/sparql11-query/)
- * [SPARQL 1.1 Update](http://www.w3.org/TR/sparql11-update/)
- * [SPARQL 1.1 Protocol](http://www.w3.org/TR/sparql11-protocol/)
- * [SPARQL 1.1 Graph Store HTTP Protocol](http://www.w3.org/TR/sparql11-http-rdf-update/) 
-
-These are work-in-progress by the SPARQL working group and while the general designs are stable, details may change. Fuseki will track the draft standards.
+-   [SPARQL 1.1 Query](http://www.w3.org/TR/sparql11-query/ "http://www.w3.org/TR/sparql11-query/")
+-   [SPARQL 1.1 Update](http://www.w3.org/TR/sparql11-update/ "http://www.w3.org/TR/sparql11-update/")
+-   [SPARQL 1.1 Protocol](http://www.w3.org/TR/sparql11-protocol/ "http://www.w3.org/TR/sparql11-protocol/")
+-   [SPARQL 1.1 Graph Store HTTP Protocol](http://www.w3.org/TR/sparql11-http-rdf-update/ "http://www.w3.org/TR/sparql11-http-rdf-update/")
+
+These are work-in-progress by the SPARQL working group and while
+the general designs are stable, details may change. Fuseki will
+track the draft standards.
 
 See also:
 
- * [SPARQL Over HTTP](http://openjena.org/wiki/SOH) – command line tools for working with any SPARQL 1.1 system
- * [TDB](http://openjena.org/wiki/TDB) – the RDF database used by Fuseki.
- * [ARQ](http://openjena.org/ARQ) – the SPARQL query engine used by Fuseki. 
+-   [SPARQL Over HTTP](soh.html "SOH") – command line tools for working with any SPARQL 1.1 system
+
+## Contents
+
+-   [Download](#download)
+-   [Getting Started](#getting_started)
+-   [Security](#security)
+-   [Logging](#logging)
+-   [Server URI scheme](#server_uri_scheme)
+-   [Fuseki assumptions](#fuseki_assumptions)
+-   [Running a Fuseki Server](#running_a_fuseki_server)
+-   [SPARQL Over HTTP](#sparql_over_http)
+-   [Use from Java](#use_from_java)
+-   [Development System](#development_system)
+
+## Download
+
+**Note** builds will be migrating to the Apache infrastructure very soon. TODO
+
+Builds are available from the
+[Jena Maven repository](http://openjena.org/repo/org/openjena/fuseki/)
+and also the
+[development repository](http://openjena.org/repo-dev/org/openjena/fuseki/).
+
+Choose the version directory then look for the file
+fuseki-*VER*.zip. *VER* for a snapshot includes the timestamp and
+increment number as generated by maven.
+
+Fuseki download files
+
+Filename | Description
+fuseki-*VER*.zip | Fuseki download, includes everything.
+fuseki-*VER*-server.jar  |Fuseki server, as an executable jar.
+fuseki-*VER*-SOH.zip | [SOH (SPARQL Over HTTP)](soh.html "SOH") scripts
+
+Fuseki requires Java6.
+
+## Getting Started
+
+This section provides a brief guide to getting up and running with
+a simple server installation. It uses the
+[SOH (SPARQL over HTTP)](soh.html "SOH") scripts included in the
+download.
+
+1.  Download (this includes the server and the SOH scripts)
+2.  Unzip
+3.  (Linux) chmod +x fuseki-server s-\*
+4.  Run a server
+
+     fuseki-server --update --mem /dataset
+
+The server logging goes to the console:
+
+    09:25:41 INFO  Fuseki               :: Dataset: in-memory
+    09:25:41 INFO  Fuseki               :: Update enabled
+    09:25:41 INFO  Fuseki               :: Fuseki development
+    09:25:41 INFO  Fuseki               :: Jetty 7.2.1.v20101111
+    09:25:41 INFO  Fuseki               :: Dataset = /ds
+    09:25:41 INFO  Fuseki               :: Started 2011/01/06 09:25:41 GMT on port 3030
+
+## User Interface
+
+The Fuseki download includes a number of services:
+
+-   SPARQL Query, SPARQL Update and file upload to a selected
+    dataset.
+-   Link to the documentation (here).
+-   Validators for SPARQL query and update and for non-RDF/XML
+    formats.
+
+For the control panel:
+
+1.  In a browser, go to
+    [http://localhost:3030/](http://localhost:3030/ "http://localhost:3030/")
+2.  Click on "Control Panel
+3.  Select the dataset (if set up above there is only one choice).
+
+The page offers SPARQL operations and file upload acting on the
+selected dataset.
+
+## Script Control
+
+In a new window:
+
+Load some RDF data into the default graph of the server:
+
+    s-put http://localhost:3030/dataset/data default books.ttl
+
+Get it back:
+
+    s-get http://localhost:3030/dataset/data default
+
+Query it with SPARQL using the .../query endpoint.
+
+    s-query --service http://localhost:3030/dataset/query 'SELECT * {?s ?p ?o}'
+
+Update it with SPARQL using the .../update endpoint.
+
+    s-update --service http://localhost:3030/dataset/update 'CLEAR DEFAULT'
+
+## Security
+
+Fuseki does not have any security yet. This will change.
+
+Data can be updated without access control if the server is started
+with the --update argument. If started without that argument, data
+is read-only.
+
+## Logging
+
+Fuseki uses
+[Log4J](http://logging.apache.org/log4j/ "http://logging.apache.org/log4j/")
+for logging. There are two main logging channels:
+
+1.  The general server messages : org.openjena.fuseki.Server
+2.  A channel for all request messages: org.openjena.fuseki.Fuseki
+
+The default settings are (this is an extract of a log4j properties
+file):
+
+    # Fuseki
+    # Server log.
+    log4j.logger.org.openjena.fuseki.Server=INFO
+    # Request log.
+    log4j.logger.org.openjena.fuseki.Fuseki=INFO
+    # Internal logs
+    log4j.logger.org.openjena.fuseki=INFO
+
+## Server URI scheme
+
+This details the service URIs for Fuseki:
+
+-   http://host/*dataset*/query -- the SPARQL query endpoint.
+-   http://host/*dataset*/update -- the SPARQL Update language
+    endpoint.
+-   http://host/*dataset*/data -- the SPARQL Graph Store Protocol
+    endpoint.
+-   http://host/*dataset*/upload -- the file upload endpoint.
+
+where *dataset* is a URI path. Note that Fuseki defaults to using
+port 3030 so *host* is often *localhost:3030*.
+
+The URI
+[http://host/dataset/sparql](http://host/dataset/sparql "http://host/dataset/sparql")
+is currently mapped to /query but this may change to being a
+general purpose SPARQL query endpoint.
+
+## Fuseki assumptions
+
+Where the standards allow variability or are not yet precisely
+defined, Fuseki makes certain assumptions.
+
+1.  ?default names the default graph for SPARQL HTTP Update.
+2.  SPARQL Updates are sent by POSTing the SPARQL update request as
+    the body of the POST with content type application/sparql-update
+3.  SPARQL Update over HTML Forms is supported with parameter
+    request=
+
+## Running a Fuseki Server
+
+The server can be run with the script `fuseki-server`. Common forms
+are:
+
+    fuseki-server --mem  /DatasetPathName
+
+    fuseki-server --file=FILE /DatasetPathName
+
+    fuseki-server --loc=DB /DatasetPathName
+
+    fuseki-server --config=ConfigFile
+
+There is an option `--port=PORT` to set the port number. It
+defaults to 3030.
+
+`/DatasetPathName` is the name under which the dataset will be
+accessible over HTTP.
+
+The server will service read requests only unless the --update
+argument is used.
+
+The full choice of dataset forms is:
+
+Fuseki Dataset Descriptions
+--mem
+Create an empty, in-memory (non-persistent) dataset.
+--file=FILE
+Create an empty, in-memory (non-persistent) dataset, then load FILE
+into it.
+--loc=DIR
+Use an existing TDB database. Create an empty one if it does not
+exist.
+--desc=assemblerFile
+Construct a dataset based on the general assembler description.
+--config=ConfigFile
+Construct one or more service endpoints based on the
+[configuration description](#Fuseki_Configuration_File).
+A copy of TDB is included in the standalone server. An example
+assembler file for TDB is in tdb.ttl.
+
+Fuseki Server Arguments
+--help
+Print help message.
+--port=*number*
+Run on port *number* - default is 3030.
+--host=*name*
+Listen only to a specific network interface.
+--update
+Allow update. Otherwise only read requests are served (ignored if a
+configuration file is given).
+
+## Security and Access Control
+
+Fuseki does not offer any security and access control itself.
+Authentication and control of the number of concurrent request can
+be added using an Apache server and either blocking the Fuseki port
+to outside traffic (e.g. on Amazon's EC2) or by listening only the
+"localhost" network interface. This is especially import for update
+endpoints (SPARQL Update, SPARQL Graph Store protocol with
+PUR/POST/DELETE enabled).
+
+## Fuseki Server starting with an empty dataset
+
+    fuseki-server --update --mem /dataset
+
+runs the server on port 3030 with an in-memory dataset. It can be
+accessed via the appropriate protocol at URLs:
 
-## Getting Started with Fuseki
+-   SPARQL query: http://localhost:3030/dataset/query
+-   SPARQL update: http://localhost:3030/dataset/update
+-   SPARQL HTTP update: http://localhost:3030/dataset/data
 
- 1. Download the latest stable released of Fuseki from here: [http://openjena.org/repo/org/openjena/fuseki/0.2.0/fuseki-0.2.0.zip](http://openjena.org/repo/org/openjena/fuseki/0.2.0/fuseki-0.2.0.zip)
- 2. Unzip
- 3. (Linux) `chmod +x fuseki-server s-*`
- 4. Run the server with: `fuseki-server --update --mem /dataset`
- 5. [http://127.0.0.1:3030](http://127.0.0.1:3030)
- 
+The [SPARQL Over HTTP](soh.html "SOH") scripts take care of naming
+and protocol details. For example, to load in a file data.rdf:
 
-## Want more?
+     s-put http://localhost:3030/dataset/data default data.rdf
 
-More documentation about Fuseki is available here:
+## Fuseki Server and TDB
 
- * [http://openjena.org/wiki/Fuseki](http://openjena.org/wiki/Fuseki)
+Fuseki include a built-in version of TDB. Run the server with the
+--desc argument
+
+    fuseki-server --desc tdb.ttl /dataset
+
+and a database in the directory DB, an assembler description of:
+
+    @prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+    @prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+    @prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
+    @prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
+
+    [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
+    tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
+    tdb:GraphTDB    rdfs:subClassOf  ja:Model .
+
+    <#dataset> rdf:type      tdb:DatasetTDB ;
+         tdb:location "DB" ;
+         .
+
+The form:
+
+    fuseki-server --loc=DB /dataset
+
+is a shorthand for such an assembler with location "DB".
+
+To make triples from all the named graphs appear as the default,
+unnamed graph, use:
+
+    <#dataset> rdf:type      tdb:DatasetTDB ;
+         tdb:location "DB" ;
+         tdb:unionDefaultGraph true ;
+        .
+
+## Fuseki Server and general dataset descriptions
+
+The Fuseki server can be given an
+[assembler description](assembler.html "http://openjena.org/assembler/index.html")
+to build a variety of model and datasets types.
+
+    fuseki-server --desc assembler.ttl /dataset
+
+Full details of setting up models assembler is given in the
+[assembler documentation](assembler.html "http://openjena.org/assembler/index.html").
+
+A general dataset is described by:
+
+    # Dataset of default graph and one named graph.
+    <#dataset> rdf:type ja:RDFDataset ;
+       ja:defaultGraph <#modejDft> ;
+       ja:namedGraph
+           [ ja:graphName      <http://example.org/name1> ;
+             ja:graph          <#model1> ] ;
+       .
+
+    <#modelDft> a ja:MemoryModel ;
+            ja:content [ ja:externalContent <file:Data.ttl> .
+
+    <#model1>  rdf:type ja:MemoryModel ;
+       ja:content [ ja:externalContent <file:FILE-1.ttl> ] ;
+       ja:content [ ja:externalContent <file:FILE-2.ttl> ] ;
+       .
+
+The models can be
+[Jena inference models](/jena/documentation/inference/).
+
+## Fuseki Configuration File
+
+A Fuseki server can be setup 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.
+
+### Prefix declarations
+
+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 :        <#> .
+
+### Server Section
+
+Order of the file does not matter to the machine, but it's useful
+to start with the server description, then each of the services
+with it's datasets.
+
+    [] 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" ;
+
+       # Services available.  Only explicitly listed services are configured.
+       #  If there is a service description not linked from this list, it is ignored.
+       fuseki:services (
+         <#service1>
+         <#service2>
+       ) .
+
+### Assembler Initialization
+
+All datasets are described by
+[assembler descriptions](assembler.html "http://openjena.org/assembler/index.html").
+Assemblers provide an extensible way of describing many kinds of
+objects. Set up any assembler extensions - here, the TDB assembler
+support.
+
+    # Declaration additional assembler items.
+    [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
+
+    # TDB
+    tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
+    tdb:GraphTDB    rdfs:subClassOf  ja:Model .
+
+### Service 1
+
+This service offers SPARQL Query, SPARQL Update and SPARQL Graph
+Store protocol, as well as file upload, on an in-memory dadaset.
+Initially, the dataset is empty.
+
+    ## ---------------------------------------------------------------
+    ## Updatable in-memory dataset.
+
+    <#service1> rdf:type fuseki:Service ;
+        fuseki:name                       "ds" ;       # http://host:port/ds
+        fuseki:serviceQuery               "query" ;    # SPARQL query service
+        fuseki:serviceQuery               "sparql" ;   # SPARQL query service
+        fuseki:serviceUpdate              "update" ;   # SPARQL query service
+        fuseki:serviceUpload              "upload" ;   # Non-SPARQL upload service
+        fuseki:serviceReadWriteGraphStore "data" ;     # SPARQL Graph store protocol (read and write)
+        # A separate ead-only graph store endpoint:
+        fuseki:serviceReadGraphStore      "get" ;      # SPARQL Graph store protocol (read only)
+        fuseki:dataset                   <#dataset-mem> ;
+        .
+
+    <#dataset-mem> rdf:type ja:RDFDataset .
+
+### Service 2
+
+This service offers a number endpoints. It is read-only, because
+only read-only endpoints are defined (SPARQL Query and HTTP GET
+SPARQl Graph Store protocol) The dataset is a single in-memory
+graph:
+
+This service offers read-only access to a dataset with a single
+graph of data.
+
+    <#service2> rdf:type fuseki:Service ;
+        fuseki:name                     "books" ;    # http://host:port/books
+        fuseki:serviceQuery             "query" ;    # SPARQL query service
+        fuseki:serviceReadGraphStore    "data" ;     # SPARQL Graph store protocol (read only)
+        fuseki:dataset           <#books> ;
+        .
+
+    <#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> ] ;
+          ] ;
+        .
+
+### Service 3
+
+This service offers SPARQL query access only to a TDB database. The
+TDB database can have specific features set, such as query timeout
+or making the default graph the union of all named graphs.
+
+    <#service3>  rdf:type fuseki:Service ;
+        fuseki:name              "tdb" ;       # http://host:port/tdb
+        fuseki:serviceQuery      "sparql" ;    # SPARQL query service
+        fuseki:dataset           <#dataset> ;
+        .
+
+    <#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 ;
+         .
+
+## SPARQL Over HTTP
+
+"SOH" (SPARQL Over HTTP) is a set of command line scripts for
+working with SPARQL 1.1. It is server-independent and will work
+with any compliant SPARQL 1.1 system offering HTTP access.
+
+See the [SPARQL Over HTTP](soh.html "SOH") page.
+
+### Examples
+
+    # PUT a file
+    s-put http://localhost:3030/dataset/data default D.nt
+
+    # GET a file
+    s-get http://localhost:3030/dataset/data default
+
+    # PUT a file to a named graph
+    s-put http://localhost:3030/dataset/data http://example/graph D.nt
+
+    # Query
+    s-query --service http://localhost:3030/dataset/query 'SELECT * {?s ?p ?o}'
+
+    # Update
+    s-update --service http://localhost:3030/dataset/update --file=update.ru
+
+## Use from Java
+
+### SPARQL Query
+
+ARQ's `QueryExecutionFactory.sparqlService` can be used.
+
+### SPARQL Update
+
+See `UpdateRemote.execute`
+
+### SPARQL HTTP
+
+See `DatasetAccessor`
 
 ## Development System
 
-If you wish to pick the development codebase, check out the codebase from Apache:
+If you wish to pick the development codebase, check out the
+codebase from Apache:
 
-    svn co https://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk
+     svn co https://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk
 
 Build:
 
-    mvn clean package
-
-This creates a standalone jar for the Fuseki server:
+     mvn clean package
 
-    target/fuseki-version-server.jar
+This creates a standalone jar for the Fuseki server.
 
-See the file SETUP.txt for working with Eclipse. 
- 
-## Joseki
+     target/fuseki-version-server.jar
 
-Joseki is an HTTP engine that supports the [SPARQL Protocol](http://www.w3.org/TR/rdf-sparql-protocol/) and the [SPARQL RDF Query language](http://www.w3.org/TR/rdf-sparql-query/). Fuseki has now superseded Joseki developement. 
+See the file SETUP.txt for working with Eclipse.
 
-Joseki documentation is still available at: [http://joseki.org/](http://joseki.org/).
\ No newline at end of file

Added: incubator/jena/site/trunk/content/jena/documentation/serving_data/soh.mdtext
URL: http://svn.apache.org/viewvc/incubator/jena/site/trunk/content/jena/documentation/serving_data/soh.mdtext?rev=1212639&view=auto
==============================================================================
--- incubator/jena/site/trunk/content/jena/documentation/serving_data/soh.mdtext (added)
+++ incubator/jena/site/trunk/content/jena/documentation/serving_data/soh.mdtext Fri Dec  9 21:14:10 2011
@@ -0,0 +1,104 @@
+Title: SOH - SPARQL over HTTP
+
+"SOH" (SPARQL Over HTTP) is a set of command line scripts for
+working with SPARQL 1.1. It is server-independent and will work
+with any compliant SPARQL 1.1 system offering HTTP access.
+
+SOH is written in ruby.
+
+Commands:
+
+-   s-http – SPARQL 1.1 HTTP Protocol
+-   s-get, s-put, s-delete, s-post, s-head – abbreviation for
+    "s-http get ..." etc.
+-   s-query – SPARQL 1.1 Query, both GET and POST of queries.
+-   s-update – SPARQL 1.1 Update
+-   s-update-form – SPARQL 1.1 Update using the HTML form and a
+    parameter of "request=" (compatible with Joseki).
+
+Each command supports the "-v" flag to print out details of the
+HTTP interaction.
+
+## Contents
+
+-   [SOH SPARQL HTTP](#SOH_SPARQL_HTTP)
+-   [SOH SPARQL Query](#SOH_SPARQL_Query)
+-   [SOH SPARQL Update](#SOH_SPARQL_Update)
+-   [Service endpoints](#Service_endpoints)
+
+
+## SOH SPARQL HTTP
+
+The syntax of the commands is:
+
+    s-http VERB datasetURI graphName [file]
+
+where graph name is a URI or the work *default* for the default
+graph.
+
+s-get, s-put, s-delete, s-post abbreviations for "s-http get",
+"s-http put", "s-http delete", "s-http post" respectively.
+
+file is needed for PUT and POST. The file name extension determines
+the HTTP content type.
+
+     s-put http://localhost:3030/dataset default data.ttl
+
+     s-get http://localhost:3030/dataset default
+
+     s-put http://localhost:3030/dataset http://example/graph data.ttl
+
+     s-get http://localhost:3030/dataset http://example/graph
+
+## SOH SPARQL Query
+
+    s-query --service=endpointURL 'query string'
+
+    s-query --service=endpointURL --query=queryFile.rq
+
+## SOH SPARQL Update
+
+    s-update --service=endpointURL 'update string'
+
+    s-update --service=endpointURL --update=updateFile.ru
+
+## Service endpoints
+
+SOH is a general purpose set of scripts that work with any SPARQL
+1.1. server. Different servers offer different naming conventions
+for HTTP REST, query and update. This section provides summary
+information about using SOH with some servers. See the
+documentation for each server for authoritative information.
+
+If you have details for other servers, (get involved)[jena/getting_involved/index.html)
+
+### Fuseki
+
+If a [Fuseki](fuseki.html "Fuseki") server is run with the
+command:
+
+    fuseki-server --mem /dataset
+
+then the service endpoints are:
+
+-   HTTP: http://localhost:3030/dataset/data
+-   Query: http://localhost:3030/dataset/query
+-   Update: http://localhost:3030/dataset/update
+
+### Joseki
+
+[Joseki](http://www.joseki.org/ "http://www.joseki.org/") allows a
+choice of server endpoint names in the configuration file.
+
+Used with the default configuration file joseki-config.ttl:
+
+-   Query:
+    -   http://localhost:2020/books -- example books database
+    -   http://localhost:2020/sparql -- general purpose SPARQL query
+        engine
+    -   http://localhost:2020/sparql/read -- companion to updatable
+        dataset (if enabled)
+
+-   Update: http://localhost:2020/update/service (if enabled)
+-   HTTP: Not supported
+