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 2019/06/01 13:20:46 UTC

svn commit: r1045782 - in /websites/staging/jena/trunk/content: ./ documentation/geosparql/geosparql-fuseki.html documentation/geosparql/index.html

Author: buildbot
Date: Sat Jun  1 13:20:46 2019
New Revision: 1045782

Log:
Staging update by buildbot for jena

Modified:
    websites/staging/jena/trunk/content/   (props changed)
    websites/staging/jena/trunk/content/documentation/geosparql/geosparql-fuseki.html
    websites/staging/jena/trunk/content/documentation/geosparql/index.html

Propchange: websites/staging/jena/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Jun  1 13:20:46 2019
@@ -1 +1 @@
-1860414
+1860481

Modified: websites/staging/jena/trunk/content/documentation/geosparql/geosparql-fuseki.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/geosparql/geosparql-fuseki.html (original)
+++ websites/staging/jena/trunk/content/documentation/geosparql/geosparql-fuseki.html Sat Jun  1 13:20:46 2019
@@ -161,7 +161,7 @@
 }
 h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
 <p>This application provides a HTTP server compliant with the GeoSPARQL standard.
-It uses the embedded server Fuseki from Apache Jena and provides additional parameters for dataset loading.</p>
+It uses the embedded server Fuseki and provides additional parameters for dataset loading.</p>
 <p>The project uses the GeoSPARQL implementation from the <a href="index">GeoSPARQL Jena project</a>.
 Currently, there is no GUI interface as provided in the Fuseki distribution.</p>
 <p>A subset of the EPSG spatial/coordinate reference systems are included by default from the Apache SIS project (http://sis.apache.org).
@@ -174,11 +174,14 @@ The spatial index can optionally be stor
 <p>GeoSPARQL Fuskei can be accessed as an embedded server using Maven etc. from Maven Central or run from the command line.
 SPARQL queries directly on Jena Datasets and Models can be done using
 the <a href="index">GeoSPARQL Jena project</a>.</p>
-<p><code>&lt;dependency&gt;
-    &lt;groupId&gt;org.apache.jena&lt;/groupId&gt;
-    &lt;artifactId&gt;fuseki-geosparql&lt;/artifactId&gt;
-    &lt;version&gt;...&lt;/version&gt;
-&lt;/dependency&gt;</code></p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.jena<span class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>fuseki-geosparql<span class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>...<span class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
 <h3 id="command-line">Command Line<a class="headerlink" href="#command-line" title="Permanent link">&para;</a></h3>
 <p>Run from the command line (see <code>releases</code> tab) and send queries over HTTP.</p>
 <p>Get Started Example:
@@ -214,15 +217,18 @@ RDFS inferencing is applied using the Ge
 <p>Run within a Java application to provide GeoSPARQL support over HTTP to other applications:</p>
 <p><code>GeosparqlServer server = new GeosparqlServer(portNumber, datasetName, isLoopbackOnly, dataset, isUpdate);</code></p>
 <h2 id="sparql-query-example">SPARQL Query Example<a class="headerlink" href="#sparql-query-example" title="Permanent link">&para;</a></h2>
-<p>Once the default server is running it can be queried using Apache Jena as follows:</p>
-<p><code>String service = "http://localhost:3030/ds";
-String query = ....;
-try (QueryExecution qe = QueryExecutionFactory.sparqlService(service, query)) {
-    ResultSet rs = qe.execSelect();
-    ResultSetFormatter.outputAsTSV(rs);
-}</code></p>
+<p>Once the default server is running it can be queried using Jena as follows:</p>
+<div class="codehilite"><pre><span class="n">String</span> <span class="n">service</span> <span class="p">=</span> &quot;<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span>3030<span class="o">/</span><span class="n">ds</span>&quot;<span class="p">;</span>
+<span class="n">String</span> <span class="n">query</span> <span class="p">=</span> <span class="p">....;</span>
+<span class="k">try</span> <span class="p">(</span><span class="n">QueryExecution</span> <span class="n">qe</span> <span class="p">=</span> <span class="n">QueryExecutionFactory</span><span class="p">.</span><span class="n">sparqlService</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">query</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">ResultSet</span> <span class="n">rs</span> <span class="p">=</span> <span class="n">qe</span><span class="p">.</span><span class="n">execSelect</span><span class="p">();</span>
+    <span class="n">ResultSetFormatter</span><span class="p">.</span><span class="n">outputAsTSV</span><span class="p">(</span><span class="n">rs</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+
 <p>The server will respond to any valid SPARQL HTTP so an alternative SPARQL framework can be used.
-More information on SPARQL querying using Apache Jena can be found on their website (https://jena.apache.org/tutorials/sparql.html).</p>
+More information on SPARQL querying using Jena can be found on their website (https://jena.apache.org/tutorials/sparql.html).</p>
 <h2 id="sis_data-environment-variable">SIS_DATA Environment Variable<a class="headerlink" href="#sis_data-environment-variable" title="Permanent link">&para;</a></h2>
 <p>The Apache SIS library is used to support the recognition and transformation of Coordinate/Spatial Reference Systems.
 These Reference Systems are published as the EPSG dataset.
@@ -232,89 +238,141 @@ Several options are available to include
 <p>An embedded EPSG dataset can be included in an application by adding the following dependency:</p>
 <ul>
 <li>
-<p>Gradle dependency in <code>build.gradle</code>
-<code>ext.sisVersion = "0.8"
-implementation "org.apache.sis.non-free:sis-embedded-data:$sisVersion"</code></p>
+<p>Gradle dependency in <code>build.gradle</code></p>
+<p>ext.sisVersion = "0.8"
+implementation "org.apache.sis.non-free:sis-embedded-data:$sisVersion"</p>
 </li>
 <li>
-<p>Maven dependency in <code>pom.xml</code>
-<code>&lt;dependency&gt;
-    &lt;groupId&gt;org.apache.sis.non-free&lt;/groupId&gt;
-    &lt;artifactId&gt;sis-embedded-data&lt;/artifactId&gt;
-    &lt;version&gt;0.8&lt;/version&gt;
-&lt;/dependency&gt;</code></p>
+<p>Maven dependency in <code>pom.xml</code></p>
+<p><dependency>
+  <groupId>org.apache.sis.non-free</groupId>
+  <artifactId>sis-embedded-data</artifactId>
+  <version>0.8</version>
+</dependency></p>
 </li>
 </ul>
 <h2 id="command-line-arguments">Command Line Arguments<a class="headerlink" href="#command-line-arguments" title="Permanent link">&para;</a></h2>
 <p>Boolean options that have false defaults only require "--option" to make true in release v1.0.7 or later.
 Release v1.0.6 and earlier use the form "--option true".</p>
 <h3 id="1-port">1) Port<a class="headerlink" href="#1-port" title="Permanent link">&para;</a></h3>
-<p><code>--port, -p</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">port</span><span class="p">,</span> <span class="o">-</span><span class="n">p</span>
+</pre></div>
+
+
 <p>The port number of the server. Default: 3030</p>
 <h3 id="2-dataset-name">2) Dataset name<a class="headerlink" href="#2-dataset-name" title="Permanent link">&para;</a></h3>
-<p><code>--dataset, -d</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">dataset</span><span class="p">,</span> <span class="o">-</span><span class="n">d</span>
+</pre></div>
+
+
 <p>The name of the dataset used in the URL. Default: ds</p>
 <h3 id="3-loopback-only">3) Loopback only<a class="headerlink" href="#3-loopback-only" title="Permanent link">&para;</a></h3>
-<p><code>--loopback, -l</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">loopback</span><span class="p">,</span> <span class="o">-</span><span class="n">l</span>
+</pre></div>
+
+
 <p>The server only accepts local host loopback requests. Default: true</p>
 <h3 id="4-sparql-update-allowed">4) SPARQL update allowed<a class="headerlink" href="#4-sparql-update-allowed" title="Permanent link">&para;</a></h3>
-<p><code>--update, -u</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">update</span><span class="p">,</span> <span class="o">-</span><span class="n">u</span>
+</pre></div>
+
+
 <p>The server accepts updates to modify the dataset. Default: false</p>
 <h3 id="5-tdb-folder">5) TDB folder<a class="headerlink" href="#5-tdb-folder" title="Permanent link">&para;</a></h3>
