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

svn commit: r800026 - in /websites/staging/jena/trunk/content/jena/documentation/serving_data: index.html soh.html

Author: buildbot
Date: Fri Dec  9 21:14:33 2011
New Revision: 800026

Log:
Staging update by buildbot

Added:
    websites/staging/jena/trunk/content/jena/documentation/serving_data/soh.html
Modified:
    websites/staging/jena/trunk/content/jena/documentation/serving_data/index.html

Modified: websites/staging/jena/trunk/content/jena/documentation/serving_data/index.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/serving_data/index.html (original)
+++ websites/staging/jena/trunk/content/jena/documentation/serving_data/index.html Fri Dec  9 21:14:33 2011
@@ -20,7 +20,7 @@
 -->
 
   <link href="/jena/css/jena.css" rel="stylesheet" type="text/css">
-  <title>Apache Jena - Serving RDF data with Fuseki</title>
+  <title>Apache Jena - Fuseki: serving RDF data over HTTP</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <script src="/jena/js/jquery-1.6.4.min.js" type="text/javascript"></script>
   <script src="/jena/js/jena-navigation.js" type="text/javascript"></script>
@@ -151,56 +151,484 @@
   </div>
 
   <div id="content">
-    <h1 class="title">Serving RDF data with Fuseki</h1>
-    <h2 id="fuseki">Fuseki</h2>
-<p>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.</p>
+    <h1 class="title">Fuseki: serving RDF data over HTTP</h1>
+    <p>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.</p>
 <p>The relevant SPARQL standards are:</p>
 <ul>
-<li><a href="http://www.w3.org/TR/sparql11-query/">SPARQL 1.1 Query</a></li>
-<li><a href="http://www.w3.org/TR/sparql11-update/">SPARQL 1.1 Update</a></li>
-<li><a href="http://www.w3.org/TR/sparql11-protocol/">SPARQL 1.1 Protocol</a></li>
-<li><a href="http://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL 1.1 Graph Store HTTP Protocol</a> </li>
-</ul>
-<p>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.</p>
+<li><a href="http://www.w3.org/TR/sparql11-query/" title="http://www.w3.org/TR/sparql11-query/">SPARQL 1.1 Query</a></li>
+<li><a href="http://www.w3.org/TR/sparql11-update/" title="http://www.w3.org/TR/sparql11-update/">SPARQL 1.1 Update</a></li>
+<li><a href="http://www.w3.org/TR/sparql11-protocol/" title="http://www.w3.org/TR/sparql11-protocol/">SPARQL 1.1 Protocol</a></li>
+<li><a href="http://www.w3.org/TR/sparql11-http-rdf-update/" title="http://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL 1.1 Graph Store HTTP Protocol</a></li>
+</ul>
+<p>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.</p>
 <p>See also:</p>
 <ul>
-<li><a href="http://openjena.org/wiki/SOH">SPARQL Over HTTP</a> – command line tools for working with any SPARQL 1.1 system</li>
-<li><a href="http://openjena.org/wiki/TDB">TDB</a> – the RDF database used by Fuseki.</li>
-<li><a href="http://openjena.org/ARQ">ARQ</a> – the SPARQL query engine used by Fuseki. </li>
+<li><a href="soh.html" title="SOH">SPARQL Over HTTP</a> – command line tools for working with any SPARQL 1.1 system</li>
 </ul>
-<h2 id="getting_started_with_fuseki">Getting Started with Fuseki</h2>
+<h2 id="contents">Contents</h2>
+<ul>
+<li><a href="#download">Download</a></li>
+<li><a href="#getting_started">Getting Started</a></li>
+<li><a href="#security">Security</a></li>
+<li><a href="#logging">Logging</a></li>
+<li><a href="#server_uri_scheme">Server URI scheme</a></li>
+<li><a href="#fuseki_assumptions">Fuseki assumptions</a></li>
+<li><a href="#running_a_fuseki_server">Running a Fuseki Server</a></li>
+<li><a href="#sparql_over_http">SPARQL Over HTTP</a></li>
+<li><a href="#use_from_java">Use from Java</a></li>
+<li><a href="#development_system">Development System</a></li>
+</ul>
+<h2 id="download">Download</h2>
+<p><strong>Note</strong> builds will be migrating to the Apache infrastructure very soon. TODO</p>
+<p>Builds are available from the
+<a href="http://openjena.org/repo/org/openjena/fuseki/">Jena Maven repository</a>
+and also the
+<a href="http://openjena.org/repo-dev/org/openjena/fuseki/">development repository</a>.</p>
+<p>Choose the version directory then look for the file
+fuseki-<em>VER</em>.zip. <em>VER</em> for a snapshot includes the timestamp and
+increment number as generated by maven.</p>
+<p>Fuseki download files</p>
+<p>Filename | Description
+fuseki-<em>VER</em>.zip | Fuseki download, includes everything.
+fuseki-<em>VER</em>-server.jar  |Fuseki server, as an executable jar.
+fuseki-<em>VER</em>-SOH.zip | <a href="soh.html" title="SOH">SOH (SPARQL Over HTTP)</a> scripts</p>
+<p>Fuseki requires Java6.</p>
+<h2 id="getting_started">Getting Started</h2>
+<p>This section provides a brief guide to getting up and running with
+a simple server installation. It uses the
+<a href="soh.html" title="SOH">SOH (SPARQL over HTTP)</a> scripts included in the
+download.</p>
 <ol>
-<li>Download the latest stable released of Fuseki from here: <a href="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</a></li>
+<li>Download (this includes the server and the SOH scripts)</li>
 <li>Unzip</li>
