Broken FILTER processing in versioning query API

0 views
Skip to first unread message

Rubén Navarro Piris

unread,
Dec 5, 2016, 12:54:29 PM12/5/16
to Stardog
Hi!

I found an error in the processing of a FILTER in the Versioning API. Given the following query files:

$ cat queryS.sparql
PREFIX vcs: <tag:stardog:api:versioning:>

SELECT DISTINCT ?commit ?g ?s WHERE {
  ?commit a vcs:Version ;       prov:generatedAtTime ?date ;       vcs:updates ?up .  ?up vcs:graph ?g .
  FILTER (?g IN (<urn:g>)) .
  OPTIONAL {       ?old a vcs:Version .       ?commit (prov:wasRevisionOf)+ ?old .     }
  ?up (vcs:additions|vcs:removals) ?delta .
  GRAPH ?delta {     ?s ?p ?o .
    FILTER (?s IN (<urn:s>))
    #FILTER (?o IN (<urn:o>))
    #FILTER ( (?s IN (<urn:s>))  || ?o IN (<urn:o>)))
  }
}

$ cat queryO.sparql
PREFIX vcs: <tag:stardog:api:versioning:>

SELECT DISTINCT ?commit ?g ?s WHERE {
  ?commit a vcs:Version ;       prov:generatedAtTime ?date ;       vcs:updates ?up .  ?up vcs:graph ?g .
  FILTER (?g IN (<urn:g>)) .
  OPTIONAL {       ?old a vcs:Version .       ?commit (prov:wasRevisionOf)+ ?old .     }
  ?up (vcs:additions|vcs:removals) ?delta .
  GRAPH ?delta {     ?s ?p ?o .
    #FILTER (?s IN (<urn:s>))
    FILTER (?o IN (<urn:o>))
    #FILTER ( (?s IN (<urn:s>))  || ?o IN (<urn:o>)))
  }
}

$ cat querySO.sparql
PREFIX vcs: <tag:stardog:api:versioning:>

SELECT DISTINCT ?commit ?g ?s WHERE {
  ?commit a vcs:Version ;       prov:generatedAtTime ?date ;       vcs:updates ?up .  ?up vcs:graph ?g .
  FILTER (?g IN (<urn:g>)) .
  OPTIONAL {       ?old a vcs:Version .       ?commit (prov:wasRevisionOf)+ ?old .     }
  ?up (vcs:additions|vcs:removals) ?delta .
  GRAPH ?delta {     ?s ?p ?o .
    #FILTER (?s IN (<urn:s>))
    #FILTER (?o IN (<urn:o>))
    FILTER ( (?s IN (<urn:s>))  || (?o IN (<urn:o>)))
  }
}

$ cat insert.sparql
INSERT DATA {GRAPH <urn:g> {<urn:s> <urn:p> <urn:o>}}


when executing the following steps, which create a database ('stardog'), execute the 'insert.sparql' update and execute all query files afterwards:

$ stardog-admin db create -o versioning.enabled=true -n stardog
Successfully created database 'stardog'.

$ stardog vcs commit --query insert.sparql -m "Insert triple" stardog
Executing query from file: insert.sparql

$ stardog vcs query stardog queryS.sparql
+-------------------------------------------------------------------------+-------+-------+
|                                 commit                                  |   g   |   s   |
+-------------------------------------------------------------------------+-------+-------+
| tag:stardog:api:versioning:version:7e7679a5-7fe9-404a-ba74-fe146ee01225 | urn:g | urn:s |
+-------------------------------------------------------------------------+-------+-------+

Query returned 1 results in 00:00:00.122

$ stardog vcs query stardog queryO.sparql
+-------------------------------------------------------------------------+-------+-------+
|                                 commit                                  |   g   |   s   |
+-------------------------------------------------------------------------+-------+-------+
| tag:stardog:api:versioning:version:7e7679a5-7fe9-404a-ba74-fe146ee01225 | urn:g | urn:s |
+-------------------------------------------------------------------------+-------+-------+

Query returned 1 results in 00:00:00.108

$ stardog vcs query stardog querySO.sparql
+--------+-------+-------+
| commit |   g   |   s   |
+--------+-------+-------+
+--------+-------+-------+

Query returned 0 results in 00:00:00.091


it can be observed, that the querySO.sparql fails.
This is a bad behaviour, since if 'FILTER (?s IN (<urn:s>))' and 'FILTER (?o IN (<urn:o>))' work, 'FILTER ( (?s IN (<urn:s>))  || ?o IN (<urn:o>)))' should (according to SPARQL algebra) work also.

Cheers!

Ruben 

Evren Sirin

unread,
Dec 7, 2016, 1:37:13 PM12/7/16
to Stardog
This was a general query answering problem not restricted to
versioning. It is fixed in the 4.2.1 release.

Best,
Evren
> --
> -- --
> You received this message because you are subscribed to the C&P "Stardog"
> group.
> To post to this group, send email to sta...@clarkparsia.com
> To unsubscribe from this group, send email to
> stardog+u...@clarkparsia.com
> For more options, visit this group at
> http://groups.google.com/a/clarkparsia.com/group/stardog?hl=en
Reply all
Reply to author
Forward
0 new messages