-<p><code>--tdb, -t</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">tdb</span><span class="p">,</span> <span class="o">-</span><span class="n">t</span>
+</pre></div>
+
+
 <p>An existing or new TDB folder used for the dataset. Default set to memory dataset.
 If accessing a dataset for the first time with GeoSPARQL then consider the <code>--inference</code>, <code>--default_geometry</code> and <code>--validate</code> options. These operations may add additional statements to the dataset.</p>
 <h3 id="6-load-rdf-file-into-dataset">6) Load RDF file into dataset<a class="headerlink" href="#6-load-rdf-file-into-dataset" title="Permanent link">&para;</a></h3>
-<p><code>--rdf_file, -rf</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">rdf_file</span><span class="p">,</span> <span class="o">-</span><span class="n">rf</span>
+</pre></div>
+
+
 <p>Comma separated list of [RDF file path#graph name&amp;RDF format] to load into dataset. Graph name is optional and will use default graph. RDF format is optional (default: ttl) or select from one of the following: json-ld, json-rdf, nt, nq, thrift, trig, trix, ttl, ttl-pretty, xml, xml-plain, xml-pretty.
 e.g. <code>test.rdf#test&amp;xml,test2.rdf</code> will load <em>test.rdf</em> file into <em>test</em> graph as <em>RDF/XML</em> and <em>test2.rdf</em> into <em>default</em> graph as <em>TTL</em>.</p>
 <p>Consider the <code>--inference</code>, <code>--default_geometry</code> and <code>--validate</code> options. These operations may add additional statements to the dataset.</p>
 <h3 id="7-load-tabular-file-into-dataset">7) Load Tabular file into dataset<a class="headerlink" href="#7-load-tabular-file-into-dataset" title="Permanent link">&para;</a></h3>
