On 09/08/13 09:12, Neubert Joachim wrote:
I just published a blog post:
http://zbw.eu/labs/en/blog/thesaurus-augmented-search-with-jena-text
Nice.
I think you can rewrite to avoid multiple text:query using a temporary
variable ?x, say, and BIND:
...
?x text:query ('telework' 2)
{ BIND ( ?x AS ?concept ) }
UNION { ?x skos:exactMatch ?concept }
UNION { BIND ( ?x AS ?concept ) ?concept skos:narrower ?narrower }
UNION { ?x skos:narrower ?concept }
UNION { BIND ( ?x AS ?concept ) skos:related ?related }
UNION { ?x skos:related ?concept }
...
but if you observe it making no difference, it could be that internal
Lucene caching means repeat use of the same query is fast.
Is ?altLabel intended, it's in the SELECT but not in the query. If it's
?label every where you could use more property paths:
# To specifically get ?prefLabel
{ ?concept skos:prefLabel ?prefLabel }
UNION
{ ?concept (skos:prefLabel |
skos:altLabel |
skos:hiddenLabel ) ?label . }
UNION { ?concept skos:exactMatch / (skos:prefLabel |
skos:altLabel |
skos:hiddenLabel ) ?label .
because | in property paths is the same as a UNION.
In the extreme: ? is "zero or one of" so ....
?concept skos:exactMatch? /
(skos:prefLabel |
skos:altLabel |
skos:hiddenLabel ) ?label .
but there comes a point where just because you can, does not mean that
you should :-)
Andy