- From: Axel Polleres <axel.polleres@deri.org>
- Date: Sun, 4 Oct 2009 23:15:20 +0100
- To: Birte Glimm <birte.glimm@comlab.ox.ac.uk>
- Cc: "SPARQL Working Group" <public-rdf-dawg@w3.org>
My comments on SPARQL/Query 1.1 below. Summarizing, my impression is
that we should point to issues
probably more concretely in some places, it seems that one or the
other issue mentioned on the
resp. design page have not yet been propagated to the draft yet, right?
Apart from that, it should be feasible to get this document in shape
to publish as FPWD
in the planned schedule, IMO.
Axel
=============================================================
1) Suggested rewording for the abstract
(alternatively/additionally, just put an Editor's note that this
abstract will
need rewording depending on the final features the WG decides.):
"SPARQL contains capabilities for querying required and optional graph
patterns along with their conjunctions and disjunctions. SPARQL also
supports extensible value testing and constraining queries by source
RDF graph. The results of SPARQL queries can be results sets or RDF
graphs."
->
"SPARQL contains capabilities for querying required and optional graph
patterns along with their conjunctions, disjunctions, and negation.
SPARQL also supports extensible value testing and constraining
queries by source RDF graph. The results of SPARQL queries can be
results sets or RDF graphs. Values in query results can be aggregated
and queries may be nested."
2)
You may want to clarify the status sentence:
"The draft describes the differences between SPARQL/Query 1.0 and the
proposed SPARQL/Query 1.1, rather than being a standalone draft
recommendation."
- change to something like this ->
"This draft describes the differences between SPARQL/Query 1.0 and the
proposed SPARQL/Query 1.1, rather than being a standalone draft
recommendation yet. The final version of this draft shall be
integrated with and replace the original SPARQL/Query 1.0 document."
* Section 2:
3)
Example in Section 2, last line in data:
:book3 :price 7 .
- should be? ->
:book4 :price 7 .
4)
Grammar in Section 2
Having -> HavingExpression
ProjectValues ... no production for that as of yet, actually,
http://www.w3.org/2009/sparql/wiki/Design:Aggregate has
AggregateExpression ::= 'GROUP BY' ?Var+ HavingExpression?
instead of
GroupBy ::= 'GROUP BY' ProjectValues HavingExpression?
What on top of VariableLists have you thought of here?
Whatever generalisation would go there, would likely also need to
generalize
key(v, μ)
to
key(projectvalues , μ)
5)
key/Partition/Aggregation should have consistently lower or upper case
(already
mentioned by Birte), suggest
key(varlist, μ) -> Key(VarList, μ)
6) The definition of Partition seems to have a problem, I understand
that partition is a
set of pairs (k, Omega_k) where Omega_k is the subset of Omega such
that key(key(varlist,mu) = k, i.e.
Partition(varlist, Ω) = { (k,Ω) | Ω in Ω,
k=key(varlist, Ω) }
-->
Partition(varlist, Ω) = { (k,Partition(varlist, k, &Omega)) |
k in key(varlist, &Omega)}
where
Partition(varlist, k, Ω) = { μ | μ in &Omega such that
key(varlist, μ) = k }
I don't see yet, where the HavingExpression would go in, probably
Partition(varlist, Ω)
here needs to be extended to Partition(varlist, Ω, Constraint)
At least a sentence mentioning that this is to be done, should go there.
7) would suggest to add Example-to-algebra translation analogous to
the examples in "12.2.2 Examples of Mapped Graph Patterns" of
current spec as TODO
(that probably applies to all features)
* Section 3:
8) You write:
"As it stands Subqueries require no new algebra operators."
Following the current evaluation (with solution modifiers) results
would need to be
converted from multisets to sequences, so (as mentioned on the design
page
http://www.w3.org/2009/sparql/wiki/Design:SubSelect) subqueries would
need a conversion
ToMultiset back from Sequence to MultiSet.
Do I understand correctly, that some content from the design page are
still to be
propagateed to the draft?
9)
"In general, GroupGraphPatternSub is evaluated as per SPARQL 1.0, and
the resulting multiset is projected with respect to Project, as Project
(GroupGraphPatternSub, Project). This is then Joined with the
enclosing expression.
The ordering from any ORDER BY expressions is not propagated outside
the Project expression."
Sounds a bit confusing to me, is what you want to point here at the
issue on
scoping/how the bindings from the outer query are "propagated" inside
the inner query if there
are solution modifiers, which is necessary e.g.
to get the intended behavior of the example query? ... since if this
was meant to
be modular, then I don't see the example to work, as
SELECT ?y ?name WHERE {
?y :name ?name
}
ORDER BY ?name
LIMIT 1
evaluated alone would always return,
?y :alice ?name "A. Foo"
as the single answer which wouldn't join with any of the ?y bindings
of the outer query.
Not sure what would be a good wording, but let me try...
"In general, GroupGraphPatternSub is evaluated as per SPARQL 1.0, and
the resulting multiset
is projected with respect to Project, as Project(GroupGraphPatternSub,
Project). This is then
Joined with the enclosing expression where solution modifiers are
meant to be evaluated after this join.
The solution modifiers are not propagated outside the Project
expression."
Admitted, not very nice/clear... but what was there before, doesn't
really sound clear either.
Maybe easiest to just point at the related issue on scoping.
To get the intended behavior, it looks like we'd need to also make
subselects order dependent and use the
substitute(pattern, μ)
function used in Section 4?
* Section 4:
10)
"in FILTERs"
-> "in FILTER expressions"
* Seciton 5:
11)
"@@Scoping of variables - does "AS ?v" allow ?v to be used in another
expression? No reason why not if careful about solution extension
ordering."
Should we refer here to concrete issues from the draft? (ISSUE-36 in
this case)
Received on Sunday, 4 October 2009 22:15:55 UTC