W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > January to March 2011

ACTION-284 (completed) Fed. Query review (part 2)

From: Axel Polleres <axel.polleres@deri.org>
Date: Tue, 15 Feb 2011 09:11:21 +0000
Cc: Axel Polleres <axel.polleres@deri.org>
Message-Id: <8E69EE4F-06A9-478A-95F3-DAC36C8F6656@deri.org>
To: SPARQL Working Group <public-rdf-dawg@w3.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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:45 GMT