<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Hersonissos,
Greece
$ sbin@informatik.uni-leipzig.de (S. Bin)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Getting practical with GeoSPARQL and Apache Jena</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Simon Bin</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Claus Stadler</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lorenz Bühmann</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Martin</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Chemnitz University of Technology</institution>
          ,
          <addr-line>Chemnitz</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute for Applied Informatics (InfAI)</institution>
          ,
          <addr-line>Leipzig</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Leipzig University</institution>
          ,
          <addr-line>Leipzig</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2024</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0001</lpage>
      <abstract>
        <p>This paper explores the integration of geo-spatial data into RDF (Resource Description Framework) using Apache Jena, a popular Java-based framework for building Semantic Web applications. We explain the basic representation of geo-spatial data in RDF with a focus on both the new GeoSPARQL 1.1 standard and Apache Jena. Our investigation covers advanced techniques, such as transformation of coordinate reference systems, aggregation of geo-spatial data, creation of new geo-objects, and simplification of polygons. Additionally, we discuss the usage of the H3 Grid as a Discrete Global Grid System (DGGS) for geo-spatial conversion. Furthermore, we present performance optimisations specific to Apache Jena, including per-graph geo-indexing, improved geo-index serialization for faster startup times, and manual optimisation of geo-spatial queries. We conclude with a comparison of diferent geo-functions and outline future directions for enhancing geo-spatial data management in RDF.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;GeoSPARQL</kwd>
        <kwd>Free software</kwd>
        <kwd>Apache Jena</kwd>
        <kwd>RDF</kwd>
        <kwd>spatial</kwd>
        <kwd>geometry</kwd>
        <kwd>GIS</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
    </sec>
    <sec id="sec-2">
      <title>2. Related work</title>
      <p>
        The importance of using geo-spatial data in a knowledge graph goes back for more than a decade, such
