Andy

Many thanks for speedy and accurate reply.  Good idea to back-port the
error checking from Fuseki 2.


That works now with
<#service_spatial_tdb> rdf:type fuseki:Service ;
     rdfs:label                      "TDB/spatial service" ;
     fuseki:name                     "text" ;
        ...etc...

<#service_text_tdb> rdf:type fuseki:Service ;
     rdfs:label                      "TDB/text service" ;
     fuseki:name                     "spatial" ;
        ...etc...

Couple of final things.
This seems to work only if you POST to the correct endpoint.  E.g. if I
post updates of  geo:lat/long triples to the "update/text" endpoint they
don't get indexed, but GETting a query with spatial:nearby and
text:query works in either text or spatial.  Is this correct behaviour,
or am I still doing something wrong?

Can you put an example of this in the docs/release.  There are text or
spatial examples of configs, but not one with both.  Took a long time to
find that one in the mail archive and that has the same mistake as I
made.  (not surprising as I copied it :-) )
http://mail-archives.apache.org/mod_mbox/jena-users/201402.mbox/%3cade748d9f3894b85bef1583f6e328...@by2pr04mb613.namprd04.prod.outlook.com%3E
^^ is wrong

Many thanks again

Mark


On 10/09/15 09:22, Andy Seaborne wrote:
> 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 ]
>>           ) .
>>
>>
>>
> 

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

Reply via email to