Hi all,
I'm wondering if someone can help me check my understanding of how ARQ 
evaluates the following DAWG test query.  Output below using Fuseki 1.1.0 ( How 
do I check which version of ARQ is in this version of Fuseki?).   I'm wondering 
if in the first un-optimized algebra form, this amounts to a filter of the 
values for the given variables?  And, in the second are the values injected 
into the BGP, so that in effect the execution plan would essentially be the 
same as a UNION of two graph patterns with the constants bound?  If I'm not 
correct here, then how do these two patterns differ?

Thanks,
Tim


PREFIX  dc:   <http://purl.org/dc/elements/1.1/>
PREFIX  :     <http://example.org/book/>
PREFIX  ns:   <http://example.org/ns#>
SELECT  ?book ?title ?price
WHERE { ?book dc:title ?title . ?book ns:price ?price }
VALUES ( ?book ?title )
{
    ( UNDEF "SPARQL Tutorial" ) 
    ( :book2 UNDEF )
}

Algebra:
  1 (base <http://example/base/>
  2  (prefix ((dc: <http://purl.org/dc/elements/1.1/>)
  3            (: <http://example.org/book/>)
  4            (ns: <http://example.org/ns#>))
  5    (project (?book ?title ?price)
  6      (join
  7        (bgp
  8          (triple ?book dc:title ?title)
  9          (triple ?book ns:price ?price)
 10        )
 11        (table (vars ?book ?title)
 12          (row [?title "SPARQL Tutorial"])
 13          (row [?book :book2])
 14        )))))

With Optimizations:
  1 (base <http://example/base/>
  2  (prefix ((dc: <http://purl.org/dc/elements/1.1/>)
  3            (: <http://example.org/book/>)
  4            (ns: <http://example.org/ns#>))
  5    (project (?book ?title ?price)
  6      (sequence
  7        (table (vars ?book ?title)
  8          (row [?title "SPARQL Tutorial"])
  9          (row [?book :book2])
 10        )
 11        (bgp
 12          (triple ?book dc:title ?title)
 13          (triple ?book ns:price ?price)
 14        )))))

Reply via email to