- From: Axel Polleres <axel.polleres@deri.org>
- Date: Tue, 15 Feb 2011 09:11:21 +0000
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
- Cc: Axel Polleres <axel.polleres@deri.org>
Here comes the rest of my review... starting at section 4.
1) What do you mean by
"We introduce the following symbols:
* Join(Pattern, Pattern)
* LeftJoin(Pattern, Pattern, expression)
* Filter(expression, Pattern)
* UNION(Pattern, Pattern)
"
these are defined in the query doc, they don't need to be re-introduced, right?
I understand, that you want to extend the transformation rules for GroupGraphPattern from in Section 18.2.2.4 Translate Graph Patterns of [SPARQL 1.1 Query Language], since you want to reuse information about variables already bound. Fine, but that should be said/explained.
So instead of the "We introduce" part, say:
"In order to define the transformation of SERVICE patterns we extend the transformation of GroupGraphPattern from Section 18.2.2.4 Translate Graph Patterns of [SPARQL 1.1 Query Language], since we assume the Service invocation
2)
Why do you have two different definitions for
Definition: Evaluation of a Service Pattern
and
Definition: Service Silent Function
Can't they be merged into one, where SilentOpt is just a boolean flag that's true for SILENT (in which case execution doesn't fail) and
false otherwise (where overall execution fails)?
3) I think this looks weird to me:
========================================
if IRI is a SPARQL service
Service(IRI,G,P)) = Invocation( IRI, vars ∩ bound, P, Bindings(G, vars) )
eval(D(G), Service(var,G,P)) =
Let R be the empty multiset
foreach i in Ω(?var->i)
if i is an IRI
R := Union(R, Join( Invocation( i, vars ∩ bound, P, Bindings(G, vars) ) , Ω(?var->i) ) )
else
exection fails.
the result is R
========================================
shouldn't this rather be:
========================================
if IRI is a SPARQL service
Service(IRI,G,P)) = Invocation( IRI, vars ∩ bound, P, Bindings(G, vars) )
else:
eval(D(G), Service(var,G,P)) =
Let R be the empty multiset
foreach i in Ω(?var->i)
if i is an IRI
R := Union(R, Join( Invocation( i, vars ∩ bound, P, Bindings(G, vars) ) , Ω(?var->i) ) )
else
exection fails.
the result is R
========================================
also, by only projecting vars interect bound, you can have strange effects since the evaluation becomes order dependent,
which I am not sure whether it is implied by the algorithm referred in Section 4.1. There you have:
"For each element E in the GroupGraphPattern"
note that this - per se - doesn't imply any order of the elements in GroupGraphPattern
However, I assume that you assume/imply that
{ P1 SERVICE i {... } P2 }
behaves different from
{ P2 SERVICE i {... } P1 }
do you?
4) What about
" @@All binary operators that have open LHS: new UNION, MINUS, (NOT)EXISTS
@@SubSELECT??
"
?
5) I skipped section 4.2 and 4.4, assuming it will be removed
Received on Tuesday, 15 February 2011 09:12:56 UTC