static void feed_removed (FeedSettings *setts, gchar *id, TrackerSparqlConnection *tracker_client) { TrackerSparqlBuilder *sparql; sparql = tracker_sparql_builder_new_update (); tracker_sparql_builder_delete_open (sparql, NULL); tracker_sparql_builder_subject_iri (sparql, id); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_delete_close (sparql); tracker_sparql_builder_where_open (sparql); tracker_sparql_builder_subject_iri (sparql, id); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_where_close (sparql); tracker_sparql_connection_update (tracker_client, tracker_sparql_builder_get_result (sparql), 0, NULL, NULL); g_object_unref (sparql); }
void QTrackerDirectSyncResult::updateQuery() { if (!driverPrivate->driver->isOpen()) { setLastError(QSparqlError(driverPrivate->error, QSparqlError::ConnectionError)); return; } GError * error = 0; tracker_sparql_connection_update(driverPrivate->connection, query().toUtf8().constData(), qSparqlPriorityToGlib(options.priority()), 0, &error); if (error) { setLastError(QSparqlError(QString::fromUtf8(error->message), errorCodeToType(error->code), error->code)); g_error_free(error); qWarning() << "QTrackerDirectSyncResult:" << lastError() << query(); } }
/* If a reset is requested, we will remove from the store all items previously * inserted by the tracker-miner-applications, this is: * (a) all elements which are nfo:softwareIcon of a given nfo:Software * (b) all nfo:Software in our graph (includes both applications and maemo applets) * (c) all elements which are nfo:softwareCategoryIcon of a given nfo:SoftwareCategory * (d) all nfo:SoftwareCategory in our graph */ static void miner_applications_reset (TrackerMiner *miner) { GError *error = NULL; TrackerSparqlBuilder *sparql; sparql = tracker_sparql_builder_new_update (); /* (a) all elements which are nfo:softwareIcon of a given nfo:Software */ tracker_sparql_builder_delete_open (sparql, TRACKER_OWN_GRAPH_URN); tracker_sparql_builder_subject_variable (sparql, "icon"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_delete_close (sparql); tracker_sparql_builder_where_open (sparql); tracker_sparql_builder_subject_variable (sparql, "software"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "nfo:Software"); tracker_sparql_builder_subject_variable (sparql, "icon"); tracker_sparql_builder_predicate (sparql, "nfo:softwareIcon"); tracker_sparql_builder_object_variable (sparql, "software"); tracker_sparql_builder_where_close (sparql); /* (b) all nfo:Software in our graph (includes both applications and maemo applets) */ tracker_sparql_builder_delete_open (sparql, TRACKER_OWN_GRAPH_URN); tracker_sparql_builder_subject_variable (sparql, "software"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_delete_close (sparql); tracker_sparql_builder_where_open (sparql); tracker_sparql_builder_subject_variable (sparql, "software"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "nfo:Software"); tracker_sparql_builder_where_close (sparql); /* (c) all elements which are nfo:softwareCategoryIcon of a given nfo:SoftwareCategory */ tracker_sparql_builder_delete_open (sparql, TRACKER_OWN_GRAPH_URN); tracker_sparql_builder_subject_variable (sparql, "icon"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_delete_close (sparql); tracker_sparql_builder_where_open (sparql); tracker_sparql_builder_subject_variable (sparql, "category"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "nfo:SoftwareCategory"); tracker_sparql_builder_subject_variable (sparql, "icon"); tracker_sparql_builder_predicate (sparql, "nfo:softwareCategoryIcon"); tracker_sparql_builder_object_variable (sparql, "category"); tracker_sparql_builder_where_close (sparql); /* (d) all nfo:SoftwareCategory in our graph */ tracker_sparql_builder_delete_open (sparql, TRACKER_OWN_GRAPH_URN); tracker_sparql_builder_subject_variable (sparql, "category"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "rdfs:Resource"); tracker_sparql_builder_delete_close (sparql); tracker_sparql_builder_where_open (sparql); tracker_sparql_builder_subject_variable (sparql, "category"); tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "nfo:SoftwareCategory"); tracker_sparql_builder_where_close (sparql); /* Execute a sync update, we don't want the apps miner to start before * we finish this. */ tracker_sparql_connection_update (tracker_miner_get_connection (miner), tracker_sparql_builder_get_result (sparql), G_PRIORITY_HIGH, NULL, &error); if (error) { /* Some error happened performing the query, not good */ g_critical ("Couldn't reset mined applications: %s", error ? error->message : "unknown error"); g_error_free (error); } g_object_unref (sparql); }
static void feed_saved (FeedSettings *setts, gchar *sparql, TrackerSparqlConnection *tracker_client) { tracker_sparql_connection_update (tracker_client, sparql, 0, NULL, NULL); }
gint main (gint argc, gchar **argv) { GTimer *array_t, *update_t; g_type_init (); connection = tracker_sparql_connection_get (NULL, NULL); g_print ("First run (first update then array)\n"); tracker_sparql_connection_update (connection, "DELETE { ?r a rdfs:Resource } WHERE { ?r nie:title '" TEST_STR "' }", 0, NULL, NULL); update_t = g_timer_new (); test_tracker_sparql_update_async (); g_timer_stop (update_t); tracker_sparql_connection_update (connection, "DELETE { ?r a rdfs:Resource } WHERE { ?r nie:title '" TEST_STR "' }", 0, NULL, NULL); array_t = g_timer_new (); test_tracker_sparql_update_array_async (); g_timer_stop (array_t); tracker_sparql_connection_update (connection, "DELETE { ?r a rdfs:Resource } WHERE { ?r nie:title '" TEST_STR "' }", 0, NULL, NULL); g_print ("Array: %f, Update: %f\n", g_timer_elapsed (array_t, NULL), g_timer_elapsed (update_t, NULL)); g_print ("Reversing run (first array then update)\n"); g_timer_destroy (array_t); g_timer_destroy (update_t); array_t = g_timer_new (); test_tracker_sparql_update_array_async (); g_timer_stop (array_t); tracker_sparql_connection_update (connection, "DELETE { ?r a rdfs:Resource } WHERE { ?r nie:title '" TEST_STR "' }", 0, NULL, NULL); update_t = g_timer_new (); test_tracker_sparql_update_async (); g_timer_stop (update_t); tracker_sparql_connection_update (connection, "DELETE { ?r a rdfs:Resource } WHERE { ?r nie:title '" TEST_STR "' }", 0, NULL, NULL); g_print ("Array: %f, Update: %f\n", g_timer_elapsed (array_t, NULL), g_timer_elapsed (update_t, NULL)); g_timer_destroy (array_t); g_timer_destroy (update_t); g_object_unref (connection); return 0; }
int main (int argc, char **argv) { gchar *log_filename; GMainLoop *loop; GOptionContext *context; TrackerMinerRSS *miner; GError *error = NULL; const gchar *error_message; g_type_init(); setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); tzset (); /* Translators: this messagge will apper immediately after the * usage string - Usage: COMMAND <THIS_MESSAGE> */ context = g_option_context_new (_("- start the feeds indexer")); g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, NULL); if ((add_feed && !title) || (!add_feed && title)) { error_message = _("Adding a feed requires --add-feed and --title"); } else { error_message = NULL; } if (error_message) { gchar *help; g_printerr ("%s\n\n", error_message); help = g_option_context_get_help (context, TRUE, NULL); g_option_context_free (context); g_printerr ("%s", help); g_free (help); return EXIT_FAILURE; } g_option_context_free (context); /* Command line stuff doesn't use logging, so we're using g_print*() */ if (add_feed && title) { TrackerSparqlConnection *connection; const gchar *query; g_print ("Adding feed:\n" " title:'%s'\n" " url:'%s'\n", title, add_feed); connection = tracker_sparql_connection_get (NULL, &error); if (!connection) { g_printerr ("%s: %s\n", _("Could not establish a connection to Tracker"), error ? error->message : _("No error given")); g_clear_error (&error); return EXIT_FAILURE; } /* FIXME: Make interval configurable */ query = g_strdup_printf ("INSERT {" " _:FeedSettings a mfo:FeedSettings ;" " mfo:updateInterval 20 ." " _:Feed a nie:DataObject, mfo:FeedChannel ;" " mfo:feedSettings _:FeedSettings ;" " nie:url \"%s\" ;" " nie:title \"%s\" . " "}", add_feed, title); tracker_sparql_connection_update (connection, query, G_PRIORITY_DEFAULT, NULL, &error); if (error) { g_printerr ("%s, %s\n", _("Could not add feed"), error->message); g_error_free (error); g_object_unref (connection); return EXIT_FAILURE; } g_print ("Done\n"); return EXIT_SUCCESS; } tracker_log_init (verbosity, &log_filename); if (log_filename != NULL) { g_message ("Using log file:'%s'", log_filename); g_free (log_filename); } miner = tracker_miner_rss_new (&error); if (!miner) { g_critical ("Could not create new RSS miner: '%s', exiting...\n", error ? error->message : "unknown error"); return EXIT_FAILURE; } tracker_miner_start (TRACKER_MINER (miner)); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); tracker_log_shutdown (); g_main_loop_unref (loop); g_object_unref (miner); return EXIT_SUCCESS; }