## SPARQL query builder

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;

      /* Initialize GLib type system */
      g_type_init ();

      /* 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" .
    }