hi, after struggling with UNIX_FD (dbus type 'h') not really being
supported i swithed to JNA using libtracker-sparql (it's much easier
anyway...).

i however realized that the rdf datatypes do not work as expected (as far
as i understand tracker-cursor simply uses the first value_type for a
column and returns it for every row returned).

how to verify :

1. i added the following test to tests/libtracker-sparql/tracker-test.c

static void
test_tracker_sparql_cursor_types (void)
{
GError *error = NULL;

TrackerSparqlCursor *cursor1;
TrackerSparqlConnection *connection;

//const gchar* query = "SELECT ?o ?p WHERE {
<file:///home/turnguard/.local/share/applications/netbeans-7.4.desktop> ?p
?o  . }";
const gchar* query = "SELECT ?date WHERE {
<file:///home/turnguard/.local/share/applications/netbeans-7.4.desktop> <
http://www.tracker-project.org/ontologies/tracker#added> ?date .  } ORDER
BY ?date";
connection = tracker_sparql_connection_get (NULL, &error);
g_assert_no_error (error);

cursor1 = tracker_sparql_connection_query (connection, query, 0, &error);
g_assert_no_error (error);
gint n_columns = tracker_sparql_cursor_get_n_columns (cursor1);
g_print("query %s", query);
while (tracker_sparql_cursor_next (cursor1, NULL, NULL)) {
int i = 0;
for (i = 0; i < n_columns ; i++) {
g_print ("=>type of %s is %d ",
tracker_sparql_cursor_get_string(cursor1,i,NULL),(int)tracker_sparql_cursor_get_value_type
(cursor1, i));
}
g_print("\n");
}
g_object_unref(cursor1);
}

....
g_test_add_func
("/libtracker-sparql/tracker/test_tracker_sparql_cursor_types",
                 test_tracker_sparql_cursor_types);

2. replace <file://home/turnguard....> with a known entity that has a
tracker#added predicate

3. sudo make => ./tracker-test

