- From: Andy Seaborne <andy@apache.org>
- Date: Fri, 28 Oct 2016 11:08:26 +0100
- To: public-sparql-exists@w3.org
Peter, all, How do we go about deciding when the two proposals? I'm not unbiased - I think the "deep" implementation is better because it is less intrusive to implement, and covers more cases including ones that seem natural to me (e.g. the GRAPH). I have a prototype implement for the "deep" implementation [1]. Also -- some tests [2] (BNodes, FILTER in EXISTS and for GRAPH, including GRAPH+FILTER). The prototype only requires changing the execution of the "exists" function. To implement the "top-level" proposal, requires changes at the syntax level, presumably in the translation step. Then the "Initial(t)" is in-place before translation to the algebra because the "top-level" proposal requires it to happen before filters are processed for {}-groups. This is both more complicated and would likely impact existing optimizers for the new element that can appear. What they do share is how injection is described. The mechanism of a replaced token in the algebra works for both. The "deep" proposal can be implemented that way, as a rewrite of each BGP with a join to a data table (the algebra for VALUES) or rewrite each BGP with surrounding appropriate FILTER(sameTerm&&sameTerm). The reverse is not true - the "top-level" proposal can't be explained as algebra change at runtime because "initial" must be in-place in the syntax. Andy [1] https://github.com/afs/jena/tree/exists [2] https://github.com/w3c/sparql-exists/tree/gh-pages/tests
Received on Friday, 28 October 2016 10:09:00 UTC