-<p><code>--tabular_file, -tf</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">tabular_file</span><span class="p">,</span> <span class="o">-</span><span class="n">tf</span>
+</pre></div>
+
+
 <p>Comma separated list of [Tabular file path#graph name|delimiter] to load into dataset. See RDF Tables for table formatting. Graph name is optional and will use default graph. Column delimiter is optional and will default to COMMA. Any character except ':', '^' and '|'. Keywords TAB, SPACE and COMMA are also supported.
 e.g. <code>test.rdf#test|TAB,test2.rdf</code> will load <em>test.rdf</em> file into <em>test</em> graph as <em>TAB</em> delimited and <em>test2.rdf</em> into <em>default</em> graph as <em>COMMA</em> delimited.</p>
 <p>See RDF Tables project (https://github.com/galbiston/rdf-tables) for more details on tabular format.</p>
 <p>Consider the <code>--inference</code>, <code>--default_geometry</code> and <code>--validate</code> options. These operations may add additional statements to the dataset.</p>
 <h3 id="8-geosparql-rdfs-inference">8) GeoSPARQL RDFS inference<a class="headerlink" href="#8-geosparql-rdfs-inference" title="Permanent link">&para;</a></h3>
-<p><code>--inference, -i</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">inference</span><span class="p">,</span> <span class="o">-</span><span class="nb">i</span>
+</pre></div>
+
+
 <p>Enable GeoSPARQL RDFS schema and inferencing (class and property hierarchy). Inferences will be applied to the dataset. Updates to dataset may require server restart. Default: false</p>
 <h3 id="9-apply-hasdefaultgeometry">9) Apply hasDefaultGeometry<a class="headerlink" href="#9-apply-hasdefaultgeometry" title="Permanent link">&para;</a></h3>
-<p><code>--default_geometry, -dg</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">default_geometry</span><span class="p">,</span> <span class="o">-</span><span class="n">dg</span>
+</pre></div>
+
+
 <p>Apply hasDefaultGeometry to single Feature hasGeometry Geometry statements. Additional properties will be added to the dataset. Default: false</p>
 <h3 id="10-validate-geometry-literals">10) Validate Geometry Literals<a class="headerlink" href="#10-validate-geometry-literals" title="Permanent link">&para;</a></h3>
-<p><code>--validate, -v</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">validate</span><span class="p">,</span> <span class="o">-</span><span class="n">v</span>
+</pre></div>
+
+
 <p>Validate that the Geometry Literals in the dataset are valid. Default: false</p>
 <h3 id="11-convert-geo-predicates">11) Convert Geo predicates<a class="headerlink" href="#11-convert-geo-predicates" title="Permanent link">&para;</a></h3>
