summaryrefslogtreecommitdiff
path: root/src/libtracker-data/tracker-data-manager.c
diff options
context:
space:
mode:
authorPhilip Van Hoof <philip@codeminded.be>2011-09-13 13:35:16 +0200
committerJürg Billeter <j@bitron.ch>2011-09-13 14:31:10 +0200
commit9eabf6a15014219565ef318af804ef7ac5d156a4 (patch)
treeb2ee576d92a68bd02d9c0ddbace0213da596d4ca /src/libtracker-data/tracker-data-manager.c
parenta21d497f621796c5cbded31778f084ab8330f67f (diff)
downloadtracker-9eabf6a15014219565ef318af804ef7ac5d156a4.tar.gz
libtracker-data: Support for removing rdfs:subPropertyOf
Fixes NB#281335.
Diffstat (limited to 'src/libtracker-data/tracker-data-manager.c')
-rw-r--r--src/libtracker-data/tracker-data-manager.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 020c56c3c..487a6ad68 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -1393,6 +1393,7 @@ check_for_deleted_super_properties (TrackerProperty *property,
GError **error)
{
TrackerProperty **last_super_properties;
+ GList *to_remove = NULL;
last_super_properties = tracker_property_get_last_super_properties (property);
@@ -1418,18 +1419,40 @@ check_for_deleted_super_properties (TrackerProperty *property,
}
if (!found) {
- const gchar *ontology_path = "Unknown";
- const gchar *subject = tracker_property_get_uri (property);
-
- handle_unsupported_ontology_change (ontology_path,
- subject,
- "rdfs:subPropertyOf", "-", "-",
- error);
- return;
+ to_remove = g_list_prepend (to_remove, last_super_property);
}
last_super_properties++;
}
+
+ if (to_remove) {
+ GList *copy = to_remove;
+
+ while (copy) {
+ GError *n_error = NULL;
+ TrackerProperty *prop_to_remove = copy->data;
+ const gchar *object = tracker_property_get_uri (prop_to_remove);
+ const gchar *subject = tracker_property_get_uri (property);
+
+ tracker_property_del_super_property (property, prop_to_remove);
+
+ tracker_data_delete_statement (NULL, subject,
+ RDFS_PREFIX "subPropertyOf",
+ object, &n_error);
+
+ if (!n_error) {
+ tracker_data_update_buffer_flush (&n_error);
+ }
+
+ if (n_error) {
+ g_propagate_error (error, n_error);
+ return;
+ }
+
+ copy = copy->next;
+ }
+ g_list_free (to_remove);
+ }
}
static void