That's correct Jean-Marc, no comma. And yes the OGC GeoSPARQL spec is not supporting 3D access methods. And if you record a third dimension, which is of course possible, it will be ignored in Jena. Unfortunately the entire record will be. We could record this as a bug but it's really not supported at the moment by the spec. Many of the spatial functions in the OGC GeoSPARQL spec operate with a 2D reference system.
I personally think we should go beyond GeoSPARQL soon with Jena to provide users with more advanced features. Possibly flag it as geosparql++ or the like. Best, Marco On Sun, Dec 5, 2021 at 4:15 PM Jean-Marc Vanel <[email protected]> wrote: > I fixed the WKT not having the right datatype, as said before; here are the > SPARQL used to check and fix: > COUNT-spatial-wkt-as-string.rq > < > https://github.com/jmvanel/semantic_forms/blob/master/sparql/COUNT-spatial-wkt-as-string.rq > > > FIX-spatial-wkt-as-string.upd.rq > < > https://github.com/jmvanel/semantic_forms/blob/master/sparql/FIX-spatial-wkt-as-string.upd.rq > > > > Now this is not the end of the road . Another imperfect data causing > geosparql initialization to fail : > > *Exception: Build WKT Geometry Exception - Type: point, Coordinates: > (2.353821,48.83399,0). Index 1 out of bounds for length 1* > 2021-12-05T15:48:54.166Z [application-akka.actor.default-dispatcher-5] > ERROR jena - Exception class:class > org.apache.jena.datatypes.DatatypeFormatException > 2021-12-05T15:48:54.167Z [application-akka.actor.default-dispatcher-5] > ERROR jena - Exception > org.apache.jena.datatypes.DatatypeFormatException: Build WKT Geometry > Exception - Type: point, Coordinates: (2.353821,48.83399,0). Index 1 out of > bounds for length 1 > > org.apache.jena.geosparql.implementation.parsers.wkt.WKTReader.buildGeometry(WKTReader.java:141) > > org.apache.jena.geosparql.implementation.parsers.wkt.WKTReader.<init>(WKTReader.java:50) > > org.apache.jena.geosparql.implementation.parsers.wkt.WKTReader.extract(WKTReader.java:292) > > > org.apache.jena.geosparql.implementation.datatype.WKTDatatype.read(WKTDatatype.java:89) > > org.apache.jena.geosparql.implementation.index.GeometryLiteralIndex.retrieveMemoryIndex(GeometryLiteralIndex.java:69) > > org.apache.jena.geosparql.implementation.index.GeometryLiteralIndex.retrieve(GeometryLiteralIndex.java:51) > > org.apache.jena.geosparql.implementation.datatype.GeometryDatatype.parse(GeometryDatatype.java:57) > > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1176) > > > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1137) > > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1147) > org.apache.jena.geosparql.configuration.ModeSRS.search(ModeSRS.java:61) > > org.apache.jena.geosparql.configuration.GeoSPARQLOperations.findModeSRS(GeoSPARQLOperations.java:520) > > Is it because the WKT separator should be a space instead of a comma, or > because 3D is not allowed ? > > Jean-Marc Vanel > < > http://semantic-forms.cc:9112/display?displayuri=http://jmvanel.free.fr/jmv.rdf%23me > > > +33 > (0)6 89 16 29 52 > > > Le dim. 5 déc. 2021 à 13:03, Jean-Marc Vanel <[email protected]> a > écrit : > > > After looking at this code, failing line in bold: > > > > > jena-geosparql/src/main/java/org/apache/jena/geosparql/configuration/ModeSRS.java > > > > > https://github.com/apache/jena/blob/main/jena-geosparql/src/main/java/org/apache/jena/geosparql/configuration/ModeSRS.java > > > > ExtendedIterator<RDFNode> nodeIter = > > model.listObjectsOfProperty(Geo.HAS_SERIALIZATION_PROP); > > boolean isGeometryLiteralsFound = nodeIter.hasNext(); > > if (!isGeometryLiteralsFound) { > > NodeIterator wktNodeIter = > > model.listObjectsOfProperty(Geo.AS_WKT_PROP); > > NodeIterator gmlNodeIter = > > model.listObjectsOfProperty(Geo.AS_GML_PROP); > > nodeIter = wktNodeIter.andThen(gmlNodeIter); > > } > > > > while (nodeIter.hasNext()) { > > RDFNode node = nodeIter.next(); > > if (node.isLiteral()) { > > * GeometryWrapper geometryWrapper = > > GeometryWrapper.extract(node.asLiteral());* > > > > I did SELECT queries to try to understand what is wrong . > > It appears that these triples are not present: > > ?S <http://www.opengis.net/ont/geosparql#hasSerialization> ?O . > > ?S <http://www.opengis.net/ont/geosparql#asGML> ?O . > > > > BUT, there is a bunch of these triples: > > ?S <http://www.opengis.net/ont/geosparql#asWKT> ?O . > > > > Here is one example of the object values: > > "POINT(-4.189911,54.880557,0)" > > I probably imported them by hacking a JSON API as JSON-LD , I have to > > check my journals ... > > > > Looking at the OGC GeoSPARQL standard, I saw that the WKT strings should > > have this datatype : > > http://www.opengis.net/ont/geosparql#wktLiteral > > > > So I can make a SPARQL update to FIX my data . > > But maybe Jena GeoSPARQL could be forgiving about the string datatype for > > WKT data . > > And the error message should be more explicit ... > > > > Thanks Andy for the quick answer. > > > > Jean-Marc Vanel > > < > http://semantic-forms.cc:9112/display?displayuri=http://jmvanel.free.fr/jmv.rdf%23me> > +33 > > (0)6 89 16 29 52 > > > > > > Le dim. 5 déc. 2021 à 11:52, Jean-Marc Vanel <[email protected]> > a > > écrit : > > > >> After having fixed bad data in the TDB database (latitude is present but > >> not longitude, coordinates as strings , see issue > >> https://issues.apache.org/jira/browse/JENA-2202 ), > >> there is an exception, probably related to the database content. > >> Here is the log: > >> Dec 05, 2021 9:57:33 AM > >> org.apache.sis.referencing.factory.sql.EPSGFactory <init> > >> WARNING: The “SIS_DATA” environment variable is not set. > >> 2021-12-05T09:57:33.940Z [application-akka.actor.default-dispatcher-9] > >> INFO jena - SpatialIndex: isFunctionRegistered true > >> 2021-12-05T09:57:33.941Z [application-akka.actor.default-dispatcher-9] > >> INFO jena - Before setupSpatialIndex > >> 2021-12-05T09:57:33.948Z [application-akka.actor.default-dispatcher-9] > >> INFO o.a.j.g.c.GeoSPARQLOperations - Find Mode SRS - Started > >> > >> And here is the exception: > >> *Exception: Unrecognised Geometry Datatype: > >> http://www.w3.org/2001/XMLSchema#string > >> <http://www.w3.org/2001/XMLSchema#string> Ensure that Datatype is > extending > >> GeometryDatatype.* > >> > >> > org.apache.jena.geosparql.implementation.datatype.GeometryDatatype.get(GeometryDatatype.java:78) > >> > >> > org.apache.jena.geosparql.implementation.datatype.GeometryDatatype.get(GeometryDatatype.java:86) > >> > >> > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1175) > >> > >> > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1137) > >> > >> > org.apache.jena.geosparql.implementation.GeometryWrapper.extract(GeometryWrapper.java:1147) > >> org.apache.jena.geosparql.configuration.ModeSRS.search(ModeSRS.java:61) > >> > >> > org.apache.jena.geosparql.configuration.GeoSPARQLOperations.findModeSRS(GeoSPARQLOperations.java:520) > >> > >> > org.apache.jena.geosparql.spatial.SpatialIndex.buildSpatialIndex(SpatialIndex.java:336) > >> > >> > org.apache.jena.geosparql.configuration.GeoSPARQLConfig.setupSpatialIndex(GeoSPARQLConfig.java:263) > >> > >> > deductions.runtime.jena.RDFStoreLocalJenaProviderObject$.createDatabase(RDFStoreLocalJenaProvider.scala:175) > >> > >> I use the latest Jena release 4.2.0 . Note that there is no trouble on > my > >> development machine, only on the production site , although the source > is > >> the same . > >> > >> Jean-Marc Vanel > >> > >> > -- --- Marco Neumann KONA