-<p><code>--convert_geo, -c</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">convert_geo</span><span class="p">,</span> <span class="o">-</span><span class="n">c</span>
+</pre></div>
+
+
 <p>Convert Geo predicates in the data to Geometry with WKT WGS84 Point GeometryLiteral. Default: false</p>
 <h3 id="12-remove-geo-predicates">12)  Remove Geo predicates<a class="headerlink" href="#12-remove-geo-predicates" title="Permanent link">&para;</a></h3>
-<p><code>--remove_geo, -rg</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">remove_geo</span><span class="p">,</span> <span class="o">-</span><span class="n">rg</span>
+</pre></div>
+
+
 <p>Remove Geo predicates in the data after combining to Geometry.</p>
 <h3 id="13-query-rewrite-enabled">13) Query Rewrite enabled<a class="headerlink" href="#13-query-rewrite-enabled" title="Permanent link">&para;</a></h3>
-<p><code>--rewrite, -r</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">rewrite</span><span class="p">,</span> <span class="o">-</span><span class="n">r</span>
+</pre></div>
+
+
 <p>Enable query rewrite extension of GeoSPARQL standard to simplify queries, which relies upon the 'hasDefaultGeometry' property. The 'default_geometry' may be useful for adding the 'hasDefaultGeometry' to a dataset. Default: true</p>
 <h3 id="14-indexing-enabled">14) Indexing enabled<a class="headerlink" href="#14-indexing-enabled" title="Permanent link">&para;</a></h3>
-<p><code>--index, -x</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">index</span><span class="p">,</span> <span class="o">-</span><span class="n">x</span>
+</pre></div>
+
+
 <p>Enable caching of re-usable data to improve query performance. Default: true
 See <a href="index">GeoSPARQL Jena project</a> for more details.</p>
 <h3 id="15-index-sizes">15) Index sizes<a class="headerlink" href="#15-index-sizes" title="Permanent link">&para;</a></h3>
-<p><code>--index_sizes, -xs</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">index_sizes</span><span class="p">,</span> <span class="o">-</span><span class="n">xs</span>
+</pre></div>
+
+
 <p>List of Index item sizes: [Geometry Literal, Geometry Transform, Query Rewrite]. Unlimited: -1, Off: 0 Unlimited: -1, Off: 0, Default: -1,-1,-1</p>
 <h3 id="16-index-expiries">16) Index expiries<a class="headerlink" href="#16-index-expiries" title="Permanent link">&para;</a></h3>
-<p><code>--index_expiry, -xe</code></p>
-<p>List of Index item expiry in milliseconds: [Geometry Literal, Geometry Transform, Query Rewrite]. Off: 0, Minimum: 1001, Default: 5000,5000,5000</p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">index_expiry</span><span class="p">,</span> <span class="o">-</span><span class="n">xe</span>
+</pre></div>
+
+
+<p>List of Index item expiry in milliseconds: [Geometry Literal, Geometry Transform, Query Rewrite]. Off: 0, Minimum: 1001, Default: 5000,5000,500</p>
 <h3 id="17-spatial-index-file">17) Spatial Index file<a class="headerlink" href="#17-spatial-index-file" title="Permanent link">&para;</a></h3>
-<p><code>--spatial_index, -si</code></p>
+<div class="codehilite"><pre><span class="o">--</span><span class="n">spatial_index</span><span class="p">,</span> <span class="o">-</span><span class="n">si</span>
+</pre></div>
+
+
 <p>File to load or store the spatial index. Default to "spatial.index" in TDB folder if using TDB and not set. Otherwise spatial index is not stored.</p>
 <h3 id="18-properties-file">18) Properties File<a class="headerlink" href="#18-properties-file" title="Permanent link">&para;</a></h3>
-<p>Supply the above parameters as a file:
-<code>console
-$ java Main @/tmp/parameters</code></p>
+<p>Supply the above parameters as a file:</p>
+<div class="codehilite"><pre>$ <span class="n">java</span> <span class="n">Main</span> <span class="p">@</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">parameters</span>
+</pre></div>
+
+
 <h2 id="future-work">Future Work<a class="headerlink" href="#future-work" title="Permanent link">&para;</a></h2>
 <ul>
 <li>GUI to assist users when querying a dataset.</li>
 </ul>
-<p><img alt="Powered by Apache Jena" src="https://www.apache.org/logos/comdev-test/poweredby/jena.png" title="Powered by Apache Jena" /></p>
   </div>
 </div>
 

