Syntax error in algebra example

DAWG,

   12.2.2 has a minor error.
----

Example: group consisting of a basic graph pattern, a filter and an  
optional graph pattern:

{ ?s :p1 ?v1} FILTER (?v1 < 3 ) OPTIONAL {?s :p2 ?v2} }
Filter( ?v1 < 3 ,
   LeftJoin( BGP(?s :p1 ?v1), BGP(?s :p2 ?v2), true) ,
   )
----

   Count the number of {s and }s.

   While I'm on the topic of 12.2.x, the algebra mapping algorithm in  
12.2.1 is somewhat unclear, and contains at least one error:

----
for each algebra sub-expression SA:
    If SA is an OPTIONAL,
       If SA is of the form OPTIONAL(Filter(F, A))
            G := LeftJoin(G, A, F)
       else
            G := LeftJoin(G, A, true)
    Otherwise for expression SA, G := Join(G, SA)
----

   in the 'else' clause, 'A' is out of scope, so this doesn't make  
any sense.


   In a more general sense: it would probably aid the clarity of the  
document if the DAWG tried to write an AST -> Algebra converter using  
only the document as a reference, rather than writing the document  
with the experience of having written the code. I'm writing such a  
thing for the first time, and the document is not as clear as I would  
like.

   It would also be helpful in 12.2.2 to provide concrete (syntax,  
AST, algebra) triples, rather than only (syntax, algebra) pairs. At  
present I am having to basically guess the AST that the DAWG had in  
mind when writing this section.

   Regards,

-R

Received on Saturday, 22 September 2007 09:33:08 UTC