-<li>(Linux) <code>chmod +x fuseki-server s-*</code></li>
-<li>Run the server with: <code>fuseki-server --update --mem /dataset</code></li>
-<li><a href="http://127.0.0.1:3030">http://127.0.0.1:3030</a></li>
+<li>(Linux) chmod +x fuseki-server s-*</li>
+<li>
+<p>Run a server</p>
+<p>fuseki-server --update --mem /dataset</p>
+</li>
 </ol>
-<h2 id="want_more">Want more?</h2>
-<p>More documentation about Fuseki is available here:</p>
+<p>The server logging goes to the console:</p>
+<div class="codehilite"><pre><span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Dataset:</span> <span class="err">in-memory</span>
+<span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Update</span> <span class="err">enabled</span>
+<span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Fuseki</span> <span class="err">development</span>
+<span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Jetty</span> <span class="err">7.2.1.v20101111</span>
+<span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Dataset</span> <span class="err">=</span> <span class="err">/ds</span>
+<span class="err">09:25:41</span> <span class="err">INFO</span>  <span class="err">Fuseki</span>              <span class="err"> ::</span> <span class="err">Started</span> <span class="err">2011/01/06</span> <span class="err">09:25:41</span> <span class="err">GMT</span> <span class="err">on</span> <span class="err">port</span> <span class="err">3030</span>
+</pre></div>
+
+
+<h2 id="user_interface">User Interface</h2>
+<p>The Fuseki download includes a number of services:</p>
 <ul>
-<li><a href="http://openjena.org/wiki/Fuseki">http://openjena.org/wiki/Fuseki</a></li>
+<li>SPARQL Query, SPARQL Update and file upload to a selected
+    dataset.</li>
+<li>Link to the documentation (here).</li>
+<li>Validators for SPARQL query and update and for non-RDF/XML
+    formats.</li>
 </ul>