as the early eforts to lift OpenStreetMap data into knowledge graphs [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Nowadays, OpenStreetMap
(OSM) data can be quickly converted to RDF using the osm2rdf tool [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. (Originally, the code was
not following the standard, thus impairing reuse. We raised an issue about this2 and now it can be
used with any compliant GeoSPARQL store successfully.) A recent summary on knowledge graph
construction [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] also emphasises the ongoing interest. The community, such as Knowledge Graphs in
Action and EuroSDR [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], is also discussing this topic.
      </p>
      <p>
        The potential benefit of connecting geo-spatial data with knowledge graph entities such as from
Wikidata has been noted in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], too. Furthermore, knowledge graphs can be interlinked based on
their geo-spatial data, as shown in several approaches such as [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] or [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Modelling the data according
to well-defined standards is important for these usages as well as for the FAIR data principles [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
With regards to interoperability, GeoSPARQL-conformance provides a foundation for the realisation
of advanced use cases in a modular and vendor-independent way. One such example is geo-spatial
question answering over knowledge graphs using GeoSPARQL queries, as proposed in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Geo-spatial data in RDF</title>
      <p>
        In this section, we describe how to model geo-spatial data using RDF. In the following use cases, we
contextualise the (required) standard according to the requirements and the current state with regards to
Apache Jena GeoSPARQL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Apache Jena achieved the highest compliance score in the GeoSPARQL
Benchmark [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. GeoSPARQL 1.1 [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] was recently released (2024-01-29) and is a great update to the
version 1.0 standard, however, it has not yet been fully implemented in Apache Jena.
      </p>
      <sec id="sec-3-1">
        <title>3.1. Storing and querying geo-spatial data using RDF and (Geo)SPARQL</title>
        <p>
          The first requirement of working with geo-spatial data should be to store it in the knowledge graph.
Initial attempts at this were to encode the latitude and longitude of an object on the earth using the
wgs84 vocabulary.3 The modern way is to use GeoSPARQL with a sub-language for geometries, this
has the advantage of supporting lines and (multi-)polygons in addition to points. The most popular
choice here is the Well-known text (WKT) representation [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] (see Figure 1), but other representations
are possible, such as the Geography Markup Language (GML).
## GeoSPARQL standard
PREFIX geo: &lt;http://www.opengis.net/ont/geosparql#&gt;
PREFIX geof: &lt;http://www.opengis.net/def/function/geosparql/&gt;
## Jena Spatial vendor extensions
PREFIX spatial: &lt;http://jena.apache.org/spatial#&gt;
PREFIX spatialF: &lt;http://jena.apache.org/function/spatial#&gt;
## JenaX web service extension
PREFIX url: &lt;http://jsa.aksw.org/fn/url/&gt;
## osm2rdf OpenStreetMap vocabulary
PREFIX osmkey: &lt;https://www.openstreetmap.org/wiki/Key:&gt;
PREFIX osmrel: &lt;https://www.openstreetmap.org/relation/&gt;
PREFIX osmway: &lt;https://www.openstreetmap.org/way/&gt;
PREFIX osm: &lt;https://www.openstreetmap.org/&gt;
## CoyPu project vocabulary
PREFIX coy: &lt;https://schema.coypu.org/global#&gt;
## MoIn project vocabulary
PREFIX moino: &lt;http://mobilityindex.net/ontology/&gt;
Used prefixes in this document
&lt;MyTriangle&gt; a geo:Feature ;
geo:hasGeometry [ a geo:Geometry ;
geo:asWKT
        </p>
        <p>"POLYGON((26.5 45, 27 45, 27 45.2, 26.5 45))"^^geo:wktLiteral
] ;
geo:hasCentroid [ a geo:Geometry ;</p>
        <p>geo:asWKT "POINT(26.83 45.07)"^^geo:wktLiteral ]
Figure 1: Representation of a feature with a geometry and a centroid point using GeoSPARQL/RDF</p>
        <p>
          This is possible with GeoSPARQL 1.0 (before 2022, there was an error in the specification that
prevented the use of conventional GML in conforming implementations such as the Apache Jena version
4.6.0 [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] – this might suggest that GML is not being used widely in the GeoSPARQL/RDF communities).
GeoSPARQL 1.1 adds support for even more representation languages, such as GeoJSON.
        </p>
        <p>After the information is represented like this, the whole range of geo-spatial functions provided
by GeoSPARQL can be used in SPARQL queries. Commonly used functions include geo:sfWithin/
geof:sfWithin, geo:sfIntersects/geof:sfIntersects, etc., and can be used in linking or querying
to correlate geo-spatial objects, like ?company geo:sfWithin ?country (the geometry of a company is
geographically located within the polygon of a country) or FILTER(geof:sfIntersects(?riverGeom,
?regionGeom) (only include those SPARQL results where the geometry of the river intersects the
geometry of a specific region).</p>
        <p>Additionally, there can be more than one geometry information available for an entity, for example, the
polygon describing the extent of the object as well as the centre point (centroid). There are standardised
properties for this information available starting with GeoSPARQL 1.1.</p>
        <p>Finally, it is possible to do mathematical computations on geo-spatial objects. The function
geof:distance (GeoSPARQL 1.0) can be used to calculate the distance between two objects, as well as the
vendor function spatialF:distance in Apache Jena and geof:metricDistance in GeoSPARQL 1.1.
In GeoSPARQL 1.1 it is also possible to calculate the area of an object with the functions geof:area or
geof:metricArea.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Transformation of Coordinate Reference System</title>
        <p>Oftentimes, especially when integrating data from diferent sources, the geo-spatial data is not in the
same Coordinate Reference System (CRS). For example, the same polygon as above, when expressed in
the CRS with EPSG4 code 38445 looks like this:
"&lt;http://www.opengis.net/def/crs/EPSG/0/3844&gt; POLYGON((390018.693878 618366.368293,
˓→ 390877.440409 657778.063276, 413096.430405 657224.263781, 390018.693878
˓→ 618366.368293))"^^geo:wktLiteral</p>
        <p>Recording the CRS in the data is supported in GeoSPARQL 1.0 and is done by adding a CRS IRI in
front of the WKT literal. It is the most practical to work with integrated data if it is all expressed in the
same CRS. For that, CRS transformations are required.</p>
        <p>This possibility to transform the CRS exists in Apache Jena with a custom vendor function:
spatialF:transformSRS(?originalGeometry, &lt;http://www.opengis.net/def/crs/EPSG/0/3844&gt;).
It has been standardised in GeoSPARQL 1.1 as geof:transform(?geom, ?crsIRI).</p>
        <p>Support for CRS transformations is currently crucial in Apache Jena to calculate metric bufers and
distances. (Bufering can be used for many purposes, such as finding objects within a certain distance
to the boundary or intersection checks with an error margin.) Consequently, in order to calculate a
metric bufer around a polygon, the following SPARQL query is required:</p>
        <p>BIND(geof:transform(?geo, &lt;http://www.opengis.net/def/crs/EPSG/0/3844&gt;) AS ?metricGeo)
BIND(geof:buffer(?metricGeo, 11113.9, uom:metre) AS ?metricBuffered)
BIND(geof:transform(?metricBuffered, &lt;http://www.opengis.net/def/crs/OGC/1.3/CRS84&gt;) AS
˓→ ?geoBufferedCrs84)</p>
        <p>Otherwise, it is possible to calculate the bufer by adding degrees of longitude/latitude, however,
this has a distorting efect due to the shape of the earth, as can be seen in Figure 2. We have opened a
clarification request as GeoSPARQL issue 398. 6</p>
        <sec id="sec-3-2-1">
          <title>4European Petroleum Survey Group 5https://epsg.io/3844 6https://github.com/opengeospatial/ogc-geosparql/issues/398</title>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Transformation of representation language</title>
        <p>In addition to the CRS, it can be desirable to transform between representation language of the
geometries. On the one hand, processing of integrated data is easier when it is all using the same representation
(we found WKT to be predominant). One use case is the consumption of disaster data from the Global
Disaster Alert and Coordination System (GDACS). GeoJSON data is provided for various disaster events,
for example, the tropical cyclone number 1001053,7 as shown in Figure 3. On the other hand, some
other applications such as the map viewer Leaflet can also work more natively with GeoJSON.</p>
        <p>
          Starting with GeoSPARQL 1.1, conversion functions between representations have been added.
They are using the geof:as*** naming convention: geof:asGeoJSON, geof:asGML, and geof:asWKT.
We have already implemented the required support in our JenaX extension [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], but the function
names still need to be aligned with GeoSPARQL 1.1.
        </p>
        <p>VALUES ?geojsonUrl {
&lt;https://www.gdacs.org/contentdata/resources/TC/1001053/ ⌋
˓→ geojson_1001053_2.geojson&gt;
}
BIND(strdt(url:text(?geojsonUrl), geo:geoJSONLiteral) AS ?geojson)
## currently implemented:
BIND(spatialF:transformDatatype(?geojson, geo:wktLiteral) AS ?wktGeom)
## standards compliant:</p>
        <p>BIND(geof:asWKT(?geojson) AS ?wktGeom)</p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Aggregating geo-spatial data</title>
        <p>When assembling open geo-spatial data, the OpenStreetMap8 project is a huge treasure trove of
collaboratively collected map data of the world. However, many geo-spatial objects in OSM are
modelled as consisting of many parts, like many piece-wise relations of a river or a railroad network.</p>
        <p>With GeoSPARQL 1.1, geo-spatial aggregate functions were introduced that can be used in the SPARQL
queries together with the GROUP BY clause. GeoSPARQL 1.1 defines the functions
geof:aggBoundingBox, geof:aggBoundingCircle, geof:aggCentroid, geof:aggConcaveHull, geof:aggConvexHull, and
geof:aggUnion.
7https://gdacs.org/report.aspx?eventid=1001053&amp;eventtype=TC
8https://www.openstreetmap.org/about
SELECT
## currently implemented:
(geof:lineMerge(geof:collect(?wayGeom)) AS ?riverGeom)
## possible standards suggestion?
(geof:aggConcatLines(?wayGeom) AS ?riverGeom)
WHERE {
?s a osm:relation ;
osmkey:name "Elbe" ;
osmrel:member/osm:id ?m .</p>
        <p>?m geo:hasGeometry/geo:asWKT ?wayGeom .</p>
        <p>}
Figure 4: Example SPARQL query to reconstruct the Elbe river using aggregate functions</p>
        <p>
          However, for our use case, we would also need a function to aggregate line strings. Such a function
was proposed in the GeoSPARQL 1.1 Motivations paper [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] but it is absent from the released standard.
We have opened a request for inclusion in a later version as GeoSPARQL issue 402.9 Furthermore, a
function geof:aggCollect to create geometry collections of geometries has been suggested for inclusion
in a later version of GeoSPARQL. These functions are already available in our JenaX extension.
        </p>
        <p>Such aggregate functions can then be used to combine the segments of a river back into a single
river object, which is oftentimes more practical for our use case than having to deal with the individual
pieces. This is shown in Figure 4.</p>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. Creating new geo-objects</title>
        <p>It can be useful to create a connection between multiple points through a line, this also makes it easier to
detect which areas are crossed by a path connecting multiple points. To assist with this, we provide the
geof:makeLine function that turns a geometry collection into a line. Similarly, it can be useful to create
new points, especially with longitude and latitude at hand, that may be coming from legacy properties.
This can be done using the spatialF:convertLatLon function (the function name also makes it hard to
mix up latitude and longitude in the parameters). The query in Figure 5 demonstrates how to achieve
a visualisation of a company’s suppliers based on their coordinates. It results in line strings from
Frankfurt, Germany, to a list of companies that are geo-coded using legacy latitude and longitude
properties from the CoyPu project.10 These functions are implemented in our JenaX extension.</p>
        <p>SELECT</p>
        <p>(geof:makeLine(geof:union(?frankfurtGeom, ?supplierGeom)) AS ?lineGeom)
WHERE {</p>
        <p>GRAPH &lt;https://data.coypu.org/cities/&gt; {
&lt;http://www.wikidata.org/entity/Q1794&gt; geo:hasGeometry/geo:asWKT
˓→ ?frankfurtGeom
}
GRAPH &lt;https://data.coypu.org/companies/demo/&gt; {
?s coy:isSupplierOf "ferrero" ;
coy:hasLatitude ?lat ;
coy:hasLongitude ?lon .</p>
        <p>BIND(spatialF:transformSRS(spatialF:convertLatLon(?lat, ?lon),
˓→ &lt;http://www.opengis.net/def/crs/OGC/1.3/CRS84&gt;) AS ?supplierGeom)
}</p>
        <p>}</p>
      </sec>
      <sec id="sec-3-6">
        <title>3.6. Simplification of polygons</title>
        <p>Some polygons, especially those of administrative boundaries, can have very detailed borders whose
size in WKT representation amounts to dozens of megabytes. It can be useful to simplify such
geospatial objects, either to improve the performance of map visualisation, to speed up containment
checks when accuracy is less important, or to reduce the size requirements of the polygon. We are
providing a function geof:simplifyDp or geof:simplifyVw that uses the Douglas-Peucker algorithm
or the Visvalingam-Whyatt algorithm to simplify polygons.</p>
        <p>These functions are implemented in our JenaX extension and have also been suggested by others on
the GeoSPARQL issue 257.11 Such a function has also been suggested for inclusion in a later version of
GeoSPARQL.</p>
      </sec>
      <sec id="sec-3-7">
        <title>3.7. Usage of H3 Grid as DGGS</title>
        <p>
          Discrete global grid systems (DGGS) that sub-divide the earth into a grid have gained importance,
as can be seen from [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. As such, it is now (in its abstract form) also part of GeoSPARQL 1.1.
DGGS can be used to speed up searching for nearby objects located in the same cell. One previous
work reports on attempting the AusPIX DGGS [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Another popular DGGS used by the company
Uber is called H3.12 We have implemented functions for working with H3 in JenaX. The currently
implemented functions are: geof:h3CellIdToGeom, geof:h3CellIdToParent, geof:h3CellResolution,
geof:h3GridDistance, geof:h3IsValidCell, geof:h3LongLatAsCellId, geo:h3_cellIdToChildren,
geo:h3_geometryToCellIds, and geo:h3_gridDisk.
        </p>
        <p>One example of working with H3 in our current extension is shown in Figure 6. In the example, we
are tracing existing public transport routes from the MoIn project13 using the H3 grid cells that contain
them. This serves as a basis for analysing public transport within a region, such that reachability can
be assessed on cell granularity. The next step is to align the H3 functions with GeoSPARQL 1.1. This
process might identify missing functionalities for working with DGGS in the current GeoSPARQL
standard.</p>
      </sec>
      <sec id="sec-3-8">
        <title>3.8. Longitude and Latitude of a point</title>
        <p>Latitude and longitude are a source of frequent sorrow,14 because it does not seem to be clear which
one is the first coordinate and which one is the second. This confusion is further emphasised by the
two CRS CRS:8415 and EPSG:432616 that are both in widespread use. Both refer to the World Geodetic
System 1984 (WGS 84), but CRS:84 uses the coordinate order (longitude, latitude), whereas EPSG code
4326 uses the (latitude, longitude) order. CRS:84 is also the default CRS for GeoSPARQL WKT literals.
In our project, we faced raw input data where the coordinates were mixed up for some records only.
Even today, the Geo-3D view on the popular SPARQL web interface Yasgui17 incorrectly plots points
on the earth with latitude and longitude reversed. For this reason, we are suggesting to have explicit
functions geof:lat and geof:lon that would always return the named coordinate. These functions are
implemented in our JenaX extension. Such functions are also suggested in the GeoSPARQL issue 160.18
Additionally, some applications require retrieving the latitude and longitude of a point as separate
columns. With GeoSPARQL 1.1, the functions geof:maxX and geof:maxY could be (ab)used to retrieve
the coordinates from a point, but knowledge of the coordinate order is required.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Performance optimisations in Apache Jena</title>
      <p>Some system-specific (targeted) performance improvements were realised on a technical level, which
are reported below.</p>
      <sec id="sec-4-1">
        <title>4.1. Per-graph geo-index</title>
        <p>In our use case, we have several named graphs, for example, some of which contain disaster events,
others which contain administrative geo-boundaries of countries in the world, etc.. For certain use
cases, we know exactly the set of graphs over which we want to query. If the question is to know which
country an event is located in, it is enough to search only through the administrative regions graph. By
default, the Apache Jena geo-index is global across the whole data set. So we implemented an option
to create a geo-index by named graphs. For use cases with multiple graphs containing spatial data,
this can provide a significant performance boost. The results of our benchmark are displayed in the
following table. We tested the approach with an artificial geo-spatial data set consisting of 16 graphs
with 262 144 geo-spatial objects in each and a geof:sfIntersects spatial query.</p>
        <p>Original impl. Improved impl.</p>
        <p>Matching objects Speed-up/slow-down
Query a single named graph
Query all named graphs . . .</p>
        <p>. . . using GRAPH ?g {...}
. . . using union default graph
35 seconds
5.8 minutes
1.4 minutes
5 seconds
1.4 minutes
1.4 minutes</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Improved geo-index serialisation for faster startup time</title>
        <p>During our project, we were hampered by the long start-up time of Apache Jena Fuseki reading the
geospatial index file. To that end, we implemented an improved storage format (serialisation, deserialisation)
of the database geo-index on disk. To test the efectiveness of our new implementation, a small and a
larger artificial geo-spatial data set was generated containing either 16 named graphs with 512 × 512
polygon tiles, or 32 named graphs with 1024× 1024 polygon tiles each, spread equally across the globe.</p>
        <p>Original impl. Improved impl. Speed-up/slow-down
Small geo-index
Large geo-index
build time
load time
build time
load time
1.4 minutes
24 seconds
9 minutes
3 minutes
1.8 minutes
2 seconds
12 minutes
8 seconds</p>
        <p>While it takes longer to build the index, the start-up times are much faster afterwards, which was an
important improvement for our project.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Updating the geo-index</title>
        <p>Currently, the geo-index in Apache Jena is static and built at start-up. This means it unfortunately does
not support SPARQL UPDATE or LOAD statements to modify the data contained in the database (at least
not without restarting). In our project, we had frequent updates to geo-spatial data. While the ideal
goal would be to have a self-updating geo-index, for now, we have implemented a method to update
the geo-index manually during the run-time of the Apache Jena Fuseki server. The code is available as
a Jena Fuseki Module on our GitHub.19</p>
      </sec>
      <sec id="sec-4-4">
        <title>4.4. Manually optimising geo-spatial queries</title>
        <p>At the time of writing, Apache Jena is not capable of any advanced query optimisation for GeoSPARQL
queries. For example, to find all geo-spatial objects contained within the United States, a naive query
might look like this:
&lt;https://data.coypu.org/country/USA/geometry/boundary&gt; geo:sfContains ?object .</p>
        <p>On our administrative boundaries data set with 49 535 geo-spatial objects, this query takes about 40
seconds. The reason is that the geographical region of the United States includes overseas regions, so
when the server implementation is looking for objects contained within the US, it will first look up all
objects in the geo-index using the bounding box of that multi-polygon, and that efectively spans the
whole world (see Figure 7).</p>
        <p>Ideally, the GeoSPARQL database could detect such situations and do query optimisation for them. For
our case, we have chosen the manual way of providing some additional functions to work with the
queries: spatial:st_dump can be used to break down a multi-polygon into its parts, and
spatial:withinBoxMultipolygonGeom can be used to make such a geo-index lookup. Our manually tuned query is thus
VALUES ?boundary { &lt;https://data.coypu.org/country/USA/geometry/boundary&gt; }
?boundary geo:asWKT ?boundaryGeom .
?feature spatial:withinBoxMultipolygonGeom (?boundaryGeom) .
?feature geo:hasGeometry ?object .</p>
        <p>?boundary geo:sfContains ?object .
and only takes 8 seconds to execute.</p>
        <p>These functions are available in our JenaX extension. GeoSPARQL 1.1 has some basic support for
the deconstruction of multi-polygons: geof:geometryN(?geom, ?geomIndex) can be used to extract
the N th geometry and geof:numGeometries can be used to query the total number of geometries.
However, using these functions is cumbersome at best and will require multiple queries and mechanical
construction of queries. Hence we propose to add a property function to destructure geometry collections
at GeoSPARQL issue 399.20</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. GeoSPARQL 1.1 function summary</title>
      <p>The following lists give an overview of the new functions in GeoSPARQL 1.1 and their availability in
Apache Jena and the JenaX extension.
geo:GeometryCollection, geo:FeatureCollection.
(These can be used to model geometry collections using RDF.)
Generic informative properties
Properties to connect specific geometries to a feature</p>
      <p>geo:hasCentroid, geo:hasBoundingBox.</p>
      <p>Properties for resolution and accuracy information</p>
      <p>geo:has(M)SpatialResolution, geo:has(M)SpatialAccuracy.</p>
      <p>Properties for geometry representation</p>
      <p>geo:asGeoJSON, geo:asKML, geo:asDGGS.</p>
      <p>Functions</p>
      <p>Aggregate functions
geo:has(M)Size, geo:has(M)Length, geo:has(M)PerimeterLength, geo:has(M)Area, geo:has(M)Volume.
GeoSPARQL 1.1
geof:metricDistance
geof:metricBufer
geof:concaveHull
geof:boundingCircle
geof:centroid
geof:dimension
geof:coordinateDimension
geof:spatialDimension
geof:geometryType
geof:is3D
geof:isEmpty
geof:isMeasured
geof:isSimple
geof:transform
geof:asWKT geof:asGML
geof:asGeoJSON
geof:asKML geof:asDGGS
geof:(m)length
geof:(m)perimeter
geof:(m)area
geof:geometryN
geof:numGeometries
geof:max{X,Y,Z}
geof:min{X,Y,Z}</p>
      <p>J
1
✓
✓
✓
✓
J Availability in Apache Jena
JX Availability in JenaX extension
1–5 Non-standard function
(M)(m) a metric variant of this function is also described, e.g. geof:(m)area → geof:area and geof:metricArea
↑ this function was upstreamed from JenaX
* these functions are not the same but can be used for a similar purpose</p>
      <p>Further functions that might be interesting for the GeoSPARQL community that are not part of the
standard but available in Jena or JenaX include:
• functions to create new objects such as spatialF:convertLatLon[J], geof:makeLine[JX], and
spatialF:convertLatLonBox[J],
• functions geof:simplifyDp[JX] and geof:simplifyVw[JX] to simplify polygons,
• geof:collect[JX] to create a geometry collection, and spatial:st_dump[JX] to destructure a
geometry collection into its parts,
• geof:lat[JX] and geof:lon[JX] to unambiguously address the latitude and longitude of a point,
• a range of functions to work with the H3 DGGS, with the possibility to specify the desired cell
resolution when approximating existing geometries (JenaX),
• and some functions to quickly retrieve objects from the geo-index using
spatial:intersectBoxGeom[J], spatial:withinBoxGeom[J], spatial:withinCircleGeom[J], and
spatial:withinBoxMultipolygonGeom[JX].</p>
    </sec>
    <sec id="sec-6">
      <title>6. Future topics in GeoSPARQL</title>
      <p>
        Local coordinate reference systems are being discussed in GeoSPARQL issue 500.21 They are an
important requirement for modelling local spatial data that is not rooted in any particular location
on the Earth and can operate in Euclidean space rather than on the ellipsoid. Examples of such usage
include storage warehouse robots, architecture and building planning, 3D-printing machines, or toy
building block instructions. Approaches for temporal RDF modelling have been proposed already
in 2007 [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The connection between spatial and temporal data should be strengthened beyond the
remark in the GeoSPARQL standard that “query extension functions for spatio-temporal operations
are not present in the GeoSPARQL standard” [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Finally, the modelling of three-dimensional objects
using GeoSPARQL seems to be not well understood yet. The Apache Jena GeoSPARQL implementation
does not currently support working with 3D objects. There is also GeoSPARQL issue 42922 which is
discussing this topic.
      </p>
    </sec>
    <sec id="sec-7">
      <title>7. Conclusion</title>
      <p>As has been shown, there is a significant advantage of using a standardised vocabulary like GeoSPARQL
to process spatial data with RDF. Furthermore, GeoSPARQL 1.1 brings many advantages compared to
the first version of the standard. We are interested in contributing additional GeoSPARQL 1.1 support
to Apache Jena and have already started to do so. Yet, GeoSPARQL 1.1 is still not enough for some use
cases. We believe some extensions may be interesting to the larger community and thus it would be
beneficial to have them standardised. In that regard, we have already begun to open some issues on the
GeoSPARQL issue tracker.</p>
    </sec>
    <sec id="sec-8">
      <title>Software and data availability</title>
      <p>The source code for this work is available on our GitHub:
• Apache Jena changes as described in Section 4: https://github.com/AKSW/jena/tree/coypu
• Online geo-index module for Apache Jena:</p>
      <p>
        https://github.com/AKSW/fuseki-mods/tree/adaptions/jena-fmod-geosparql
• JenaX extension module: https://github.com/Scaseco/jenax
• RdfProcessingToolkit: https://github.com/SmartDataAnalytics/RdfProcessingToolkit [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
• GridBench generator: https://github.com/AKSW/gridbench
• GridBench results: https://github.com/AKSW/gridbench-results (uses the Linked SPARQL
      </p>
      <p>
        Queries framework [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] for producing benchmark results in RDF)
      </p>
      <sec id="sec-8-1">
        <title>We used the following Docker images for our experiment:</title>
        <p>
          • Apache Jena with changes: aksw/fuseki-geoplus:5.0.0-1
• Apache Jena without changes: aksw/fuseki-vanilla:5.0.0-1
These RDF data sets were loaded in the experiments:
• geoBoundaries [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] data set as RDF:
https://raw.coypu.org/static-data/static/geoboundaries/cgaz_adm0.ttl.bz2,
https://raw.coypu.org/static-data/static/geoboundaries/cgaz_adm1.ttl.bz2,
https://raw.coypu.org/static-data/static/geoboundaries/cgaz_adm2.ttl.bz2
• MoIn data set: https://maven.aksw.org/archiva/#artifact/org.aksw.moin/moin/1.20220502.0
• CoyPu project OSM River demo: https://maven.aksw.org/archiva/#artifact/
org.coypu.thirdpary.osm/osm-river-planet/2022-10-05
        </p>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>Acknowledgments</title>
      <p>The authors acknowledge the financial support by the German Federal Ministry for Economic Afairs
and Climate Action in the project CoyPu (project number 01MK21007A) and by the German Federal
Ministry for Digital and Transport in the Project Moby Dex (project number 19F2266A).
All map screenshots from OpenStreetMap.23</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.</given-names>
            <surname>Stadler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lehmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Höfner</surname>
          </string-name>
          , S. Auer,
          <article-title>LinkedGeoData: A core for a web of spatial open data</article-title>
          ,
          <source>Semantic Web</source>
          <volume>3</volume>
          (
          <year>2012</year>
          )
          <fpage>333</fpage>
          -
          <lpage>354</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.</given-names>
            <surname>Bast</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Brosi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kalmbach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lehmann</surname>
          </string-name>
          ,
          <article-title>An eficient RDF converter and SPARQL endpoint for the complete OpenStreetMap data</article-title>
          ,
          <source>in: Proceedings of the 29th International Conference on Advances in Geographic Information Systems</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>536</fpage>
          -
          <lpage>539</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Hofer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Obraczka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Saeedi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Köpcke</surname>
          </string-name>
          , E. Rahm,
          <article-title>Construction of knowledge graphs: State and challenges</article-title>
          ,
          <year>2023</year>
          . arXiv:
          <volume>2302</volume>
          .
          <fpage>11509</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Bucher</surname>
          </string-name>
          , E. Folmer,
          <string-name>
            <given-names>R.</given-names>
            <surname>Brennan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Beek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Hbeich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Würriehausen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Rowland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Maturana</surname>
          </string-name>
          , E. Alvarado,
          <string-name>
            <given-names>R.</given-names>
            <surname>Buyle</surname>
          </string-name>
          , et al.,
          <article-title>Spatial linked data in Europe: Report from spatial linked data session at Knowledge Graphs in Action, Oficial Publication-EuroSDR (</article-title>
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Folmer</surname>
          </string-name>
          ,
          <article-title>Linking authoritative (government) data with community data (e</article-title>
          .g. Wikidata),
          <source>in: EuroGeographics and EuroSDR</source>
          ,
          <year>2023</year>
          , pp.
          <fpage>24</fpage>
          -
          <lpage>25</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ahmed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Sherif</surname>
          </string-name>
          , A.
          <string-name>
            <surname>-C. Ngonga Ngomo</surname>
          </string-name>
          ,
          <article-title>Cobalt: A content-based similarity approach for link discovery over geospatial knowledge graphs, in: Knowledge Graphs: Semantics, Machine Learning, and</article-title>
          <string-name>
            <surname>Languages</surname>
          </string-name>
          , IOS Press,
          <year>2023</year>
          , pp.
          <fpage>177</fpage>
          -
          <lpage>193</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Zinke-Wehlmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kirschenbaum</surname>
          </string-name>
          , Geo-L:
          <article-title>Topological link discovery for geospatial linked data made easy</article-title>
          ,
          <source>ISPRS International Journal of Geo-Information</source>
          <volume>10</volume>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>B.</given-names>
            <surname>Yaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Thompson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Brennan</surname>
          </string-name>
          ,
          <article-title>Standards conformance metrics for geospatial linked data, in: Knowledge Graphs and Semantic Web: Second Iberoamerican Conference</article-title>
          and First
          <string-name>
            <surname>Indo-American</surname>
            <given-names>Conference</given-names>
          </string-name>
          , KGSWC 2020, Mérida, Mexico,
          <source>November 26-27</source>
          ,
          <year>2020</year>
          , Proceedings 2, Springer,
          <year>2020</year>
          , pp.
          <fpage>113</fpage>
          -
          <lpage>129</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.-A.</given-names>
            <surname>Kefalidis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Punjani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Tsalapati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Plas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pollali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mitsios</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tsokanaridou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Koubarakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Maret</surname>
          </string-name>
          ,
          <article-title>Benchmarking geospatial question answering engines using the dataset GeoQuestions1089</article-title>
          , in: International Semantic Web Conference, Springer,
          <year>2023</year>
          , pp.
          <fpage>266</fpage>
          -
          <lpage>284</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Osman</surname>
          </string-name>
          , G. Albiston, GeoSPARQL-Jena:
          <article-title>Implementation and benchmarking of a GeoSPARQL graphstore</article-title>
          ,
          <source>in: 23rd European Conference on Knowledge Management</source>
          Vol
          <volume>2</volume>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jovanovik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Homburg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Spasić</surname>
          </string-name>
          ,
          <article-title>A GeoSPARQL compliance benchmark</article-title>
          ,
          <source>ISPRS International Journal of Geo-Information</source>
          <volume>10</volume>
          (
          <year>2021</year>
          )
          <fpage>487</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>N. J.</given-names>
            <surname>Car</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Homburg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Perry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Knibbe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. J.</given-names>
            <surname>Cox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Abhayaratna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bonduel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Cripps</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          Janowicz (Eds.),
          <article-title>OGC GeoSPARQL-A Geographic Query Language for RDF Data, Version 1</article-title>
          .1,
          <fpage>22</fpage>
          -
          <lpage>047r1</lpage>
          ,
          <year>2024</year>
          . URL: http://www.opengis.net/doc/IS/geosparql/1.1.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Herring</surname>
          </string-name>
          (Ed.),
          <article-title>OpenGIS Implementation Standard for Geographic information - Simple feature access - Part 1: Common architecture</article-title>
          ,
          <source>OGC 06-103r4</source>
          ,
          <year>2011</year>
          . URL: https://www.ogc.org/standard/ sfa/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>C.</given-names>
            <surname>Stadler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Bühmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Radtke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Junghanns</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gründer-Fahrer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Martin</surname>
          </string-name>
          ,
          <article-title>Semantification of geospatial information for enriched knowledge representation in context of crisis informatics</article-title>
          ,
          <source>in: Proceedings of the International Workshop on Data-driven Resilience Research</source>
          <year>2022</year>
          , volume
          <volume>3376</volume>
          <source>of CEUR Workshop Proceedings</source>
          , Leipzig, Germany,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>N. J.</given-names>
            <surname>Car</surname>
          </string-name>
          , T. Homburg, GeoSPARQL
          <volume>1</volume>
          .
          <article-title>1: Motivations, details and applications of the decadal update to the most important geospatial LOD standard</article-title>
          ,
          <source>ISPRS International Journal of Geo-Information</source>
          <volume>11</volume>
          (
          <year>2022</year>
          )
          <fpage>117</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.</given-names>
            <surname>Bondaruk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Roberts</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Robertson, Assessing the state of the art in Discrete Global Grid Systems: OGC criteria and present functionality</article-title>
          ,
          <source>Geomatica</source>
          <volume>74</volume>
          (
          <year>2020</year>
          )
          <fpage>9</fpage>
          -
          <lpage>30</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>D.</given-names>
            <surname>Habgood</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Homburg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. J.</given-names>
            <surname>Car</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Jovanovik</surname>
          </string-name>
          ,
          <article-title>Implementation and compliance benchmarking of a DGGS-enabled, GeoSPARQL-aware triplestore</article-title>
          ,
          <source>in: Proceedings of the 5th International Workshop on Geospatial Linked Data co-located with ESWC</source>
          , volume
          <volume>3157</volume>
          <source>of CEUR Workshop Proceedings</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Koubarakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kyzirakos</surname>
          </string-name>
          ,
          <article-title>Modeling and querying metadata in the semantic sensor web: The model stRDF and the query language stSPARQL</article-title>
          , in: Extended Semantic Web Conference, Springer,
          <year>2010</year>
          , pp.
          <fpage>425</fpage>
          -
          <lpage>439</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>C.</given-names>
            <surname>Stadler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Bühmann</surname>
          </string-name>
          , L.-P. Meyer, M. Martin,
          <string-name>
            <surname>Scaling RML</surname>
          </string-name>
          and
          <article-title>SPARQL-based knowledge graph construction with Apache Spark</article-title>
          ,
          <source>in: 4th International Workshop on Knowledge Graph Construction @ ESWC</source>
          <year>2023</year>
          , volume
          <volume>3471</volume>
          <source>of CEUR workshop proceedings</source>
          , Hersonissos, Greece,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C.</given-names>
            <surname>Stadler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Saleem</surname>
          </string-name>
          , A.-C.
          <article-title>Ngonga Ngomo, LSQ framework: The LSQ framework for SPARQL query log processing</article-title>
          ., in: QuWeDa@ ISWC,
          <year>2022</year>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>64</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Runfola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Anderson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Baier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Crittenden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Dowker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Fuhrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Goodman</surname>
          </string-name>
          , G. Grimsley,
          <string-name>
            <given-names>R.</given-names>
            <surname>Layko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Melville</surname>
          </string-name>
          , et al.,
          <article-title>geoBoundaries: A global database of political administrative boundaries</article-title>
          ,
          <source>PloS one 15</source>
          (
          <year>2020</year>
          )
          <article-title>e0231866</article-title>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>