[tracker/tracker-0.10] libtracker-extract: Support graph in tracker_xmp_apply_regions()
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/tracker-0.10] libtracker-extract: Support graph in tracker_xmp_apply_regions()
- Date: Thu, 8 Sep 2011 12:53:45 +0000 (UTC)
commit 3065aaa440724773b32795157ef7970494439b46
Author: Martyn Russell <martyn lanedo com>
Date: Tue Sep 6 17:34:41 2011 +0100
libtracker-extract: Support graph in tracker_xmp_apply_regions()
src/libtracker-extract/tracker-xmp.c | 39 ++++++++++++++++-----------
src/libtracker-extract/tracker-xmp.h | 1 +
src/tracker-extract/tracker-extract-jpeg.c | 2 +-
src/tracker-extract/tracker-extract-pdf.c | 2 +-
src/tracker-extract/tracker-extract-tiff.c | 2 +-
tests/libtracker-extract/tracker-test-xmp.c | 18 ++++++------
6 files changed, 36 insertions(+), 28 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-xmp.c b/src/libtracker-extract/tracker-xmp.c
index 0cc7611..796011e 100644
--- a/src/libtracker-extract/tracker-xmp.c
+++ b/src/libtracker-extract/tracker-xmp.c
@@ -1159,7 +1159,7 @@ tracker_xmp_apply (TrackerSparqlBuilder *preupdate,
}
if (data->regions) {
- tracker_xmp_apply_regions (preupdate, metadata, where, uri, data);
+ tracker_xmp_apply_regions (preupdate, metadata, graph, where, uri, data);
}
return TRUE;
@@ -1168,12 +1168,12 @@ tracker_xmp_apply (TrackerSparqlBuilder *preupdate,
gboolean
tracker_xmp_apply_regions (TrackerSparqlBuilder *preupdate,
TrackerSparqlBuilder *metadata,
+ const gchar *graph,
GString *where,
const gchar *uri,
TrackerXmpData *data)
{
GSList *iter;
- TrackerXmpRegion *region;
g_return_val_if_fail (TRACKER_SPARQL_IS_BUILDER (preupdate), FALSE);
g_return_val_if_fail (TRACKER_SPARQL_IS_BUILDER (preupdate), FALSE);
@@ -1185,19 +1185,20 @@ tracker_xmp_apply_regions (TrackerSparqlBuilder *preupdate,
}
for (iter = data->regions; iter != NULL; iter = iter->next) {
- gchar *reguuid;
+ TrackerXmpRegion *region;
+ gchar *uuid;
- reguuid = tracker_sparql_get_uuid_urn ();
region = (TrackerXmpRegion *) iter->data;
+ uuid = tracker_sparql_get_uuid_urn ();
- tracker_sparql_builder_predicate (metadata, "nfo:hasRegionOfInterest");
- tracker_sparql_builder_object_iri (metadata, reguuid);
-
- tracker_sparql_builder_insert_open (preupdate, NULL);
- tracker_sparql_builder_subject_iri (preupdate, reguuid);
+ tracker_sparql_builder_insert_open (preupdate, NULL);
+ if (graph) {
+ tracker_sparql_builder_graph_open (preupdate, graph);
+ }
- tracker_sparql_builder_predicate (preupdate, "a");
- tracker_sparql_builder_object (preupdate, "nfo:RegionOfInterest");
+ tracker_sparql_builder_subject_iri (preupdate, uuid);
+ tracker_sparql_builder_predicate (preupdate, "a");
+ tracker_sparql_builder_object (preupdate, "nfo:RegionOfInterest");
if (region->title) {
tracker_sparql_builder_predicate (preupdate, "nie:title");
@@ -1234,12 +1235,9 @@ tracker_xmp_apply_regions (TrackerSparqlBuilder *preupdate,
tracker_sparql_builder_object_unvalidated (preupdate, region->height);
}
-
- tracker_sparql_builder_insert_close (preupdate);
-
if (region->link_uri && region->link_class) {
tracker_sparql_builder_insert_open (preupdate, NULL);
- tracker_sparql_builder_subject_iri (preupdate, reguuid);
+ tracker_sparql_builder_subject_variable (preupdate, "region");
tracker_sparql_builder_predicate (preupdate, "nfo:roiRefersTo");
tracker_sparql_builder_object_iri (preupdate, region->link_uri);
tracker_sparql_builder_insert_close (preupdate);
@@ -1251,7 +1249,16 @@ tracker_xmp_apply_regions (TrackerSparqlBuilder *preupdate,
tracker_sparql_builder_where_close (preupdate);
}
- g_free (reguuid);
+ if (graph) {
+ tracker_sparql_builder_graph_close (preupdate);
+ }
+ tracker_sparql_builder_insert_close (preupdate);
+
+ /* Handle non-preupdate metadata */
+ tracker_sparql_builder_predicate (metadata, "nfo:hasRegionOfInterest");
+ tracker_sparql_builder_object_iri (metadata, uuid);
+
+ g_free (uuid);
}
return TRUE;
diff --git a/src/libtracker-extract/tracker-xmp.h b/src/libtracker-extract/tracker-xmp.h
index 23f7d9e..07de767 100644
--- a/src/libtracker-extract/tracker-xmp.h
+++ b/src/libtracker-extract/tracker-xmp.h
@@ -116,6 +116,7 @@ gboolean tracker_xmp_apply (TrackerSparqlBuilder *preupdate,
TrackerXmpData *data);
gboolean tracker_xmp_apply_regions (TrackerSparqlBuilder *preupdate,
TrackerSparqlBuilder *metadata,
+ const gchar *graph,
GString *where,
const gchar *uri,
TrackerXmpData *data);
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index b15fbe6..d52bdf9 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -419,7 +419,7 @@ extract_jpeg (const gchar *uri,
}
if (xd->regions) {
- tracker_xmp_apply_regions (preupdate, metadata, where, uri, xd);
+ tracker_xmp_apply_regions (preupdate, metadata, graph, where, uri, xd);
}
if (id->keywords) {
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index 19fd68d..8574c6f 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -577,7 +577,7 @@ extract_pdf (const gchar *uri,
}
if (xd->regions) {
- tracker_xmp_apply_regions (preupdate, metadata, where, uri, xd);
+ tracker_xmp_apply_regions (preupdate, metadata, graph, NULL, uri, xd);
}
tracker_xmp_free (xd);
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index c8da02c..29b1ea0 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -480,7 +480,7 @@ extract_tiff (const gchar *uri,
}
if (xd->regions) {
- tracker_xmp_apply_regions (preupdate, metadata, where, uri, xd);
+ tracker_xmp_apply_regions (preupdate, metadata, graph, NULL, uri, xd);
}
if (md.address || md.state || md.country || md.city ||
diff --git a/tests/libtracker-extract/tracker-test-xmp.c b/tests/libtracker-extract/tracker-test-xmp.c
index d4aaac0..edaee91 100644
--- a/tests/libtracker-extract/tracker-test-xmp.c
+++ b/tests/libtracker-extract/tracker-test-xmp.c
@@ -377,10 +377,10 @@ test_xmp_regions (void)
data = tracker_xmp_new (contents, size, "test://file");
- g_assert_cmpint (2, ==, g_list_length (data->regions));
+ g_assert_cmpint (2, ==, g_slist_length (data->regions));
/* Regions are stacked while parsing.*/
- region = g_list_nth_data (data->regions, 0);
+ region = g_slist_nth_data (data->regions, 0);
g_assert_cmpstr (region->x, ==, "0.51");
g_assert_cmpstr (region->y, ==, "0.51");
g_assert_cmpstr (region->width, ==, "0.01");
@@ -389,7 +389,7 @@ test_xmp_regions (void)
g_assert_cmpstr (region->title, ==, "Fido");
g_assert_cmpstr (region->description, ==, "Fido looks happy!");
- region = g_list_nth_data (data->regions, 1);
+ region = g_slist_nth_data (data->regions, 1);
g_assert_cmpstr (region->x, ==, "0.5");
g_assert_cmpstr (region->y, ==, "0.5");
g_assert_cmpstr (region->width, ==, "0.06");
@@ -420,9 +420,9 @@ test_xmp_regions_quill (void)
data = tracker_xmp_new (contents, size, "test://file");
- g_assert_cmpint (2, ==, g_list_length (data->regions));
+ g_assert_cmpint (2, ==, g_slist_length (data->regions));
- region = g_list_nth_data (data->regions, 0);
+ region = g_slist_nth_data (data->regions, 0);
g_assert_cmpstr (region->x, ==, "0.4");
g_assert_cmpstr (region->y, ==, "0.3");
g_assert_cmpstr (region->width, ==, "0.17");
@@ -432,7 +432,7 @@ test_xmp_regions_quill (void)
g_assert_cmpstr (region->link_class, ==, "nco:PersonContact");
g_assert_cmpstr (region->link_uri, ==, "urn:uuid:2");
- region = g_list_nth_data (data->regions, 1);
+ region = g_slist_nth_data (data->regions, 1);
g_assert_cmpstr (region->x, ==, "0.3");
g_assert_cmpstr (region->y, ==, "0.4");
g_assert_cmpstr (region->width, ==, "0.15");
@@ -463,10 +463,10 @@ test_xmp_regions_ns_prefix (void)
data = tracker_xmp_new (contents, size, "test://file");
- g_assert_cmpint (2, ==, g_list_length (data->regions));
+ g_assert_cmpint (2, ==, g_slist_length (data->regions));
/* Regions are stacked while parsing.*/
- region = g_list_nth_data (data->regions, 0);
+ region = g_slist_nth_data (data->regions, 0);
g_assert_cmpstr (region->x, ==, "0.51");
g_assert_cmpstr (region->y, ==, "0.51");
g_assert_cmpstr (region->width, ==, "0.01");
@@ -475,7 +475,7 @@ test_xmp_regions_ns_prefix (void)
g_assert_cmpstr (region->title, ==, "Fidoz");
g_assert_cmpstr (region->description, ==, "Fido looks happy!");
- region = g_list_nth_data (data->regions, 1);
+ region = g_slist_nth_data (data->regions, 1);
g_assert_cmpstr (region->x, ==, "0.5");
g_assert_cmpstr (region->y, ==, "0.5");
g_assert_cmpstr (region->width, ==, "0.06");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]