diff options
Diffstat (limited to 'docs/tools/ttl_loader.c')
-rw-r--r-- | docs/tools/ttl_loader.c | 137 |
1 files changed, 26 insertions, 111 deletions
diff --git a/docs/tools/ttl_loader.c b/docs/tools/ttl_loader.c index 92a518ba0..4f882d077 100644 --- a/docs/tools/ttl_loader.c +++ b/docs/tools/ttl_loader.c @@ -336,13 +336,11 @@ load_description (OntologyDescription *desc, } } - Ontology * -ttl_loader_load_ontology (const gchar *ttl_file) +ttl_loader_new_ontology (void) { Ontology *ontology; - g_debug ("Loading ontology... %s\n", ttl_file); ontology = g_new0 (Ontology, 1); ontology->classes = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -356,138 +354,55 @@ ttl_loader_load_ontology (const gchar *ttl_file) ontology->prefixes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - - if (ttl_file) { - TrackerTurtleReader *reader; - GError *error = NULL; - GFile *file = g_file_new_for_path (ttl_file); - - reader = tracker_turtle_reader_new (file, NULL); - g_object_unref (file); - - 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; } -static GList * -get_ontology_files (GFile *dir) +void +ttl_loader_load_ontology (Ontology *ontology, + GFile *ttl_file) { - GFileEnumerator *enumerator; - GFileInfo *info; - GList *files; - const gchar *name; - - enumerator = g_file_enumerate_children (dir, - G_FILE_ATTRIBUTE_STANDARD_NAME, - G_FILE_QUERY_INFO_NONE, - NULL, NULL); - - if (!enumerator) { - return NULL; - } - - files = NULL; + TrackerTurtleReader *reader; + GError *error = NULL; - while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { - name = g_file_info_get_name (info); + g_return_if_fail (G_IS_FILE (ttl_file)); - if (g_str_has_suffix (name, ".ontology")) { - files = g_list_insert_sorted (files, g_strdup (name), - (GCompareFunc) g_strcmp0); - } + reader = tracker_turtle_reader_new (ttl_file, NULL); - g_object_unref (info); + 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 (enumerator); + g_object_unref (reader); - return files; + if (error) { + g_message ("Turtle parse error: %s", error->message); + g_error_free (error); + } } -Ontology * -ttl_loader_load_ontology_dir (const gchar *ttl_dir) +void +ttl_loader_load_prefix_from_description (Ontology *ontology, + OntologyDescription *description) { - GFile *dir = g_file_new_for_path (ttl_dir); - Ontology *ontology; - GList *files, *f; - - 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); - ontology->prefixes = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, g_free); - - files = get_ontology_files (dir); - g_object_unref (dir); - - for (f = files; f; f = f->next) { - TrackerTurtleReader *reader; - GError *error = NULL; - gchar *ttl_file; - GFile *file; - - ttl_file = g_build_filename (ttl_dir, f->data, NULL); - file = g_file_new_for_path (ttl_file); - reader = tracker_turtle_reader_new (file, NULL); - g_object_unref (file); - g_free (ttl_file); - - 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 parser error: %s", error->message); - g_error_free (error); - break; - } + if (!g_hash_table_lookup (ontology->prefixes, description->baseUrl)) { + g_hash_table_insert (ontology->prefixes, + g_strdup (description->baseUrl), + g_strdup (description->localPrefix)); } - - return ontology; } OntologyDescription * -ttl_loader_load_description (const gchar *filename) +ttl_loader_load_description (GFile *file) { OntologyDescription *desc; TrackerTurtleReader *reader; GError *error = NULL; - GFile *file; desc = ttl_model_description_new (); - - file = g_file_new_for_path (filename); reader = tracker_turtle_reader_new (file, NULL); - g_object_unref (file); while (error == NULL && tracker_turtle_reader_next (reader, &error)) { load_description (desc, |