Status of work on BIND

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 UTC