don't worry it's a common problem and frequent source of confusion not only with jena but java projects. try to simply inlcude all the jars.
I presume you run this on a linux box with OpenJDK 8. correct? now once you have set up jena just add the following {replace_with_your_path}/apache-jena-3.8.0/lib/* On Mon, Sep 17, 2018 at 10:56 AM Markus Neumann <mneum...@meteomatics.com> wrote: > This is embarrassing but I don't get it. > > I've configured $JENA_HOME and adjusted the PATH. > > Now what classpath should I include when invoking the indexer? > What I've tried so far: > > $ cd $JENA_HOME > $ 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 > $ java -cp lib/*.jar jena.spatialindexer > --desc=../fuseki-server/run/configuration/mm.ttl > Error: Could not find or load main class lib.commons-cli-1.4.jar > > Thanks for your patience > > > Am 17.09.2018 um 11:38 schrieb Marco Neumann <marco.neum...@gmail.com>: > > > > yes correct, this looks good. now include the classpath during invocation > > of the spatialindexer > > > > in addition it's always a good idea to properly configure jena along your > > java runtime environment settings to avoid jdk / lib conflicts during > > execution. > > > > https://jena.apache.org/documentation/tools/index.html < > https://jena.apache.org/documentation/tools/index.html> > > > > > > > > On Mon, Sep 17, 2018 at 10:28 AM Markus Neumann < > mneum...@meteomatics.com <mailto:mneum...@meteomatics.com>> > > wrote: > > > >> 1.: what do you mean by indexer? > >> Probably my biggest problem is, that I have no clue how to find out, > where > >> the jena.spatialindexer could be located except for asking here. > >> > >> Here is the content of the apache jena I downloaded: > >> $ ls -lh ../apache-jena-3.8.0/lib > >> total 17M > >> -rw-r--r-- 1 process process 162K Oct 26 2017 collection-0.7.jar > >> -rw-r--r-- 1 process process 53K Oct 26 2017 commons-cli-1.4.jar > >> -rw-r--r-- 1 process process 328K Mar 5 2018 commons-codec-1.11.jar > >> -rw-r--r-- 1 process process 576K Jun 25 09:59 commons-compress-1.17.jar > >> -rw-r--r-- 1 process process 41K Mar 5 2018 commons-csv-1.5.jar > >> -rw-r--r-- 1 process process 210K Mar 5 2018 commons-io-2.6.jar > >> -rw-r--r-- 1 process process 425K Oct 26 2017 commons-lang3-3.4.jar > >> -rw-r--r-- 1 process process 749K Jun 25 10:01 httpclient-4.5.5.jar > >> -rw-r--r-- 1 process process 158K Jun 25 10:01 > httpclient-cache-4.5.5.jar > >> -rw-r--r-- 1 process process 318K Jun 25 10:01 httpcore-4.4.9.jar > >> -rw-r--r-- 1 process process 65K Oct 26 2017 > >> jackson-annotations-2.9.0.jar > >> -rw-r--r-- 1 process process 315K Jun 25 10:01 jackson-core-2.9.5.jar > >> -rw-r--r-- 1 process process 1.3M Jun 25 10:01 > jackson-databind-2.9.5.jar > >> -rw-r--r-- 1 process process 17K Oct 26 2017 jcl-over-slf4j-1.7.25.jar > >> -rw-r--r-- 1 process process 2.9M Jun 25 11:03 jena-arq-3.8.0.jar > >> -rw-r--r-- 1 process process 211K Jun 25 11:01 jena-base-3.8.0.jar > >> -rw-r--r-- 1 process process 259K Jun 25 11:07 jena-cmds-3.8.0.jar > >> -rw-r--r-- 1 process process 1.7M Jun 25 11:02 jena-core-3.8.0.jar > >> -rw-r--r-- 1 process process 135K Jun 25 11:05 jena-dboe-base-3.8.0.jar > >> -rw-r--r-- 1 process process 21K Jun 25 11:05 jena-dboe-index-3.8.0.jar > >> -rw-r--r-- 1 process process 74K Jun 25 11:05 > >> jena-dboe-transaction-3.8.0.jar > >> -rw-r--r-- 1 process process 95K Jun 25 11:06 > >> jena-dboe-trans-data-3.8.0.jar > >> -rw-r--r-- 1 process process 135K Jun 25 11:01 jena-iri-3.8.0.jar > >> -rw-r--r-- 1 process process 49K Jun 25 11:04 > jena-rdfconnection-3.8.0.jar > >> -rw-r--r-- 1 process process 2.8M Jun 25 11:01 > jena-shaded-guava-3.8.0.jar > >> -rw-r--r-- 1 process process 264K Jun 25 11:06 jena-tdb2-3.8.0.jar > >> -rw-r--r-- 1 process process 512K Jun 25 11:04 jena-tdb-3.8.0.jar > >> -rw-r--r-- 1 process process 1.6M Jun 25 10:01 jsonld-java-0.12.0.jar > >> -rw-r--r-- 1 process process 232K Mar 5 2018 libthrift-0.10.0.jar > >> -rw-r--r-- 1 process process 479K Oct 26 2017 log4j-1.2.17.jar > >> -rw-r--r-- 1 process process 41K Oct 26 2017 slf4j-api-1.7.25.jar > >> -rw-r--r-- 1 process process 12K Oct 26 2017 slf4j-log4j12-1.7.25.jar > >> > >> 2.: Turns out, I don't need the jts. after commenting out the affected > >> lines, the server still runs fine. (But still without spatial index) > >> > >> Best Markus > >> > >>> Am 17.09.2018 um 11:14 schrieb Marco Neumann <marco.neum...@gmail.com > >: > >>> > >>> Ok let's take a look at this. > >>> > >>> 1. please include in the indexer in the classpath. It's part of the > >> current > >>> jena distribution. > >>> > >>> 2. do you need jts? it's a package that allows you to index multi point > >>> geometries. here a sample query would be helpful. If single point > >>> geometries are indexed and used in conjunction with MBR range queries. > >>> there is no need for jts. > >>> > >>> > >>> On Mon, Sep 17, 2018 at 9:14 AM Markus Neumann < > mneum...@meteomatics.com > >> <mailto:mneum...@meteomatics.com <mailto:mneum...@meteomatics.com>>> > >>> wrote: > >>> > >>>> 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> < > >> https://jena.apache.org/documentation/query/spatial-query.html < > https://jena.apache.org/documentation/query/spatial-query.html>> < > >>>> https://jena.apache.org/documentation/query/spatial-query.html < > https://jena.apache.org/documentation/query/spatial-query.html> < > >> 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 > > > >> < > >> > 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 > > > >>> > >>>> < > >>>> > >> > 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 > > > >> < > >> > 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/> < > >> 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 > >>>> > >>>> > >>> > >>> -- > >>> > >>> > >>> --- > >>> Marco Neumann > >>> KONA > >> > >> > > > > -- > > > > > > --- > > Marco Neumann > > KONA > > -- --- Marco Neumann KONA