- From: Gregory Williams <greg@evilfunhouse.com>
- Date: Tue, 5 Jul 2011 10:35:05 -0400
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
I read over the editor's draft of the federation document last week, and found what I think are a number of problems. I'm not sure if all the outstanding reviewed issues have been dealt with, but I include my comments per section below. Section 2.2 I think it would be a much simpler example if the SERVICE blocks weren't nested. Section 3.1 "Let G := Join(G, Service(VAR, G, Transform(P), SilentOp))" I don't think this works, as the evaluation semantics should try to evaluate the Service() pattern without access to the results of evaluating the G pattern (which are needed to bind VAR) "if IRI is a service URL" "if IRI is a SPARQL service" How do I know if it's a SPARQL service URL or just some other URL? "eval(D(G), Service(IRI,G,P,SilentOp)) = Invocation( IRI, vars, P, Bindings(G, vars), SilentOp )" Where does 'vars' come from here? "foreach i in Ω(?var->i)" Where does Ω come from in this definition? I think it's meant to refer to results from a join that is outside the scope of this operation. "Definition: Evaluation of a Service Pattern" This defn. doesn't seem to use the SilentOp flag as described. It looks like it only affects evaluation if VAR is bound to a non-IRI? The indentation in this defn. is confusing (the depth of if/else statements aren't balanced, but they don't explicitly close with, e.g., a "done" statement) "where: Invocation(IRI, S, P, B, SilentOp) is an implementation of the SPARQL protocol" "an implementation"? I think what's meant here is Invocation(...) makes a request against the named SPARQL protocol implementation. I don't think SilentOp makes sense as an argument to Invocation(). Makes more sense in the defn. of eval(D(G), Service(...)) "with no default-graph-uri or named-graph-uri" Why aren't these allowable in the service IRI? "Definition: Strongly bound variable" I think there's missing clauses for BIND and property paths (e.g. ?s :p{0} ?o should result in both ?s and ?o being strongly bound). "P = SELECT E1 ... En WHERE { P1 } and ?X is strongly bound in P1 and ?X = Ei" Should include the required 'AS ?var' syntax for expressions that aren't variables Should include the option for the select expression to strongly bind the variable: (if "(Ej AS ?X)" is one of the select expressions) This ignores the possibility of ?X being strongly bound in GROUP BY or HAVING clauses "P = P1 GROUP BY E1 ... En such that either there is an Ei of the form ?X or ?X is strongly bound in P1" Needs to also consider grouping expressions that are aliased ("GROUP BY (Ej AS ?X)") "P = P1 HAVING ( E1 ) and ?X is strongly bound within P1" This ignores the possibility of ?X being strongly bound in a GROUP BY clause. "UNBOUND is not a possible value for ?Xi in BindingValues" I don't know what "not a possible value" means. "?Xi is not unbound in BindingValues"? Section 4.1 "It is considered a syntax error to use a variable as the first argument of a ServiceGraphPattern if that variable is not bound (at least optionally) before the execution of the SERVICE pattern" How is a query writer supposed to know in what order evaluation takes place? Asserting a syntax error based on evaluation order seems overly confusing. "If a solution does not bind the variable, or binds it to something which cannot resolve to a SPARQL service, that solution is eliminated." The solution is eliminated *unless* the SILENT keyword is used, right? thanks, .greg
Received on Tuesday, 5 July 2011 14:35:58 UTC