Re: [Tracker] tracker-sparql -q QUERY shows results while exact same query via SPARQL C API doesn't
- From: Sam Thursfield <ssssam gmail com>
- To: Frank Lahm <franklahm gmail com>
- Cc: tracker-list gnome org
- Subject: Re: [Tracker] tracker-sparql -q QUERY shows results while exact same query via SPARQL C API doesn't
- Date: Tue, 23 Oct 2012 11:58:28 +0100
Hi Frank
On Mon, Oct 22, 2012 at 10:38 AM, Frank Lahm <franklahm gmail com> wrote:
Hi,
is there anything wrong with this SPARQL query
"SELECT ?url WHERE { ?f nie:url ?url . ?f nfo:fileName ?name .
FILTER(fn:starts-with(?url, 'file:///Volumes/test/') && regex(?name,
'unti')) }"
which would explain why tracker-sparql -q QUERY shows results:
frank$ tracker-sparql -q "SELECT ?url WHERE { ?f nie:url ?url . ?f
nfo:fileName ?name . FILTER(fn:starts-with(?url,
'file:///Volumes/test/') && regex(?name, 'unti')) }"
Ergebnisse:
file:///Volumes/test/untitled%20text
...but the exact same query from a program [1] that uses the SPARQL C
API would give no result ?
I'm 100% sure it is the exact same query as I have a debug log
statement logging the query string it just a few lines before calling
tracker_sparql_connection_query():
One non-obvious thing that can change how queries are run is the
LOCALE / LC_COLLATE setting. If you have non-Western characters in
your results and your own C program is running in a different locale
to tracker-sparql for some reason, it might explain the issue. It
doesn't seem likely in this case though.
Oct 17 22:03:41.777237 afpd[27868] {spotlight_module.c:153}
(D5:Spotlight): sl_mod_start_search: SPARQL query:
"SELECT ?url WHERE { ?f nie:url ?url . ?f nfo:fileName ?name .
FILTER(fn:starts-with(?url, 'file:///Volumes/test/') && regex(?name,
'test')) }"
Other SPARQL queries like
"SELECT ?url WHERE { ?f nie:url ?url FILTER regex(?url, 'test')}"
work just fine from the program (and tracker-sparql). It seems as as
soon as I have FILTER expressions with more then one sub-expressions
(or more then one FILTER expression) I get this behaviour.
Unfortunately I can't seem to find a way to get Tracker to log debug
messages for the queries from the C program, the tracker-control
--set-log-verbosity=debug doesn't show me any query info at all (in
/root/.local/share/tracker/tracker-store.log).
I'm puzzled and would appreciate any pointers. Thanks!
By default libtracker-sparql uses direct access for read queries,
meaning that it loads the Tracker database in your application process
and executes the query there - therefore, the tracker-store logs won't
show any evidence of the access because the query didn't reach the
tracker-store process itself at all. Write queries always go over DBus
to the tracker-store process, so you should see logging information of
those.
I believe if you set TRACKER_VERBOSITY=3 in the environment of your C
program you'll see the logs of the queries that are being run
in-process.
I hope some of this helps
Sam
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]