You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Mikael Pesonen <mi...@lingsoft.fi> on 2020/10/05 09:22:43 UTC
Multiword Jena text queries
I'm having trouble making other that one word queries.
For example "language <any other words here>" gives same result,
regardless of the other words.
Using quotes "\"some query\"" returns no results.
So I would like to make "fuzzy" multiword queries where for example
"language technology" returns different results that "language management"
And also to query "\"language technology\"" which should return exact
matches.
I'm using latest Jena with AnalyzingQueryParser, which gives warning
WARN TextIndexLucene :: Deprecated query parser type
'AnalyzingQueryParser'. Defaulting to standard QueryParser
Also tried other parsers.
Config:
@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#> .
@prefix skos:<http://www.w3.org/2004/02/skos/core#> .
@prefix fuseki:<http://jena.apache.org/fuseki#> .
@prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
@prefix dcterms:<http://purl.org/dc/terms/> .
@prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
## 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 .
:text_dataset rdf:type text:TextDataset ;
text:dataset :my_dataset ;
text:index <#indexLucene> ;
.
# A TDB dataset used for RDF storage
:my_dataset rdf:type tdb:DatasetTDB ;
tdb:location "/home/text/tools/jena_data/" ;
# tdb:unionDefaultGraph true ; # Optional
.
# Text index description
<#indexLucene> a text:TextIndexLucene ;
text:directory <file:/home/text/tools/jena_text_index/> ;
text:entityMap <#entMap> ;
text:storeValues true ;
text:analyzer [ a text:StandardAnalyzer ] ;
text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
text:queryParser text:AnalyzingQueryParser ;
text:multilingualSupport true ;
.
<#entMap> a text:EntityMap ;
text:defaultField "vcard_fn" ;
text:entityField "uri" ;
text:uidField "uid" ;
text:langField "lang" ;
text:graphField "graph" ;
text:map (
[ text:field "vcard_fn" ; text:predicate vcard:fn ]
[ text:field "skos_prefLabel" ; text:predicate skos:prefLabel ]
[ text:field "skos_altLabel" ; text:predicate skos:altLabel ]
[ text:field "lsrm_content" ; text:predicate lsrm:content]
[ text:field "dcterms_title" ; text:predicate dcterms:title]
[ text:field "dcterms_description" ; text:predicate
dcterms:description]
) .
<#service> rdf:type fuseki:Service ;
fuseki:name "/ds" ; # http://host:port/ds-ro
fuseki:serviceQuery "query" ; # SPARQL query service
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceUpdate "update" ; # SPARQL update service
fuseki:serviceUpload "upload" ; # Non-SPARQL upload
service
fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
store protocol (read and write)
fuseki:dataset :text_dataset ;
.
Re: Multiword Jena text queries
Posted by Mikael Pesonen <mi...@lingsoft.fi>.
Using quotes "Some Word" works.
On 29/10/2020 15.17, Mikael Pesonen wrote:
>
> Sorry for the delay. I took your simplier config as example and now
> I'm getting better results.
>
> So "some AND word" returns first the results having both words but
> then also results having only one of the words.
> Trying
>
> _exists_:Some AND _exists_:Word
>
> results an error
>
> 14:53:12 INFO Fuseki :: [6] 500
> org.apache.jena.query.text.TextIndexParseException: Text search parse
> error:
> Cannot parse 'lsrm_lmz_title:_exists_:agentum and _exists_:lasku ':
> Encountered " ":" ": "" at line 1, column 23.
>
> Is it possible to make queries where all the words have to exist?
>
> Config:
>
> ...
> <#entMap_test> a text:EntityMap ;
> text:defaultField "lsrm_lmz_title" ;
> text:entityField "uri" ;
> text:uidField "uid" ;
> text:langField "lang" ;
> text:graphField "graph" ;
> text:map (
> [ text:field "lsrm_lmz_title" ; text:predicate lsrm:lmz_title]
> ) .
> ...
>
> Br,
> Mikael
>
>
> On 08/10/2020 13.55, Øyvind Gjesdal wrote:
>> I have a working setup (on fuseki 3.14) where I can see different
>> results
>> using AND/OR, and where "~" fuzzy operator also works.
>>
>> Differences from your config seem to be that I haven't configured
>> much for
>> the index, only the directory and entity map. Would testing if a minimal
>> config works and then rebuilding index from command line, with more
>> configuration each time until it breaks help?
>>
>> <#text_index> a text:TextIndexLucene ; text:directory
>> </var/fuseki/databases/place-name-data/Lucene> ; text:entityMap
>> <#entMap> ; .
>>
>> Best regards,
>>
>> Øyvind
>>
>>
>>
>> tor. 8. okt. 2020 kl. 10:23 skrev Mikael Pesonen
>> <mikael.pesonen@lingsoft.fi
>>> :
>>> Anyone got any idea how to fix this? I'm out of ideas.
>>>
>>> On Mon, 5 Oct 2020 at 14:33, Mikael Pesonen
>>> <mi...@lingsoft.fi>
>>> wrote:
>>>
>>>> Sorry, correction: "language AND <any other words here>" and "language
>>>> OR <any other words here>" return same results as "language <any other
>>>> words here>" and same results as "language".
>>>>
>>>> On 5.10.2020 14:27, Mikael Pesonen wrote:
>>>>> Hi,
>>>>>
>>>>> forgot to mention that AND and OR in query returns also no results.
>>>>> I'm somewhat familiar with Lucene syntax but seems like none of the
>>>>> syntax works with my setup.
>>>>> There are no errors in Jena log, only the warning about
>>>>> AnalyzingQueryParser.
>>>>>
>>>>>
>>>>>
>>>>> On 5.10.2020 13:49, Lorenz Buehmann wrote:
>>>>>> It's Lucene syntax so a look into its documentation[1] could help.
>>>>>>
>>>>>> Regarding multiple words, default Boolean operator is "OR", i.e.
>>>>>>
>>>>>> "language <any other words here>" is equivalent to "language OR <any
>>>>>> other words here>". Obviously the result will contain all at least
>>>>>> documents with "language". Use AND operator if it must contain both.
>>>>>>
>>>>>> Fuzzy queries and proximity queries are also explained in the Lucene
>>>>>> docs[1].
>>>>>>
>>>>>>
>>>>>>
>>>>>> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
>>>>>>
>>>>>> On 05.10.20 11:22, Mikael Pesonen wrote:
>>>>>>> I'm having trouble making other that one word queries.
>>>>>>>
>>>>>>> For example "language <any other words here>" gives same result,
>>>>>>> regardless of the other words.
>>>>>>>
>>>>>>> Using quotes "\"some query\"" returns no results.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> So I would like to make "fuzzy" multiword queries where for example
>>>>>>>
>>>>>>> "language technology" returns different results that "language
>>>>>>> management"
>>>>>>>
>>>>>>> And also to query "\"language technology\"" which should return
>>>>>>> exact
>>>>>>> matches.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I'm using latest Jena with AnalyzingQueryParser, which gives
>>>>>>> warning
>>>>>>>
>>>>>>> WARN TextIndexLucene :: Deprecated query parser type
>>>>>>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
>>>>>>>
>>>>>>> Also tried other parsers.
>>>>>>>
>>>>>>>
>>>>>>> Config:
>>>>>>>
>>>>>>> @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#> .
>>>>>>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
>>>>>>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
>>>>>>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
>>>>>>> @prefix dcterms:<http://purl.org/dc/terms/> .
>>>>>>>
>>>>>>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
>>>>>>>
>>>>>>> ## 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 .
>>>>>>>
>>>>>>>
>>>>>>> :text_dataset rdf:type text:TextDataset ;
>>>>>>> text:dataset :my_dataset ;
>>>>>>> text:index <#indexLucene> ;
>>>>>>> .
>>>>>>>
>>>>>>> # A TDB dataset used for RDF storage
>>>>>>> :my_dataset rdf:type tdb:DatasetTDB ;
>>>>>>> tdb:location "/home/text/tools/jena_data/" ;
>>>>>>> # tdb:unionDefaultGraph true ; # Optional
>>>>>>> .
>>>>>>>
>>>>>>> # Text index description
>>>>>>> <#indexLucene> a text:TextIndexLucene ;
>>>>>>> text:directory <file:/home/text/tools/jena_text_index/> ;
>>>>>>> text:entityMap <#entMap> ;
>>>>>>> text:storeValues true ;
>>>>>>> text:analyzer [ a text:StandardAnalyzer ] ;
>>>>>>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
>>>>>>> text:queryParser text:AnalyzingQueryParser ;
>>>>>>> text:multilingualSupport true ;
>>>>>>> .
>>>>>>>
>>>>>>> <#entMap> a text:EntityMap ;
>>>>>>> text:defaultField "vcard_fn" ;
>>>>>>> text:entityField "uri" ;
>>>>>>> text:uidField "uid" ;
>>>>>>> text:langField "lang" ;
>>>>>>> text:graphField "graph" ;
>>>>>>> text:map (
>>>>>>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
>>>>>>> [ text:field "skos_prefLabel" ; text:predicate
>>>>>>> skos:prefLabel ]
>>>>>>> [ text:field "skos_altLabel" ; text:predicate
>>>>>>> skos:altLabel ]
>>>>>>> [ text:field "lsrm_content" ; text:predicate
>>>>>>> lsrm:content]
>>>>>>> [ text:field "dcterms_title" ; text:predicate
>>> dcterms:title]
>>>>>>> [ text:field "dcterms_description" ; text:predicate
>>>>>>> dcterms:description]
>>>>>>> ) .
>>>>>>>
>>>>>>> <#service> rdf:type fuseki:Service ;
>>>>>>> fuseki:name "/ds" ; #
>>>>>>> http://host:port/ds-ro
>>>>>>> fuseki:serviceQuery "query" ; # SPARQL query
>>>>>>> service
>>>>>>> fuseki:serviceQuery "sparql" ; # SPARQL query
>>>>>>> service
>>>>>>> fuseki:serviceUpdate "update" ; # SPARQL update
>>>>>>> service
>>>>>>> fuseki:serviceUpload "upload" ; # Non-SPARQL
>>> upload
>>>>>>> service
>>>>>>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
>>>>>>> store protocol (read and write)
>>>>>>> fuseki:dataset :text_dataset ;
>>>>>>> .
>>>>
>
--
Lingsoft - 30 years of Leading Language Management
www.lingsoft.fi
Speech Applications - Language Management - Translation - Reader's and Writer's Tools - Text Tools - E-books and M-books
Mikael Pesonen
System Engineer
e-mail: mikael.pesonen@lingsoft.fi
Tel. +358 2 279 3300
Time zone: GMT+2
Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND
Turku Office
Kauppiaskatu 5 A
FI-20100 Turku
FINLAND
Re: Multiword Jena text queries
Posted by Mikael Pesonen <mi...@lingsoft.fi>.
Sorry for the delay. I took your simplier config as example and now I'm
getting better results.
So "some AND word" returns first the results having both words but then
also results having only one of the words.
Trying
_exists_:Some AND _exists_:Word
results an error
14:53:12 INFO Fuseki :: [6] 500
org.apache.jena.query.text.TextIndexParseException: Text search parse error:
Cannot parse 'lsrm_lmz_title:_exists_:agentum and _exists_:lasku ':
Encountered " ":" ": "" at line 1, column 23.
Is it possible to make queries where all the words have to exist?
Config:
...
<#entMap_test> a text:EntityMap ;
text:defaultField "lsrm_lmz_title" ;
text:entityField "uri" ;
text:uidField "uid" ;
text:langField "lang" ;
text:graphField "graph" ;
text:map (
[ text:field "lsrm_lmz_title" ; text:predicate lsrm:lmz_title]
) .
...
Br,
Mikael
On 08/10/2020 13.55, Øyvind Gjesdal wrote:
> I have a working setup (on fuseki 3.14) where I can see different results
> using AND/OR, and where "~" fuzzy operator also works.
>
> Differences from your config seem to be that I haven't configured much for
> the index, only the directory and entity map. Would testing if a minimal
> config works and then rebuilding index from command line, with more
> configuration each time until it breaks help?
>
> <#text_index> a text:TextIndexLucene ; text:directory
> </var/fuseki/databases/place-name-data/Lucene> ; text:entityMap
> <#entMap> ; .
>
> Best regards,
>
> Øyvind
>
>
>
> tor. 8. okt. 2020 kl. 10:23 skrev Mikael Pesonen <mikael.pesonen@lingsoft.fi
>> :
>> Anyone got any idea how to fix this? I'm out of ideas.
>>
>> On Mon, 5 Oct 2020 at 14:33, Mikael Pesonen <mi...@lingsoft.fi>
>> wrote:
>>
>>> Sorry, correction: "language AND <any other words here>" and "language
>>> OR <any other words here>" return same results as "language <any other
>>> words here>" and same results as "language".
>>>
>>> On 5.10.2020 14:27, Mikael Pesonen wrote:
>>>> Hi,
>>>>
>>>> forgot to mention that AND and OR in query returns also no results.
>>>> I'm somewhat familiar with Lucene syntax but seems like none of the
>>>> syntax works with my setup.
>>>> There are no errors in Jena log, only the warning about
>>>> AnalyzingQueryParser.
>>>>
>>>>
>>>>
>>>> On 5.10.2020 13:49, Lorenz Buehmann wrote:
>>>>> It's Lucene syntax so a look into its documentation[1] could help.
>>>>>
>>>>> Regarding multiple words, default Boolean operator is "OR", i.e.
>>>>>
>>>>> "language <any other words here>" is equivalent to "language OR <any
>>>>> other words here>". Obviously the result will contain all at least
>>>>> documents with "language". Use AND operator if it must contain both.
>>>>>
>>>>> Fuzzy queries and proximity queries are also explained in the Lucene
>>>>> docs[1].
>>>>>
>>>>>
>>>>>
>>>>> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
>>>>>
>>>>> On 05.10.20 11:22, Mikael Pesonen wrote:
>>>>>> I'm having trouble making other that one word queries.
>>>>>>
>>>>>> For example "language <any other words here>" gives same result,
>>>>>> regardless of the other words.
>>>>>>
>>>>>> Using quotes "\"some query\"" returns no results.
>>>>>>
>>>>>>
>>>>>>
>>>>>> So I would like to make "fuzzy" multiword queries where for example
>>>>>>
>>>>>> "language technology" returns different results that "language
>>>>>> management"
>>>>>>
>>>>>> And also to query "\"language technology\"" which should return exact
>>>>>> matches.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I'm using latest Jena with AnalyzingQueryParser, which gives warning
>>>>>>
>>>>>> WARN TextIndexLucene :: Deprecated query parser type
>>>>>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
>>>>>>
>>>>>> Also tried other parsers.
>>>>>>
>>>>>>
>>>>>> Config:
>>>>>>
>>>>>> @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#> .
>>>>>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
>>>>>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
>>>>>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
>>>>>> @prefix dcterms:<http://purl.org/dc/terms/> .
>>>>>>
>>>>>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
>>>>>>
>>>>>> ## 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 .
>>>>>>
>>>>>>
>>>>>> :text_dataset rdf:type text:TextDataset ;
>>>>>> text:dataset :my_dataset ;
>>>>>> text:index <#indexLucene> ;
>>>>>> .
>>>>>>
>>>>>> # A TDB dataset used for RDF storage
>>>>>> :my_dataset rdf:type tdb:DatasetTDB ;
>>>>>> tdb:location "/home/text/tools/jena_data/" ;
>>>>>> # tdb:unionDefaultGraph true ; # Optional
>>>>>> .
>>>>>>
>>>>>> # Text index description
>>>>>> <#indexLucene> a text:TextIndexLucene ;
>>>>>> text:directory <file:/home/text/tools/jena_text_index/> ;
>>>>>> text:entityMap <#entMap> ;
>>>>>> text:storeValues true ;
>>>>>> text:analyzer [ a text:StandardAnalyzer ] ;
>>>>>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
>>>>>> text:queryParser text:AnalyzingQueryParser ;
>>>>>> text:multilingualSupport true ;
>>>>>> .
>>>>>>
>>>>>> <#entMap> a text:EntityMap ;
>>>>>> text:defaultField "vcard_fn" ;
>>>>>> text:entityField "uri" ;
>>>>>> text:uidField "uid" ;
>>>>>> text:langField "lang" ;
>>>>>> text:graphField "graph" ;
>>>>>> text:map (
>>>>>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
>>>>>> [ text:field "skos_prefLabel" ; text:predicate
>>>>>> skos:prefLabel ]
>>>>>> [ text:field "skos_altLabel" ; text:predicate
>>>>>> skos:altLabel ]
>>>>>> [ text:field "lsrm_content" ; text:predicate lsrm:content]
>>>>>> [ text:field "dcterms_title" ; text:predicate
>> dcterms:title]
>>>>>> [ text:field "dcterms_description" ; text:predicate
>>>>>> dcterms:description]
>>>>>> ) .
>>>>>>
>>>>>> <#service> rdf:type fuseki:Service ;
>>>>>> fuseki:name "/ds" ; #
>>>>>> http://host:port/ds-ro
>>>>>> fuseki:serviceQuery "query" ; # SPARQL query
>>>>>> service
>>>>>> fuseki:serviceQuery "sparql" ; # SPARQL query
>>>>>> service
>>>>>> fuseki:serviceUpdate "update" ; # SPARQL update
>>>>>> service
>>>>>> fuseki:serviceUpload "upload" ; # Non-SPARQL
>> upload
>>>>>> service
>>>>>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
>>>>>> store protocol (read and write)
>>>>>> fuseki:dataset :text_dataset ;
>>>>>> .
>>>
Re: Multiword Jena text queries
Posted by Øyvind Gjesdal <oy...@gmail.com>.
I have a working setup (on fuseki 3.14) where I can see different results
using AND/OR, and where "~" fuzzy operator also works.
Differences from your config seem to be that I haven't configured much for
the index, only the directory and entity map. Would testing if a minimal
config works and then rebuilding index from command line, with more
configuration each time until it breaks help?
<#text_index> a text:TextIndexLucene ; text:directory
</var/fuseki/databases/place-name-data/Lucene> ; text:entityMap
<#entMap> ; .
Best regards,
Øyvind
tor. 8. okt. 2020 kl. 10:23 skrev Mikael Pesonen <mikael.pesonen@lingsoft.fi
>:
> Anyone got any idea how to fix this? I'm out of ideas.
>
> On Mon, 5 Oct 2020 at 14:33, Mikael Pesonen <mi...@lingsoft.fi>
> wrote:
>
> >
> > Sorry, correction: "language AND <any other words here>" and "language
> > OR <any other words here>" return same results as "language <any other
> > words here>" and same results as "language".
> >
> > On 5.10.2020 14:27, Mikael Pesonen wrote:
> > >
> > > Hi,
> > >
> > > forgot to mention that AND and OR in query returns also no results.
> > > I'm somewhat familiar with Lucene syntax but seems like none of the
> > > syntax works with my setup.
> > > There are no errors in Jena log, only the warning about
> > > AnalyzingQueryParser.
> > >
> > >
> > >
> > > On 5.10.2020 13:49, Lorenz Buehmann wrote:
> > >> It's Lucene syntax so a look into its documentation[1] could help.
> > >>
> > >> Regarding multiple words, default Boolean operator is "OR", i.e.
> > >>
> > >> "language <any other words here>" is equivalent to "language OR <any
> > >> other words here>". Obviously the result will contain all at least
> > >> documents with "language". Use AND operator if it must contain both.
> > >>
> > >> Fuzzy queries and proximity queries are also explained in the Lucene
> > >> docs[1].
> > >>
> > >>
> > >>
> > >> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
> > >>
> > >> On 05.10.20 11:22, Mikael Pesonen wrote:
> > >>> I'm having trouble making other that one word queries.
> > >>>
> > >>> For example "language <any other words here>" gives same result,
> > >>> regardless of the other words.
> > >>>
> > >>> Using quotes "\"some query\"" returns no results.
> > >>>
> > >>>
> > >>>
> > >>> So I would like to make "fuzzy" multiword queries where for example
> > >>>
> > >>> "language technology" returns different results that "language
> > >>> management"
> > >>>
> > >>> And also to query "\"language technology\"" which should return exact
> > >>> matches.
> > >>>
> > >>>
> > >>>
> > >>> I'm using latest Jena with AnalyzingQueryParser, which gives warning
> > >>>
> > >>> WARN TextIndexLucene :: Deprecated query parser type
> > >>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
> > >>>
> > >>> Also tried other parsers.
> > >>>
> > >>>
> > >>> Config:
> > >>>
> > >>> @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#> .
> > >>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
> > >>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
> > >>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
> > >>> @prefix dcterms:<http://purl.org/dc/terms/> .
> > >>>
> > >>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
> > >>>
> > >>> ## 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 .
> > >>>
> > >>>
> > >>> :text_dataset rdf:type text:TextDataset ;
> > >>> text:dataset :my_dataset ;
> > >>> text:index <#indexLucene> ;
> > >>> .
> > >>>
> > >>> # A TDB dataset used for RDF storage
> > >>> :my_dataset rdf:type tdb:DatasetTDB ;
> > >>> tdb:location "/home/text/tools/jena_data/" ;
> > >>> # tdb:unionDefaultGraph true ; # Optional
> > >>> .
> > >>>
> > >>> # Text index description
> > >>> <#indexLucene> a text:TextIndexLucene ;
> > >>> text:directory <file:/home/text/tools/jena_text_index/> ;
> > >>> text:entityMap <#entMap> ;
> > >>> text:storeValues true ;
> > >>> text:analyzer [ a text:StandardAnalyzer ] ;
> > >>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
> > >>> text:queryParser text:AnalyzingQueryParser ;
> > >>> text:multilingualSupport true ;
> > >>> .
> > >>>
> > >>> <#entMap> a text:EntityMap ;
> > >>> text:defaultField "vcard_fn" ;
> > >>> text:entityField "uri" ;
> > >>> text:uidField "uid" ;
> > >>> text:langField "lang" ;
> > >>> text:graphField "graph" ;
> > >>> text:map (
> > >>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
> > >>> [ text:field "skos_prefLabel" ; text:predicate
> > >>> skos:prefLabel ]
> > >>> [ text:field "skos_altLabel" ; text:predicate
> > >>> skos:altLabel ]
> > >>> [ text:field "lsrm_content" ; text:predicate lsrm:content]
> > >>> [ text:field "dcterms_title" ; text:predicate
> dcterms:title]
> > >>> [ text:field "dcterms_description" ; text:predicate
> > >>> dcterms:description]
> > >>> ) .
> > >>>
> > >>> <#service> rdf:type fuseki:Service ;
> > >>> fuseki:name "/ds" ; #
> > >>> http://host:port/ds-ro
> > >>> fuseki:serviceQuery "query" ; # SPARQL query
> > >>> service
> > >>> fuseki:serviceQuery "sparql" ; # SPARQL query
> > >>> service
> > >>> fuseki:serviceUpdate "update" ; # SPARQL update
> > >>> service
> > >>> fuseki:serviceUpload "upload" ; # Non-SPARQL
> upload
> > >>> service
> > >>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
> > >>> store protocol (read and write)
> > >>> fuseki:dataset :text_dataset ;
> > >>> .
> > >
> >
> >
>
Re: Multiword Jena text queries
Posted by Mikael Pesonen <mi...@lingsoft.fi>.
Anyone got any idea how to fix this? I'm out of ideas.
On Mon, 5 Oct 2020 at 14:33, Mikael Pesonen <mi...@lingsoft.fi>
wrote:
>
> Sorry, correction: "language AND <any other words here>" and "language
> OR <any other words here>" return same results as "language <any other
> words here>" and same results as "language".
>
> On 5.10.2020 14:27, Mikael Pesonen wrote:
> >
> > Hi,
> >
> > forgot to mention that AND and OR in query returns also no results.
> > I'm somewhat familiar with Lucene syntax but seems like none of the
> > syntax works with my setup.
> > There are no errors in Jena log, only the warning about
> > AnalyzingQueryParser.
> >
> >
> >
> > On 5.10.2020 13:49, Lorenz Buehmann wrote:
> >> It's Lucene syntax so a look into its documentation[1] could help.
> >>
> >> Regarding multiple words, default Boolean operator is "OR", i.e.
> >>
> >> "language <any other words here>" is equivalent to "language OR <any
> >> other words here>". Obviously the result will contain all at least
> >> documents with "language". Use AND operator if it must contain both.
> >>
> >> Fuzzy queries and proximity queries are also explained in the Lucene
> >> docs[1].
> >>
> >>
> >>
> >> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
> >>
> >> On 05.10.20 11:22, Mikael Pesonen wrote:
> >>> I'm having trouble making other that one word queries.
> >>>
> >>> For example "language <any other words here>" gives same result,
> >>> regardless of the other words.
> >>>
> >>> Using quotes "\"some query\"" returns no results.
> >>>
> >>>
> >>>
> >>> So I would like to make "fuzzy" multiword queries where for example
> >>>
> >>> "language technology" returns different results that "language
> >>> management"
> >>>
> >>> And also to query "\"language technology\"" which should return exact
> >>> matches.
> >>>
> >>>
> >>>
> >>> I'm using latest Jena with AnalyzingQueryParser, which gives warning
> >>>
> >>> WARN TextIndexLucene :: Deprecated query parser type
> >>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
> >>>
> >>> Also tried other parsers.
> >>>
> >>>
> >>> Config:
> >>>
> >>> @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#> .
> >>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
> >>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
> >>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
> >>> @prefix dcterms:<http://purl.org/dc/terms/> .
> >>>
> >>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
> >>>
> >>> ## 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 .
> >>>
> >>>
> >>> :text_dataset rdf:type text:TextDataset ;
> >>> text:dataset :my_dataset ;
> >>> text:index <#indexLucene> ;
> >>> .
> >>>
> >>> # A TDB dataset used for RDF storage
> >>> :my_dataset rdf:type tdb:DatasetTDB ;
> >>> tdb:location "/home/text/tools/jena_data/" ;
> >>> # tdb:unionDefaultGraph true ; # Optional
> >>> .
> >>>
> >>> # Text index description
> >>> <#indexLucene> a text:TextIndexLucene ;
> >>> text:directory <file:/home/text/tools/jena_text_index/> ;
> >>> text:entityMap <#entMap> ;
> >>> text:storeValues true ;
> >>> text:analyzer [ a text:StandardAnalyzer ] ;
> >>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
> >>> text:queryParser text:AnalyzingQueryParser ;
> >>> text:multilingualSupport true ;
> >>> .
> >>>
> >>> <#entMap> a text:EntityMap ;
> >>> text:defaultField "vcard_fn" ;
> >>> text:entityField "uri" ;
> >>> text:uidField "uid" ;
> >>> text:langField "lang" ;
> >>> text:graphField "graph" ;
> >>> text:map (
> >>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
> >>> [ text:field "skos_prefLabel" ; text:predicate
> >>> skos:prefLabel ]
> >>> [ text:field "skos_altLabel" ; text:predicate
> >>> skos:altLabel ]
> >>> [ text:field "lsrm_content" ; text:predicate lsrm:content]
> >>> [ text:field "dcterms_title" ; text:predicate dcterms:title]
> >>> [ text:field "dcterms_description" ; text:predicate
> >>> dcterms:description]
> >>> ) .
> >>>
> >>> <#service> rdf:type fuseki:Service ;
> >>> fuseki:name "/ds" ; #
> >>> http://host:port/ds-ro
> >>> fuseki:serviceQuery "query" ; # SPARQL query
> >>> service
> >>> fuseki:serviceQuery "sparql" ; # SPARQL query
> >>> service
> >>> fuseki:serviceUpdate "update" ; # SPARQL update
> >>> service
> >>> fuseki:serviceUpload "upload" ; # Non-SPARQL upload
> >>> service
> >>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
> >>> store protocol (read and write)
> >>> fuseki:dataset :text_dataset ;
> >>> .
> >
>
>
Re: Multiword Jena text queries
Posted by Mikael Pesonen <mi...@lingsoft.fi>.
Sorry, correction: "language AND <any other words here>" and "language
OR <any other words here>" return same results as "language <any other
words here>" and same results as "language".
On 5.10.2020 14:27, Mikael Pesonen wrote:
>
> Hi,
>
> forgot to mention that AND and OR in query returns also no results.
> I'm somewhat familiar with Lucene syntax but seems like none of the
> syntax works with my setup.
> There are no errors in Jena log, only the warning about
> AnalyzingQueryParser.
>
>
>
> On 5.10.2020 13:49, Lorenz Buehmann wrote:
>> It's Lucene syntax so a look into its documentation[1] could help.
>>
>> Regarding multiple words, default Boolean operator is "OR", i.e.
>>
>> "language <any other words here>" is equivalent to "language OR <any
>> other words here>". Obviously the result will contain all at least
>> documents with "language". Use AND operator if it must contain both.
>>
>> Fuzzy queries and proximity queries are also explained in the Lucene
>> docs[1].
>>
>>
>>
>> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
>>
>> On 05.10.20 11:22, Mikael Pesonen wrote:
>>> I'm having trouble making other that one word queries.
>>>
>>> For example "language <any other words here>" gives same result,
>>> regardless of the other words.
>>>
>>> Using quotes "\"some query\"" returns no results.
>>>
>>>
>>>
>>> So I would like to make "fuzzy" multiword queries where for example
>>>
>>> "language technology" returns different results that "language
>>> management"
>>>
>>> And also to query "\"language technology\"" which should return exact
>>> matches.
>>>
>>>
>>>
>>> I'm using latest Jena with AnalyzingQueryParser, which gives warning
>>>
>>> WARN TextIndexLucene :: Deprecated query parser type
>>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
>>>
>>> Also tried other parsers.
>>>
>>>
>>> Config:
>>>
>>> @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#> .
>>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
>>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
>>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
>>> @prefix dcterms:<http://purl.org/dc/terms/> .
>>>
>>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
>>>
>>> ## 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 .
>>>
>>>
>>> :text_dataset rdf:type text:TextDataset ;
>>> text:dataset :my_dataset ;
>>> text:index <#indexLucene> ;
>>> .
>>>
>>> # A TDB dataset used for RDF storage
>>> :my_dataset rdf:type tdb:DatasetTDB ;
>>> tdb:location "/home/text/tools/jena_data/" ;
>>> # tdb:unionDefaultGraph true ; # Optional
>>> .
>>>
>>> # Text index description
>>> <#indexLucene> a text:TextIndexLucene ;
>>> text:directory <file:/home/text/tools/jena_text_index/> ;
>>> text:entityMap <#entMap> ;
>>> text:storeValues true ;
>>> text:analyzer [ a text:StandardAnalyzer ] ;
>>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
>>> text:queryParser text:AnalyzingQueryParser ;
>>> text:multilingualSupport true ;
>>> .
>>>
>>> <#entMap> a text:EntityMap ;
>>> text:defaultField "vcard_fn" ;
>>> text:entityField "uri" ;
>>> text:uidField "uid" ;
>>> text:langField "lang" ;
>>> text:graphField "graph" ;
>>> text:map (
>>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
>>> [ text:field "skos_prefLabel" ; text:predicate
>>> skos:prefLabel ]
>>> [ text:field "skos_altLabel" ; text:predicate
>>> skos:altLabel ]
>>> [ text:field "lsrm_content" ; text:predicate lsrm:content]
>>> [ text:field "dcterms_title" ; text:predicate dcterms:title]
>>> [ text:field "dcterms_description" ; text:predicate
>>> dcterms:description]
>>> ) .
>>>
>>> <#service> rdf:type fuseki:Service ;
>>> fuseki:name "/ds" ; #
>>> http://host:port/ds-ro
>>> fuseki:serviceQuery "query" ; # SPARQL query
>>> service
>>> fuseki:serviceQuery "sparql" ; # SPARQL query
>>> service
>>> fuseki:serviceUpdate "update" ; # SPARQL update
>>> service
>>> fuseki:serviceUpload "upload" ; # Non-SPARQL upload
>>> service
>>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
>>> store protocol (read and write)
>>> fuseki:dataset :text_dataset ;
>>> .
>
Re: Multiword Jena text queries
Posted by Mikael Pesonen <mi...@lingsoft.fi>.
Hi,
forgot to mention that AND and OR in query returns also no results. I'm
somewhat familiar with Lucene syntax but seems like none of the syntax
works with my setup.
There are no errors in Jena log, only the warning about
AnalyzingQueryParser.
On 5.10.2020 13:49, Lorenz Buehmann wrote:
> It's Lucene syntax so a look into its documentation[1] could help.
>
> Regarding multiple words, default Boolean operator is "OR", i.e.
>
> "language <any other words here>" is equivalent to "language OR <any
> other words here>". Obviously the result will contain all at least
> documents with "language". Use AND operator if it must contain both.
>
> Fuzzy queries and proximity queries are also explained in the Lucene
> docs[1].
>
>
>
> [1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
>
> On 05.10.20 11:22, Mikael Pesonen wrote:
>> I'm having trouble making other that one word queries.
>>
>> For example "language <any other words here>" gives same result,
>> regardless of the other words.
>>
>> Using quotes "\"some query\"" returns no results.
>>
>>
>>
>> So I would like to make "fuzzy" multiword queries where for example
>>
>> "language technology" returns different results that "language
>> management"
>>
>> And also to query "\"language technology\"" which should return exact
>> matches.
>>
>>
>>
>> I'm using latest Jena with AnalyzingQueryParser, which gives warning
>>
>> WARN TextIndexLucene :: Deprecated query parser type
>> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
>>
>> Also tried other parsers.
>>
>>
>> Config:
>>
>> @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#> .
>> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
>> @prefix fuseki:<http://jena.apache.org/fuseki#> .
>> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
>> @prefix dcterms:<http://purl.org/dc/terms/> .
>>
>> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
>>
>> ## 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 .
>>
>>
>> :text_dataset rdf:type text:TextDataset ;
>> text:dataset :my_dataset ;
>> text:index <#indexLucene> ;
>> .
>>
>> # A TDB dataset used for RDF storage
>> :my_dataset rdf:type tdb:DatasetTDB ;
>> tdb:location "/home/text/tools/jena_data/" ;
>> # tdb:unionDefaultGraph true ; # Optional
>> .
>>
>> # Text index description
>> <#indexLucene> a text:TextIndexLucene ;
>> text:directory <file:/home/text/tools/jena_text_index/> ;
>> text:entityMap <#entMap> ;
>> text:storeValues true ;
>> text:analyzer [ a text:StandardAnalyzer ] ;
>> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
>> text:queryParser text:AnalyzingQueryParser ;
>> text:multilingualSupport true ;
>> .
>>
>> <#entMap> a text:EntityMap ;
>> text:defaultField "vcard_fn" ;
>> text:entityField "uri" ;
>> text:uidField "uid" ;
>> text:langField "lang" ;
>> text:graphField "graph" ;
>> text:map (
>> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
>> [ text:field "skos_prefLabel" ; text:predicate
>> skos:prefLabel ]
>> [ text:field "skos_altLabel" ; text:predicate skos:altLabel ]
>> [ text:field "lsrm_content" ; text:predicate lsrm:content]
>> [ text:field "dcterms_title" ; text:predicate dcterms:title]
>> [ text:field "dcterms_description" ; text:predicate
>> dcterms:description]
>> ) .
>>
>> <#service> rdf:type fuseki:Service ;
>> fuseki:name "/ds" ; # http://host:port/ds-ro
>> fuseki:serviceQuery "query" ; # SPARQL query service
>> fuseki:serviceQuery "sparql" ; # SPARQL query service
>> fuseki:serviceUpdate "update" ; # SPARQL update service
>> fuseki:serviceUpload "upload" ; # Non-SPARQL upload
>> service
>> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
>> store protocol (read and write)
>> fuseki:dataset :text_dataset ;
>> .
Re: Multiword Jena text queries
Posted by Lorenz Buehmann <bu...@informatik.uni-leipzig.de>.
It's Lucene syntax so a look into its documentation[1] could help.
Regarding multiple words, default Boolean operator is "OR", i.e.
"language <any other words here>" is equivalent to "language OR <any
other words here>". Obviously the result will contain all at least
documents with "language". Use AND operator if it must contain both.
Fuzzy queries and proximity queries are also explained in the Lucene
docs[1].
[1] https://lucene.apache.org/core/8_6_2/queryparser/index.html
On 05.10.20 11:22, Mikael Pesonen wrote:
> I'm having trouble making other that one word queries.
>
> For example "language <any other words here>" gives same result,
> regardless of the other words.
>
> Using quotes "\"some query\"" returns no results.
>
>
>
> So I would like to make "fuzzy" multiword queries where for example
>
> "language technology" returns different results that "language
> management"
>
> And also to query "\"language technology\"" which should return exact
> matches.
>
>
>
> I'm using latest Jena with AnalyzingQueryParser, which gives warning
>
> WARN TextIndexLucene :: Deprecated query parser type
> 'AnalyzingQueryParser'. Defaulting to standard QueryParser
>
> Also tried other parsers.
>
>
> Config:
>
> @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#> .
> @prefix skos:<http://www.w3.org/2004/02/skos/core#> .
> @prefix fuseki:<http://jena.apache.org/fuseki#> .
> @prefix vcard:<http://www.w3.org/2006/vcard/ns#> .
> @prefix dcterms:<http://purl.org/dc/terms/> .
>
> @prefix lsrm:<https://resource.lingsoft.fi/ns/resource_meta#> .
>
> ## 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 .
>
>
> :text_dataset rdf:type text:TextDataset ;
> text:dataset :my_dataset ;
> text:index <#indexLucene> ;
> .
>
> # A TDB dataset used for RDF storage
> :my_dataset rdf:type tdb:DatasetTDB ;
> tdb:location "/home/text/tools/jena_data/" ;
> # tdb:unionDefaultGraph true ; # Optional
> .
>
> # Text index description
> <#indexLucene> a text:TextIndexLucene ;
> text:directory <file:/home/text/tools/jena_text_index/> ;
> text:entityMap <#entMap> ;
> text:storeValues true ;
> text:analyzer [ a text:StandardAnalyzer ] ;
> text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
> text:queryParser text:AnalyzingQueryParser ;
> text:multilingualSupport true ;
> .
>
> <#entMap> a text:EntityMap ;
> text:defaultField "vcard_fn" ;
> text:entityField "uri" ;
> text:uidField "uid" ;
> text:langField "lang" ;
> text:graphField "graph" ;
> text:map (
> [ text:field "vcard_fn" ; text:predicate vcard:fn ]
> [ text:field "skos_prefLabel" ; text:predicate
> skos:prefLabel ]
> [ text:field "skos_altLabel" ; text:predicate skos:altLabel ]
> [ text:field "lsrm_content" ; text:predicate lsrm:content]
> [ text:field "dcterms_title" ; text:predicate dcterms:title]
> [ text:field "dcterms_description" ; text:predicate
> dcterms:description]
> ) .
>
> <#service> rdf:type fuseki:Service ;
> fuseki:name "/ds" ; # http://host:port/ds-ro
> fuseki:serviceQuery "query" ; # SPARQL query service
> fuseki:serviceQuery "sparql" ; # SPARQL query service
> fuseki:serviceUpdate "update" ; # SPARQL update service
> fuseki:serviceUpload "upload" ; # Non-SPARQL upload
> service
> fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph
> store protocol (read and write)
> fuseki:dataset :text_dataset ;
> .