- 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