The Tracker SPARQL library provides an easy and secure way of creating SPARQL queries with the proper syntax. This is achieved using the TrackerSparqlBuilder object.
#include <tracker-sparql.h> int main (int argc, char **argv) { TrackerSparqlBuilder *builder; const gchar *iri = "urn:example:0001"; const gchar *query_str; time_t now; /* Create builder */ builder =tracker_sparql_builder_new_update
(); /* Insert new data */tracker_sparql_builder_insert_open
(builder, NULL);tracker_sparql_builder_subject_iri
(builder, iri);tracker_sparql_builder_predicate
(builder, "a");tracker_sparql_builder_object
(builder, "nie:DataObject");tracker_sparql_builder_object
(builder, "nfo:FileDataObject"); now = time (NULL);tracker_sparql_builder_predicate
(builder, "nfo:fileLastModified");tracker_sparql_builder_object_date
(builder, &now);tracker_sparql_builder_insert_close
(builder); /* Get query as string. Do NOT g_free() the resulting string! */ query_str =tracker_sparql_builder_get_result
(builder); /* Print it */ g_print ("Generated SPARQL query: '%s'\n", query_str); /* Once builder no longer needed, unref it. Note that after * this operation, you must not use the returned query result * any more */ g_object_unref (builder); return 0; }
The previous code will generate the following SPARQL query:
DROP GRAPH <urn:example:0001> INSERT INTO <urn:example:0001> { <urn:example:0001> a nie:DataObject , nfo:FileDataObject ; nfo:fileLastModified "2010-08-04T13:09:26Z" . }