W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > October to December 2009

RE: ACTION-101 completed: Review of SPARQL 1.1

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Mon, 5 Oct 2009 17:25:10 +0000
To: Axel Polleres <axel.polleres@deri.org>, Birte Glimm <birte.glimm@comlab.ox.ac.uk>
CC: SPARQL Working Group <public-rdf-dawg@w3.org>
Message-ID: <B6CF1054FDC8B845BF93A6645D19BEA3693ECF6F43@GVW1118EXC.americas.hpqcorp.net>
CVS to revision 119

> -----Original Message-----
> From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-request@w3.org]
> On Behalf Of Axel Polleres
> Sent: 04 October 2009 23:15
> To: Birte Glimm
> Cc: SPARQL Working Group
> Subject: ACTION-101 completed: Review of SPARQL 1.1
> 
> 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."
> 

We are removing the abstract as the intro has the important material.

> 
> 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:

Done

> 
> 3)
> Example in Section 2, last line in data:
> 
> :book3 :price 7 .
> 
> - should be? ->
> 
> :book4 :price 7 .

Done

> 
> 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, &mu;)
> 
>   to
> 
> key(projectvalues , &mu;)

The grammar has been updated from the combined grammar.

> 
> 5)
> key/Partition/Aggregation should have consistently lower or upper case
> (already
> mentioned by Birte), suggest
> 
> key(varlist, &mu;) -> Key(VarList, &mu;)
> 

Yes


> 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, &Omega;) = { (k,&Omega;) | &Omega; in &Omega;,
> k=key(varlist, &Omega;) }
> 
>   -->
> 
>   Partition(varlist, &Omega;) = { (k,Partition(varlist, k, &Omega)) |
> k in key(varlist, &Omega)}
> 
>   where
> 
>   Partition(varlist, k, &Omega;) = { &mu; | &mu; in &Omega such that
> key(varlist, &mu;) = k }

There was a transcription error.


> 
> 
> I don't see yet, where the HavingExpression would go in, probably
> 
>   Partition(varlist, &Omega;)
> 
> here needs to be extended to Partition(varlist, &Omega;, Constraint)

It's a straight filter over the outcome of aggregation and does not need to be handled in the aggregation step.  When the AST to algebra is done, this will be clear.

> 
> 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)

Ideally, yes but unlikely in the time available.

> 
> 
> * 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?

We will need "toMultiSet".

Alternatively, we could work in term of a "table" and not need "toList" and "toMultiSet" but need to note hwne it is or is not ordered.

> 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."

Revised, especially the ORDER BY being lost during evaluation.

> 
> 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, &mu;)
> 
> function used in Section 4?

Things, in a group are combined by join. E.g. { { pattern 1 } { pattern2 } }

> * Section 4:
> 
> 10)
> "in FILTERs"
> 
> -> "in FILTER expressions"
> 

Done

> 
> * 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)

Prefer not.  The downside is that if we do one, we ought to do it through out all the documents.

	Andy

Received on Monday, 5 October 2009 17:25:57 GMT

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