[tracker/sam/ontology-docs: 15/25] docs: Fix cross references in ontology docs
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/sam/ontology-docs: 15/25] docs: Fix cross references in ontology docs
- Date: Fri, 17 Apr 2020 00:48:17 +0000 (UTC)
commit ee4eb8134b8fbde7b48f8f4f44f49ffdb6384a29
Author: Sam Thursfield <sam afuera me uk>
Date: Sun Apr 12 20:57:21 2020 +0200
docs: Fix cross references in ontology docs
We didn't have all the prefixes available so we couldn't always resolve
them. Now we use the Turtle @prefix statements to ensure that we do.
docs/tools/ttl2xml.c | 14 ++++---------
docs/tools/ttl_loader.c | 31 ++++++++++++-----------------
src/libtracker-data/tracker-turtle-reader.c | 8 ++++++++
src/libtracker-data/tracker-turtle-reader.h | 2 ++
4 files changed, 27 insertions(+), 28 deletions(-)
---
diff --git a/docs/tools/ttl2xml.c b/docs/tools/ttl2xml.c
index bc6ab3a1c..3089aa1a8 100644
--- a/docs/tools/ttl2xml.c
+++ b/docs/tools/ttl2xml.c
@@ -104,7 +104,6 @@ gint
main (gint argc, gchar **argv)
{
GOptionContext *context;
- Ontology *ontology = NULL;
OntologyDescription *description = NULL;
GList *description_files, *l;
g_autoptr(GFile) ontology_file = NULL, output_file = NULL;
@@ -146,10 +145,8 @@ main (gint argc, gchar **argv)
g_mkdir_with_parents (path, 0755);
g_free (path);
- ontology = ttl_loader_new_ontology ();
-
for (l = description_files; l; l = l->next) {
- Ontology *file_ontology = NULL;
+ Ontology *ontology = NULL;
g_autoptr(GFile) ttl_file = NULL, ttl_output_file = NULL;
gchar *filename;
@@ -160,20 +157,17 @@ main (gint argc, gchar **argv)
ttl_output_file = g_file_get_child (output_file, filename);
g_free (filename);
- file_ontology = ttl_loader_new_ontology ();
+ ontology = ttl_loader_new_ontology ();
ttl_loader_load_ontology (ontology, ttl_file);
- ttl_loader_load_ontology (file_ontology, ttl_file);
- ttl_loader_load_prefix_from_description (ontology, description);
- ttl_xml_print (description, file_ontology, ttl_output_file, description_dir);
+ ttl_xml_print (description, ontology, ttl_output_file, description_dir);
- ttl_loader_free_ontology (file_ontology);
+ ttl_loader_free_ontology (ontology);
ttl_loader_free_description (description);
}
g_list_free_full (description_files, (GDestroyNotify) g_object_unref);
- ttl_loader_free_ontology (ontology);
g_option_context_free (context);
return 0;
diff --git a/docs/tools/ttl_loader.c b/docs/tools/ttl_loader.c
index 6cd336d35..103f04e26 100644
--- a/docs/tools/ttl_loader.c
+++ b/docs/tools/ttl_loader.c
@@ -42,7 +42,6 @@
#define TRACKER_NOTIFY TRACKER_NS "notify"
#define TRACKER_FTS_INDEXED TRACKER_NS "fulltextIndexed"
#define TRACKER_FTS_WEIGHT TRACKER_NS "weight"
-#define TRACKER_PREFIX TRACKER_NS "prefix"
#define TRACKER_DEPRECATED TRACKER_NS "deprecated"
/* Ontology description */
@@ -168,12 +167,6 @@ load_in_memory (Ontology *ontology,
prop->weight = g_strdup (turtle_object);
- } else if (!g_strcmp0 (turtle_predicate, TRACKER_PREFIX)) {
- /* A tracker:prefix on a tracker:Namespace */
- g_hash_table_insert (ontology->prefixes,
- g_strdup (turtle_subject),
- g_strdup (turtle_object));
-
} else if (!g_strcmp0 (turtle_predicate, RDFS_COMMENT)) {
OntologyClass *klass;
OntologyProperty *prop;
@@ -364,6 +357,8 @@ ttl_loader_load_ontology (Ontology *ontology,
{
TrackerTurtleReader *reader;
const gchar *subject, *predicate, *object;
+ const gchar *base_url, *prefix;
+ GHashTableIter iter;
GError *error = NULL;
g_return_if_fail (G_IS_FILE (ttl_file));
@@ -377,6 +372,17 @@ ttl_loader_load_ontology (Ontology *ontology,
load_in_memory (ontology, subject, predicate, object);
}
+ g_hash_table_iter_init (&iter, tracker_turtle_reader_get_prefixes (reader));
+ while (g_hash_table_iter_next (&iter, (gpointer *) &prefix, (gpointer *) &base_url)) {
+ gchar *prefix_no_colon;
+
+ prefix_no_colon = g_strdup (prefix);
+ if (strrchr (prefix_no_colon, ':'))
+ *strrchr (prefix_no_colon, ':') = '\0';
+
+ g_hash_table_insert (ontology->prefixes, g_strdup (base_url), prefix_no_colon);
+ }
+
g_clear_object (&reader);
if (error) {
@@ -385,17 +391,6 @@ ttl_loader_load_ontology (Ontology *ontology,
}
}
-void
-ttl_loader_load_prefix_from_description (Ontology *ontology,
- OntologyDescription *description)
-{
- if (!g_hash_table_lookup (ontology->prefixes, description->baseUrl)) {
- g_hash_table_insert (ontology->prefixes,
- g_strdup (description->baseUrl),
- g_strdup (description->localPrefix));
- }
-}
-
OntologyDescription *
ttl_loader_load_description (GFile *file)
{
diff --git a/src/libtracker-data/tracker-turtle-reader.c b/src/libtracker-data/tracker-turtle-reader.c
index 28725725f..545d95475 100644
--- a/src/libtracker-data/tracker-turtle-reader.c
+++ b/src/libtracker-data/tracker-turtle-reader.c
@@ -678,3 +678,11 @@ tracker_turtle_reader_next (TrackerTurtleReader *reader,
return TRUE;
}
+
+GHashTable *
+tracker_turtle_reader_get_prefixes (TrackerTurtleReader *reader)
+{
+ g_return_val_if_fail (TRACKER_IS_TURTLE_READER (reader), FALSE);
+
+ return reader->prefixes;
+}
diff --git a/src/libtracker-data/tracker-turtle-reader.h b/src/libtracker-data/tracker-turtle-reader.h
index d7c8c841b..892d2c46a 100644
--- a/src/libtracker-data/tracker-turtle-reader.h
+++ b/src/libtracker-data/tracker-turtle-reader.h
@@ -41,4 +41,6 @@ gboolean tracker_turtle_reader_next (TrackerTurtleReader *reader,
gboolean *object_is_uri,
GError **error);
+GHashTable *tracker_turtle_reader_get_prefixes (TrackerTurtleReader *reader);
+
#endif /* __TRACKER_TURTLE_READER_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]