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><dependency>
- <groupId>org.apache.jena</groupId>
- <artifactId>fuseki-geosparql</artifactId>
- <version>...</version>
-</dependency></code></p>
+<div class="codehilite"><pre><span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.apache.jena<span
class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>fuseki-geosparql<span
class="nt"></artifactId></span>
+ <span class="nt"><version></span>...<span
class="nt"></version></span>
+<span class="nt"></dependency></span>
+</pre></div>
+
+
<h3 id="command-line">Command Line<a class="headerlink" href="#command-line"
title="Permanent link">¶</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">¶</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> "<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>"<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">¶</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><dependency>
- <groupId>org.apache.sis.non-free</groupId>
- <artifactId>sis-embedded-data</artifactId>
- <version>0.8</version>
-</dependency></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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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&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&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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</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">¶</a></h2>
<p>GeoSPARQL Jena can be accessed as a library using Maven etc. from Maven
Central.</p>
-<p><code><dependency>
- <groupId>org.apache.jena</groupId>
- <artifactId>jena-geosparql</artifactId>
- <version>...</version>
-</dependency></code></p>
+<div class="codehilite"><pre><span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.apache.jena<span
class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>jena-geosparql<span
class="nt"></artifactId></span>
+ <span class="nt"><version></span>...<span
class="nt"></version></span>
+<span class="nt"></dependency></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">¶</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"><</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">></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 & Models
with SPARQL<a class="headerlink" href="#querying-datasets-models-with-sparql"
title="Permanent link">¶</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">¶</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">¶</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>
"0<span class="p">.</span>8"
+<span class="n">implementation</span> "<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>"
+</pre></div>
+
+
<h3 id="java-topology-suite">Java Topology Suite<a class="headerlink"
href="#java-topology-suite" title="Permanent link">¶</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">¶</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((...))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
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>"<span
class="n">POLYGON</span><span class="p">((...))</span>"^^<span
class="o"><</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">></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((...))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>
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>"<span
class="n">POLYGON</span><span class="p">((...))</span>"^^<span
class="o"><</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">></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>