Hi, (sorry for the long post) I've been struggling with the spatial index for a while now. I've read https://jena.apache.org/documentation/query/spatial-query.html <https://jena.apache.org/documentation/query/spatial-query.html> and skipped through about every spatial related thread here on the list. I managed to get an in-memory version up and running at some point following this https://stackoverflow.com/questions/45814956/building-geospatial-index-when-working-with-jena-fuseki/52099066#52099066 <https://stackoverflow.com/questions/45814956/building-geospatial-index-when-working-with-jena-fuseki/52099066#52099066> and this https://ceyxstudios.com/2017/11/25/rdf-datenbank-mit-geo-funktionen/ <https://ceyxstudios.com/2017/11/25/rdf-datenbank-mit-geo-funktionen/>
But that was on a small dataset that I uploaded via the web-interface of Fuseki. Now the story is a bit different. I'm building the database using tdbloader2 and would like to create the spatial index upfront. java -cp jena-spatial.jar jena.spatialindexer --desc=assembler_file I could not figure out, how to get this line to work. I have the following possible scenarios: 1. I download the jena-spatial-3.8.0.jar and specify that in the classpath: $ java -cp jena-spatial-3.8.0.jar jena.spatialindexer --desc=../fuseki-server/run/configuration/mm.ttl Error: Could not find or load main class jena.spatialindexer 2. I use the fuseki-server jar: $ java -cp fuseki-server.jar jena.spatialindexer --desc=./run/configuration/mm.ttl WARN Custom SpatialContextFactory lib is not ready in classpath:com/vividsolutions/jts/geom/CoordinateSequenceFactory org.apache.jena.dboe.transaction.txn.TransactionException: Not in a transaction I managed to eliminate the warning about jts by including that in the classpath, but the error remains the same (with full trace): java -cp fuseki-server.jar:jts-1.13.jar jena.spatialindexer --desc=./run/configuration/mm.ttl org.apache.jena.dboe.transaction.txn.TransactionException: Not in a transaction at org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle.checkTxn(TransactionalComponentLifecycle.java:417) at org.apache.jena.dboe.trans.bplustree.BPlusTree.getRootRead(BPlusTree.java:159) at org.apache.jena.dboe.trans.bplustree.BPlusTree.iterator(BPlusTree.java:348) at org.apache.jena.tdb2.store.tupletable.TupleIndexRecord.all(TupleIndexRecord.java:251) at org.apache.jena.tdb2.store.tupletable.TupleTable.find(TupleTable.java:148) at org.apache.jena.tdb2.store.nodetupletable.NodeTupleTableConcrete.find(NodeTupleTableConcrete.java:161) at org.apache.jena.tdb2.store.nodetupletable.NodeTupleTableConcrete.find(NodeTupleTableConcrete.java:150) at org.apache.jena.tdb2.store.nodetupletable.NodeTupleTableConcrete.findAsNodeIds(NodeTupleTableConcrete.java:141) at org.apache.jena.tdb2.store.TripleTable.find(TripleTable.java:64) at org.apache.jena.tdb2.store.DatasetGraphTDB.findInDftGraph(DatasetGraphTDB.java:104) at org.apache.jena.sparql.core.DatasetGraphBaseFind.findAny(DatasetGraphBaseFind.java:72) at org.apache.jena.sparql.core.DatasetGraphBaseFind.find(DatasetGraphBaseFind.java:50) at org.apache.jena.sparql.core.DatasetGraphWrapper.find(DatasetGraphWrapper.java:152) at org.apache.jena.sparql.core.DatasetGraphWrapper.find(DatasetGraphWrapper.java:152) at jena.spatialindexer.exec(spatialindexer.java:110) at jena.cmd.CmdMain.mainMethod(CmdMain.java:93) at jena.cmd.CmdMain.mainRun(CmdMain.java:58) at jena.cmd.CmdMain.mainRun(CmdMain.java:45) at jena.spatialindexer.main(spatialindexer.java:53) My configuration is the following: @prefix : <http://base/#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix tdb2: <http://jena.apache.org/2016/tdb#> . @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix fuseki: <http://jena.apache.org/fuseki#> . @prefix spatial: <http://jena.apache.org/spatial#> . @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . @prefix geosparql: <http://www.opengis.net/ont/geosparql#> . # Spatial [] ja:loadClass "org.apache.jena.query.spatial.SpatialQuery" . spatial:SpatialtDataset rdfs:subClassOf ja:RDFDataset . spatial:SpatialIndexLucene rdfs:subClassOf spatial:SpatialIndex . :service_tdb_all a fuseki:Service ; rdfs:label "TDB2 mm" ; fuseki:dataset :spatial_dataset ; fuseki:name "mm" ; fuseki:serviceQuery "query" , "sparql" ; fuseki:serviceReadGraphStore "get" ; fuseki:serviceReadWriteGraphStore "data" ; fuseki:serviceUpdate "update" ; fuseki:serviceUpload "upload" . :spatial_dataset a spatial:SpatialDataset ; spatial:dataset :tdb_dataset_readwrite ; spatial:index <#indexLucene> ; . <#indexLucene> a spatial:SpatialIndexLucene ; spatial:directory <file:Lucene> ; #spatial:directory "mem" ; spatial:definition <#definition> ; . <#definition> a spatial:EntityDefinition ; spatial:entityField "uri" ; spatial:geoField "geo" ; # custom geo predicates for 1) Latitude/Longitude Format spatial:hasSpatialPredicatePairs ( [ spatial:latitude geo:lat ; spatial:longitude geo:long ] ) ; # custom geo predicates for 2) Well Known Text (WKT) Literal spatial:hasWKTPredicates (geosparql:asWKT) ; # custom SpatialContextFactory for 2) Well Known Text (WKT) Literal spatial:spatialContextFactory # "com.spatial4j.core.context.jts.JtsSpatialContextFactory" "org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory" . :tdb_dataset_readwrite a tdb2:DatasetTDB2 ; tdb2:location "/srv/linked_data_store/fuseki-server/run/databases/mm" . And I've changed the fuseki script to include the jts jar: FUSEKI_CLASSES=$FUSEKI_HOME/jts-1.13.jar I see no errors or warnings in the server log, when starting with that configuration, the Lucene folder is created and populated with something: $ ll run/configuration/Lucene/ total 4 -rw-rw-r-- 1 process process 71 Sep 14 09:28 segments_1 -rw-rw-r-- 1 process process 0 Sep 14 09:28 write.lock But any spatial query does not return any results. Any help on how to tackle this would be highly appreciated. Best Markus Neumann