bif:contains uses a Virtuoso full text index.
SPARQL's CONTAINS looks for exact substring.
(it is the same as XQuery/XPath fn:contains)
https://www.w3.org/TR/sparql11-query/#func-contains
FILTER(CONTAINS((LCASE(?something), "word")))
or a regex
Andy
On 29/11/2018 17:51, Dan Davis wrote:
I have a Query Execution Service that returns a QueryExecution that is
within another triple-store, and that other triple store supports some
functions my other graphs do not. Specifically, it is virtuoso, and
supports bif:lower and bif:contains. My intuition is that I need to write
filter functions that allow ARQ to parse these, and then pass these down to
the lower level. However, maybe there is an easier way.
Can you guys please advice what is the easiest/best practice way to do this?
This is not a Virtuoso list, so I will spare you the EXPLAIN output that
convinces me that FILTER(CONTAINS(?something, "word")) never drives the
query, but FILTER(bif:contains(?something, "word")) will drive the query if
there is full text indexing.
Thanks,
-Dan Davis