Modified: websites/staging/jena/trunk/content/documentation/geosparql/index.html
==============================================================================
--- websites/staging/jena/trunk/content/documentation/geosparql/index.html (original)
+++ websites/staging/jena/trunk/content/documentation/geosparql/index.html Sat Jun  1 13:20:46 2019
@@ -176,7 +176,7 @@ The implementation is pure Java and does
 <p>The WKT (as described in 11-052r4) and GML 2.0 Simple Features Profile (10-100r3) serialisations are supported.
 Additional serialisations can be implemented by extending the
 <code>org.apache.jena.geosparql.implementation.datatype.GeometryDatatype</code>
-and registering with Apache Jena's <code>org.apache.jena.datatypes.TypeMapper</code>.</p>
+and registering with Jena's <code>org.apache.jena.datatypes.TypeMapper</code>.</p>
 <p>All three spatial relation families are supported: <em>Simple Feature</em>, <em>Egenhofer</em> and <em>RCC8</em>.</p>
 <p>Indexing and caching of spatial objects and relations is performed <em>on-demand</em> during query execution.
 Therefore, set-up delays should be minimal.</p>
@@ -195,11 +195,14 @@ Publication of the benchmarking results
 </ul>
 <h2 id="getting-started">Getting Started<a class="headerlink" href="#getting-started" title="Permanent link">&para;</a></h2>
 <p>GeoSPARQL Jena can be accessed as a library using Maven etc. from Maven Central.</p>
-<p><code>&lt;dependency&gt;
-    &lt;groupId&gt;org.apache.jena&lt;/groupId&gt;
-    &lt;artifactId&gt;jena-geosparql&lt;/artifactId&gt;
-    &lt;version&gt;...&lt;/version&gt;
-&lt;/dependency&gt;</code></p>
+<div class="codehilite"><pre><span class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.jena<span class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>jena-geosparql<span class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>...<span class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</pre></div>
+
+
 <p>A HTTP server (SPARQL endpoint) using is available - for details, see the <a href="geosparql-fuseki">Geosparql Fuseki documentation</a>.</p>
 <h3 id="sparql-query-configuration">SPARQL Query Configuration<a class="headerlink" href="#sparql-query-configuration" title="Permanent link">&para;</a></h3>
 <p>Using the library for SPARQL querying requires one line of code.
@@ -240,27 +243,31 @@ The <em>indexes</em> can be configured b
 <code>org.apache.jena.geosparql.configuration.GeoSPARQLConfig</code>.
 Caching of frequently used but small quantity data is also applied in several <em>registries</em>, e.g. coordinate reference systems and mathematical transformations.</p>
 <p>Example GeoSPARQL query:</p>
-<p>```
-PREFIX geo: <a href="http://www.opengis.net/ont/geosparql#">http://www.opengis.net/ont/geosparql#</a></p>
-<p>SELECT ?obj
-WHERE{
-    ?subj geo:sfContains ?obj
-}ORDER by ?obj
-```</p>
+<div class="codehilite"><pre><span class="n">PREFIX</span> <span class="n">geo</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">opengis</span><span class="p">.</span><span class="n">net</span><span class="o">/</span><span class="n">ont</span><span class="o">/</span><span class="n">geosparql</span>#<span class="o">&gt;</span>
+
+<span class="n">SELECT</span> ?<span class="n">obj</span>
+<span class="n">WHERE</span><span class="p">{</span>
+    ?<span class="n">subj</span> <span class="n">geo</span><span class="p">:</span><span class="n">sfContains</span> ?<span class="n">obj</span>
+<span class="p">}</span> <span class="n">ORDER</span> <span class="n">by</span> ?<span class="n">obj</span>
+</pre></div>
+
+
 <h3 id="querying-datasets-models-with-sparql">Querying Datasets &amp; Models with SPARQL<a class="headerlink" href="#querying-datasets-models-with-sparql" title="Permanent link">&para;</a></h3>
 <p>The setup of GeoSPARQL Jena only needs to be performed once in an application.
-After it is setup querying is performed using Apache Jena's standard query methods.</p>
+After it is setup querying is performed using Jena's standard query methods.</p>
 <p>To query a Model with GeoSPARQL or standard SPARQL:</p>
