- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 28 Sep 2016 16:54:41 -0700
- To: Andy Seaborne <andy@apache.org>, public-sparql-exists@w3.org
Yes, correct. peter On 09/28/2016 04:49 PM, Andy Seaborne wrote: > Peter, > > Is this correct? > > { > :subj :pred ?o . > FILTER EXISTS { GRAPH <g> { ?s ?p ?z . FILTER ( ?z > ?o ) } } > } > > => > > { Initial(t) GRAPH <g> { ?s ?p ?z FILTER ( ?z > ?o ) } } > > so the FILTER ( ?z > ?o ) has unbound ?o when evaluated. > > Andy > > On 23/09/16 20:59, Peter F. Patel-Schneider wrote: >> Here is the complete proposal for the initial top-level-only binding >> injection definition of EXISTS, taken from a paper by David Martin and >> myself to be presented at ISWC in October. >> >> 1. Add a new construct, Initial, to the SPARQL syntax and algebra. Initial >> will be used to set up the initial multiset of solution mappings inside >> an EXISTS. It will work much like VALUES except that it will transfer >> solution mappings through the EXISTS instead of setting up a constant >> solution mapping. Initial is a new option for GraphPatternNotTriples in >> the SPARQL syntax but cannot show up in actual SPARQL code, just during >> the SPARQL translation process. Initial takes a single argument that is >> a token (which can just be an integer). >> >> 2. When collecting FILTER elements replace EXISTS{pattern} in the filter >> expression with >> exists(t,translate( {Initial(t) pattern'})) >> where t is a fresh token, and similarly for NOT EXISTS{pattern}. Note >> that the argument to translate, {Initial(t) pattern'} is SPARQL syntax. >> If pattern is a SubSelect then pattern' is {pattern} otherwise pattern' >> is just pattern. >> >> 3. Translate Initial(t) as itself. >> >> 4. Change the definition of the exists function to: >> >> Let mu be the current solution mapping for a filter, t a token, and P a >> graph pattern: The value exists(t,P) given D(G) is true iff eval(D(G),P') >> is a non-empty multiset of solution bindings, where P' is P with (its >> sole occurence of) Initial(t) replaced by mu. >> >> >> Pre-binding can be defined as performing this injection on the >> GroupGraphPattern of the top-level WhereClause of a query (or equivalent for >> certain query forms). >> >> >> peter >>
Received on Wednesday, 28 September 2016 23:55:12 UTC