W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2012

Status of work on BIND

From: Andy Seaborne <andy.seaborne@epimorphics.com>
Date: Thu, 21 Jun 2012 17:17:25 +0100
Message-ID: <4FE34915.7090402@epimorphics.com>
To: SPARQL Working Group <public-rdf-dawg@w3.org>
FYI / Update

I have been doing some work on the formal handling of BIND, but it is 
not finished yet.

Much of the descriptive text is correct but the way it is handled in the 
algebra translation isn't right - it needs to happen separately and 
before the general group graph pattern processing step.

The objective is that BIND adds a variable binding to the proceeding 
basic graph pattern + any path expression (i.e generalise BGP to include 
property paths).

With this, BIND adds to a basic building blocks of SPARQL evaluation and 
all other combination with graph patterns is by join.

	Andy

Approximate examples:

Example 1:

SELECT *
{
   ?s ?p ?o
   BIND ( ?o +1 AS ?o2 )
}
==>
   (extend ((?o2 (+ ?o 1)))
     (bgp (triple ?s ?p ?o)))


Example 2:

SELECT *
{
   { ?s ?p ?o }
   BIND ( ?o +1 AS ?o2 )
}
==>
SELECT *
{
   { ?s ?p ?o } # Sub-pattern
   {} ## Insert empty BGP for BIND to work on.
   BIND ( ?o +1 AS ?o2 )
}
==>
   (join
     (bgp (triple ?s ?p ?o))
     (extend ((?o2 (+ ?o 1))
       (table unit)
     )

Example 3:

SELECT *
{
   ?s ?p ?o
   ?s :p* ?v
   BIND ( ?o +1 AS ?o2 )
}
==>??
     (extend ((?o2 (+ ?o 1)))
       (join
         (bgp (triple ?s ?p ?o))
         (path ?s (path* :p) ?v)))
Received on Thursday, 21 June 2012 16:18:00 GMT

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