Hi Mark,
You have different two datasets of the same name ("ds"). I doubt any
requests are going to the first one each time. The first declaration
got replaced by the second. I'll make that an error - it is in Fuseki2.
Andy
On 10/09/15 06:33, Mark Wharton wrote:
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 ]
) .