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



On Mon, Sep 17, 2018 at 10:28 AM Markus Neumann <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>>
> > 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>> 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
> >
> >>>
> >> 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/>
> >>
> >> 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

Reply via email to