Rob Vesse wrote:
> Yes one possibility that me and Andy raised in that discussion was the
> use of the following:
> 
> SELECT DISTINCT ?g WHERE { GRAPH ?g { } }
> 
> Since GRAPH ?g is defined as an iteration over all graphs in the dataset
> (which may of course be modified by the presence of FROM and FROM NAMED)
> and the empty graph pattern returns a single empty solution (i.e. always
> matches) then on paper at least this query should do the same job and be
> much more performant.  Whether this query works may vary depending on
> how accurately an engine actually implements the SPARQL spec because the
> whole dataset/GRAPH interaction is one of the areas prone to ambiguities
> in the spec and differences of opinion between implementers

Indeed, the optimization might already be there... Sarven, could you try to see
if SELECT DISTINCT ?g { GRAPH ?g { } } gives you what you want, faster?


qparse --print quad --explain "SELECT DISTINCT ?g { GRAPH ?g { ?s ?p ?o } }"
SELECT DISTINCT  ?g
WHERE
  { GRAPH ?g
      { ?s ?p ?o }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(distinct
  (project (?g)
    (quadpattern (quad ?g ?s ?p ?o))))
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(distinct
  (project (?g)
    (graph ?g
      (bgp (triple ?s ?p ?o)))))



qparse --print quad --explain "SELECT DISTINCT ?g { GRAPH ?g { } }"
SELECT DISTINCT  ?g
WHERE
  { GRAPH ?g
      {  }
  }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(distinct
  (project (?g)
    (datasetnames ?g)))
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(distinct
  (project (?g)
    (graph ?g
      (table unit))))


Paolo

Reply via email to