1

コマンドラインから Jena でテキスト検索クエリを実行しようとしています。

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

クエリは、次のメッセージとともに空の結果を返します。

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

私のアセンブラファイルは次のとおりです。

    @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 ]
         ) .

私のクエリは次のとおりです。

  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 
  }

設定が抜けているのか、このクエリはfuseki内でしか実行できないのか知りたいです。

4

1 に答える 1

0

まず、フセキの外でテキスト検索ができます。コードを取得した例は、Java でプレーンな Jena Dataset を使用してこれを行う方法を示しています。

次に、Jena メーリング リストの Andy Seaborne が次のように提案しています。

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

実際のクエリを実行する前にインデックスに「触れる」ためです。

于 2016-12-27T16:47:55.370 に答える