- From: Andy Seaborne <andy@apache.org>
- Date: Thu, 17 Nov 2016 13:41:56 +0000
- To: public-sparql-exists@w3.org
Modification of "in-scope" for EXISTS:
Assignment (an "AS") to a variable which is in-scope for the FILTER is
not allowed.
-----------------------------
== Definition: Projection Expression Variable Remapping
For a projection algebra operation P with set of variables PV, define
F = mapping from V to V.
such that
F(v) = v if v in PV
F(v) = v1, v1 a variable with a name not used in the query
and not used in any other projection mapping.
Define the project mapping PrjMap(P,PV) to be the algebra expression P
(and the subtree over which the projection is defined) with F applied to
every variable of the algebra expression over which P is evaluated.
== Definition: Variable Remapping
For any algebra expression X, not a projection:
PrjMap(X) = replace all project operations with PrjMap(P,PV) for each
projection in X.
== Definition: Replace(pattern, μ)
For solution mapping μ, define Table(μ) be the multiset forms from μ.
Table(μ) = ToMultiSet(solution sequence { μ })
Replace(X, μ) is
If X is a BGP ,
replace X with join(X, Table(μ))
If X is a property path expression,
replace X with join(P, Table(μ))
If X is Graph(Var, pattern)
replace X with join(X, Table(μ))
== Definition: Evaluation of Exists
Let μ be the current solution mapping for a filter and X a graph pattern:
exists(X) = true if and only if
eval(D(G), Replace(PrjMap(X), μ)
is a non empty solution sequence.
exists(X) = false otherwise
Received on Thursday, 17 November 2016 13:42:30 UTC