- 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