- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Wed, 06 Apr 2011 11:28:00 -0400
- To: Holger Knublauch <yahoo@knublauch.com>
- CC: public-rdf-dawg-comments@w3.org
Hi Holger, We appreciate your patience in waiting for an official response from the SPARQL Working Group on this issue. The SPARQL WG resolved to include the "assignment" feature n SPARQL 1.1 with the syntax: BIND(expr AS ?var) ...and closed the associated issue (http://www.w3.org/2009/sparql/track/issues/57) in October. The current editors' draft reflects the resolution of this issue: http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#assignment We would be grateful if you would acknowledge that your comment has been answered by sending a reply to this mailing list. Lee On behalf of the SPARQL working group On 10/25/2009 3:30 PM, Holger Knublauch wrote: > Dear WG, > > reading through the drafts (great to have them already!) I am confused > about the future of Assignments (LET keyword in Jena) which has proven > to be absolutely essential for many of our customers projects. The > SPARQL 1.1 working group seems to have converged in favor of supporting > Project expressions and subqueries only, but these IMHO fail to address > the requirements below. > > > Problem 1: How to create new values for CONSTRUCT queries > Project expressions solve some problems for SELECT queries, but the > major use cases of LET have been in CONSTRUCT queries. I only see > subqueries as a (poor) way of creating new values for use in the > CONSTRUCT clause. Creating a subquery for every LET looks like a very > user unfriendly mechanism to me. > > Problem 2: Verbosity > We often work with complex transformations such as string operations > that are best split into multiple steps. Project expressions do not > allow using intermediate variables, such as below and would force users > to chain together very long spaghetti expressions such as SELECT (?x > ex:function3(ex:function2(ex:function1(?y))). Imagine this with some > more complex expressions and it quickly becomes completely unreadable. > Also, consider you would want to reuse intermediate values in multiple > places, to avoid duplicate processing. > > *SELECT*?x?r > *WHERE*{ > ?x ex:property ?y . > *LET* (?helper1 := ex:function1(?y)) . > *LET* (?helper2 := ex:function2(?helper1)) . > *LET* (?r := ex:function3(?helper2)) . > } > > The LET keyword has solved both problems nicely and in the most general > way, and would make project expressions superfluous. > > I would appreciate pointers to the discussions that led to the decision > to not support Assignments at this stage. > > Thanks > Holger > > PS: For a parallel thread on jena-dev (with Andy's response), see > > http://tech.groups.yahoo.com/group/jena-dev/message/41903
Received on Wednesday, 6 April 2011 15:28:34 UTC