4. using the first query i get 2 or 1 (depending on ?o ?p or ?p ?o) for the
date (tracker#added)

5. using the second query i get 5 for the value_type (correct)

i assume that the cursor takes the value_types of the first row it
encounters and takes these value_types for every following row. such
behaviour is suitable for the sql world but not for the sparql world. is it
really the "g_once_init_leave", can i simply delete g_once_init_leave
without sideeffects?

any pointer really appreciated.

wkr turnguard


| Jürgen Jakobitsch,
| Software Developer
| Semantic Web Company GmbH
| Mariahilfer Straße 70 / Neubaugasse 1, Top 8
| A - 1070 Wien, Austria
| Mob +43 676 62 12 710 | Fax +43.1.402 12 35 - 22

COMPANY INFORMATION
| web       : http://www.semantic-web.at/
| foaf      : http://company.semantic-web.at/person/juergen_jakobitsch
PERSONAL INFORMATION
| web       : http://www.turnguard.com
| foaf      : http://www.turnguard.com/turnguard
| g+        : https://plus.google.com/111233759991616358206/posts
| skype     : jakobitsch-punkt
| xmlns:tg  = "http://www.turnguard.com/turnguard#";


2014-04-18 22:17 GMT+02:00 Jürgen Jakobitsch <j.jakobit...@semantic-web.at>:

> philip, thanks for information.. i'll take a closer look at steroids1
> dbus...
>
> wkr turnguard
>
> | Jürgen Jakobitsch,
> | Software Developer
> | Semantic Web Company GmbH
> | Mariahilfer Straße 70 / Neubaugasse 1, Top 8
> | A - 1070 Wien, Austria
> | Mob +43 676 62 12 710 | Fax +43.1.402 12 35 - 22
>
> COMPANY INFORMATION
> | web       : http://www.semantic-web.at/
> | foaf      : http://company.semantic-web.at/person/juergen_jakobitsch
> PERSONAL INFORMATION
> | web       : http://www.turnguard.com
> | foaf      : http://www.turnguard.com/turnguard
> | g+        : https://plus.google.com/111233759991616358206/posts
> | skype     : jakobitsch-punkt
> | xmlns:tg  = "http://www.turnguard.com/turnguard#";
>
>
> 2014-04-18 22:04 GMT+02:00 Philip Van Hoof <phi...@codeminded.be>:
>
> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>>
>> Hi Jürgen,
>>
>> In that case you should use the Steroids1 DBus object which works by
>> passing file descriptors and pipe(). I'm guessing that in Java you can
>> use the type FileDescriptor to turn that to a InputStream.
>>
>>
>> https://git.gnome.org/browse/tracker/tree/src/tracker-store/tracker-steroids.vala
>>
>> Steroid1's protocol that goes over pipe()/vmsplice() already passes
>> the variable-names and column-types over.
>>
>> Usage of Resources1 is very slow and on top it's not really a
>> supported interface. Resources1 is actually only for the GraphUpdated
>> signal, which is the only officially supported interface that the DBus
>> object exports.
>>
>> The Steroids1 DBus object is going to stay and is used for write
>> queries and fallback for libtracker-sparql in case WAL direct access
>> mode can't be used.
>>
>> Kind regards,
>>
>> Philip
>>
>>
>> Jürgen Jakobitsch schreef op 18/04/2014 15:53:
>> > hi philipp,
>> >
>> > i'm currently using the dbus resource because i'm writing the
>> > openrdf repository in java and didn't want to got down the jni, jna
>> > road...
>> >
>> > i already have built in a switch in tracker-resource.vala, about
>> > here [1], testing the cursor.get_value_type, but the returned
>> > value_types are not totally correct. for some uris the value is 1
>> > for other uris the value type is 2... i'm gonna issue a bug report,
>> > as soon as i have verified, that i'm not doing something wrong..
>> > also the returned value_types are only 1 or 2.. there are not other
>> > values (like bnode, double, date...) although the returned string
>> > suggest they should be used..
>> >
>> > wkr turnguard
>> >
>> > [1]
>> >
>> https://git.gnome.org/browse/tracker/tree/src/tracker-store/tracker-resources.vala#n102
>> >
>> >  | Jürgen Jakobitsch, | Software Developer | Semantic Web Company
>> > GmbH | Mariahilfer Straße 70 / Neubaugasse 1, Top 8 | A - 1070
>> > Wien, Austria | Mob +43 676 62 12 710 | Fax +43.1.402 12 35 - 22
>> >
>> > COMPANY INFORMATION | web       : http://www.semantic-web.at/ |
>> > foaf      :
>> > http://company.semantic-web.at/person/juergen_jakobitsch PERSONAL
>> > INFORMATION | web       : http://www.turnguard.com | foaf      :
>> > http://www.turnguard.com/turnguard | g+        :
>> > https://plus.google.com/111233759991616358206/posts | skype     :
>> > jakobitsch-punkt | xmlns:tg  =
>> > "http://www.turnguard.com/turnguard#";
>> >
>> >
>> > 2014-04-18 11:32 GMT+02:00 Philip Van Hoof <phi...@codeminded.be>:
>> >
>> >
>> > get_value_type and get_variable_name:
>> >
>> >
>> >
>> https://git.gnome.org/browse/tracker/tree/src/libtracker-sparql/tracker-cursor.vala#n126
>> >
>> >
>> >
>> >
>> https://git.gnome.org/browse/tracker/tree/src/libtracker-sparql/tracker-cursor.vala#n139
>> >
>> >  You btw shouldn't use the DBus Resources1 object, but use
>> > libtracker-sparql instead.
>> >
>> >
>> > Ivan Frade schreef op 17/04/2014 20:14:
>> >>>> Hi Jürgen,
>> >>>>
>> >>>> Yes, tracker does not return bindingNames or types of the
>> >>>> resulting nodes. It assumes the client takes care of
>> >>>> interpreting the results of its query.
>> >>>>
>> >>>> A workaround would be to parse the SparQL in the wrapper and
>> >>>> add that information when translating the DBus result set to
>> >>>> the openrdf format. The binding Names can be added straight
>> >>>> forward from the SELECT of the query. The type information is
>> >>>> more complicated to deduce, based on the position in the
>> >>>> query and/or the rdfs:range of the properties (defined in the
>> >>>> ontology).
>> >>>>
>> >>>> Regards,
>> >>>>
>> >>>> Ivan
>> >>>>
>> >>>>
>> >>>> On Thu, Apr 17, 2014 at 10:11 AM, Jürgen Jakobitsch <
>> >>>> j.jakobit...@semantic-web.at> wrote:
>> >>>>
>> >>>>> hi,
>> >>>>>
>> >>>>> i'm currently developing an openrdf [1] repository
>> >>>>> implementation with a tracker-sparql backend via dbus. this
>> >>>>> will enable java developers to include tracker-sparql
>> >>>>> results in any application (or create a sparql endpoint)
>> >>>>> extremly easily. openrdf's api is quite common in the
>> >>>>> semweb community..
>> >>>>>
>> >>>>> everything is working very nice already  the only trouble
>> >>>>> i'm having is that i get a vector of vectors containing
>> >>>>> simple strings as a result object, meaning i need to find
>> >>>>> out types (literals, uris, bnodes, typed literals)..
>> >>>>>
>> >>>>> is there any known way to retrieve some more information in
>> >>>>> the results given via dbus? also bindingNames are
>> >>>>> missing...
>> >>>>>
>> >>>>> any pointer really appreciated wkr turnguard..
>> >>>>>
>> >>>>>
>> >>>>> [1] http://www.openrdf.org/
>> >>>>>
>> >>>>> | Jürgen Jakobitsch, | Software Developer | Semantic Web
>> >>>>> Company GmbH | Mariahilfer Straße 70 / Neubaugasse 1, Top 8
>> >>>>> | A - 1070 Wien, Austria | Mob +43 676 62 12 710 | Fax
>> >>>>> +43.1.402 12 35 - 22
>> >>>>>
>> >>>>> COMPANY INFORMATION | web       :
>> >>>>> http://www.semantic-web.at/ | foaf      :
>> >>>>> http://company.semantic-web.at/person/juergen_jakobitsch
>> >>>>> PERSONAL INFORMATION | web       : http://www.turnguard.com
>> >>>>> | foaf      : http://www.turnguard.com/turnguard | g+
>> >>>>> : https://plus.google.com/111233759991616358206/posts |
>> >>>>> skype     : jakobitsch-punkt | xmlns:tg  =
>> >>>>> "http://www.turnguard.com/turnguard#";
>> >>>>>
>> >>>>> _______________________________________________
>> >>>>> tracker-list mailing list tracker-list@gnome.org
>> >>>>> https://mail.gnome.org/mailman/listinfo/tracker-list
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> _______________________________________________ tracker-list
>> >>>> mailing list tracker-list@gnome.org
>> >>>> https://mail.gnome.org/mailman/listinfo/tracker-list
>> >>>>
>> >
>> >>
>> >
>> >
>> >
>> > _______________________________________________ tracker-list
>> > mailing list tracker-list@gnome.org
>> > https://mail.gnome.org/mailman/listinfo/tracker-list
>> >
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v2.0.20 (MingW32)
>> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>>
>> iQEcBAEBAgAGBQJTUYVcAAoJEEP2NSGEz4aD1eAH/j59ejV3/wkgPzUR22trrNOj
>> KqFBT1YRP9631NyZmphdP5q3giRnihBEjkLjF1P46eqOoO6zhRP8jo/qj64amHW8
>> nUZ96/21ZBPp0kNeKij5vjIq5SxrqSAh6n4e0VQTP/rpwm70OoCz9h/6yKskk9Ln
>> EUYIHb3b4T1YUPHleuJ2SkFNsDgx71MmT2nXvCzKxf2DSB9XGupOCysPPuPbxEBf
>> 4QofLlZmbyxiftz+Hb0g6PLFm0SFIAxGz1sWVVZHoxy7Ff2+xMrrFl3p+3ktlx6w
>> kZkqN7cEcqdzxzNqzqGlB7i67wIHfN3OtYMbhaZlt3UsfAsvKSRDbl/LONuilkM=
>> =D9Uo
>> -----END PGP SIGNATURE-----
>>
>
>
_______________________________________________
tracker-list mailing list
tracker-list@gnome.org
https://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to