Okay, I think we've got it. Nice debugging, Markus! If you look at the line of the spatial indexer code that is throwing an exception:
https://github.com/apache/jena/blob/master/jena-spatial/src/main/java/jena/spatialindexer.java#L110 indeed, it does not start a transaction against the dataset before starting to read quads to index them. Now, in TDB1 this isn't inherently a problem-- it's possible to work against a dataset without transactions. (Although it's generally not a good idea at all.) But IIRC, TDB2 requires transactions. If that's true (and Andy can verify that for us) then this is a bug and we can fix it in a straightforward way. Andy, can you confirm that diagnosis? If so, I'll open a ticket and write a PR to use a Txn method to fix this. ajs6f > On Sep 17, 2018, at 10:14 AM, Markus Neumann <mneum...@meteomatics.com> wrote: > > It seems I made a mess with absolute and relative paths all together. So I > created a minimal setup for testing: > (I include the file-contents at the bottom) > > $ export JENA_HOME=/srv/linked_data_store/apache-jena-3.8.0 > $ export PATH=$PATH:$JENA_HOME/bin > $ tdb2.tdbloader > --desc=/srv/linked_data_store/fuseki-server/run/configuration/mm.ttl > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-loc-mini.ttl > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-rdf.ttl > 13:50:54 INFO loader :: Loader = LoaderPhased > 13:50:54 INFO loader :: Data: > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-loc-mini.ttl: 13 > mm-loc-mini.ttl 0.06s (Avg: 232) > 13:50:54 INFO loader :: Data: > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-rdf.ttl: 50 > mm-rdf.ttl 0.01s (Avg: 6,250) > 13:50:55 INFO loader :: Finish - index SPO > 13:50:55 INFO loader :: Start replay index SPO > 13:50:55 INFO loader :: Index set: SPO => SPO->POS, SPO->OSP > 13:50:55 INFO loader :: Index set: SPO => SPO->POS, SPO->OSP > [63 items, 0.0 seconds] > 13:50:55 INFO loader :: Finish - index POS > 13:50:55 INFO loader :: Finish - index OSP > $ java -cp > /srv/linked_data_store/fuseki-server/fuseki-server.jar:/srv/linked_data_store/apache-jena-3.8.0/lib/* > jena.spatialindexer > --desc=/srv/linked_data_store/fuseki-server/run/configuration/mm.ttl > SLF4J: Class path contains multiple SLF4J bindings. > SLF4J: Found binding in > [jar:file:/srv/linked_data_store/fuseki-server/fuseki-server.jar!/org/slf4j/impl/StaticLoggerBinder.class] > SLF4J: Found binding in > [jar:file:/srv/linked_data_store/apache-jena-3.8.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] > SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an > explanation. > SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] > 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) > > I can get rid of the SLF4J warnings: > $ java -cp /srv/linked_data_store/fuseki-server/fuseki-server.jar > jena.spatialindexer > --desc=/srv/linked_data_store/fuseki-server/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) > > There is no other java instance running at the time when I run those commands. > All paths are fully qualified and double checked. The destination directory > and the Lucene directory were cleared just before. > > The server does start and serve the data without errors or warnings in the > log, but spatial queries do not work. > > Does anyone see a reason for the TransactionException? > Thanks and best regards > Markus > > Attachments: > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-rdf.ttl: > @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix owl: <http://www.w3.org/2002/07/owl#> . > @prefix dc: <http://purl.org/dc/elements/1.1/> . > @prefix dcterms: <http://purl.org/dc/terms/> . > @prefix xsd: <http://www.w3.org/2001/XMLSchema#> > @prefix mm: <http://rdf.meteomatics.com/mm/> . > > <http://rdf.meteomatics.com/mm/> > dcterms:publisher <http://api.meteomatics.com/Imprint.html> ; > dcterms:title "Meteomatics RDF Vocabulary"@en . > > mm:location a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "location" ; > dcterms:description "Location of a measurement"@en . > > mm:elevation a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "elevation" ; > dcterms:description "Elevation of a location"@en . > > mm:validdate a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "validdate" ; > dcterms:description "Temporal information describing when a Measurement > is/was valid"@en . > > mm:value a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "value" ; > dcterms:description "The (observed or predicted) value of a > Measurement"@en . > > mm:parameter a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "parameter" ; > dcterms:description "what was measured"@en . > > mm:station_name a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "station_name" ; > dcterms:description "Name of a station"@en . > > mm:abbreviation a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "abbreviation" ; > dcterms:description "Abbreviation of a station name"@en . > > mm:didok_id a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "didok_id" ; > dcterms:description "didok id of a station"@en . > > mm:unit_symbol a rdf:Property ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "unit symbol" ; > dcterms:description "unit symbol of a parameter"@en . > > mm:Measurement a rdf:Class ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "Measurement" ; > dcterms:description "Measurement of a specific weather parameter at > specific location at a specific date (both future or past)" . > > mm:Location a rdf:Class ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "Location" ; > dcterms:description "A Point on the globe where we observe weather"@en . > > mm:Parameter a rdf:Class ; > rdfs:isDefinedBy <http://rdf.meteomatics.com/mm/> ; > rdfs:label "Parameter" ; > dcterms:description "A parameter describing an observable aspect of the > weather"@en . > > /srv/linked_data_store/rdf_python_connector/turtle_files/mm-loc-mini.ttl > @prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . > @prefix geosparql: <http://www.opengis.net/ont/geosparql#> . > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix owl: <http://www.w3.org/2002/07/owl#> . > @prefix dc: <http://purl.org/dc/elements/1.1/> . > @prefix dcterms: <http://purl.org/dc/terms/> . > @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . > @prefix mm: <http://rdf.meteomatics.com/mm/> . > @prefix mm-measurements: <http://rdf.meteomatics.com/mm/measurements/> . > @prefix mm-locations: <http://rdf.meteomatics.com/mm/locations/> . > > > mm-locations:8500015 a mm:Location ; > a geosparql:Geometry ; > mm:didok_id 8500015 ; > geo:lat 47.54259 ; > geo:long 7.61574 ; > mm:elevation 273 . > > > mm-locations:8504238 a mm:Location ; > a geosparql:Geometry ; > geosparql:asWKT "POINT(6.86466645231 47.0840196485)"^^geosparql:wktLiteral > ; > mm:didok_id 8504238 ; > geo:lat 47.08402 ; > geo:long 6.86467 ; > mm:elevation 1086 . > > /srv/linked_data_store/fuseki-server/run/configuration/mm.ttl > @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) ; > #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" > . > > >> Am 17.09.2018 um 15:15 schrieb ajs6f <aj...@apache.org>: >> >> I think you might have misunderstood the use of $JENA_HOME, or perhaps the >> Java classpath. $JENA_HOME, which should generally be an absolute filepath, >> allows the Jena scripts to find their libraries at runtime. Internally, the >> scripts use $JENA_HOME to set up the classpaths with which to start running >> Java code. But in this case, you're not using the scripts. You're calling a >> Java class directly, which means you have to give it all the libraries >> directly, using the classpath flag directly. For example, your second >> attempt: >> >> $ java -cp apache-jena-3.8.0/lib/* jena.spatialindexer >> --desc=fuseki-server/run/configuration/mm.ttl >> Error: Could not find or load main class >> apache-jena-3.8.0.lib.commons-cli-1.4.jar >> >> may have failed because whatever directory you are in probably doesn't >> happen to have a Jena distribution in it called "apache-jena-3.8.0". Perhaps >> try: >> >> java -cp $JENA_HOME/lib/* jena.spatialindexer >> --desc=fuseki-server/run/configuration/mm.ttl >> >> Your first example looks like it might be misusing the -cp flag [1]. You >> probably don't want the *.jar, just *, like >> >> java -cp lib/* jena.spatialindexer >> --desc=../fuseki-server/run/configuration/mm.ttl >> >> especially if you happen to be using Windows. [2] That might not be the >> entire story, but you can at least try those invocations and see if you get >> anything different/better. >> >> ajs6f >> >> [1] >> https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#A1100762 >> >> <https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#A1100762> >> [2] >> https://stackoverflow.com/questions/219585/including-all-the-jars-in-a-directory-within-the-java-classpath >> >> <https://stackoverflow.com/questions/219585/including-all-the-jars-in-a-directory-within-the-java-classpath> >> >> >>> On Sep 17, 2018, at 7:07 AM, Markus Neumann <mneum...@meteomatics.com >>> <mailto:mneum...@meteomatics.com>> wrote: >>> >>> Ok, that's exactly what I did here: >>> $ 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 >>> >>> Or from outside JENA_HOME: >>> $ java -cp apache-jena-3.8.0/lib/* jena.spatialindexer >>> --desc=fuseki-server/run/configuration/mm.ttl >>> Error: Could not find or load main class >>> apache-jena-3.8.0.lib.commons-cli-1.4.jar >>> >>> Or did I missunderstand something? >>> >>>> Am 17.09.2018 um 12:02 schrieb Marco Neumann <marco.neum...@gmail.com>: >>>> >>>> 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 >>>> <mailto:mneum...@meteomatics.com> <mailto:mneum...@meteomatics.com >>>> <mailto: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 >>>>>> <mailto: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> < >>>>> https://jena.apache.org/documentation/tools/index.html >>>>> <https://jena.apache.org/documentation/tools/index.html> >>>>> <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> >>>>> <mailto:mneum...@meteomatics.com <mailto:mneum...@meteomatics.com>> >>>>> <mailto:mneum...@meteomatics.com <mailto:mneum...@meteomatics.com> >>>>> <mailto: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 >>>>>>>> <mailto:marco.neum...@gmail.com> <mailto:marco.neum...@gmail.com >>>>>>>> <mailto: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 <mailto:mneum...@meteomatics.com>> >>>>>>> <mailto:mneum...@meteomatics.com <mailto:mneum...@meteomatics.com> >>>>>>> <mailto:mneum...@meteomatics.com <mailto:mneum...@meteomatics.com>> >>>>>>> <mailto:mneum...@meteomatics.com <mailto: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>>> < >>>>>>> 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>>>> < >>>>>>>>> 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>>> < >>>>>>> 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>> >>>>>> >>>>>>> < >>>>>>> >>>>> 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>> >>>>>> >>>>>>>> >>>>>>>>> < >>>>>>>>> >>>>>>> >>>>> 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>> >>>>>> >>>>>>> < >>>>>>> >>>>> 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/>> >>>>> <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 >