Author: andy
Date: Sat Sep 29 12:45:17 2018
New Revision: 1842328

URL: http://svn.apache.org/viewvc?rev=1842328&view=rev
Log:
Embedded -> main

Added:
    jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-layout.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-logging.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-main.md
      - copied, changed from r1842327, 
jena/site/trunk/content/documentation/fuseki2/fuseki-embedded.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-run.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-security.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-stats.md
    jena/site/trunk/content/documentation/fuseki2/index.md
    jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.md
    jena/site/trunk/content/documentation/fuseki2/soh.md
Removed:
    jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-embedded.md
    jena/site/trunk/content/documentation/fuseki2/fuseki-layout.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-logging.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-run.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-security.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.mdtext
    jena/site/trunk/content/documentation/fuseki2/fuseki-stats.mdtext
    jena/site/trunk/content/documentation/fuseki2/index.mdtext
    jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.mdtext
    jena/site/trunk/content/documentation/fuseki2/soh.mdtext

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.md 
(added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-configuration.md Sat 
Sep 29 12:45:17 2018
@@ -0,0 +1,155 @@
+Title: Fuseki: Configuring Fuseki
+
+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:
+
+1. The directory `FUSEKI_BASE/configuration/` with one data service assembler 
per file (includes endpoint details and the dataset description.)
+2. The system database. This includes uploaded assembler files.  It also keeps 
the state of each data service (whether it's active or offline).
+3. The service configuration file.  For compatibility, the service 
configuration file can also have data services. [See 
below](#relationship-to-fuseki-1-configuration).
+4. The command line, if not running as a web application from a .war file.
+
+`FUSEKI_BASE` is the location of the [Fuseki run area](./fuseki-layout.html).
+
+## Data Service assembler
+
+See [Fuseki Data Services](fuseki-data-services.html) for the architecture of 
data services.
+
+See [Fuseki Security](fuseki-security.html) for more information on security.
+
+## Fuseki Configuration File
+
+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.
+
+### 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 :        <#> .
+
+### Assembler Initialization
+
+All datasets are described by 
+[assembler descriptions](../assembler/index.html).
+Assemblers provide an extensible way of describing many kinds of
+objects. 
+
+### Defining the service name and endpoints available 
+
+Each data service assembler defines:
+
+* The base name
+* The operations and endpoint names
+* The dataset for the RDF data.
+
+This example offers SPARQL Query, SPARQL Update and SPARQL Graph
+Store protocol, as well as file upload.
+
+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.
+
+### Read-only service
+
+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> ;
+        .
+
+### Dataset
+
+#### In-memory
+
+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> ] ;
+          ] ;
+        .
+
+#### TDB
+
+    <#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 ;
+         .
+
+#### Inference
+
+> @@
+
+## Server Configuration
+
+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
+
+### Server Section
+
+    [] 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" ;
+       .
+
+## Compatibility with Fuseki 1 configuration
+
+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](./fuseki-layout.html).
+
+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/`

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.md 
(added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-data-services.md Sat 
Sep 29 12:45:17 2018
@@ -0,0 +1,98 @@
+Title: Fuseki : Data Services
+
+Fuseki provides a number of "data services" - each data service is an RDF 
datasets
+and a configurable set of endpoints for various operations such as SPARQL 
query,
+SPARQL update and file upload.
+
+URI scheme.
+  Datasets and services
+  Admin
+
+## SPARQL Protocol
+
+Query
+update
+GSP including direct naming for GSP
+
+in addition:
+
+Dataset as a set of quads.
+
+
+----------------------------
+
+> _@@ Just rough notes : out-of-date and inconsistent_
+
+## Naming
+
+The naming style for application operations is:
+
+   / name / endpoint ? parameters
+
+where `name` is
+
+and `endpoint` is
+
+
+In the administration operations, the name is used after the 
+
+   /$/
+
+e.g. 
+
+In administration operations, the dataset name is appended to the operation.  
For
+example, `http://host:port/$/datasets/ds` accesses the assembler description
+of the dataset.
+
+There is also an internal name, generated by the server which is a UUID.
+This UUID is never reused even if the dataset name is reused after the
+first use is deleted.
+
+## Services and Datasets
+
+Service 
+
+### Query
+
+    GEThttp://host:port/dataset?query=..
+
+    POST http://host:port/dataset
+    Content-type: application/sparql-query
+
+### Update
+
+    POST http://host:port/dataset?update=...
+    POST http://host:port/dataset?update
+
+or
+
+    POST http://host:port/dataset
+    Content-type: application/sparql-update
+
+### GSP
+
+    http://host:port/dataset?default
+    http://host:port/dataset?graph=...
+
+
+## The Dataset Lifecycle
+
+The lifecycle of a dataset 
+
+* Active 
+* Offline
+
+An *active* dataset is able to process applications requests. 
+
+An *offline* dataset is one whose configuration is know to the server but is 
currently not controlled by the server.
+
+When offline, the dataset is unavailable for application requests but the name 
remains in-use and the configuration information retained.  When made active 
again, the dataset and it's associated services are recreated.  When offline, 
Fuseki does not retain any access to the data so the dataset can be changed 
with tools outside of Fuseki.  When active, Fuseki assumes it has full control 
of a dataset (in particular TDB datasets can not be updated by other 
applications while active).
+
+When Fuseki is not running, all datasets can be considered offline even if 
they were not explicitly made so prior to shutdown of the server.
+
+
+(If a dataset uses in-memory storage, changes to its state are lost even 
though it is recreated from its; configuration when the server restarts.)
+
+
+## Links
+

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-layout.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-layout.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-layout.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-layout.md Sat Sep 29 
12:45:17 2018
@@ -0,0 +1,66 @@
+Title: Fuseki File System Layout
+
+There are two areas: the fixed files provided by the distribution and the
+changing files for the local deployment,including the default location
+for TDB databases.
+
+Two environment variables control the file system usage. 
+Symbolic links can be used to create variations on the standard layout.
+
+`FUSEKI_HOME` - this contains the fixed files from the distribution and
+is used for Unix service deployments.  When deployment as a WAR file,
+everything is in the WAR file itself.
+
+`FUSEKI_BASE` - this contains the deployment files.
+
+| Mode        | Environment Variable   | Default Setting     |  
+|-------------|------------------------|---------------------|
+| Service     | `FUSEKI_HOME`       | `/usr/share/fuseki`    |
+|             | `FUSEKI_BASE`       | `/etc/fuseki`          |
+| Webapp      | `FUSEKI_HOME`       | N/A (Files in the Fuseki .war file) |
+|             | `FUSEKI_BASE`       | `/etc/fuseki`          |
+| Standalone  | `FUSEKI_HOME`       | Current directory      |
+|             | `FUSEKI_BASE`       | `${FUSEKI_HOME}/run/`   |
+
+When run in a web application container (e.g. 
[Tomcat](http://http://tomcat.apache.org/),
+[Jetty](http://eclipse.org/jetty/) or other webapp compliant server), 
+`FUSEKI_BASE` will be `/etc/fuseki`.
+
+If `FUSEKI_BASE` is the same as `FUSEKI_HOME`, be careful when upgrading not 
to delete
+server deployment files and directories.
+
+# Distribution area -- `FUSEKI_HOME`
+
+| Directory or File     | Usage |
+|-----------------------|-------|
+| `fuseki`              | Fuseki Service (Linux)            |
+| `fuseki-server`       | Fuseki standalone command         |
+| `fuseki-server.bat`   | Fuseki standalone command         |
+| `fuseki-server.jar`   | The Fuseki Server binary          |
+| `fuseki.war`          | The Fuseki Server as a WAR file   |
+| `bin/`                | Helper scripts                    |
+| `webapp/`             | The webapp for the UI             |
+
+# Runtime area -- `FUSEKI_BASE`
+
+| Directory or File | Usage |
+|-------------------|-------|
+| `config.ttl`      | Server configuration        |
+| `shiro.ini`       | Apache Shiro configuration  |
+| `databases/`         | TDB Databases               |
+| `backups/`           | Write area for live backups |
+| `configuration/`  | Assembler files             |
+| `logs/`           | Log file area               |
+| `system/`         | System configuration database |
+| `system_files/`   | Uploaded data service descriptions (copies) |
+| `templates/`     | Templates for build-in configurations |
+
+
+The `system_files/` keeps a copy of any assemblers uploaded to
+configure the server. The master copy is kept in the system database.
+
+# Resetting
+
+To reset the server, stop the server, and delete the system database in 
`system/`,
+the `system_files/` and any other unwanted deployment files,
+then restart the server.

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-logging.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-logging.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-logging.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-logging.md Sat Sep 29 
12:45:17 2018
@@ -0,0 +1,77 @@
+Title: Fuseki Logging
+
+Fuseki logs operation details and also provides a standard NCSA request log.  
+
+Logging is via [slj4j](http://slf4j.org/) over 
+[Apache Log4J](http://logging.apache.org/log4j/).
+Logging output is controlled via log4j.
+
+## Server Logs
+
+| Full Log name                   | Usage |
+|---------------                  |-------|
+| org.apache.jena.fuseki.Server   | General Server Messages              |
+| org.apache.jena.fuseki.Request  | NCSA request Log.                    |
+| org.apache.jena.fuseki.Fuseki   | The HTTP request log                 |
+| org.apache.jena.fuseki.Admin    | Administration operations            |
+| org.apache.jena.fuseki.Builder  | Dataset and service build operations |
+| org.apache.jena.fuseki.Config   | Configuration                        |
+
+## NCSA request Log. 
+
+This log is in NCSA extended/combined log format.  
+Many web log analysers can process this format.
+
+This log is normally off.
+
+When run as a WAR file inside a webapp container 
+(e.g. [Apache Tomcat](http://tomcat.apache.org/)), the webapp container
+or reverse proxy will log access requests anyway. 
+
+## Setting logging
+
+The Fuseki engine looks for the log4j configuration as follows:
+
+* Use system property `log4j.configuration` if defined (as usual for log4j).
+* Use `file:log4j.properties` (current directory) if it exists
+* Use file `log4j.properties` is the directory defined by `FUSEKI_BASE`
+* Use java resource `log4j.properties` on the classpath.
+* Use java resource `org/apache/jena/fuseki/log4j.properties` on the classpath.
+* Use a built-in configuration.
+
+The last step is a fallback to catch the case where Fuseki has been repackaged
+into a new WAR file and `org/apache/jena/fuseki/log4j.properties` omitted, or 
run from
+the base jar.  It is better to include 
`org/apache/jena/fuseki/log4j.properties`.
+
+The preferred customization is to use a custom `log4j.properties` file in
+`FUSEKI_BASE`.  For the WAR file, `FUSEKI_BASE` defaults to `/etc/fuseki`
+on Linux.  For the standalone server, `FUSEKI_BASE` defaults to directory
+`run/` within the directory where the server is run.
+
+## Default setting
+
+The [default 
log4j.properties](https://github.com/apache/jena/blob/master/jena-fuseki2/jena-fuseki-core/src/main/resources/org/apache/jena/fuseki/log4j.properties).
+
+## Logrotate
+
+Below is an example logrotate(1) configuration (to go in `/etc/logrotate.d`)
+assuming the log file has been put in `/etc/fuseki/logs/fuseki.log`.
+
+It rotates the logs once a month, compresses logs on rotation and keeps them 
for 6 months.
+
+It uses `copytruncate`.  This may lead to at most one broken log file line.
+
+    /etc/fuseki/logs/fuseki.log
+    {
+        compress
+        monthly
+        rotate 6
+        create
+        missingok
+        copytruncate
+        # Date in extension.
+        dateext
+        # No need
+        # delaycompress
+    }
+

Copied: jena/site/trunk/content/documentation/fuseki2/fuseki-main.md (from 
r1842327, jena/site/trunk/content/documentation/fuseki2/fuseki-embedded.md)
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-main.md?p2=jena/site/trunk/content/documentation/fuseki2/fuseki-main.md&p1=jena/site/trunk/content/documentation/fuseki2/fuseki-embedded.md&r1=1842327&r2=1842328&rev=1842328&view=diff
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-embedded.md (original)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-main.md Sat Sep 29 
12:45:17 2018
@@ -1,4 +1,4 @@
-Title: Fuseki : Embedded Server
+Title: Fuseki : Main Server
 
 Fuseki can be run in the background by an application as an embedded server.  
The
 application can safely work with the dataset directly from java while having 
Fuseki
@@ -9,7 +9,7 @@ and testing.
 * [Dependencies and Setup](#dependencies)
 * [Logging](#logging)
 * [Building a Server](#build)
-* [Running as a standalone server](#fuseki-basic)
+* [Running as a deployment or development server](#fuseki-server)
 * [Examples](#examples)
 
 The embedded server does not depend on any files on disk (other than for
@@ -58,8 +58,8 @@ To include an embedded Fuseki server in
 
     <dependency>
       <groupId>org.apache.jena</groupId>
-      <artifactId>jena-fuseki-embedded</artifactId>
-      <version>2.x.y</version> <!-- Set the version -->
+      <artifactId>jena-fuseki-main</artifactId>
+      <version>3.x.y</version> <!-- Set the version -->
     </dependency>
 
 This brings in enough dependencies to run Fuseki. Application writers are 
strongly
@@ -126,18 +126,17 @@ the server.
 The default port for a Fuseki embedded server is 3330. This is different for 
the default
 port for Fuseki running as a standalone server or as a webapp application.
 
-## Running as a standalone server {#fuseki-basic}
+## Running as a configured deployment or development server {#fuseki-server}
 
-The artifact `org.apache.jena:jena-fuseki-basic` is a packaging of
-the embedded server that runs from the command line.  Unlike the full
+The artifact `org.apache.jena:jena-fuseki-server` is a packaging of
+the "main" server that runs from the command line.  Unlike the UI 
 Fuseki server, it is only configured from the command line and has no
 persistent work area on-disk.
 
-    java -jar jena-fuseki-basic-$VER-server.jar --help
+    java -jar jena-fuseki-server-$VER.jar --help
 
-The arguments are the same as the [standalone full server command line
-program](http://jena.apache.org/documentation/fuseki2/fuseki-run.html#fuseki-standalone-server
-).
+The arguments are the same as the 
+[full UI server command line 
program](http://jena.apache.org/documentation/fuseki2/fuseki-run.html#fuseki-standalone-server).
 
 ## Examples
 

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-quick-start.md Sat Sep 
29 12:45:17 2018
@@ -0,0 +1,27 @@
+Title: Fuseki Quickstart
+
+This page describes how to achieve certain common tasks in the most direct way 
possible.
+
+## Running with Apache Tomcat and loading a file.
+
+1. Unpack the distribution.
+2. Copy the WAR file into the Apache tomcat webapp directory, under the name 
'fuseki'
+3. In a browser, go to 
`[http://localhost:8080/fuseki/](http://localhost:8080/fuseki)` (details such 
as port number depend on the Tomcat setup).
+4. Click on "Add one", choose "in-memory", choose a name for the URL for the 
dataset.
+5. Go to "add data" and load the file (single graph).
+
+## Publish an RDF file as a SPARQL endpoint.
+
+1. Unpack the distribution.
+2. Run `fuseki-server --file FILE /name`
+
+## Explore a TDB database
+
+1. Unpack the distribution.
+2. Run `fuseki-server --loc=DATABASE /name`
+3. In a browser, go to `http://localhost:3030//query.html`
+
+More details on running Fuseki can be found [nearby](fuseki-run.html),
+including running as an operating system service and in a web app or
+servlet container such as [Apache Tomcat](http://tomcat.apache.org/) or
+[Jetty](http://eclipse.org/jetty).

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-run.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-run.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-run.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-run.md Sat Sep 29 
12:45:17 2018
@@ -0,0 +1,94 @@
+Title: Running Fuseki
+
+Fuseki can be run in a number of ways:
+
+* [As a standalone server](#fuseki-standalone-server)
+* [As a service](#fuseki-service) run by the operation system, for example, 
started when the machine
+* [As a Web Application](#fuseki-web-application) inside a container such as 
Apache Tomcat or Jetty
+boots.
+* [As a configurable SPARQL server](#fuseki-main)
+* [As a deployment and development standalone server](#fuseki-server)
+
+See "[Fuseki Configuration](fuseki-configuration.html)" for information on
+how to provide datasets and configure services.
+
+## Fuseki as a Standalone Server {#fuseki-standalone-server}
+
+This is running Fuseki from the command line.
+
+    fuseki-server [--mem | --loc=DIR] [[--update] /NAME]
+
+    fuseki-server --config=CONFIG
+
+where `/NAME` is the dataset publishing name at this server in URI space.
+
+The argument `--tdb2` puts the command line handling into "TDB2 mode".
+A dataset created with `--loc` is a TDB2 dataset.
+
+See `fuseki-server --help` for details of more arguments.
+
+`FUSEKI_BASE`, the runtime area for the server instance, defaults to the
+`run/` directory of the current directory.
+
+Fuseki v2 supports the same style of configuration file as Fuseki v1 but it
+is better to separate the data service definitions from the server
+configuration with one definition per file in `FUSEKI_BASE/configuration`;
+see "[Fuseki Configuration](fuseki-configuration.html)".
+
+If you get the error message `Can't find jarfile to run` then you either
+need to put a copy of `fuseki-server.jar` in the current directory or set
+the environment variable `FUSEKI_HOME` to point to an unpacked Fuseki
+distribution.
+
+Unlike Fuseki v1, starting with no dataset and no configuration is possible.
+Datasets can be added from the admin UI to a running server.
+
+## Fuseki as a Service {#fuseki-service}
+
+Fuseki can run as an operating system service, started when the server
+machine boots.  The script `fuseki` is a Linux `init.d` with the common
+secondary arguments of `start` and `stop`.
+
+Process arguments are read from `/etc/default/fuseki` including
+`FUSEKI_HOME` and `FUSEKI_BASE`.  `FUSEKI_HOME` should be the directory
+where the distribution was unpacked.
+
+## Fuseki as a Web Application {#fuseki-web-application}
+
+Fuseki can run from a
+[WAR](http://en.wikipedia.org/wiki/WAR_%28file_format%29) file.  Fuseki
+requires at least support for the Servlet 3.0 API (e.g. Apache Tomcat 7 or
+Jetty 8) as well as Java8.
+
+`FUSEKI_HOME` is not applicable.
+
+`FUSEKI_BASE` defaults to `/etc/fuseki` which must be a writeable
+directory.  It is initialised the first time Fuseki runs, including a
+[Apache Shiro](http://shiro.apache.org/) security file but this is only
+intended as a starting point.  It restricts use of the admin UI to the
+local machine.
+
+## Fuseki as Configuable and Embeddable SPARQL Server {#fuseki-main}
+
+Fuseki can be run from inside an Java application to provide SPARQL
+services to application data. The application can continue to access and
+update the datasets served by the server.
+
+Basic example:
+
+    Dataset ds = ...
+    FusekiServer server = FusekiServer.create()
+      .add("/dataset", ds)
+      .build() ;
+    server.start() ;
+
+See the [full documentation](fuseki-main.html) for details of
+configuration and working with data shared with the
+[Fuseki main server](fuseki-main.html) instance.
+
+## Fuseki-Server (no UI) {#fuseki-server}
+
+The artifact `org.apache.jena:jena-fuseki-server` is a packaging of
+the "main" server that runs from the command line.  Unlike the full
+Fuseki server, it is only configured from the command line and has no
+persistent work area on-disk. It has full SPARQL and all storage options.

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-security.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-security.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-security.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-security.md Sat Sep 29 
12:45:17 2018
@@ -0,0 +1,91 @@
+Title: Security in Fuseki2
+
+Fuseki2 provides security by using  [Apache Shiro](http://shiro.apache.org/).
+This is controlled by the configuration file `shiro.ini` located at
+`$FUSEKI_BASE/shiro.ini`. If not found, the server initializes with a default
+configuration. This can then be replaced or edited as required. An existing 
file
+is never overwritten by the server.
+
+In its default configuration, SPARQL endpoints are open to the public but
+administrative functions are limited to `localhost`. One can access it via
+`http://localhost:.../...`. Or the according IPv4 or IPv6 address, for example
+`127.0.0.1` (IPv4), or `[::1]` (IPv6). Access from an external machine is not
+considered as localhost and thus restricted.
+
+Once Shiro has been configured to perform user authentication it provides  a
+good foundation on which the [Jena Permissions](../permissions/) layer can be
+configured. There is an [example implementation](../permissions/example.html)
+documented in the Jena Permissions section. The Jena Permissions layer can be
+used to restrict access to specific graphs or triples within graphs.
+
+A simple example to enable basic user/password authentication is shown in the
+default `shiro.ini` configuration. The default admin user is `admin` and the
+password is `pw`. This can be changed directly in the INI file. Note that this
+setup is not recommended for production for various reasons  (no TLS, passwords
+in plain text etc.), consult the [Shiro
+INI](https://shiro.apache.org/configuration.html#Configuration-INISections)
+documentation for best practices.
+
+As mentioned above, the default setup only restricts access to the admin pages
+of Fuseki. To avoid clashes with dataset names, the namespace of the admin
+interface starts with '/$/', consult the [Fuseki HTTP Administration Protocol
+](../fuseki2/fuseki-server-protocol.html) documentation for more details.
+
+If access to SPARQL endpoints should be restricted, additional [Shiro
+ACLs](https://shiro.apache.org/web.html#Web-WebINIconfiguration) are necessary.
+This is done in the `[urls]` section of the configuration. As an example,
+restricting access to the `../query` SPARQL endpoint for all datasets on Fuseki
+could be done with this wildcard pattern:
+
+`/**/query = authcBasic,user[admin]`
+
+Anonymous SPARQL queries would no longer be possible in this example.
+
+Again, please consult the [Apache Shiro](https://shiro.apache.org/) website for
+details and more sophisticated setups. The default configuration of Fuseki is
+kept simple but is *not* recommended for setups where sensitive data is
+provided.
+
+Changing the security setup requires a server restart.
+
+Contributions of more examples are very welcome.
+
+## Examples
+
+The shipped `shiro.ini` has additional comments.
+
+### The default configuration.
+
+This is a minimal configuration for the default configuration.
+
+    [main]
+    localhost=org.apache.jena.fuseki.authz.LocalhostFilter
+
+    [urls]
+    ## Control functions open to anyone
+    /$/status = anon
+    /$/ping   = anon
+    ## and the rest are restricted to localhost.
+    ## See above for 'localhost'
+    /$/** = localhost
+    /**=anon
+
+### Simple user/password
+
+This extract shows the simple user/password setup.
+
+It adds a `[users]` section and changes the `/$/**` line in `[urls]`
+
+    [users]
+    admin=pw
+
+    [urls]
+    ## Control functions open to anyone
+    /$/status = anon
+    /$/ping   = anon
+    /$/** = authcBasic,user[admin]
+    # Everything else
+    /**=anon
+    
+
+

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.md 
(added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-server-protocol.md Sat 
Sep 29 12:45:17 2018
@@ -0,0 +1,209 @@
+Title: Fuseki HTTP Administration Protocol
+
+This page describes the HTTP Protocol used to control an Fuseki server via
+its administrative interface.  See "[Fuseki Administration](admin.html)"
+for an overview of server administration.
+
+* [Operations](#operations)
+* [Server Information](#server-information)
+* [Datasets and Services](#datasets-and-services)
+    * Adding a Dataset and its Services
+    * Removing a Dataset
+    * Dormant and Active
+* [Removing a dataset](#remove-dataset)
+
+All admin operations have URL paths starting `/$/` to avoid clashes with
+dataset names and this prefix is reserved for the Fuseki control functions.
+Further operations may be added within this naming scheme.
+
+## Operations
+
+| Method          |  URL pattern           | Description   |
+|-----------------|------------------------|---------------|
+||
+| <tt>GET</tt>    | `/$/ping`              |               | 
+| <tt>POST</tt>   | `/$/ping`              |               | 
+| <tt>GET</tt>    | `/$/server`            |               | 
+| <tt>POST</tt>   | `/$/server`            |               | 
+||
+| <tt>POST</tt>   | `/$/datasets`         |               | 
+| <tt>GET</tt>    | `/$/datasets`         |               |
+| <tt>DELETE</tt> | `/$/datasets/*{name}*` |               |
+| <tt>GET</tt>    | `/$/datasets/*{name}*` |               |
+| <tt>POST</tt>   | `/$/datasets/*{name}*?state=offline` |               |
+| <tt>POST</tt>   | `/$/datasets/*{name}*?state=active`  |               |
+||
+| <tt>POST</tt>   | `/$/server/shutdown`   | Not yet implemented  | 
+||
+| <tt>GET</tt>    | `/$/stats`            |               | 
+| <tt>GET</tt>    | `/$/stats/*{name}*`    |               |
+||
+| <tt>POST</tt>   | `/$/backup/*{name}*`   |             |
+| <tt>GET</tt>    | `/$/backups-list`      |             |
+| <tt>POST</tt>   | `/$/sleep`             |             |
+||
+| <tt>GET</tt>    | `/$/tasks`            |               | 
+| <tt>GET</tt>    | `/$/tasks/*{name}*`    |               |
+
+## Ping
+Pattern: `/$/ping`
+
+The URL `/$/ping` is a guaranteed low cost point to test whether a server
+is running or not.  It returns no other information other than to respond to 
the
+request over `GET` or `POST` (to avoid any HTTP caching) with a 200 response.
+
+Return: empty body
+
+## Server Information 
+Pattern: `/$/server`
+
+The URL `/$/server` returns details about the server and it's current status 
in JSON.
+
+_@@details of JSON format._
+
+## Datasets and Services
+Pattern: `/$/datasets`
+
+`/$/datasets` is a container representing all datasets present in the server. 
+`/$/datasets/*{name}*` names a specific dataset.  As a container, operations 
on items
+in the container, via `GET`, `POST` and `DELETE`, operate on specific dataset.
+
+### Adding a Dataset and its Services.
+
+> _@@ May add server-managed templates_
+
+A dataset set can be added to a running server. There are several methods
+for doing this: 
+
+* Post the assembler file
+* HTML Form upload the assembler file 
+* Use a built-in template (in-memory or persistent)
+
+All require HTTP `POST`.
+
+Changes to the server state are carried across restarts.  
+
+For persistent datasets, for example [TDB](/documentation/tdb),
+the dataset is persists across restart.
+
+For in-memory datasets, the dataset is rebuilt from it's description
+(this may include loading data from a file) but any changes are lost.
+
+#### Templates
+
+A short-cut form for some common set-ups is provided by <tt>POST</tt>ing with
+the following parameters (query string or HTML form):
+
+| Parameter |                 |
+|-----------|-----------------|
+| `dbType`  | Either `mem` or `tdb` |
+| `dbName`  | URL path name   |
+
+The dataset name must not be already in-use.
+
+Datasets are created in director `databases/`.
+
+#### Assembler example
+
+The assembler description contains data and service.  It can be sent by 
posting the assembler RDF graph
+in any RDF format or by posting from an HTML form (the syntax must be Turtle).
+
+The assembler file is stored by the server will be used on restart or when 
making the dataset active again.
+
+> _@@_
+
+### Removing a Dataset
+
+Note: `DELETE` means "gone for ever".  The dataset name and the details of its
+configuration are completely deleted and can not be recovered.  
+
+The data of a TDB dataset is not deleted.
+
+### Active and Offline
+
+A dataset is in one of two modes: "active", meaning it is services request 
over HTTP
+(subject to configuration and security), or "offline", meaning the 
configuration and name 
+is known about by the server but the dataset is not attached to the server.  
When "offline",
+any persistent data can be manipulated outside the server.
+
+Datasets are initially "active".  The transition from "active" to "offline" is 
graceful - all outstanding requests are completed.
+
+## Statistics
+> **`/$/stats/*{name}*`**
+
+Statistics can be obtained for each dataset or all datasets in a single 
response.
+`/$/stats` is  treated as a container for this information.
+
+> _@@ stats details_
+> See [Fuseki Statistics](fuseki-stats.html) for details of statistics kept by 
a Fuseki server.
+
+### Backup 
+Pattern: `/$/backup/*{name}*`
+
+This operation initiates a backup and returns a JSON object with the task Id 
in it.
+
+Backups are written to the server local directory 'backups' as gzip-compressed 
N-Quads files.
+
+See [Tasks](#tasks) for how to monitor a backups progress.
+
+Return: A task is allocated a identifier (usually, a number).
+```
+{ "taskId" : "*{taskId}*" }
+```
+The task id can be used to construct a URL to get details of the task:
+```
+/$/tasks/*{taskId}*
+```
+
+Pattern: `/$/backups-list`
+
+Returns a list of all the files in the backup area of the server. This is
+useful for managing the files externally.
+
+The returned JSON object will have the form `{ backups: [ ... ] }` where the 
`[]` array is
+a list of file names.
+
+## Tasks
+Some operations cause a background task to be executed, backup is an example.
+The result of such operations includes a json object with the task id and
+also a `Location:` header with the URL of the task created.
+
+The progress of the task can be monitored with HTTP GET operations:
+
+Pattern: `/$/tasks` &ndash; All asynchronous tasks.<br/>
+Pattern: `/$/tasks/*{taskId}*` &ndash; A particular task.
+
+The URL `/$/tasks` returns a description of all running and recently tasks. A 
finished task can be identified by having a "finishPoint" field.
+
+Each background task has an id.  The URL `/$/tasks/*{taskId}*` gets a 
description about one single task.
+
+Details of the last few completed tasks are retained, up to a fixed number. 
The records will eventually be removed as later tasks complete, and the task 
URL will then return 404.
+
+Pattern: `/$/tasks` ; example:
+```
+[ { 
+    "finished" : "2014-05-28T12:52:51.860+01:00" ,
+    "started" : "2014-05-28T12:52:50.859+01:00" ,
+    "task" : "sleep" ,
+    "taskId" : "1"
+  } ,
+  { 
+    "finished" : "2014-05-28T12:53:24.718+01:00" ,
+    "started" : "2014-05-28T12:53:14.717+01:00" ,
+    "task" : "sleep" ,
+    "taskId" : "2"
+  }
+]
+```
+Pattern: `/$/tasks/1` : example:
+```
+[ { 
+    "finished" : "2014-05-28T13:54:13.608+01:00" ,
+    "started" : "2014-05-28T13:54:03.607+01:00" ,
+    "task" : "backup" ,
+    "taskId" : "1"
+  }
+]
+```
+This is inside an array to make the format returned the same as `/$/tasks`.
+

Added: jena/site/trunk/content/documentation/fuseki2/fuseki-stats.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/fuseki-stats.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/fuseki-stats.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/fuseki-stats.md Sat Sep 29 
12:45:17 2018
@@ -0,0 +1,113 @@
+Title;: Fuseki: Service Statistics
+
+A Fuseki server keeps detailed statistics for each dataset and each service
+of a dataset keeps counters as to the number
+of incoming requests, number of successful requests, number of bad requests
+(i.e client errors), and number of failing requests (i.e. server errors).
+Statistics are returned as JSON. They are also available via JMX.
+
+## Structure of the Statistics Report
+
+### SPARQL Protocol Service 
+
+Query and Update
+
+### SPARQL Graph Store Protocol
+
+inc extensions - dataset HTTP verbs.
+
+#### Other services.
+
+File upload.
+
+## Example
+
+       { "datasets" : {
+                "/ds" :
+                    { "Requests" : 0 ,
+                  "RequestsBad" : 0 ,
+                  "RequestsGood" : 0 ,
+                  "services" : {
+                     "query" :
+                        {"QueryExecErrors" : 0 ,
+                         "QueryTimeouts" : 0 ,
+                         "Requests" : 0 ,
+                         "RequestsBad" : 0 ,
+                         "RequestsGood" : 0 ,
+                         "endpoints" : [ 
+                             "query" ,
+                             "sparql"
+                           ]
+                       } ,
+                     "update" :
+                        {"Requests" : 0 ,
+                         "RequestsBad" : 0 ,
+                         "RequestsGood" : 0 ,
+                         "UpdateExecErrors" : 0 ,
+                         "endpoints" : [ ]
+                       } ,
+                     "upload" :
+                        {"Requests" : 0 ,
+                         "RequestsBad" : 0 ,
+                         "RequestsGood" : 0 ,
+                         "endpoints" : [ ]
+                       } ,
+
+                    "gspRead" :
+                        {"GSPdelete" : 0 ,
+                         "GSPdeleteBad" : 0 ,
+                         "GSPdeleteGood" : 0 ,
+                         "GSPget" : 0 ,
+                         "GSPgetBad" : 0 ,
+                         "GSPgetGood" : 0 ,
+                         "GSPhead" : 0 ,
+                         "GSPheadBad" : 0 ,
+                         "GSPheadGood" : 0 ,
+                         "GSPoptions" : 0 ,
+                         "GSPoptionsBad" : 0 ,
+                         "GSPoptionsGood" : 0 ,
+                         "GSPpatch" : 0 ,
+                         "GSPpatchBad" : 0 ,
+                         "GSPpatchGood" : 0 ,
+                         "GSPpost" : 0 ,
+                         "GSPpostBad" : 0 ,
+                         "GSPpostGood" : 0 ,
+                         "GSPput" : 0 ,
+                         "GSPputBad" : 0 ,
+                         "GSPputGood" : 0 ,
+                         "Requests" : 0 ,
+                         "RequestsBad" : 0 ,
+                         "RequestsGood" : 0 ,
+                         "endpoints" : [ "data" ]
+                       } ,
+                     "gspReadWrite" :
+                        {"GSPdelete" : 0 ,
+                         "GSPdeleteBad" : 0 ,
+                         "GSPdeleteGood" : 0 ,
+                         "GSPget" : 0 ,
+                         "GSPgetBad" : 0 ,
+                         "GSPgetGood" : 0 ,
+                         "GSPhead" : 0 ,
+                         "GSPheadBad" : 0 ,
+                         "GSPheadGood" : 0 ,
+                         "GSPoptions" : 0 ,
+                         "GSPoptionsBad" : 0 ,
+                         "GSPoptionsGood" : 0 ,
+                         "GSPpatch" : 0 ,
+                         "GSPpatchBad" : 0 ,
+                         "GSPpatchGood" : 0 ,
+                         "GSPpost" : 0 ,
+                         "GSPpostBad" : 0 ,
+                         "GSPpostGood" : 0 ,
+                         "GSPput" : 0 ,
+                         "GSPputBad" : 0 ,
+                         "GSPputGood" : 0 ,
+                         "Requests" : 0 ,
+                         "RequestsBad" : 0 ,
+                         "RequestsGood" : 0 ,
+                         "endpoints" : [ ]
+                       }
+                   }
+               }
+           }
+       }

Added: jena/site/trunk/content/documentation/fuseki2/index.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/index.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/index.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/index.md Sat Sep 29 12:45:17 
2018
@@ -0,0 +1,121 @@
+Title: Apache Jena Fuseki
+
+Apache Jena Fuseki is a SPARQL server.  It can run as a operating system
+service, as a Java web application (WAR file), and as a standalone server.
+It provides security (using [Apache Shiro](https://shiro.apache.org/)) and
+has a user interface for server monitoring and administration.
+
+It provides the SPARQL 1.1
+[protocols for query and update](http://www.w3.org/TR/sparql11-protocol/)
+as well as the
+[SPARQL Graph Store protocol](http://www.w3.org/TR/sparql11-http-rdf-update/).
+
+Fuseki is tightly integrated with [TDB](../tdb/index.html) to provide a robust,
+transactional persistent storage layer, and incorporates
+[Jena text query](../query/text-query.html)
+and [Jena spatial query](../query/spatial-query.html).
+It can be used to provide the protocol engine for other RDF query and
+storage systems.
+
+## Contents
+
+- [Download](#download-fuseki)
+- [Getting Started](#getting-started-with-fuseki)
+- [Security](fuseki-security.html)
+- [Running Fuseki](fuseki-run.html)
+    - [As a standalone server](fuseki-run.html#fuseki-standalone-server)
+    - [As a service](fuseki-run.html#fuseki-service)
+    - [As a web application](fuseki-run.html#fuseki-web-application)
+    - [As an standalone SPARQL server](fuseki-main.html)
+- Architecture
+    - [Server URI scheme : services and datasets](fuseki-data-services.html)
+    - [Server Admin Protocol](fuseki-server-protocol.html)
+- [Fuseki Configuration](fuseki-configuration.html)
+- [Logging](fuseki-logging.html)
+- [How to Contribute](#how-to-contribute)
+- Client access
+    - [Use from Java](../rdfconnection)
+    - [SPARQL Over HTTP](soh.html) - scripts to help with data management.
+- [Links to Standards](rdf-sparql-standards.html)
+
+The Jena users mailing is the place to get help with Fuseki.
+
+[Email support lists](/help_and_support/#email-support-lists)
+
+## Download Fuseki
+
+Releases of Apache Jena Fuseki can be downloaded from one of the mirror sites:
+
+[Jena Downloads](/download)
+
+and previous releases are available from [the 
archive](http://archive.apache.org/dist/jena/).
+We strongly recommend that users use the latest official Apache releases of 
Jena Fuseki in
+preference to any older versions or of development builds.
+
+Fuseki requires Java8 for Fuseki2.
+
+See also the [Jena2/Jena3 migration](/documentation/migrate_jena2_jena3.html) 
notes.
+
+**Fuseki download files**
+
+Filename | Description
+--------- | -----------
+`fuseki-*VER*.distribution.zip` | Fuseki download, includes everything.
+`fuseki-*VER*-server.jar`  | Fuseki server, as an executable jar.
+`fuseki-*VER*-server.war`  | Fuseki server, as a web application archive 
(.war) file.
+
+    <dependency>
+       <groupId>org.apache.jena</groupId>
+       <artifactId>jena-fuseki-war</artifactId>
+       <type>war</type>
+       <version>X.Y.Z</version>
+    </dependency>
+
+### Previous releases
+
+While previous releases are available, we strongly recommend that wherever
+possible users use the latest official Apache releases of Jena in
+preference to using any older versions of Jena.
+
+Previous Apache Jena releases can be found in the Apache archive area
+at [http://archive.apache.org/dist/jena](http://archive.apache.org/dist/jena/)
+
+### Development Builds
+
+Regular development builds of all of Jena are available (these are not
+formal releases) from the
+[Apache snapshots maven 
repository](https://repository.apache.org/snapshots/org/apache/jena).
+This includes packaged builds of Fuseki.
+
+## Getting Started With Fuseki
+
+The [quick start](fuseki-quick-start.html) section serves as a basic
+guide to getting a Fuseki server running on your local machine.  
+
+See [all the ways to run Fuseki](fuseki-run.html) for complete coverage of all 
the
+deployment methods for Fuseki.
+
+## How to Contribute
+
+We welcome contributions towards making Jena a better platform for semantic
+web and linked data applications.  We appreciate feature suggestions, bug
+reports and patches for code or documentation.
+
+See "[Getting Involved](/getting_involved/index.html)" for ways to
+contribute to Jena and Fuseki, including patches and making github
+pull-requests.
+
+### Source code
+
+The development codebase is available from git.
+
+Development builds (not a formal release):
+[SNAPSHOT](https://repository.apache.org/content/repositories/snapshots/org/apache/jena/jena-fuseki/)
+
+Source code mirrored to github:
+[https://github.com/apache/jena/jena-fuseki2](https://github.com/apache/jena/jena-fuseki2)
+
+## Fuseki 1
+
+Fuseki 1 is still available for legacy use. 
+[Documentation for Fuseki1](/documentation/serving_data/).

Added: jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.md 
(added)
+++ jena/site/trunk/content/documentation/fuseki2/rdf-sparql-standards.md Sat 
Sep 29 12:45:17 2018
@@ -0,0 +1,23 @@
+Title: Fuseki: SPARQL and RDF Standards
+
+## SPARQL Standards
+
+The relevant SPARQL 1.1 standards are:
+
+- [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/";)
+- [SPARQL 1.1 Query Results JSON 
Format](http://www.w3.org/TR/sparql11-results-json/ 
"http://www.w3.org/TR/sparql11-results-json/";)
+- [SPARQL 1.1 Query Results CSV and TSV 
Formats](http://www.w3.org/TR/sparql11-results-csv-tsv/ 
"http://www.w3.org/TR/sparql11-results-csv-tsv/";)
+- [SPARQL Query Results XML Format](http://www.w3.org/TR/rdf-sparql-XMLres/ 
"http://www.w3.org/TR/rdf-sparql-XMLres/";)
+
+## RDF Standards
+
+Some RDF 1.1 standards
+
+- [RDF 1.1 Turtle](http://www.w3.org/TR/turtle/ "http://www.w3.org/TR/turtle/";)
+- [RDF 1.1 Trig](http://www.w3.org/TR/trig/ "http://www.w3.org/TR/trig/";)
+- [RDF 1.1 N-Triples](http://www.w3.org/TR/n-triples/ 
"http://www.w3.org/TR/n-triples/";)
+- [RDF 1.1 N-Quads](http://www.w3.org/TR/n-quads/ 
"http://www.w3.org/TR/n-quads/";)
+- [JSON-LD](http://www.w3.org/TR/json-ld/ "http://www.w3.org/TR/json-ld/";)

Added: jena/site/trunk/content/documentation/fuseki2/soh.md
URL: 
http://svn.apache.org/viewvc/jena/site/trunk/content/documentation/fuseki2/soh.md?rev=1842328&view=auto
==============================================================================
--- jena/site/trunk/content/documentation/fuseki2/soh.md (added)
+++ jena/site/trunk/content/documentation/fuseki2/soh.md Sat Sep 29 12:45:17 
2018
@@ -0,0 +1,99 @@
+Title: SOH - SPARQL over HTTP
+
+**SOH** (SPARQL Over HTTP) is a set of command-line scripts for
+working with SPARQL 1.1. SOH 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=`.
+
+Each command supports the `-v` flag to print out details of the
+HTTP interaction.
+
+## Contents
+
+-   [SOH SPARQL Query](#soh-sparql-query)
+-   [SOH SPARQL HTTP](#soh-sparql-http)
+-   [SOH SPARQL Update](#soh-sparql-update)
+-   [Service endpoints](#service-endpoints)
+
+
+## SOH SPARQL Query
+
+    s-query --service=endpointURL 'query string'
+
+    s-query --service=endpointURL --query=queryFile.rq
+
+## SOH SPARQL HTTP
+
+The [SPARQL Graph Store 
Protocol](http://www.w3.org/TR/sparql11-http-rdf-update/)
+is a way to read, create and update whole graphs in an RDF Dataset.
+It is useful for data management and building into
+automated processes because it is easy to script with
+tools like `curl` or `wget`.
+
+SOH provides commands that simplify the use HTTP further by setting HTTP
+headers based on the operation performed.
+
+The syntax of the commands is:
+
+    s-http VERB datasetURI graphName [file]
+
+where graph name is a URI or the word *default* for the default
+graph.
+
+`s-get`, `s-put`, `s-delete`, `s-post` are abbreviations for `s-http get`,
+`s-http put`, `s-http delete` and `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 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](/getting_involved/index.html)
+
+### Fuseki
+
+If a [Fuseki](index.html) server is run with the
+command:
+
+    fuseki-server --update --mem /MyDataset
+
+If you want to run fuseki server with persistent data store then use the 
following command:
+    
+    fuseki-server --loc=[store location] --update /MyDataset
+
+then the service endpoints are:
+
+-   HTTP: `http://localhost:3030/MyDataset/data`
+-   Query: `http://localhost:3030/MyDataset/query` or 
`http://localhost:3030/MyDataset/sparql`
+-   Update: `http://localhost:3030/MyDataset/update`


Reply via email to