Hi Laurent,

There is a bug ...

.. it's nothing to do with transactions
(try http://pastebin.com/LzDFqf0g for using with plain TDB and plain ARQ

... it's nothing to do with STRSTARTS

... it's every thing to do with the scope of ?g

The problem is the scope of ?g - it should only come into visibility when GRAPH ?g happens -

In { ?s ?p ?o  FILTER ( ... ?g ... ) }
then ?g is not bound so the filter is false.

TDB is right (but I'm not sure why) - it's ARQ that's wrong!


You possibly meant:

 SELECT ?g ?s ?p ?o WHERE {
      GRAPH ?g {
          ?s ?p ?o .
      }
      FILTER (STRSTARTS(str(?g), "https://plus.google.com825349613";))
 }

i.e the FILTER outside the GRAPH block, after ?g is set and in-scope.

Time to go and think ...

Thank you for the report

        Andy

On 02/11/11 09:54, Laurent Pellegrino wrote:
Hi all,

I have executing a SPARQL Select query which filters quadruples
according to a prefix in the graph value. The SPARQL query is the
following:

SELECT ?g ?s ?p ?o WHERE {
     GRAPH ?g {
         ?s ?p ?o .
         FILTER (STRSTARTS(str(?g), "https://plus.google.com/825349613";))
     }
}

It seems that the query works when it is executed with a basic Dataset
but when it is executed with a transactional Dataset it does not work.
Hereafter are the links to the tests (I use the last snapshots from
the apache repository):

1/ This is the test associated to the basic Dataset where the query works:
http://pastebin.com/raw.php?i=Atkt16Zk

the output is, as expected:

TestDatasetGraph.main() results are:
   https://plus.google.com/825349613/$1320226073388/$null

2/ The test which is not working (returns no result) and that uses a
transactional dataset:

http://pastebin.com/raw.php?i=vcCJV30P

Do I miss something in the second test or is it a bug?

Kind Regards,
Laurent

Reply via email to