- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Sat, 01 Dec 2007 19:32:43 +0000
- To: Olaf Hartig <hartig@informatik.hu-berlin.de>
- Cc: "public-rdf-dawg-comments@w3.org" <public-rdf-dawg-comments@w3.org>
Olaf Hartig wrote:
> Hello,
>
> In section 12.5 the SPARQL spec. defines an evaluation semantics using an
> operation eval. The result of this operation seems to be a multiset of
> solution mappings and the 2nd operator is said to be a graph pattern. The
> given definitions contain symbols like LeftJoin. The meaning of these symbols
> confuses me. Do they represent graph patterns or algebra operators? Or, do
> you use the same symbol for both - graph patterns in the left part of the
> equation and algebra operators in the right?
>
> Thanks,
> Olaf
Hi Olaf,
The LeftJoin symbol plays different roles at different stages as the SPARQL
syntax is turned first in the algebra and then evaluates.
Consider this example:
"(1+2) * (3+4)"
That might be parsed into the abstract syntax tree (AST):
mult
/ \
add add
/ \ / \
1 2 3 4
or writing in linearly:
mult(add(1,2), add(3,4))
"mult" is just a label in a datastructure at this point.
Evaluation proceeds functionally, bottom-up (strict evaluation) by evaluating
each sub-express before calling the mult operations. It's only this latter
stage that the types of the arguments to mult are 2 integers from the
evaluation of the sub-expressions add(...).
eval[mult(add(1,2), add(3,4)] =>
eval[mult(eval[add(1,2)], eval[add(3,4)])] =>
// Skipping eval(integer) => integer
eval[mult(3, 7)] ==>
21
In section 12.5, we're at the evaluation state and LeftJoin is a function - it
was just a symbol in an expression until this point like "mult" is a symbol in
the AST.
The arguments to LeftJoin in teh evaluation are multisets from the inner
evaluation of P1, P2.
eval(D(G), LeftJoin(P1, P2, F)) = LeftJoin(eval(D(G), P1), eval(D(G), P2), F)
The term "pattern" (12.5) is an algebra expression (symbols in a
datastructure, actually, it's a tree) derived form a syntactic form of a graph
pattern (symbols in an AST). eval produces multisets.
Hope that helps,
Andy
http://en.wikipedia.org/wiki/Evaluation_strategy
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Saturday, 1 December 2007 19:33:46 UTC