[tracker/journal] libtracker-data: Handle unsupported rdfs:subPropertyOf ontology changes
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/journal] libtracker-data: Handle unsupported rdfs:subPropertyOf ontology changes
- Date: Fri, 15 Oct 2010 09:44:17 +0000 (UTC)
commit 14f2ed898c6707763990f9ee53bba0b8e2b2b5bd
Author: Philip Van Hoof <philip codeminded be>
Date: Fri Oct 15 11:42:57 2010 +0200
libtracker-data: Handle unsupported rdfs:subPropertyOf ontology changes
Only detecting adding of a rdfs:subPropertyOf is supported. This patch
_doesn't_ detect removing of a rdfs:subPropertyOf!
src/libtracker-data/tracker-data-manager.c | 42 +++++++++++++++++++++++++--
1 files changed, 38 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 6f9fc39..a9a9869 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -753,6 +753,7 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
tracker_property_set_writeback (property, (strcmp (object, "true") == 0));
} else if (g_strcmp0 (predicate, RDFS_SUB_PROPERTY_OF) == 0) {
TrackerProperty *property, *super_property;
+ gboolean is_new;
property = tracker_ontologies_get_property_by_uri (subject);
if (property == NULL) {
@@ -760,14 +761,47 @@ tracker_data_ontology_load_statement (const gchar *ontology_path,
return;
}
- if (tracker_property_get_is_new (property) != in_update) {
+ is_new = tracker_property_get_is_new (property);
+ if (is_new != in_update) {
+ /* Detect unsupported ontology change (this needs a journal replay) */
+ if (in_update == TRUE && is_new == FALSE) {
+ TrackerProperty **super_properties = tracker_property_get_super_properties (property);
+ gboolean found = FALSE;
+
+ super_property = tracker_ontologies_get_property_by_uri (object);
+ if (super_property == NULL) {
+ g_critical ("%s: Unknown property %s", ontology_path, object);
+ return;
+ }
+
+ while (*super_properties) {
+ if (*super_properties == super_property) {
+ found = TRUE;
+ break;
+ }
+ super_properties++;
+ }
+
+ /* This doesn't detect removed rdfs:subPropertyOf situations, it
+ * only checks whether no new ones are being added */
+
+ if (found == FALSE) {
+ handle_unsupported_ontology_change (ontology_path,
+ tracker_property_get_name (property),
+ "rdfs:subPropertyOf",
+ "-",
+ tracker_property_get_name (super_property));
+ }
+ }
return;
}
- super_property = tracker_ontologies_get_property_by_uri (object);
if (super_property == NULL) {
- g_critical ("%s: Unknown property %s", ontology_path, object);
- return;
+ super_property = tracker_ontologies_get_property_by_uri (object);
+ if (super_property == NULL) {
+ g_critical ("%s: Unknown property %s", ontology_path, object);
+ return;
+ }
}
tracker_property_add_super_property (property, super_property);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]