Re: Missing LET (Assignment) in SPARQL 1.1

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