Hi Jena team.

I'm trying to get both the text and spatial indexes to work on my TDB
store using jena 1.1.0 (and 1.1.1).  I can get one or the other to work,
but not both at the same time.  Can you help?

I based by config with the example here:
http://mail-archives.apache.org/mod_mbox/jena-users/201402.mbox/%3cade748d9f3894b85bef1583f6e328...@by2pr04mb613.namprd04.prod.outlook.com%3E

Which _seemed_ to work fine, but I realised that the text index wasn't
being updated.  Queries with spatial predicates worked fine, e.g.

PREFIX iotic: <http://purl.org/net/iotic-labs#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX spatial:<http://jena.apache.org/spatial#>
PREFIX geo:<http://www.w3.org/2003/01/geo/wgs84_pos#>

SELECT  ?ent ?lat ?long
WHERE
{
    ?ent rdf:type iotic:Entity .
    ?ent geo:lat ?lat .?ent geo:long ?long . ?ent spatial:nearby(52.2474
0.7183 5.0 'km')
}

_but_ queries with text predicates did not work.
PREFIX text: <http://jena.apache.org/text#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?s
{ ?s text:query (rdfs:label 'weather' 10) ;
     rdfs:label ?label
}

Here's the weird thing.  If I change the order of the services in this
bit of my config file, delete the data directories and restart fuseki,
then the spatial queries stop working and the text queries do work.

# Spatial queries work, text do not.
fuseki:services (
<#service_text_tdb>
<#service_spatial_tdb>
)

# Text queries work, spatial do not.
fuseki:services (
<#service_spatial_tdb>
<#service_text_tdb>
)

---------------------------------
Here's the text of my config file
---------------------------------
@prefix :        <#> .
@prefix fuseki:  <http://jena.apache.org/fuseki#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix text:    <http://jena.apache.org/text#> .
@prefix spatial: <http://jena.apache.org/spatial#> .
@prefix geosparql: <http://www.opengis.net/ont/geosparql#> .

[] rdf:type fuseki:Server ;
   # Timeout - server-wide default: milliseconds.
   # Format 1: "1000" -- 1 second timeout
   # Format 2: "10000,60000" -- 10s timeout to first result, then 60s
timeout to for rest of query.
   # See java doc for ARQ.queryTimeout
   # ja:context [ ja:cxtName "arq:queryTimeout" ;  ja:cxtValue "10000" ] ;
   # ja:loadClass "your.code.Class" ;

   fuseki:services (
     <#service_text_tdb>
     <#service_spatial_tdb>
   ) .

# TDB
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .

# Spatial
[] ja:loadClass "org.apache.jena.query.spatial.SpatialQuery" .
spatial:SpatialDataset  rdfs:subClassOf  ja:RDFDataset .
spatial:SpatialIndexLucene  rdfs:subClassOf   spatial:SpatialIndex .

# Text
[] ja:loadClass "org.apache.jena.query.text.TextQuery" .
text:TextDataset      rdfs:subClassOf   ja:RDFDataset .
text:TextIndexLucene  rdfs:subClassOf   text:TextIndex .


## ---------------------------------------------------------------

<#dataset> rdf:type      tdb:DatasetTDB ;
    tdb:location "/home/iotic/apache/jena-fuseki-1.1.0/graphs"
    .

## ---------------------------------------------------------------

<#service_spatial_tdb> rdf:type fuseki:Service ;
    rdfs:label                      "TDB/spatial service" ;
    fuseki:name                     "ds" ;
    fuseki:serviceQuery             "query" ;
    fuseki:serviceQuery             "sparql" ;
    fuseki:serviceUpdate            "update" ;
    fuseki:serviceUpload            "upload" ;
    fuseki:serviceReadGraphStore    "get" ;
    fuseki:serviceReadWriteGraphStore    "data" ;
    fuseki:dataset                  <#spatial_dataset> ;
    .

<#service_text_tdb> rdf:type fuseki:Service ;
    rdfs:label                      "TDB/text service" ;
    fuseki:name                     "ds" ;
    fuseki:serviceQuery             "query" ;
    fuseki:serviceQuery             "sparql" ;
    fuseki:serviceUpdate            "update" ;
    fuseki:serviceUpload            "upload" ;
    fuseki:serviceReadGraphStore    "get" ;
    fuseki:serviceReadWriteGraphStore    "data" ;
    fuseki:dataset                  <#text_dataset> ;
    .

## ---------------------------------------------------------------

<#spatial_dataset> rdf:type     spatial:SpatialDataset ;
    spatial:dataset   <#dataset> ;
    spatial:index     <#indexSpatialLucene> ;
    .

<#indexSpatialLucene> a spatial:SpatialIndexLucene ;
    spatial:directory <file:graphs_spatial_index> ;
    spatial:definition <#definition> ;
    .

<#definition> a spatial:EntityDefinition ;
    spatial:entityField      "uri" ;
    spatial:geoField     "geo" ;
    .

<#text_dataset> rdf:type     text:TextDataset ;
    text:dataset   <#dataset> ;
    text:index     <#indexTextLucene> ;
    .

<#indexTextLucene> a text:TextIndexLucene ;
    text:directory <file:graphs_text_index> ;
    text:entityMap <#entMap> ;
    .

<#entMap> a text:EntityMap ;
    text:entityField      "uri" ;
    text:defaultField     "text" ;        ## Should be defined in the
text:map.
    text:map (
         # rdfs:label
         [ text:field "text" ; text:predicate rdfs:label ]
         ) .



-- 
Technology Lead, Iotic Labs
+44 7973 674404
[email protected]
https://www.iotic-labs.com

Reply via email to