diff --git a/spec/index.html b/spec/index.html index 39d9604..641b50a 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9904,14 +9904,20 @@
Definition: Filter
-Let Ω be a multiset of solution mappings and expr be an expression. We define:
-Filter(expr, Ω) = { μ | μ in Ω and expr(μ) is an expression that has an +
Let Ω be a multiset of solution mappings, + expr be an expression, + |D| be a dataset, + and |G| be the active graph. + We define:
+Filter(expr, Ω, |D|, |G|) = { μ in Ω | expr(μ) is an expression that has an effective boolean value of true }
-multiplicity( μ | Filter(expr, Ω) ) +
multiplicity( μ | Filter(expr, Ω, |D|, |G|) ) = multiplicity( μ | Ω )
- Note that evaluating anexists(pattern)
expression uses the dataset and - active graph, D(G). See the evaluation of filter. + Note that evaluating anexists(pattern)
expression uses the dataset |D| and + active graph |G|. See the evaluation of filter.
Definition: Diff
Let Ω1 and Ω2 be multisets of solution mappings and expr be an - expression. We define:
+ expression. We define:Diff(Ω1, Ω2, expr) = { μ | μ in Ω1 such that ∀ μ' in Ω2, either μ and μ' are not compatible or μ and μ' are compatible and expr(merge(μ, μ')) does not have an effective boolean value of true }
+multiplicity( μ | Diff(Ω1, Ω2, expr) ) = multiplicity( μ | Ω1 )
Definition: LeftJoin
Let Ω1 and Ω2 be multisets of solution mappings and expr be an - expression. We define:
+ expression. We define:LeftJoin(Ω1, Ω2, expr) = Filter(expr, Join(Ω1, Ω2)) ∪ Diff(Ω1, Ω2, expr)
multiplicity( μ | LeftJoin(Ω1, Ω2, expr) ) = @@ -9984,6 +9992,8 @@
Let μ be a solution mapping, Ω a multiset of solution mappings, var a variable and expr be an expression, then we define:
Extend(μ, var, expr) = μ ∪ { (var, value) | var not in dom(μ) and value = expr(μ) }
+Extend(μ, var, expr) = μ if var not in dom(μ) and expr(μ) is an error
Extend is undefined if var in dom(μ).
Extend(Ω, var, expr) = { Extend(μ, var, expr) | μ in Ω }
@@ -10437,7 +10447,7 @@Definition: Evaluation of Filter
-eval( |D|(|G|), Filter(|F|, |P|) ) = Filter( |F|, eval(|D|(|G|), |P|), |D|(|G|) )
+eval( |D|(|G|), Filter(|F|, |P|) ) = Filter( |F|, eval(|D|(|G|), |P|), |D|, |G| )
'substitute' is a filter function in support of the evaluation of
EXISTS