Incorrect parameters passed to tracker:uri-is-parent() when querying default graph
Example:
$ tracker3 endpoint --database /tmp/trackertest --ontology nepomuk
Opening database at /tmp/trackertest…
New database created. Use the --dbus-service option to share this database on a message bus.
$ tracker3 sparql --database /tmp/trackertest -u -q 'INSERT DATA {
GRAPH <http://tracker.api.gnome.org/ontology/v3/tracker#Documents> {
<file:///test/target_file> rdf:type <http://www.w3.org/2000/01/rdf-schema#Resource> .
<file:///test/target_file> rdf:type <http://tracker.api.gnome.org/ontology/v3/nie#DataObject> .
<file:///test/target_file> rdf:type <http://tracker.api.gnome.org/ontology/v3/nfo#FileDataObject> .
<file:///test/target_file> nrl:modified "1" .
<file:///test/target_file> nrl:added "2020-07-30T18:11:44Z" .
}
}
INSERT DATA {
GRAPH <http://tracker.api.gnome.org/ontology/v3/tracker#FileSystem> {
<file:///test/target_file> rdf:type <http://www.w3.org/2000/01/rdf-schema#Resource> .
<file:///test/target_file> rdf:type <http://tracker.api.gnome.org/ontology/v3/nie#DataObject> .
<file:///test/target_file> rdf:type <http://tracker.api.gnome.org/ontology/v3/nfo#FileDataObject> .
<file:///test/target_file> tracker:extractorHash "68ed45b9b0d083e7a653148d53b2ebc21956ca68e03141845e4fa3ebcbb197e1" .
<file:///test/target_file> nfo:fileLastModified "2020-07-30T18:11:43Z" .
<file:///test/target_file> nfo:fileName "target_file" .
<file:///test/target_file> nfo:fileSize "36" .
<file:///test/target_file> nfo:belongsToContainer "urn:bnode:5553d870-5aaa-4e38-8c16-6e2791d89b88" .
<file:///test/target_file> nfo:fileLastAccessed "2020-07-30T18:11:43Z" .
<file:///test/target_file> nie:isPartOf <urn:bnode:5553d870-5aaa-4e38-8c16-6e2791d89b88> .
<file:///test/target_file> nie:dataSource <urn:bnode:5553d870-5aaa-4e38-8c16-6e2791d89b88> .
<file:///test/target_file> nie:byteSize "36" .
<file:///test/target_file> nie:url "file:///test/target_file" .
<file:///test/target_file> <http://purl.org/dc/elements/1.1/source> "urn:bnode:5553d870-5aaa-4e38-8c16-6e2791d89b88" .
<file:///test/target_file> <http://purl.org/dc/elements/1.1/date> "2020-07-30T18:11:43Z" .
<file:///test/target_file> nrl:modified "2" .
<file:///test/target_file> nrl:added "2020-07-30T18:11:44Z" .
}
}'
# This is incorrect (default graph)
$ tracker3 sparql --database /tmp/trackertest -q 'SELECT DISTINCT nie:url(?urn) WHERE { ?urn a nfo:FileDataObject; nie:url ?url . FILTER( tracker:uri-is-parent("file:///test/", ?url))}'
Results:
None
# But this is correct (specifying one graph)
$ tracker3 sparql --database /tmp/trackertest -q 'SELECT DISTINCT nie:url(?urn) FROM tracker:FileSystem WHERE { ?urn a nfo:FileDataObject; nie:url ?url . FILTER( tracker:uri-is-parent("file:///test/", ?url))}'
Results:
file:///test/target_file
# This does work correctly (default graph, different function)
$ tracker3 sparql --database /tmp/trackertest -q 'SELECT DISTINCT nie:url(?urn) WHERE { ?urn a nfo:FileDataObject; nie:url ?url . FILTER( tracker:uri-is-descendant("file:///temp/", ?url))}'
Results:
file:///test/target_file
This issue is causing problems in Tracker 3 port of nautilus. In some cases it produces an "Invalid argument" error inside the tracker:uri-is-parent function, in others just a wrong result.