OntologyDescription * ttl_loader_load_description (const gchar *filename) { OntologyDescription *desc; TrackerTurtleReader *reader; GError *error = NULL; desc = ttl_model_description_new (); reader = tracker_turtle_reader_new (filename, NULL); while (error == NULL && tracker_turtle_reader_next (reader, &error)) { load_description (desc, tracker_turtle_reader_get_subject (reader), tracker_turtle_reader_get_predicate (reader), tracker_turtle_reader_get_object (reader)); } g_object_unref (reader); if (error) { g_message ("Turtle parse error: %s", error->message); g_error_free (error); } return desc; }
gint main (gint argc, gchar **argv) { GOptionContext *context; TrackerTurtleReader *reader; GError *error = NULL; g_type_init (); /* Translators: this messagge will apper immediately after the */ /* usage string - Usage: COMMAND [OPTION]... <THIS_MESSAGE> */ context = g_option_context_new ("- Validate a turtle file against the ontology"); /* Translators: this message will appear after the usage string */ /* and before the list of options. */ g_option_context_add_main_entries (context, entries, NULL); g_option_context_parse (context, &argc, &argv, NULL); if (!ontology_dir || !ttl_file) { gchar *help; g_printerr ("%s\n\n", "Ontology directory and turtle file are mandatory"); help = g_option_context_get_help (context, TRUE, NULL); g_option_context_free (context); g_printerr ("%s", help); g_free (help); return -1; } //"/home/ivan/devel/codethink/tracker-ssh/data/services" load_ontology_files (ontology_dir); reader = tracker_turtle_reader_new (ttl_file, NULL); while (error == NULL && tracker_turtle_reader_next (reader, &error)) { turtle_statement_handler (tracker_turtle_reader_get_subject (reader), tracker_turtle_reader_get_predicate (reader), tracker_turtle_reader_get_object (reader)); } g_object_unref (reader); if (error) { g_message ("Turtle parse error: %s", error->message); g_error_free (error); } if (!error_flag) { g_debug ("%s seems OK.", ttl_file); } return 0; }
static void load_ontology_files (const gchar *services_dir) { GList *files = NULL; GDir *services; const gchar *conf_file; GFile *f; gchar *dir_uri, *fullpath; gint counter = 0; f = g_file_new_for_path (services_dir); dir_uri = g_file_get_path (f); services = g_dir_open (dir_uri, 0, NULL); conf_file = g_dir_read_name (services); while (conf_file) { TrackerTurtleReader *reader; GError *error = NULL; if (!g_str_has_suffix (conf_file, "ontology")) { conf_file = g_dir_read_name (services); continue; } fullpath = g_build_filename (dir_uri, conf_file, NULL); reader = tracker_turtle_reader_new (fullpath, NULL); while (error == NULL && tracker_turtle_reader_next (reader, &error)) { turtle_load_ontology (tracker_turtle_reader_get_subject (reader), tracker_turtle_reader_get_predicate (reader), tracker_turtle_reader_get_object (reader)); } g_object_unref (reader); if (error) { g_message ("Turtle parse error: %s", error->message); g_error_free (error); } g_free (fullpath); counter += 1; conf_file = g_dir_read_name (services); } g_dir_close (services); g_list_foreach (files, (GFunc) g_free, NULL); g_object_unref (f); g_free (dir_uri); g_debug ("Loaded %d ontologies\n", counter); }
Ontology * ttl_loader_load_ontology (const gchar *ttl_file) { Ontology *ontology; ontology = g_new0 (Ontology, 1); ontology->classes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify)ttl_model_class_free); ontology->properties = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify)ttl_model_property_free); if (ttl_file) { TrackerTurtleReader *reader; GError *error = NULL; reader = tracker_turtle_reader_new (ttl_file, NULL); while (error == NULL && tracker_turtle_reader_next (reader, &error)) { load_in_memory (ontology, tracker_turtle_reader_get_subject (reader), tracker_turtle_reader_get_predicate (reader), tracker_turtle_reader_get_object (reader)); } g_object_unref (reader); if (error) { g_message ("Turtle parse error: %s", error->message); g_error_free (error); } } else { g_warning ("Unable to open '%s'", ttl_file); } return ontology; }