+<p>For the control panel:</p>
+<ol>
+<li>In a browser, go to
+    <a href="http://localhost:3030/" title="http://localhost:3030/">http://localhost:3030/</a></li>
+<li>Click on "Control Panel</li>
+<li>Select the dataset (if set up above there is only one choice).</li>
+</ol>
+<p>The page offers SPARQL operations and file upload acting on the
+selected dataset.</p>
+<h2 id="script_control">Script Control</h2>
+<p>In a new window:</p>
+<p>Load some RDF data into the default graph of the server:</p>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">default</span> <span class="n">books</span><span class="o">.</span><span class="n">ttl</span>
+</pre></div>
+
+
+<p>Get it back:</p>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">get</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">default</span>
+</pre></div>
+
+
+<p>Query it with SPARQL using the .../query endpoint.</p>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">query</span> <span class="o">--</span><span class="n">service</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">query</span> <span class="s">&#39;SELECT * {?s ?p ?o}&#39;</span>
+</pre></div>
+
+
+<p>Update it with SPARQL using the .../update endpoint.</p>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">update</span> <span class="o">--</span><span class="n">service</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">update</span> <span class="s">&#39;CLEAR DEFAULT&#39;</span>
+</pre></div>
+
+
+<h2 id="security">Security</h2>
+<p>Fuseki does not have any security yet. This will change.</p>
+<p>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.</p>
+<h2 id="logging">Logging</h2>
+<p>Fuseki uses
+<a href="http://logging.apache.org/log4j/" title="http://logging.apache.org/log4j/">Log4J</a>
+for logging. There are two main logging channels:</p>
+<ol>
+<li>The general server messages : org.openjena.fuseki.Server</li>
+<li>A channel for all request messages: org.openjena.fuseki.Fuseki</li>
+</ol>
+<p>The default settings are (this is an extract of a log4j properties
+file):</p>
+<div class="codehilite"><pre><span class="c1"># Fuseki</span>
+<span class="c1"># Server log.</span>
+<span class="n">log4j</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">org</span><span class="o">.</span><span class="n">openjena</span><span class="o">.</span><span class="n">fuseki</span><span class="o">.</span><span class="n">Server</span><span class="o">=</span><span class="n">INFO</span>
+<span class="c1"># Request log.</span>
+<span class="n">log4j</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">org</span><span class="o">.</span><span class="n">openjena</span><span class="o">.</span><span class="n">fuseki</span><span class="o">.</span><span class="n">Fuseki</span><span class="o">=</span><span class="n">INFO</span>
+<span class="c1"># Internal logs</span>
+<span class="n">log4j</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">org</span><span class="o">.</span><span class="n">openjena</span><span class="o">.</span><span class="n">fuseki</span><span class="o">=</span><span class="n">INFO</span>
+</pre></div>
+
+
+<h2 id="server_uri_scheme">Server URI scheme</h2>
+<p>This details the service URIs for Fuseki:</p>
+<ul>
+<li>http://host/<em>dataset</em>/query -- the SPARQL query endpoint.</li>
+<li>http://host/<em>dataset</em>/update -- the SPARQL Update language
+    endpoint.</li>
+<li>http://host/<em>dataset</em>/data -- the SPARQL Graph Store Protocol
+    endpoint.</li>
+<li>http://host/<em>dataset</em>/upload -- the file upload endpoint.</li>
+</ul>
+<p>where <em>dataset</em> is a URI path. Note that Fuseki defaults to using
+port 3030 so <em>host</em> is often <em>localhost:3030</em>.</p>
+<p>The URI
+<a href="http://host/dataset/sparql" title="http://host/dataset/sparql">http://host/dataset/sparql</a>
+is currently mapped to /query but this may change to being a
+general purpose SPARQL query endpoint.</p>
+<h2 id="fuseki_assumptions">Fuseki assumptions</h2>
+<p>Where the standards allow variability or are not yet precisely
+defined, Fuseki makes certain assumptions.</p>
+<ol>
+<li>?default names the default graph for SPARQL HTTP Update.</li>
+<li>SPARQL Updates are sent by POSTing the SPARQL update request as
+    the body of the POST with content type application/sparql-update</li>
+<li>SPARQL Update over HTML Forms is supported with parameter
+    request=</li>
+</ol>
+<h2 id="running_a_fuseki_server">Running a Fuseki Server</h2>
+<p>The server can be run with the script <code>fuseki-server</code>. Common forms
+are:</p>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">mem</span>  <span class="o">/</span><span class="n">DatasetPathName</span>
+
+<span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">file</span><span class="o">=</span><span class="n">FILE</span> <span class="o">/</span><span class="n">DatasetPathName</span>
+
+<span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">loc</span><span class="o">=</span><span class="n">DB</span> <span class="o">/</span><span class="n">DatasetPathName</span>
+
+<span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">config</span><span class="o">=</span><span class="n">ConfigFile</span>
+</pre></div>
+
+
+<p>There is an option <code>--port=PORT</code> to set the port number. It
+defaults to 3030.</p>
+<p><code>/DatasetPathName</code> is the name under which the dataset will be
+accessible over HTTP.</p>
+<p>The server will service read requests only unless the --update
+argument is used.</p>
+<p>The full choice of dataset forms is:</p>
+<p>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
+<a href="#Fuseki_Configuration_File">configuration description</a>.
+A copy of TDB is included in the standalone server. An example
+assembler file for TDB is in tdb.ttl.</p>
+<p>Fuseki Server Arguments
+--help
+Print help message.
+--port=<em>number</em>
+Run on port <em>number</em> - default is 3030.
+--host=<em>name</em>
+Listen only to a specific network interface.
+--update
+Allow update. Otherwise only read requests are served (ignored if a
+configuration file is given).</p>
+<h2 id="security_and_access_control">Security and Access Control</h2>
+<p>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).</p>
+<h2 id="fuseki_server_starting_with_an_empty_dataset">Fuseki Server starting with an empty dataset</h2>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">update</span> <span class="o">--</span><span class="n">mem</span> <span class="o">/</span><span class="n">dataset</span>
+</pre></div>
+
+
+<p>runs the server on port 3030 with an in-memory dataset. It can be
+accessed via the appropriate protocol at URLs:</p>
+<ul>
+<li>SPARQL query: http://localhost:3030/dataset/query</li>
+<li>SPARQL update: http://localhost:3030/dataset/update</li>
+<li>SPARQL HTTP update: http://localhost:3030/dataset/data</li>
+</ul>
+<p>The <a href="soh.html" title="SOH">SPARQL Over HTTP</a> scripts take care of naming
+and protocol details. For example, to load in a file data.rdf:</p>
+<div class="codehilite"><pre> <span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">default</span> <span class="n">data</span><span class="o">.</span><span class="n">rdf</span>
+</pre></div>
+
+
+<h2 id="fuseki_server_and_tdb">Fuseki Server and TDB</h2>
+<p>Fuseki include a built-in version of TDB. Run the server with the
+--desc argument</p>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">desc</span> <span class="n">tdb</span><span class="o">.</span><span class="n">ttl</span> <span class="o">/</span><span class="n">dataset</span>
+</pre></div>
+
+
+<p>and a database in the directory DB, an assembler description of:</p>
+<div class="codehilite"><pre><span class="nv">@prefix</span> <span class="n">rdf:</span>     <span class="sr">&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">rdfs:</span>    <span class="sr">&lt;http://www.w3.org/2000/01/rdf-schema#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">ja:</span>      <span class="sr">&lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">tdb:</span>     <span class="sr">&lt;http://jena.hpl.hp.com/2008/tdb#&gt;</span> <span class="o">.</span>
+
+<span class="o">[]</span> <span class="n">ja:loadClass</span> <span class="s">&quot;com.hp.hpl.jena.tdb.TDB&quot;</span> <span class="o">.</span>
+<span class="n">tdb:DatasetTDB</span>  <span class="n">rdfs:subClassOf</span>  <span class="n">ja:RDFDataset</span> <span class="o">.</span>
+<span class="n">tdb:GraphTDB</span>    <span class="n">rdfs:subClassOf</span>  <span class="n">ja:Model</span> <span class="o">.</span>
+
+<span class="sr">&lt;#dataset&gt;</span> <span class="n">rdf:type</span>      <span class="n">tdb:DatasetTDB</span><span class="err"> </span><span class="p">;</span>
+     <span class="n">tdb:location</span> <span class="s">&quot;DB&quot;</span><span class="err"> </span><span class="p">;</span>
+     <span class="o">.</span>
+</pre></div>
+
+
+<p>The form:</p>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">loc</span><span class="o">=</span><span class="n">DB</span> <span class="o">/</span><span class="n">dataset</span>
+</pre></div>
+
+
+<p>is a shorthand for such an assembler with location "DB".</p>
+<p>To make triples from all the named graphs appear as the default,
+unnamed graph, use:</p>
+<div class="codehilite"><pre><span class="sr">&lt;#dataset&gt;</span> <span class="n">rdf:type</span>      <span class="n">tdb:DatasetTDB</span><span class="err"> </span><span class="p">;</span>
+     <span class="n">tdb:location</span> <span class="s">&quot;DB&quot;</span><span class="err"> </span><span class="p">;</span>
+     <span class="n">tdb:unionDefaultGraph</span> <span class="n">true</span><span class="err"> </span><span class="p">;</span>
+    <span class="o">.</span>
+</pre></div>
+
+
+<h2 id="fuseki_server_and_general_dataset_descriptions">Fuseki Server and general dataset descriptions</h2>
+<p>The Fuseki server can be given an
+<a href="assembler.html" title="http://openjena.org/assembler/index.html">assembler description</a>
+to build a variety of model and datasets types.</p>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">desc</span> <span class="n">assembler</span><span class="o">.</span><span class="n">ttl</span> <span class="o">/</span><span class="n">dataset</span>
+</pre></div>
+
+
+<p>Full details of setting up models assembler is given in the
+<a href="assembler.html" title="http://openjena.org/assembler/index.html">assembler documentation</a>.</p>
+<p>A general dataset is described by:</p>
+<div class="codehilite"><pre><span class="c1"># Dataset of default graph and one named graph.</span>
+<span class="sr">&lt;#dataset&gt;</span> <span class="n">rdf:type</span> <span class="n">ja:RDFDataset</span><span class="err"> </span><span class="p">;</span>
+   <span class="n">ja:defaultGraph</span> <span class="sr">&lt;#modejDft&gt;</span><span class="err"> </span><span class="p">;</span>
+   <span class="n">ja:namedGraph</span>
+       <span class="p">[</span> <span class="n">ja:graphName</span>      <span class="sr">&lt;http://example.org/name1&gt;</span><span class="err"> </span><span class="p">;</span>
+         <span class="n">ja:graph</span>          <span class="sr">&lt;#model1&gt;</span> <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+   <span class="o">.</span>
+
+<span class="sr">&lt;#modelDft&gt;</span> <span class="n">a</span> <span class="n">ja:MemoryModel</span><span class="err"> </span><span class="p">;</span>
+        <span class="n">ja:content</span> <span class="p">[</span> <span class="n">ja:externalContent</span> <span class="sr">&lt;file:Data.ttl&gt;</span> <span class="o">.</span>
+
+<span class="sr">&lt;#model1&gt;</span>  <span class="n">rdf:type</span> <span class="n">ja:MemoryModel</span><span class="err"> </span><span class="p">;</span>
+   <span class="n">ja:content</span> <span class="p">[</span> <span class="n">ja:externalContent</span> <span class="sr">&lt;file:FILE-1.ttl&gt;</span> <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+   <span class="n">ja:content</span> <span class="p">[</span> <span class="n">ja:externalContent</span> <span class="sr">&lt;file:FILE-2.ttl&gt;</span> <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+   <span class="o">.</span>
+</pre></div>
+
+
+<p>The models can be
+<a href="/jena/documentation/inference/">Jena inference models</a>.</p>
+<h2 id="fuseki_configuration_file">Fuseki Configuration File</h2>
+<p>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.</p>
+<p>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.</p>
+<p>The example below is all one file (RDF graph in Turtle syntax)
+split to allow for commentary.</p>
+<h3 id="prefix_declarations">Prefix declarations</h3>
+<p>Some useful prefix declarations:</p>
+<div class="codehilite"><pre><span class="nv">@prefix</span> <span class="n">fuseki:</span>  <span class="sr">&lt;http://jena.apache.org/fuseki#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">rdf:</span>     <span class="sr">&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">rdfs:</span>    <span class="sr">&lt;http://www.w3.org/2000/01/rdf-schema#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">tdb:</span>     <span class="sr">&lt;http://jena.hpl.hp.com/2008/tdb#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span> <span class="n">ja:</span>      <span class="sr">&lt;http://jena.hpl.hp.com/2005/11/Assembler#&gt;</span> <span class="o">.</span>
+<span class="nv">@prefix</span><span class="err"> </span><span class="p">:</span>        <span class="sr">&lt;#&gt;</span> <span class="o">.</span>
+</pre></div>
+
+
+<h3 id="server_section">Server Section</h3>
+<p>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.</p>
+<div class="codehilite"><pre><span class="o">[]</span> <span class="n">rdf:type</span> <span class="n">fuseki:Server</span><span class="err"> </span><span class="p">;</span>
+   <span class="c1"># Server-wide context parameters can be given here.</span>
+   <span class="c1"># For example, to set query timeouts: on a server-wide basis:</span>
+   <span class="c1"># Format 1: &quot;1000&quot; -- 1 second timeout</span>
+   <span class="c1"># Format 2: &quot;10000,60000&quot; -- 10s timeout to first result, then 60s timeout to for rest of query.</span>
+   <span class="c1"># See java doc for ARQ.queryTimeout</span>
+   <span class="c1"># ja:context [ ja:cxtName &quot;arq:queryTimeout&quot; ;  ja:cxtValue &quot;10000&quot; ] ;</span>
+
+   <span class="c1"># Load custom code (rarely needed)</span>
+   <span class="c1"># ja:loadClass &quot;your.code.Class&quot; ;</span>
+
+   <span class="c1"># Services available.  Only explicitly listed services are configured.</span>
+   <span class="c1">#  If there is a service description not linked from this list, it is ignored.</span>
+   <span class="n">fuseki:services</span> <span class="p">(</span>
+     <span class="sr">&lt;#service1&gt;</span>
+     <span class="sr">&lt;#service2&gt;</span>
+   <span class="p">)</span> <span class="o">.</span>
+</pre></div>
+
+
+<h3 id="assembler_initialization">Assembler Initialization</h3>
+<p>All datasets are described by
+<a href="assembler.html" title="http://openjena.org/assembler/index.html">assembler descriptions</a>.
+Assemblers provide an extensible way of describing many kinds of
+objects. Set up any assembler extensions - here, the TDB assembler
+support.</p>
+<div class="codehilite"><pre><span class="c1"># Declaration additional assembler items.</span>
+<span class="o">[]</span> <span class="n">ja:loadClass</span> <span class="s">&quot;com.hp.hpl.jena.tdb.TDB&quot;</span> <span class="o">.</span>
+
+<span class="c1"># TDB</span>
+<span class="n">tdb:DatasetTDB</span>  <span class="n">rdfs:subClassOf</span>  <span class="n">ja:RDFDataset</span> <span class="o">.</span>
+<span class="n">tdb:GraphTDB</span>    <span class="n">rdfs:subClassOf</span>  <span class="n">ja:Model</span> <span class="o">.</span>
+</pre></div>
+
+
+<h3 id="service_1">Service 1</h3>
+<p>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.</p>
+<div class="codehilite"><pre><span class="c1">## ---------------------------------------------------------------</span>
+<span class="c1">## Updatable in-memory dataset.</span>
+
+<span class="sr">&lt;#service1&gt;</span> <span class="n">rdf:type</span> <span class="n">fuseki:Service</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">fuseki:name</span>                       <span class="s">&quot;ds&quot;</span><span class="err"> </span><span class="p">;</span>       <span class="c1"># http://host:port/ds</span>
+    <span class="n">fuseki:serviceQuery</span>               <span class="s">&quot;query&quot;</span><span class="err"> </span><span class="p">;</span>    <span class="c1"># SPARQL query service</span>
+    <span class="n">fuseki:serviceQuery</span>               <span class="s">&quot;sparql&quot;</span><span class="err"> </span><span class="p">;</span>   <span class="c1"># SPARQL query service</span>
+    <span class="n">fuseki:serviceUpdate</span>              <span class="s">&quot;update&quot;</span><span class="err"> </span><span class="p">;</span>   <span class="c1"># SPARQL query service</span>
+    <span class="n">fuseki:serviceUpload</span>              <span class="s">&quot;upload&quot;</span><span class="err"> </span><span class="p">;</span>   <span class="c1"># Non-SPARQL upload service</span>
+    <span class="n">fuseki:serviceReadWriteGraphStore</span> <span class="s">&quot;data&quot;</span><span class="err"> </span><span class="p">;</span>     <span class="c1"># SPARQL Graph store protocol (read and write)</span>
+    <span class="c1"># A separate ead-only graph store endpoint:</span>
+    <span class="n">fuseki:serviceReadGraphStore</span>      <span class="s">&quot;get&quot;</span><span class="err"> </span><span class="p">;</span>      <span class="c1"># SPARQL Graph store protocol (read only)</span>
+    <span class="n">fuseki:dataset</span>                   <span class="sr">&lt;#dataset-mem&gt;</span><span class="err"> </span><span class="p">;</span>
+    <span class="o">.</span>
+
+<span class="sr">&lt;#dataset-mem&gt;</span> <span class="n">rdf:type</span> <span class="n">ja:RDFDataset</span> <span class="o">.</span>
+</pre></div>
+
+
+<h3 id="service_2">Service 2</h3>
+<p>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:</p>
+<p>This service offers read-only access to a dataset with a single
+graph of data.</p>
+<div class="codehilite"><pre><span class="sr">&lt;#service2&gt;</span> <span class="n">rdf:type</span> <span class="n">fuseki:Service</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">fuseki:name</span>                     <span class="s">&quot;books&quot;</span><span class="err"> </span><span class="p">;</span>    <span class="c1"># http://host:port/books</span>
+    <span class="n">fuseki:serviceQuery</span>             <span class="s">&quot;query&quot;</span><span class="err"> </span><span class="p">;</span>    <span class="c1"># SPARQL query service</span>
+    <span class="n">fuseki:serviceReadGraphStore</span>    <span class="s">&quot;data&quot;</span><span class="err"> </span><span class="p">;</span>     <span class="c1"># SPARQL Graph store protocol (read only)</span>
+    <span class="n">fuseki:dataset</span>           <span class="sr">&lt;#books&gt;</span><span class="err"> </span><span class="p">;</span>
+    <span class="o">.</span>
+
+<span class="sr">&lt;#books&gt;</span>    <span class="n">rdf:type</span> <span class="n">ja:RDFDataset</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">rdfs:label</span> <span class="s">&quot;Books&quot;</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">ja:defaultGraph</span>
+      <span class="p">[</span> <span class="n">rdfs:label</span> <span class="s">&quot;books.ttl&quot;</span><span class="err"> </span><span class="p">;</span>
+        <span class="n">a</span> <span class="n">ja:MemoryModel</span><span class="err"> </span><span class="p">;</span>
+        <span class="n">ja:content</span> <span class="p">[</span><span class="n">ja:externalContent</span> <span class="sr">&lt;file:Data/books.ttl&gt;</span> <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+      <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+    <span class="o">.</span>
+</pre></div>
+
+
+<h3 id="service_3">Service 3</h3>
+<p>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.</p>
+<div class="codehilite"><pre><span class="sr">&lt;#service3&gt;</span>  <span class="n">rdf:type</span> <span class="n">fuseki:Service</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">fuseki:name</span>              <span class="s">&quot;tdb&quot;</span><span class="err"> </span><span class="p">;</span>       <span class="c1"># http://host:port/tdb</span>
+    <span class="n">fuseki:serviceQuery</span>      <span class="s">&quot;sparql&quot;</span><span class="err"> </span><span class="p">;</span>    <span class="c1"># SPARQL query service</span>
+    <span class="n">fuseki:dataset</span>           <span class="sr">&lt;#dataset&gt;</span><span class="err"> </span><span class="p">;</span>
+    <span class="o">.</span>
+
+<span class="sr">&lt;#dataset&gt;</span> <span class="n">rdf:type</span>      <span class="n">tdb:DatasetTDB</span><span class="err"> </span><span class="p">;</span>
+    <span class="n">tdb:location</span> <span class="s">&quot;DB&quot;</span><span class="err"> </span><span class="p">;</span>
+    <span class="c1"># Query timeout on this dataset (1s, 1000 milliseconds)</span>
+    <span class="n">ja:context</span> <span class="p">[</span> <span class="n">ja:cxtName</span> <span class="s">&quot;arq:queryTimeout&quot;</span><span class="err"> </span><span class="p">;</span>  <span class="n">ja:cxtValue</span> <span class="s">&quot;1000&quot;</span> <span class="p">]</span><span class="err"> </span><span class="p">;</span>
+    <span class="c1"># Make the default graph be the union of all named graphs.</span>
+    <span class="c1">## tdb:unionDefaultGraph true ;</span>
+     <span class="o">.</span>
+</pre></div>
+
+
+<h2 id="sparql_over_http">SPARQL Over HTTP</h2>
+<p>"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.</p>
+<p>See the <a href="soh.html" title="SOH">SPARQL Over HTTP</a> page.</p>
+<h3 id="examples">Examples</h3>
+<div class="codehilite"><pre><span class="c1"># PUT a file</span>
+<span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">default</span> <span class="n">D</span><span class="o">.</span><span class="n">nt</span>
+
+<span class="c1"># GET a file</span>
+<span class="n">s</span><span class="o">-</span><span class="n">get</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">default</span>
+
+<span class="c1"># PUT a file to a named graph</span>
+<span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">data</span> <span class="n">http:</span><span class="sr">//</span><span class="n">example</span><span class="o">/</span><span class="n">graph</span> <span class="n">D</span><span class="o">.</span><span class="n">nt</span>
+
+<span class="c1"># Query</span>
+<span class="n">s</span><span class="o">-</span><span class="n">query</span> <span class="o">--</span><span class="n">service</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">query</span> <span class="s">&#39;SELECT * {?s ?p ?o}&#39;</span>
+
+<span class="c1"># Update</span>
+<span class="n">s</span><span class="o">-</span><span class="n">update</span> <span class="o">--</span><span class="n">service</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset/</span><span class="n">update</span> <span class="o">--</span><span class="n">file</span><span class="o">=</span><span class="n">update</span><span class="o">.</span><span class="n">ru</span>
+</pre></div>
+
+
+<h2 id="use_from_java">Use from Java</h2>
+<h3 id="sparql_query">SPARQL Query</h3>
+<p>ARQ's <code>QueryExecutionFactory.sparqlService</code> can be used.</p>
+<h3 id="sparql_update">SPARQL Update</h3>
+<p>See <code>UpdateRemote.execute</code></p>
+<h3 id="sparql_http">SPARQL HTTP</h3>
+<p>See <code>DatasetAccessor</code></p>
 <h2 id="development_system">Development System</h2>
-<p>If you wish to pick the development codebase, check out the codebase from Apache:</p>
-<div class="codehilite"><pre><span class="n">svn</span> <span class="n">co</span> <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/incubator/</span><span class="n">jena</span><span class="sr">/Jena2/</span><span class="n">Fuseki</span><span class="o">/</span><span class="n">trunk</span>
+<p>If you wish to pick the development codebase, check out the
+codebase from Apache:</p>
+<div class="codehilite"><pre> <span class="n">svn</span> <span class="n">co</span> <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/incubator/</span><span class="n">jena</span><span class="sr">/Jena2/</span><span class="n">Fuseki</span><span class="o">/</span><span class="n">trunk</span>
 </pre></div>
 
 
 <p>Build:</p>
-<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="nb">package</span>
+<div class="codehilite"><pre> <span class="n">mvn</span> <span class="n">clean</span> <span class="nb">package</span>
 </pre></div>
 
 
-<p>This creates a standalone jar for the Fuseki server:</p>
-<div class="codehilite"><pre><span class="n">target</span><span class="o">/</span><span class="n">fuseki</span><span class="o">-</span><span class="n">version</span><span class="o">-</span><span class="n">server</span><span class="o">.</span><span class="n">jar</span>
+<p>This creates a standalone jar for the Fuseki server.</p>
+<div class="codehilite"><pre> <span class="n">target</span><span class="o">/</span><span class="n">fuseki</span><span class="o">-</span><span class="n">version</span><span class="o">-</span><span class="n">server</span><span class="o">.</span><span class="n">jar</span>
 </pre></div>
 
 
-<p>See the file SETUP.txt for working with Eclipse. </p>
-<h2 id="joseki">Joseki</h2>
-<p>Joseki is an HTTP engine that supports the <a href="http://www.w3.org/TR/rdf-sparql-protocol/">SPARQL Protocol</a> and the <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL RDF Query language</a>. Fuseki has now superseded Joseki developement. </p>
-<p>Joseki documentation is still available at: <a href="http://joseki.org/">http://joseki.org/</a>.</p>
+<p>See the file SETUP.txt for working with Eclipse.</p>
   </div>
 
   <div id="footer">

Added: websites/staging/jena/trunk/content/jena/documentation/serving_data/soh.html
==============================================================================
--- websites/staging/jena/trunk/content/jena/documentation/serving_data/soh.html (added)
+++ websites/staging/jena/trunk/content/jena/documentation/serving_data/soh.html Fri Dec  9 21:14:33 2011
@@ -0,0 +1,267 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/jena/css/jena.css" rel="stylesheet" type="text/css">
+  <title>Apache Jena - SOH - SPARQL over HTTP</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <script src="/jena/js/jquery-1.6.4.min.js" type="text/javascript"></script>
+  <script src="/jena/js/jena-navigation.js" type="text/javascript"></script>
+</head>
+
+<body>
+  <div id="header">
+    <div id="logoblock">
+    <img alt="Apache Jena" src="/jena/images/jena-logo/jena-logo-small.png"/>
+    </div>
+
+    <div id="titleblock">
+      <h1 class="title">Apache Jena</h1>
+      <div id="topmenu" class="tabbar round-10">
+        <ul>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/index.html" id="home_menu">Home</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/help_and_support/index.html">Support</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/getting_started/index.html">Getting started</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/tutorials/index.html">Tutorials</a></li>
+        <li class="round-top-8"><a class="round-top-8" href="/jena/documentation/index.html">Documentation</a></li>
+        </ul>
+      </div>
+    </div>
+  </div>
+
+  <div id="navigation" class="clear">
+  <h1 id="quick_links">Quick links</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/download/index.html">Downloads</a></li>
+<li><a href="/jena/help_and_support/index.html">Help and support</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/getting_involved/index.html">Getting involved</a></li>
+<li><a href="/jena/documentation/">Documentation</a></li>
+</ul>
+<h1 id="about_jena">About Jena</h1>
+<ul>
+<li><a href="/jena/index.html">Home</a></li>
+<li><a href="/jena/about_jena/about.html">About Jena</a></li>
+<li><a href="/jena/about_jena/architecture.html">Architecture</a></li>
+<li><a href="/jena/about_jena/roadmap.html">Roadmap</a></li>
+<li><a href="/jena/about_jena/team.html">Project team</a></li>
+</ul>
+<h1 id="download">Download</h1>
+<ul>
+<li><a href="/jena/download/index.html">Downloading Jena</a></li>
+<li><a href="/jena/download/maven.html">Using Maven</a></li>
+<li><a href="/jena/download/osgi.html">Using OSGi</a></li>
+</ul>
+<h1 id="help_and_support">Help and support</h1>
+<ul>
+<li><a href="/jena/help_and_support/index.html">Getting help</a></li>
+<li><a href="/jena/help_and_support/bugs_and_suggestions.html">Bugs and suggestions</a></li>
+</ul>
+<h1 id="getting_started">Getting Started</h1>
+<ul>
+<li><a href="/jena/getting_started/index.html">A first Jena project</a></li>
+<li><a href="/jena/getting_started/rdf_api.html">RDF API overview</a></li>
+<li><a href="/jena/getting_started/sparql.html">Querying RDF with SPARQL</a></li>
+<li><a href="/jena/getting_started/fuseki.html">Serving RDF over HTTP</a></li>
+<li><a href="/jena/getting_started/tell_me_how.html">Tell me how to ...</a></li>
+</ul>
+<h1 id="tutorials">Tutorials</h1>
+<ul>
+<li><a href="/jena/tutorials/index.html">Tutorials index</a></li>
+<li><a href="/jena/tutorials/rdf_api.html">RDF tutorial</a></li>
+<li><a href="/jena/tutorials/sparql.html">SPARQL queries</a></li>
+<li><a href="/jena/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/jena/documentation/index.html">Overview</a></li>
+<li><a href="/jena/documentation/javadoc">Javadoc</a></li>
+<li><a href="/jena/documentation/rdf/index.html">RDF</a></li>
+<li><a href="/jena/documentation/query/index.html">SPARQL (ARQ)</a></li>
+<li><a href="/jena/documentation/tdb/index.html">TDB</a></li>
+<li><a href="/jena/documentation/sdb/index.html">SDB</a><ul>
+<li><a href="/jena/documentation/sdb/installation.html">Installation</a></li>
+<li><a href="/jena/documentation/sdb/quickstart.html">Quick start</a></li>
+<li><a href="/jena/documentation/sdb/commands.html">Cmd line</a></li>
+<li><a href="/jena/documentation/sdb/javaapi.html">Java API</a></li>
+<li><a href="/jena/documentation/sdb/configuration.html">Config</a></li>
+<li><a href="/jena/documentation/sdb/databases_supported.html">Databases</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/larq/index.html">LARQ</a></li>
+<li><a href="/jena/documentation/serving_data/index.html">Serving Data</a></li>
+<li><a href="/jena/documentation/ontology/index.html">Ontology</a></li>
+<li><a href="/jena/documentation/inference/index.html">Inference</a></li>
+<li><a href="/jena/documentation/assembler/index.html">Assembler</a><ul>
+<li><a href="/jena/documentation/assembler/assembler-howto.html">Assembler how-to</a></li>
+<li><a href="/jena/documentation/assembler/inside-assemblers.html">Inside assemblers</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/io/index.html">I/O</a><ul>
+<li><a href="/jena/documentation/io/iohowto.html">I/O how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/notes/index.html">Notes</a><ul>
+<li><a href="/jena/documentation/notes/concurrency-howto.html">Concurrency how-to</a></li>
+<li><a href="/jena/documentation/notes/event-handler-howto.html">Event handler how-to</a></li>
+<li><a href="/jena/documentation/notes/file-manager.html">File manager how-to</a></li>
+<li><a href="/jena/documentation/notes/model-factory.html">Model factory how-to</a></li>
+<li><a href="/jena/documentation/notes/rdf-frames.html">RDF frames</a></li>
+<li><a href="/jena/documentation/notes/reification.html">Reification how-to</a></li>
+<li><a href="/jena/documentation/notes/typed-literals.html">Typed literals how-to</a></li>
+</ul>
+</li>
+<li><a href="/jena/documentation/tools/index.html">Tools</a><ul>
+<li><a href="/jena/documentation/tools/schemagen.html">schemagen</a></li>
+<li><a href="/jena/documentation/tools/eyeball-getting-started.html">eyeball</a></li>
+</ul>
+</li>
+</ul>
+<h1 id="getting_involved">Getting Involved</h1>
+<ul>
+<li><a href="/jena/getting_involved/index.html">Contributing to Jena</a></li>
+</ul>
+<h1 id="asf_links">ASF links</h1>
+<ul>
+<li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+<li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
+  </div>
+
+  <div id="content">
+    <h1 class="title">SOH - SPARQL over HTTP</h1>
+    <p>"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.</p>
+<p>SOH is written in ruby.</p>
+<p>Commands:</p>
+<ul>
+<li>s-http – SPARQL 1.1 HTTP Protocol</li>
+<li>s-get, s-put, s-delete, s-post, s-head – abbreviation for
+    "s-http get ..." etc.</li>
+<li>s-query – SPARQL 1.1 Query, both GET and POST of queries.</li>
+<li>s-update – SPARQL 1.1 Update</li>
+<li>s-update-form – SPARQL 1.1 Update using the HTML form and a
+    parameter of "request=" (compatible with Joseki).</li>
+</ul>
+<p>Each command supports the "-v" flag to print out details of the
+HTTP interaction.</p>
+<h2 id="contents">Contents</h2>
+<ul>
+<li><a href="#SOH_SPARQL_HTTP">SOH SPARQL HTTP</a></li>
+<li><a href="#SOH_SPARQL_Query">SOH SPARQL Query</a></li>
+<li><a href="#SOH_SPARQL_Update">SOH SPARQL Update</a></li>
+<li><a href="#Service_endpoints">Service endpoints</a></li>
+</ul>
+<h2 id="soh_sparql_http">SOH SPARQL HTTP</h2>
+<p>The syntax of the commands is:</p>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">http</span> <span class="n">VERB</span> <span class="n">datasetURI</span> <span class="n">graphName</span> <span class="p">[</span><span class="n">file</span><span class="p">]</span>
+</pre></div>
+
+
+<p>where graph name is a URI or the work <em>default</em> for the default
+graph.</p>
+<p>s-get, s-put, s-delete, s-post abbreviations for "s-http get",
+"s-http put", "s-http delete", "s-http post" respectively.</p>
+<p>file is needed for PUT and POST. The file name extension determines
+the HTTP content type.</p>
+<div class="codehilite"><pre> <span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="o">/</span><span class="n">dataset</span> <span class="n">default</span> <span class="n">data</span><span class="o">.</span><span class="n">ttl</span>
+
+ <span class="n">s</span><span class="o">-</span><span class="n">get</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="o">/</span><span class="n">dataset</span> <span class="n">default</span>
+
+ <span class="n">s</span><span class="o">-</span><span class="n">put</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset http://example/g</span><span class="n">raph</span> <span class="n">data</span><span class="o">.</span><span class="n">ttl</span>
+
+ <span class="n">s</span><span class="o">-</span><span class="n">get</span> <span class="n">http:</span><span class="sr">//</span><span class="n">localhost:3030</span><span class="sr">/dataset http://example/g</span><span class="n">raph</span>
+</pre></div>
+
+
+<h2 id="soh_sparql_query">SOH SPARQL Query</h2>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">query</span> <span class="o">--</span><span class="n">service</span><span class="o">=</span><span class="n">endpointURL</span> <span class="s">&#39;query string&#39;</span>
+
+<span class="n">s</span><span class="o">-</span><span class="n">query</span> <span class="o">--</span><span class="n">service</span><span class="o">=</span><span class="n">endpointURL</span> <span class="o">--</span><span class="n">query</span><span class="o">=</span><span class="n">queryFile</span><span class="o">.</span><span class="n">rq</span>
+</pre></div>
+
+
+<h2 id="soh_sparql_update">SOH SPARQL Update</h2>
+<div class="codehilite"><pre><span class="n">s</span><span class="o">-</span><span class="n">update</span> <span class="o">--</span><span class="n">service</span><span class="o">=</span><span class="n">endpointURL</span> <span class="s">&#39;update string&#39;</span>
+
+<span class="n">s</span><span class="o">-</span><span class="n">update</span> <span class="o">--</span><span class="n">service</span><span class="o">=</span><span class="n">endpointURL</span> <span class="o">--</span><span class="n">update</span><span class="o">=</span><span class="n">updateFile</span><span class="o">.</span><span class="n">ru</span>
+</pre></div>
+
+
+<h2 id="service_endpoints">Service endpoints</h2>
+<p>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.</p>
+<p>If you have details for other servers, (get involved)[jena/getting_involved/index.html)</p>
+<h3 id="fuseki">Fuseki</h3>
+<p>If a <a href="fuseki.html" title="Fuseki">Fuseki</a> server is run with the
+command:</p>
+<div class="codehilite"><pre><span class="n">fuseki</span><span class="o">-</span><span class="n">server</span> <span class="o">--</span><span class="n">mem</span> <span class="o">/</span><span class="n">dataset</span>
+</pre></div>
+
+
+<p>then the service endpoints are:</p>
+<ul>
+<li>HTTP: http://localhost:3030/dataset/data</li>
+<li>Query: http://localhost:3030/dataset/query</li>
+<li>Update: http://localhost:3030/dataset/update</li>
+</ul>
+<h3 id="joseki">Joseki</h3>
+<p><a href="http://www.joseki.org/" title="http://www.joseki.org/">Joseki</a> allows a
+choice of server endpoint names in the configuration file.</p>
+<p>Used with the default configuration file joseki-config.ttl:</p>
+<ul>
+<li>Query:<ul>
+<li>http://localhost:2020/books -- example books database</li>
+<li>http://localhost:2020/sparql -- general purpose SPARQL query
+    engine</li>
+<li>http://localhost:2020/sparql/read -- companion to updatable
+    dataset (if enabled)</li>
+</ul>
+</li>
+<li>
+<p>Update: http://localhost:2020/update/service (if enabled)</p>
+</li>
+<li>HTTP: Not supported</li>
+</ul>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache Jena, Jena, the Apache Jena project logo,
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>