2016-12-20 9 views
1

Ich versuche, eine Textsuchabfrage mit Jena über die Befehlszeile auszuführen.Befehlszeile tdbquery mit Textindex

tdbquery --desc textsearch.ttl --query search.rq 

Die Abfrage Rückkehr leer Ergebnisse mit den Nachrichten:

17:23:46 WARN TextQueryPF   :: Failed to find the text index : tried context and as a text-enabled dataset 
17:23:46 WARN TextQueryPF   :: No text index - no text search performed 

Meine Assembler-Datei ist:

@prefix :  <http://localhost/jena_example/#> . 
    @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#> . 

    ## Example of a TDB dataset and text index 
    ## Initialize TDB 
    [] ja:loadClass "org.apache.jena.tdb.TDB" . 
    tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset . 
    tdb:GraphTDB rdfs:subClassOf ja:Model . 

    ## Initialize text query 
    [] ja:loadClass  "org.apache.jena.query.text.TextQuery" . 
    # A TextDataset is a regular dataset with a text index. 
    text:TextDataset  rdfs:subClassOf ja:RDFDataset . 
    # Lucene index 
    text:TextIndexLucene rdfs:subClassOf text:TextIndex . 
    # Solr index 
    text:TextIndexSolr rdfs:subClassOf text:TextIndex . 

    ## --------------------------------------------------------------- 
    ## This URI must be fixed - it's used to assemble the text dataset. 

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

    # A TDB datset used for RDF storage 
    <#dataset> rdf:type  tdb:DatasetTDB ; 
    tdb:location "DB2" ; 
    tdb:unionDefaultGraph true ; # Optional 
    . 

    # Text index description 
    <#indexLucene> a text:TextIndexLucene ; 
    text:directory <file:Lucene2> ; 
    ##text:directory "mem" ; 
    text:entityMap <#entMap> ; 
    . 

    # Mapping in the index 
    # URI stored in field "uri" 
    # rdfs:label is mapped to field "text" 
    <#entMap> a text:EntityMap ; 
    text:entityField  "uri" ; 
    text:defaultField  "text" ; 
    text:map (
     [ text:field "text" ; text:predicate rdfs:label ] 
     ) . 

Meine Frage ist:

PREFIX text: <http://jena.apache.org/text#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

    SELECT ?s 
    { ?s text:query 'London' ; 
     rdfs:label ?label 
    } 

Ich möchte Ich weiß, wenn ich irgendeine Konfiguration vermisse Diese Abfrage kann nur innerhalb von fuseki durchgeführt werden.

+0

Warum nicht um Hilfe auf der Apache Jena-Mailingliste bitten? – AKSW

Antwort

0

Zuerst können Sie eine Textsuche außerhalb von Fuseki durchführen. Das Beispiel, aus dem Sie den Code entnommen haben, zeigt, wie Sie dies mit dem einfachen Jena-Datensatz in Java tun.

Zweitens Andy Seaborne on Jena mailing list schlägt folgende:

SELECT (count(*) AS ?C) { ?x text:query .... } 

, um den Index zu "berühren", bevor die eigentlichen Abfragen ausgeführt werden.

Verwandte Themen