diff --git a/spec/index.html b/spec/index.html index ed78e67..3f2734c 100644 --- a/spec/index.html +++ b/spec/index.html @@ -9948,10 +9948,10 @@

Property Path Patterns

Definition: Evaluation of Sequence Property Path

Let ppe1 and ppe2 be algebraic property path expressions. Let |V| be a fresh variable.

-
A = Join( ppeval(X, ppe1, V), ppeval(V, ppe2, Y) )
-
ppeval(X, Seq(ppe1, ppe2), Y) = Project(A, PV)
-

where |PV| = { |v| ∈ {|X|,|Y|} | |v| is a variable}.

-
Join produces a multiset of solution mappings but Project expects a sequence as its first argument. Moreover, Project produces a sequence but ppeval(..) should be a multiset.
+
ppeval(X, Seq(ppe1, ppe2), Y) = ToMultiSet( Project(ToList(A), PV) )
+

where |A| = + Join( `ppeval`(|X|, ppe1, |V|), `ppeval`(|V|, ppe2, |Y|) ) + and |PV| = { |projVar| ∈ {|X|,|Y|} | |projVar| is a variable }.

Informally, this is the same as:

SELECT * { X P1 _:a . _:a P2 Y }