Type: New Feature
Affects Version/s: BIGDATA_RELEASE_1_1_0
Fix Version/s: None
Component/s: SPARQL 1.1 Basic Federated Query
Bigdata currently uses FILTER(sameTerm(var,const)) to bind variables when vectoring solutions into a remote SPARQL 1.0 SERVICE end point. This ticket is to provide either a replacement or an option to handle the BIND using a REGEX replacement of the variable in the query.
REGEX replacement guarantees that the variable is treated as a constant in the query. The FILTER(sameTerm(var,const)) depends on the end point to recognize that the variable is an effective constant. However, REGEX replacement can be error prone if literals within the SERVICE graph pattern contain text which can be confused with variable names. The FILTER(sameTerm(var,const)) mechanism is immune to that confusion.
Ideally, end points would support SPARQL 1.1 BIND() and BINDINGS.
A related issue is that we use SPARQL 1.0 query generation if there are variables which are correlated via a shared blank node binding and more than one solution must be vectored to the end point. This could be handled by NOT sending the variables in the BINDINGS clause and instead using a UNION with BIND() to vector the solutions to the end point (rather than UNION with FILTER(sameTerm(var,const))).