-<p>```
-GeoSPARQLConfig.setupMemoryIndex();
-Model model = .....;
-String query = ....;</p>
-<p>try (QueryExecution qe = QueryExecutionFactory.create(query, model)) {
-    ResultSet rs = qe.execSelect();
-    ResultSetFormatter.outputAsTSV(rs);
-}
-```</p>
-<p>More information on SPARQL querying using Apache Jena can be found on their website (https://jena.apache.org/tutorials/sparql.html).
+<div class="codehilite"><pre><span class="n">GeoSPARQLConfig</span><span class="p">.</span><span class="n">setupMemoryIndex</span><span class="p">();</span>
+<span class="n">Model</span> <span class="n">model</span> <span class="p">=</span> <span class="p">.....;</span>
+<span class="n">String</span> <span class="n">query</span> <span class="p">=</span> <span class="p">....;</span>
+
+<span class="k">try</span> <span class="p">(</span><span class="n">QueryExecution</span> <span class="n">qe</span> <span class="p">=</span> <span class="n">QueryExecutionFactory</span><span class="p">.</span><span class="n">create</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">model</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">ResultSet</span> <span class="n">rs</span> <span class="p">=</span> <span class="n">qe</span><span class="p">.</span><span class="n">execSelect</span><span class="p">();</span>
+    <span class="n">ResultSetFormatter</span><span class="p">.</span><span class="n">outputAsTSV</span><span class="p">(</span><span class="n">rs</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>More information on SPARQL querying using Jena can be found on their website (https://jena.apache.org/tutorials/sparql.html).
 If your dataset needs to be separate from your application and accessed over HTTP then you probably need
 the <a href="geosparql-fuseki">GeoSPARQL Fuseki project</a>.
 The GeoSPARQL functionality needs to be setup in the application or Fuseki server where the dataset is located.</p>
@@ -311,9 +318,6 @@ Modifications and enhancements have been
 The Simple Features standard, and by extension GeoSPARQL, simplify calculations to Euclidean planer geometry.
 Therefore, datasets using a geographic spatial/coordinate reference system, which are based on latitude and longitude on an ellipsoid, e.g. WGS84, will have minor error introduced.
 This error has been deemed acceptable due to the simplification in calculation it offers.</p>
-<h3 id="apache-jena">Apache Jena<a class="headerlink" href="#apache-jena" title="Permanent link">&para;</a></h3>
-<p>A Java framework for building Semantic Web and Linked Data applications.
-The framework provides standard compliance for RDF and SPARQL and include extensions for persistent storage (TDB) and HTTP server (Fuseki).</p>
 <h3 id="apache-sissis_data-environment-variable">Apache SIS/SIS_DATA Environment Variable<a class="headerlink" href="#apache-sissis_data-environment-variable" title="Permanent link">&para;</a></h3>
 <p>Apache Spatial Information System (SIS) is a free software, Java language library for developing geospatial applications.
 SIS provides data structures for geographic features and associated meta-data along with methods to manipulate those data structures.
@@ -321,9 +325,12 @@ The library is an implementation of GeoA
 <p>A subset of the EPSG spatial/coordinate reference systems are included by default.
 The full EPSG dataset is not distributed due to the EPSG terms of use being incompatible with the Apache Licence.
 Several options are available to include the EPSG dataset by setting the <code>SIS_DATA</code> environment variable (http://sis.apache.org/epsg.html).</p>
-<p>An embedded EPSG dataset can be included in a Gradle application by adding the following dependency to <code>build.gradle</code>:
-<code>ext.sisVersion = "0.8"
-implementation "org.apache.sis.non-free:sis-embedded-data:$sisVersion"</code></p>
+<p>An embedded EPSG dataset can be included in a Gradle application by adding the following dependency to <code>build.gradle</code>:</p>
+<div class="codehilite"><pre><span class="n">ext</span><span class="p">.</span><span class="n">sisVersion</span> <span class="p">=</span> &quot;0<span class="p">.</span>8&quot;
+<span class="n">implementation</span> &quot;<span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">sis</span><span class="p">.</span><span class="n">non</span><span class="o">-</span><span class="n">free</span><span class="p">:</span><span class="n">sis</span><span class="o">-</span><span class="n">embedded</span><span class="o">-</span><span class="n">data</span><span class="p">:</span>$<span class="n">sisVersion</span>&quot;
+</pre></div>
+
+
 <h3 id="java-topology-suite">Java Topology Suite<a class="headerlink" href="#java-topology-suite" title="Permanent link">&para;</a></h3>
 <p>The JTS Topology Suite is a Java library for creating and manipulating vector geometry.</p>
 <h2 id="note">Note<a class="headerlink" href="#note" title="Permanent link">&para;</a></h2>
@@ -368,19 +375,21 @@ Shapes which differ in the number of poi
 This also means the <code>Geometry Literal</code> does not need to be specified in the query.
 In the case of <code>Features</code> this requires the <code>hasDefaultGeometry</code> property to be used in the dataset.</p>
 <p>This means the query:</p>
-<p>```
-    ?subj geo:hasDefaultGeometry ?subjGeom .
-    ?subjGeom geo:hasSerialization ?subjLit .</p>
-<div class="codehilite"><pre>?<span class="n">obj</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasDefaultGeometry</span> ?<span class="n">objGeom</span> <span class="p">.</span>
-?<span class="n">objGeom</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasSerialization</span> ?<span class="n">objLit</span> <span class="p">.</span>
+<div class="codehilite"><pre>    ?<span class="n">subj</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasDefaultGeometry</span> ?<span class="n">subjGeom</span> <span class="p">.</span>
+    ?<span class="n">subjGeom</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasSerialization</span> ?<span class="n">subjLit</span> <span class="p">.</span>
+
+    ?<span class="n">obj</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasDefaultGeometry</span> ?<span class="n">objGeom</span> <span class="p">.</span>
+    ?<span class="n">objGeom</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasSerialization</span> ?<span class="n">objLit</span> <span class="p">.</span>
 
-<span class="n">FILTER</span><span class="p">(</span><span class="n">geof</span><span class="p">:</span><span class="n">sfContains</span><span class="p">(</span>?<span class="n">subjLit</span><span class="p">,</span> ?<span class="n">objLit</span><span class="p">))</span>
+    <span class="n">FILTER</span><span class="p">(</span><span class="n">geof</span><span class="p">:</span><span class="n">sfContains</span><span class="p">(</span>?<span class="n">subjLit</span><span class="p">,</span> ?<span class="n">objLit</span><span class="p">))</span>
 </pre></div>
 
 
-<p>```</p>
 <p>becomes:</p>
-<p><code>?subj geo:sfContains ?obj .</code></p>
+<div class="codehilite"><pre>    ?<span class="n">subj</span> <span class="n">geo</span><span class="p">:</span><span class="n">sfContains</span> ?<span class="n">obj</span> <span class="p">.</span>
+</pre></div>
+
+
 <p>Methods are available to apply the <code>hasDefaultGeometry</code> property to every <code>Geometry</code> with a single <code>hasGeometry</code>
 property, see <code>org.apache.jena.geosparql.configuration.GeoSPARQLOperations</code>.</p>
 <p>Depending upon the spatial relation, queries may include the specified <code>Feature</code> and <code>Geometry</code> in the results.
@@ -518,16 +527,24 @@ Methods are available to convert dataset
 However, only certain spatial relations are valid for <code>Point</code> to <code>Point</code> relationships.
 Refer to pages 8-10 of 11-052r4 GeoSPARQL standard for more details.</p>
 <p>Geo predicates can be converted to Geometry Literals in query and then used with the GeoSPARQL filter functions.</p>
-<p><code>?subj wgs:lat ?lat .
-    ?subj wgs:long ?lon .
-    BIND(spatialF:convertLatLon(?lat, ?lon) as ?point) .
-    BIND("POLYGON((...))"^^&lt;http://www.opengis.net/ont/geosparql#wktLiteral&gt; AS ?box) . #Coordinate order is Lon/Lat without stated SRS URI.
-    FILTER(geof:sfContains(?box, ?point))</code></p>
+<div class="codehilite"><pre>  ?<span class="n">subj</span> <span class="n">wgs</span><span class="p">:</span><span class="n">lat</span> ?<span class="n">lat</span> <span class="p">.</span>
+  ?<span class="n">subj</span> <span class="n">wgs</span><span class="p">:</span><span class="n">long</span> ?<span class="n">lon</span> <span class="p">.</span>
+  <span class="n">BIND</span><span class="p">(</span><span class="n">spatialF</span><span class="p">:</span><span class="n">convertLatLon</span><span class="p">(</span>?<span class="n">lat</span><span class="p">,</span> ?<span class="n">lon</span><span class="p">)</span> <span class="n">as</span> ?<span class="n">point</span><span class="p">)</span> <span class="p">.</span>
+  #<span class="n">Coordinate</span> <span class="n">order</span> <span class="n">is</span> <span class="n">Lon</span><span class="o">/</span><span class="n">Lat</span> <span class="n">without</span> <span class="n">stated</span> <span class="n">SRS</span> <span class="n">URI</span><span class="p">.</span>
+  <span class="n">BIND</span><span class="p">(</span>&quot;<span class="n">POLYGON</span><span class="p">((...))</span>&quot;^^<span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">opengis</span><span class="p">.</span><span class="n">net</span><span class="o">/</span><span class="n">ont</span><span class="o">/</span><span class="n">geosparql</span>#<span class="n">wktLiteral</span><span class="o">&gt;</span> <span class="n">AS</span> ?<span class="n">box</span><span class="p">)</span> <span class="p">.</span>
+  <span class="n">FILTER</span><span class="p">(</span><span class="n">geof</span><span class="p">:</span><span class="n">sfContains</span><span class="p">(</span>?<span class="n">box</span><span class="p">,</span> ?<span class="n">point</span><span class="p">))</span>
+</pre></div>
+
+
 <p>Alternatively, utilising more shapes, relations and spatial reference systems can be achieved by converting the dataset to the GeoSPARQL structure.</p>
-<p><code>?subj geo:hasGeometry ?geom .
-    ?geom geo:hasSerialization ?geomLit .
-    BIND("POLYGON((...))"^^&lt;http://www.opengis.net/ont/geosparql#wktLiteral&gt; AS ?box) . #Coordinate order is Lon/Lat without stated SRS URI.
-    FILTER(geof:sfContains(?box, ?geomLit))</code></p>
+<div class="codehilite"><pre>  ?<span class="n">subj</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasGeometry</span> ?<span class="n">geom</span> <span class="p">.</span>
+  ?<span class="n">geom</span> <span class="n">geo</span><span class="p">:</span><span class="n">hasSerialization</span> ?<span class="n">geomLit</span> <span class="p">.</span>
+  #<span class="n">Coordinate</span> <span class="n">order</span> <span class="n">is</span> <span class="n">Lon</span><span class="o">/</span><span class="n">Lat</span> <span class="n">without</span> <span class="n">stated</span> <span class="n">SRS</span> <span class="n">URI</span><span class="p">.</span>
+  <span class="n">BIND</span><span class="p">(</span>&quot;<span class="n">POLYGON</span><span class="p">((...))</span>&quot;^^<span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">opengis</span><span class="p">.</span><span class="n">net</span><span class="o">/</span><span class="n">ont</span><span class="o">/</span><span class="n">geosparql</span>#<span class="n">wktLiteral</span><span class="o">&gt;</span> <span class="n">AS</span> ?<span class="n">box</span><span class="p">)</span> <span class="p">.</span>
+  <span class="n">FILTER</span><span class="p">(</span><span class="n">geof</span><span class="p">:</span><span class="n">sfContains</span><span class="p">(</span>?<span class="n">box</span><span class="p">,</span> ?<span class="n">geomLit</span><span class="p">))</span>
+</pre></div>
+
+
 <p>Datasets can contain both Geo predicates and Geometry Literals without interference.
 However, a dataset containing both types will only examine those <code>Features</code> which have Geometry Literals for spatial relations, i.e. the check for Geo predicates is a fallback when Geometry Literals aren't found.
 Therefore, it is <strong>not</strong> recommended to insert new Geo predicate properties after a dataset has been converted to GeoSPARQL structure (unless corresponding Geometry and Geometry Literals are included).</p>
@@ -777,7 +794,7 @@ The conformance and completeness of thes
 <td>Require setting up a database, configuring a geospatial extension and setting environment variables.</td>
 </tr>
 <tr>
-<td>Uses Apache Jena, which conforms to the W3C standards for RDF and SPARQL. New versions of the standards will quickly feed through.</td>
+<td>Uses Jena, which conforms to the W3C standards for RDF and SPARQL. New versions of the standards will quickly feed through.</td>
 <td>Not fully RDF and SPARQL compliant, e.g. RDFS/OWL inferencing or SPARQL syntax. Adding your own schema may not produce inferences.</td>
 </tr>
 <tr>