[tracker/tracker-store] tracker-extract: Use TrackerSparqlBuilder



commit 8e1664bb4946e5688a25c404db7f26e31d765a3f
Author: Jürg Billeter <j bitron ch>
Date:   Fri Jun 26 12:07:38 2009 +0200

    tracker-extract: Use TrackerSparqlBuilder

 src/libtracker-common/tracker-sparql-builder.vala  |    8 ++
 src/libtracker-common/tracker-statement-list.c     |   62 ++----------
 src/libtracker-common/tracker-statement-list.h     |   16 ++--
 src/tracker-extract/tracker-extract-abw.c          |    4 +-
 .../tracker-extract-gstreamer-helix.c              |   24 ++--
 src/tracker-extract/tracker-extract-gstreamer.c    |   38 ++++----
 src/tracker-extract/tracker-extract-html.c         |    6 +-
 src/tracker-extract/tracker-extract-imagemagick.c  |    4 +-
 src/tracker-extract/tracker-extract-jpeg.c         |    6 +-
 src/tracker-extract/tracker-extract-libxine.c      |    2 +-
 src/tracker-extract/tracker-extract-mockup.c       |    4 +-
 src/tracker-extract/tracker-extract-mp3.c          |   22 ++--
 src/tracker-extract/tracker-extract-mplayer.c      |    6 +-
 src/tracker-extract/tracker-extract-msoffice.c     |   12 +-
 src/tracker-extract/tracker-extract-oasis.c        |   10 +-
 src/tracker-extract/tracker-extract-pdf.c          |    4 +-
 src/tracker-extract/tracker-extract-playlist.c     |    6 +-
 src/tracker-extract/tracker-extract-png.c          |    6 +-
 src/tracker-extract/tracker-extract-ps.c           |    8 +-
 src/tracker-extract/tracker-extract-tiff.c         |    4 +-
 src/tracker-extract/tracker-extract-totem.c        |    4 +-
 src/tracker-extract/tracker-extract-vorbis.c       |    4 +-
 src/tracker-extract/tracker-extract-xmp.c          |    4 +-
 src/tracker-extract/tracker-extract.c              |  110 +++++---------------
 src/tracker-extract/tracker-main.h                 |    2 +-
 src/tracker-extract/tracker-topanalyzer.cpp        |    9 +-
 26 files changed, 144 insertions(+), 241 deletions(-)
---
diff --git a/src/libtracker-common/tracker-sparql-builder.vala b/src/libtracker-common/tracker-sparql-builder.vala
index c350ebc..d958747 100644
--- a/src/libtracker-common/tracker-sparql-builder.vala
+++ b/src/libtracker-common/tracker-sparql-builder.vala
@@ -32,6 +32,8 @@ public class Tracker.SparqlBuilder : Object {
 		get { return str.str; }
 	}
 
+	public int length { get; private set; }
+
 	State state {
 		get { return states[states.length - 1]; }
 	}
@@ -106,6 +108,8 @@ public class Tracker.SparqlBuilder : Object {
 		str.append (" ");
 		str.append (s);
 		states += State.OBJECT;
+
+		length++;
 	}
 
 	public void object_string (string literal)
@@ -152,6 +156,8 @@ public class Tracker.SparqlBuilder : Object {
 		str.append ("\"");
 
 		states += State.OBJECT;
+
+		length++;
 	}
 
 	public void object_boolean (bool literal) {
@@ -185,6 +191,8 @@ public class Tracker.SparqlBuilder : Object {
 		str.append ("]");
 		states.length -= 3;
 		states += State.OBJECT;
+
+		length++;
 	}
 
 	public void append (string raw)
diff --git a/src/libtracker-common/tracker-statement-list.c b/src/libtracker-common/tracker-statement-list.c
index 61f965d..684aea1 100644
--- a/src/libtracker-common/tracker-statement-list.c
+++ b/src/libtracker-common/tracker-statement-list.c
@@ -31,64 +31,20 @@
 #include <libtracker-common/tracker-statement-list.h>
 
 
-const gchar*
-tracker_statement_list_find (GPtrArray *statements, 
-                        const gchar *subj, 
-                        const gchar *pred)
-{
-	guint i;
-	const gchar *subject;
-	const gchar *predicate;
-	const gchar *object = NULL;
-
-	for (i = 0; i < statements->len; i++) {
-		GValueArray *statement;
-
-		statement = statements->pdata[i];
-
-		subject = g_value_get_string (&statement->values[0]);
-		predicate = g_value_get_string (&statement->values[1]);
-		object = g_value_get_string (&statement->values[2]);
-
-		if (g_strcmp0 (pred, predicate) == 0 && g_strcmp0 (subj, subject) == 0)
-			break;
-	}
-
-	return object;
-}
-
 void
-tracker_statement_list_insert (GPtrArray   *statements, 
+tracker_statement_list_insert (TrackerSparqlBuilder   *statements, 
                           const gchar *subject,
                           const gchar *predicate,
                           const gchar *value)
 {
-	GValueArray *statement;
-	GValue       gvalue = { 0 };
-
-	statement = g_value_array_new (3);
-
-	g_value_init (&gvalue, G_TYPE_STRING);
-	g_value_set_string (&gvalue, subject);
-	g_value_array_append (statement, &gvalue);
-	g_value_unset (&gvalue);
-
-	g_value_init (&gvalue, G_TYPE_STRING);
-	g_value_set_string (&gvalue, predicate);
-	g_value_array_append (statement, &gvalue);
-	g_value_unset (&gvalue);
-
-	g_value_init (&gvalue, G_TYPE_STRING);
-	g_value_set_string (&gvalue, value);
-	g_value_array_append (statement, &gvalue);
-	g_value_unset (&gvalue);
-
-	g_ptr_array_add (statements, statement);
+	tracker_sparql_builder_subject_iri (statements, subject);
+	tracker_sparql_builder_predicate_iri (statements, predicate);
+	tracker_sparql_builder_object_string (statements, value);
 }
 
 
 void
-tracker_statement_list_insert_with_int64 (GPtrArray   *statements,
+tracker_statement_list_insert_with_int64 (TrackerSparqlBuilder   *statements,
                                      const gchar *subject,
                                      const gchar *predicate,
                                      gint64       value)
@@ -101,7 +57,7 @@ tracker_statement_list_insert_with_int64 (GPtrArray   *statements,
 }
 
 void
-tracker_statement_list_insert_with_uint (GPtrArray   *statements,
+tracker_statement_list_insert_with_uint (TrackerSparqlBuilder   *statements,
 					 const gchar *subject,
 					 const gchar *predicate,
 					 guint32      value)
@@ -115,7 +71,7 @@ tracker_statement_list_insert_with_uint (GPtrArray   *statements,
 
 
 void
-tracker_statement_list_insert_with_double  (GPtrArray   *statements,
+tracker_statement_list_insert_with_double  (TrackerSparqlBuilder   *statements,
                                        const gchar *subject,
                                        const gchar *predicate,
                                        gdouble      value)
@@ -129,7 +85,7 @@ tracker_statement_list_insert_with_double  (GPtrArray   *statements,
 
 
 void
-tracker_statement_list_insert_with_float  (GPtrArray   *statements,
+tracker_statement_list_insert_with_float  (TrackerSparqlBuilder   *statements,
                                        const gchar *subject,
                                        const gchar *predicate,
                                        gfloat      value)
@@ -142,7 +98,7 @@ tracker_statement_list_insert_with_float  (GPtrArray   *statements,
 }
 
 void
-tracker_statement_list_insert_with_int (GPtrArray   *statements,
+tracker_statement_list_insert_with_int (TrackerSparqlBuilder   *statements,
                                    const gchar *subject,
                                    const gchar *predicate,
                                    gint         value)
diff --git a/src/libtracker-common/tracker-statement-list.h b/src/libtracker-common/tracker-statement-list.h
index dfba1f4..b9ed550 100644
--- a/src/libtracker-common/tracker-statement-list.h
+++ b/src/libtracker-common/tracker-statement-list.h
@@ -22,38 +22,36 @@
 #define __TRACKER_STATEMENT_H__
 
 #include <glib.h>
+#include "tracker-sparql-builder.h"
 
 #define SHOULD_VALIDATE_UTF8
 
 G_BEGIN_DECLS
 
-void   tracker_statement_list_insert             (GPtrArray   *statements, 
+void   tracker_statement_list_insert             (TrackerSparqlBuilder   *statements, 
                                              const gchar *subject,
                                              const gchar *predicate,
                                              const gchar *value);
-void   tracker_statement_list_insert_with_int    (GPtrArray   *statements,
+void   tracker_statement_list_insert_with_int    (TrackerSparqlBuilder   *statements,
                                              const gchar *subject,
                                              const gchar *predicate,
                                              gint         value);
-void   tracker_statement_list_insert_with_int64  (GPtrArray   *statements,
+void   tracker_statement_list_insert_with_int64  (TrackerSparqlBuilder   *statements,
                                              const gchar *subject,
                                              const gchar *predicate,
                                              gint64       value);
-void   tracker_statement_list_insert_with_uint  (GPtrArray *statements,
+void   tracker_statement_list_insert_with_uint  (TrackerSparqlBuilder *statements,
 						 const gchar *subject,
 						 const gchar *predicate,
 						 guint32      value);
-void   tracker_statement_list_insert_with_double (GPtrArray   *statements,
+void   tracker_statement_list_insert_with_double (TrackerSparqlBuilder   *statements,
                                              const gchar *subject,
                                              const gchar *predicate,
                                              gdouble      value);
-void   tracker_statement_list_insert_with_float  (GPtrArray   *statements,
+void   tracker_statement_list_insert_with_float  (TrackerSparqlBuilder   *statements,
                                              const gchar *subject,
                                              const gchar *predicate,
                                              gfloat      value);
-const gchar* tracker_statement_list_find         (GPtrArray *statements, 
-                                             const gchar *subj, 
-                                             const gchar *pred);
 
 
 G_END_DECLS
diff --git a/src/tracker-extract/tracker-extract-abw.c b/src/tracker-extract/tracker-extract-abw.c
index b2e77e2..9c8e98d 100644
--- a/src/tracker-extract/tracker-extract-abw.c
+++ b/src/tracker-extract/tracker-extract-abw.c
@@ -49,7 +49,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_abw (const gchar *uri,
-			 GPtrArray   *metadata);
+			 TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "application/x-abiword", extract_abw },
@@ -58,7 +58,7 @@ static TrackerExtractData data[] = {
 
 static void
 extract_abw (const gchar *uri,
-	     GPtrArray   *metadata)
+	     TrackerSparqlBuilder   *metadata)
 {
 	FILE *f;
 	gchar *filename;
diff --git a/src/tracker-extract/tracker-extract-gstreamer-helix.c b/src/tracker-extract/tracker-extract-gstreamer-helix.c
index 527e2e0..fdd44be 100644
--- a/src/tracker-extract/tracker-extract-gstreamer-helix.c
+++ b/src/tracker-extract/tracker-extract-gstreamer-helix.c
@@ -70,8 +70,8 @@ typedef struct {
 
 } MetadataExtractor;
 
-static void extract_gstreamer_helix_audio (const gchar *uri, GPtrArray *metadata);
-static void extract_gstreamer_helix_video (const gchar *uri, GPtrArray *metadata);
+static void extract_gstreamer_helix_audio (const gchar *uri, TrackerSparqlBuilder *metadata);
+static void extract_gstreamer_helix_video (const gchar *uri, TrackerSparqlBuilder *metadata);
 
 static TrackerExtractData data[] = {
 	{ "audio/vnd.rn-realaudio", extract_gstreamer_helix_audio },
@@ -365,7 +365,7 @@ gst_bus_cb (GstBus	      *bus,
 
 
 static void
-add_int64_info (GPtrArray *metadata,
+add_int64_info (TrackerSparqlBuilder *metadata,
 		const gchar *uri,
 		const gchar	   *key,
 		gint64	    info)
@@ -374,7 +374,7 @@ add_int64_info (GPtrArray *metadata,
 }
 
 static void
-add_uint_info (GPtrArray *metadata,
+add_uint_info (TrackerSparqlBuilder *metadata,
 		const gchar *uri,
 	       gchar	  *key,
 	       guint	   info)
@@ -383,7 +383,7 @@ add_uint_info (GPtrArray *metadata,
 }
 
 static void
-add_string_gst_tag (GPtrArray	*metadata,
+add_string_gst_tag (TrackerSparqlBuilder	*metadata,
 		const gchar *uri,
 		    const gchar *key,
 		    GstTagList	*tag_list,
@@ -405,7 +405,7 @@ add_string_gst_tag (GPtrArray	*metadata,
 }
 
 static void
-add_uint_gst_tag (GPtrArray  *metadata,
+add_uint_gst_tag (TrackerSparqlBuilder  *metadata,
 		const gchar *uri,
 		  const gchar *key,
 		  GstTagList  *tag_list,
@@ -422,7 +422,7 @@ add_uint_gst_tag (GPtrArray  *metadata,
 }
 
 static void
-add_double_gst_tag (GPtrArray	*metadata,
+add_double_gst_tag (TrackerSparqlBuilder	*metadata,
 		const gchar *uri,
 		    const gchar *key,
 		    GstTagList	*tag_list,
@@ -439,7 +439,7 @@ add_double_gst_tag (GPtrArray	*metadata,
 }
 
 static void
-add_year_of_gdate_gst_tag (GPtrArray  *metadata,
+add_year_of_gdate_gst_tag (TrackerSparqlBuilder  *metadata,
 		const gchar *uri,
 			   const gchar *key,
 			   GstTagList  *tag_list,
@@ -532,7 +532,7 @@ get_embedded_album_art(MetadataExtractor *extractor)
 static void
 extract_metadata (MetadataExtractor *extractor,
                   const gchar *uri,
-		  GPtrArray  *metadata,
+		  TrackerSparqlBuilder  *metadata,
                   gchar **artist,
                   gchar **album,
                   gchar **scount)
@@ -765,7 +765,7 @@ poll_for_state_change (MetadataExtractor *extractor,
 
 static void
 tracker_extract_gstreamer_helix (const gchar *uri,
-				 GPtrArray  *metadata,
+				 TrackerSparqlBuilder  *metadata,
 				 ExtractMime	type)
 {
 	MetadataExtractor *extractor;
@@ -857,13 +857,13 @@ tracker_extract_gstreamer_helix (const gchar *uri,
 }
 
 static void
-extract_gstreamer_helix_audio (const gchar *uri, GPtrArray *metadata)
+extract_gstreamer_helix_audio (const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	tracker_extract_gstreamer_helix (uri, metadata, EXTRACT_MIME_AUDIO);
 }
 
 static void
-extract_gstreamer_helix_video (const gchar *uri, GPtrArray *metadata)
+extract_gstreamer_helix_video (const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	tracker_extract_gstreamer_helix (uri, metadata, EXTRACT_MIME_VIDEO);
 }
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 3a9451c..57c9432 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -118,9 +118,9 @@ typedef struct {
 
 } MetadataExtractor;
 
-static void extract_gstreamer_audio (const gchar *uri, GPtrArray *metadata);
-static void extract_gstreamer_video (const gchar *uri, GPtrArray *metadata);
-static void extract_gstreamer_image (const gchar *uri, GPtrArray *metadata);
+static void extract_gstreamer_audio (const gchar *uri, TrackerSparqlBuilder *metadata);
+static void extract_gstreamer_video (const gchar *uri, TrackerSparqlBuilder *metadata);
+static void extract_gstreamer_image (const gchar *uri, TrackerSparqlBuilder *metadata);
 
 static TrackerExtractData data[] = {
 	{ "audio/*", extract_gstreamer_audio },
@@ -137,7 +137,7 @@ const gboolean use_tagreadbin = FALSE;
 #endif
 
 static void
-add_int64_info (GPtrArray *metadata,
+add_int64_info (TrackerSparqlBuilder *metadata,
 		const gchar *uri,
 		const gchar *key,
 		gint64	    info)
@@ -146,7 +146,7 @@ add_int64_info (GPtrArray *metadata,
 }
 
 static void
-add_uint_info (GPtrArray *metadata,
+add_uint_info (TrackerSparqlBuilder *metadata,
 	       const gchar *uri,
 	       const gchar *key,
 	       guint	   info)
@@ -155,7 +155,7 @@ add_uint_info (GPtrArray *metadata,
 }
 
 static void
-add_string_gst_tag (GPtrArray	*metadata,
+add_string_gst_tag (TrackerSparqlBuilder	*metadata,
 		    const gchar *uri,
 		    const gchar *key,
 		    GstTagList	*tag_list,
@@ -177,7 +177,7 @@ add_string_gst_tag (GPtrArray	*metadata,
 }
 
 static void
-add_uint_gst_tag (GPtrArray   *metadata,
+add_uint_gst_tag (TrackerSparqlBuilder   *metadata,
 		  const gchar *uri,
 		  const gchar *key,
 		  GstTagList  *tag_list,
@@ -194,7 +194,7 @@ add_uint_gst_tag (GPtrArray   *metadata,
 }
 
 static void
-add_int_gst_tag (GPtrArray   *metadata,
+add_int_gst_tag (TrackerSparqlBuilder   *metadata,
 		 const gchar *uri,
 		 const gchar *key,
 		 GstTagList  *tag_list,
@@ -211,7 +211,7 @@ add_int_gst_tag (GPtrArray   *metadata,
 }
 
 static void
-add_double_gst_tag (GPtrArray	*metadata,
+add_double_gst_tag (TrackerSparqlBuilder	*metadata,
 		    const gchar *uri,
 		    const gchar *key,
 		    GstTagList	*tag_list,
@@ -228,7 +228,7 @@ add_double_gst_tag (GPtrArray	*metadata,
 }
 
 static void
-add_fraction_gst_tag (GPtrArray         *metadata,
+add_fraction_gst_tag (TrackerSparqlBuilder         *metadata,
 		      const gchar       *uri,
 		      const gchar       *key,
 		      GstTagList	*tag_list,
@@ -249,7 +249,7 @@ add_fraction_gst_tag (GPtrArray         *metadata,
 }
 
 static void
-add_y_date_gst_tag (GPtrArray  *metadata,
+add_y_date_gst_tag (TrackerSparqlBuilder  *metadata,
 		    const gchar *uri,
 		    const gchar *key,
 		    GstTagList  *tag_list,
@@ -276,7 +276,7 @@ add_y_date_gst_tag (GPtrArray  *metadata,
 }
 
 static void
-add_time_gst_tag (GPtrArray   *metadata,
+add_time_gst_tag (TrackerSparqlBuilder   *metadata,
 		  const gchar *uri,
 		  const gchar *key,
 		  GstTagList  *tag_list,
@@ -361,7 +361,7 @@ get_embedded_album_art(MetadataExtractor *extractor)
 static void
 extract_stream_metadata_tagreadbin (MetadataExtractor *extractor,
 				    const gchar       *uri,
-				    GPtrArray         *metadata)
+				    TrackerSparqlBuilder         *metadata)
 {
 	if (extractor->mime != EXTRACT_MIME_IMAGE) {
 		add_uint_gst_tag (metadata, uri, NFO_PREFIX "channels", extractor->tagcache, GST_TAG_CHANNEL);
@@ -380,7 +380,7 @@ extract_stream_metadata_tagreadbin (MetadataExtractor *extractor,
 static void
 extract_stream_metadata_decodebin (MetadataExtractor *extractor,
 				   const gchar       *uri,
-				   GPtrArray         *metadata)
+				   TrackerSparqlBuilder         *metadata)
 {
 	if (extractor->mime != EXTRACT_MIME_IMAGE) {
 		if (extractor->audio_channels >= 0) {
@@ -425,7 +425,7 @@ extract_stream_metadata_decodebin (MetadataExtractor *extractor,
 static void
 extract_metadata (MetadataExtractor *extractor,
 		  const gchar       *uri,
-		  GPtrArray         *metadata,
+		  TrackerSparqlBuilder         *metadata,
 		  gchar **album, gchar **scount)
 {
 	gchar *s;
@@ -829,7 +829,7 @@ create_tagreadbin_pipeline (MetadataExtractor *extractor, const gchar *uri)
 
 static void
 tracker_extract_gstreamer (const gchar *uri,
-			   GPtrArray  *metadata,
+			   TrackerSparqlBuilder  *metadata,
 			   ExtractMime	type)
 {
 	MetadataExtractor *extractor;
@@ -936,7 +936,7 @@ tracker_extract_gstreamer (const gchar *uri,
 
 
 static void
-extract_gstreamer_audio (const gchar *uri, GPtrArray *metadata)
+extract_gstreamer_audio (const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	tracker_statement_list_insert (metadata, uri, 
 				       RDF_TYPE, 
@@ -946,7 +946,7 @@ extract_gstreamer_audio (const gchar *uri, GPtrArray *metadata)
 }
 
 static void
-extract_gstreamer_video (const gchar *uri, GPtrArray *metadata)
+extract_gstreamer_video (const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	tracker_statement_list_insert (metadata, uri, 
 				       RDF_TYPE, 
@@ -956,7 +956,7 @@ extract_gstreamer_video (const gchar *uri, GPtrArray *metadata)
 }
 
 static void
-extract_gstreamer_image (const gchar *uri, GPtrArray *metadata)
+extract_gstreamer_image (const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	tracker_statement_list_insert (metadata, uri, 
 				       RDF_TYPE, 
diff --git a/src/tracker-extract/tracker-extract-html.c b/src/tracker-extract/tracker-extract-html.c
index b091559..514d08d 100644
--- a/src/tracker-extract/tracker-extract-html.c
+++ b/src/tracker-extract/tracker-extract-html.c
@@ -43,13 +43,13 @@ typedef enum {
 } tag_type;
 
 typedef struct {
-	GPtrArray *metadata;
+	TrackerSparqlBuilder *metadata;
 	tag_type current;
 	const gchar *uri;
 } HTMLParseInfo;
 
 static void extract_html (const gchar *filename,
-			  GPtrArray   *metadata);
+			  TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "text/html",		   extract_html },
@@ -196,7 +196,7 @@ characters (void	  *info_,
 
 static void
 extract_html (const gchar *uri,
-	      GPtrArray   *metadata)
+	      TrackerSparqlBuilder   *metadata)
 {
 	gchar *filename = g_filename_from_uri (uri, NULL, NULL);
 	xmlSAXHandler SAXHandlerStruct = {
diff --git a/src/tracker-extract/tracker-extract-imagemagick.c b/src/tracker-extract/tracker-extract-imagemagick.c
index fc25e7b..160f3cb 100644
--- a/src/tracker-extract/tracker-extract-imagemagick.c
+++ b/src/tracker-extract/tracker-extract-imagemagick.c
@@ -44,7 +44,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_imagemagick (const gchar *uri, 
-				 GPtrArray   *metadata);
+				 TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "image/*", extract_imagemagick },
@@ -53,7 +53,7 @@ static TrackerExtractData data[] = {
 
 static void
 extract_imagemagick (const gchar *uri, 
-		     GPtrArray   *metadata)
+		     TrackerSparqlBuilder   *metadata)
 {
 	gchar *argv[6];
 	gchar *identify;
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index f205d2f..d6972a6 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -81,7 +81,7 @@
 #endif /* HAVE_LIBIPTCDATA */
 
 static void extract_jpeg (const gchar *filename,
-			  GPtrArray   *metadata);
+			  TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "image/jpeg", extract_jpeg },
@@ -360,7 +360,7 @@ static void
 read_exif (const unsigned char *buffer,
 	   size_t		len,
 	   const gchar         *uri,
-	   GPtrArray	       *metadata)
+	   TrackerSparqlBuilder	       *metadata)
 {
 	ExifData *exif;
 	TagType  *p;
@@ -411,7 +411,7 @@ read_exif (const unsigned char *buffer,
 
 static void
 extract_jpeg (const gchar *uri,
-	      GPtrArray   *metadata)
+	      TrackerSparqlBuilder   *metadata)
 {
 	struct jpeg_decompress_struct  cinfo;
 	struct tej_error_mgr	       tejerr;
diff --git a/src/tracker-extract/tracker-extract-libxine.c b/src/tracker-extract/tracker-extract-libxine.c
index 841259c..08e7a8a 100644
--- a/src/tracker-extract/tracker-extract-libxine.c
+++ b/src/tracker-extract/tracker-extract-libxine.c
@@ -40,7 +40,7 @@
 /* Take an absolute path to a file and fill a hashtable with metadata.
  */
 void
-tracker_extract_xine (gchar *uri, GPtrArray *metadata)
+tracker_extract_xine (gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	xine_t		  *xine_base;
 	xine_audio_port_t *audio_port;
diff --git a/src/tracker-extract/tracker-extract-mockup.c b/src/tracker-extract/tracker-extract-mockup.c
index 6e839d2..23182ed 100644
--- a/src/tracker-extract/tracker-extract-mockup.c
+++ b/src/tracker-extract/tracker-extract-mockup.c
@@ -39,7 +39,7 @@
 #include "tracker-main.h"
 
 static void extract_mockup (const gchar *uri,
-			    GPtrArray   *metadata);
+			    TrackerSparqlBuilder   *metadata);
 
 typedef struct {
 	gchar	     *key;
@@ -66,7 +66,7 @@ static TrackerExtractData data[] = {
 
 static void
 extract_mockup (const gchar *uri,
-		GPtrArray   *metadata)
+		TrackerSparqlBuilder   *metadata)
 {
 	MockupTag *p;
 
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index 580ae62..bdb08b0 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -123,7 +123,7 @@ enum {
 };
 
 static void extract_mp3 (const gchar *filename,
-			 GPtrArray  *metadata);
+			 TrackerSparqlBuilder  *metadata);
 
 static const char *const genre_names[] = {
 	"Blues",
@@ -542,7 +542,7 @@ mp3_parse_header (const gchar *data,
 		  size_t       size,
 		  size_t       seek_pos,
 		  const gchar *uri,
-		  GPtrArray   *metadata,
+		  TrackerSparqlBuilder   *metadata,
 		  file_data   *filedata)
 {
 	guint header;
@@ -725,7 +725,7 @@ mp3_parse (const gchar *data,
 	   size_t       size,
 	   size_t       offset,
 	   const gchar *uri,
-	   GPtrArray  *metadata,
+	   TrackerSparqlBuilder  *metadata,
 	   file_data   *filedata)
 {
 	guint header;
@@ -756,7 +756,7 @@ static void
 get_id3v24_tags (const gchar *data,
 		 size_t       size,
 		 const gchar *uri,
-		 GPtrArray  *metadata,
+		 TrackerSparqlBuilder  *metadata,
 		 file_data   *filedata)
 {
 	guint pos = 0;
@@ -1032,7 +1032,7 @@ static void
 get_id3v23_tags (const gchar *data,
 		 size_t       size,
 		 const gchar *uri,
-		 GPtrArray  *metadata,
+		 TrackerSparqlBuilder  *metadata,
 		 file_data   *filedata)
 {
 	guint	pos = 0;
@@ -1288,7 +1288,7 @@ static void
 get_id3v20_tags (const gchar *data,
 		size_t	     size,
 		const gchar *uri,
-		GPtrArray  *metadata,
+		TrackerSparqlBuilder  *metadata,
 		 file_data   *filedata)
 {
 	guint	pos = 0;
@@ -1472,7 +1472,7 @@ static void
 parse_id3v24 (const gchar *data,
 	      size_t       size,
 	      const gchar *uri,
-	      GPtrArray  *metadata,
+	      TrackerSparqlBuilder  *metadata,
 	      file_data   *filedata,
 	      size_t      *offset_delta)
 {
@@ -1536,7 +1536,7 @@ static void
 parse_id3v23 (const gchar *data,
 	      size_t       size,
 	      const gchar *uri,
-	      GPtrArray  *metadata,
+	      TrackerSparqlBuilder  *metadata,
 	      file_data   *filedata,
 	      size_t      *offset_delta)
 {
@@ -1610,7 +1610,7 @@ static void
 parse_id3v20 (const gchar *data,
 	      size_t	      size,
 	      const gchar *uri,
-	      GPtrArray  *metadata,
+	      TrackerSparqlBuilder  *metadata,
 	      file_data   *filedata,
 	      size_t      *offset_delta)
 {
@@ -1656,7 +1656,7 @@ static goffset
 parse_id3v2 (const gchar *data,
 	     size_t	     size,
 	     const gchar *uri,
-	     GPtrArray  *metadata,
+	     TrackerSparqlBuilder  *metadata,
 	     file_data   *filedata)
 {
 	gboolean done = FALSE;
@@ -1682,7 +1682,7 @@ parse_id3v2 (const gchar *data,
 
 static void
 extract_mp3 (const gchar *uri,
-	     GPtrArray  *metadata)
+	     TrackerSparqlBuilder  *metadata)
 {
 	gchar       *filename;
 	int	     fd;
diff --git a/src/tracker-extract/tracker-extract-mplayer.c b/src/tracker-extract/tracker-extract-mplayer.c
index a017dcf..5c2d8a7 100644
--- a/src/tracker-extract/tracker-extract-mplayer.c
+++ b/src/tracker-extract/tracker-extract-mplayer.c
@@ -42,7 +42,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_mplayer (const gchar *uri,
-			     GPtrArray   *metadata);
+			     TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData extract_data[] = {
 	{ "audio/*", extract_mplayer },
@@ -86,7 +86,7 @@ static const gchar *info_tags[][3] = {
 };
 
 typedef struct {
-	GPtrArray *metadata;
+	TrackerSparqlBuilder *metadata;
 	const gchar *uri;
 } ForeachCopyInfo;
 
@@ -110,7 +110,7 @@ copy_hash_table_entry (gpointer key,
 
 static void
 extract_mplayer (const gchar *uri,
-		 GPtrArray  *metadata)
+		 TrackerSparqlBuilder  *metadata)
 {
 	gchar *argv[10];
 	gchar *mplayer;
diff --git a/src/tracker-extract/tracker-extract-msoffice.c b/src/tracker-extract/tracker-extract-msoffice.c
index 02f2ac7..b1eebd8 100644
--- a/src/tracker-extract/tracker-extract-msoffice.c
+++ b/src/tracker-extract/tracker-extract-msoffice.c
@@ -49,7 +49,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_msoffice (const gchar *uri,
-			      GPtrArray   *metadata);
+			      TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "application/msword",	  extract_msoffice },
@@ -58,12 +58,12 @@ static TrackerExtractData data[] = {
 };
 
 typedef struct {
-	GPtrArray *metadata;
+	TrackerSparqlBuilder *metadata;
 	const gchar *uri;
 } ForeachInfo;
 
 static void
-add_gvalue_in_metadata (GPtrArray    *table,
+add_gvalue_in_metadata (TrackerSparqlBuilder    *table,
 			const gchar  *uri,
 			const gchar  *key,
 			GValue const *val,
@@ -134,7 +134,7 @@ metadata_cb (gpointer key,
 	ForeachInfo  *info = user_data;
 	gchar	     *name;
 	GsfDocProp   *property;
-	GPtrArray    *metadata = info->metadata;
+	TrackerSparqlBuilder    *metadata = info->metadata;
 	GValue const *val;
 	const gchar  *uri = info->uri;
 
@@ -194,7 +194,7 @@ doc_metadata_cb (gpointer key,
 	ForeachInfo  *info = user_data;
 	gchar	     *name;
 	GsfDocProp   *property;
-	GPtrArray    *metadata = info->metadata;
+	TrackerSparqlBuilder    *metadata = info->metadata;
 	GValue const *val;
 	const gchar  *uri = info->uri;
 
@@ -210,7 +210,7 @@ doc_metadata_cb (gpointer key,
 
 static void
 extract_msoffice (const gchar *uri,
-		  GPtrArray   *metadata)
+		  TrackerSparqlBuilder   *metadata)
 {
 	GsfInput  *input;
 	GsfInfile *infile;
diff --git a/src/tracker-extract/tracker-extract-oasis.c b/src/tracker-extract/tracker-extract-oasis.c
index 8c1dc0f..ed5b200 100644
--- a/src/tracker-extract/tracker-extract-oasis.c
+++ b/src/tracker-extract/tracker-extract-oasis.c
@@ -49,7 +49,7 @@ typedef enum {
 } tag_type;
 
 typedef struct {
-	GPtrArray *metadata;
+	TrackerSparqlBuilder *metadata;
 	tag_type current;
 	const gchar *uri;
 } ODTParseInfo;
@@ -70,7 +70,7 @@ static void text_handler	  (GMarkupParseContext	*context,
 				   gpointer		 user_data,
 				   GError	       **error);
 static void extract_oasis	  (const gchar		*filename,
-				   GPtrArray		*metadata);
+				   TrackerSparqlBuilder		*metadata);
 
 static TrackerExtractData extract_data[] = {
 	{ "application/vnd.oasis.opendocument.*", extract_oasis },
@@ -79,7 +79,7 @@ static TrackerExtractData extract_data[] = {
 
 static void
 extract_oasis (const gchar *uri,
-	       GPtrArray   *metadata)
+	       TrackerSparqlBuilder   *metadata)
 {
 	gchar	      *argv[5];
 	gchar	      *xml;
@@ -150,7 +150,7 @@ start_element_handler (GMarkupParseContext  *context,
 		data->current = READ_COMMENTS;
 	}
 	else if (strcmp (element_name, "meta:document-statistic") == 0) {
-		GPtrArray *metadata;
+		TrackerSparqlBuilder *metadata;
 		const gchar *uri;
 		const gchar **a, **v;
 
@@ -200,7 +200,7 @@ text_handler (GMarkupParseContext  *context,
 	      GError		  **error)
 {
 	ODTParseInfo *data;
-	GPtrArray    *metadata;
+	TrackerSparqlBuilder    *metadata;
 	const gchar        *uri;
 
 	data = user_data;
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index c344059..ca8f9ac 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -44,7 +44,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_pdf (const gchar *uri,
-			 GPtrArray   *metadata);
+			 TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "application/pdf", extract_pdf },
@@ -53,7 +53,7 @@ static TrackerExtractData data[] = {
 
 static void
 extract_pdf (const gchar *uri,
-	     GPtrArray  *metadata)
+	     TrackerSparqlBuilder  *metadata)
 {
 	PopplerDocument *document;
 	gchar		*title		= NULL;
diff --git a/src/tracker-extract/tracker-extract-playlist.c b/src/tracker-extract/tracker-extract-playlist.c
index 52973d7..9875c10 100644
--- a/src/tracker-extract/tracker-extract-playlist.c
+++ b/src/tracker-extract/tracker-extract-playlist.c
@@ -56,12 +56,12 @@
 typedef struct {
 	guint32     track_counter;
 	gint64      total_time;
-	GPtrArray   *metadata;
+	TrackerSparqlBuilder   *metadata;
 	const gchar *uri;
 } PlaylistMetadata;
 
 static void extract_playlist (const gchar *uri,
-			      GPtrArray   *metadata);
+			      TrackerSparqlBuilder   *metadata);
 
 
 static TrackerExtractData playlist_data[] = {
@@ -120,7 +120,7 @@ entry_parsed (TotemPlParser *parser, const gchar *to_uri, GHashTable *to_metadat
 
 static void
 extract_playlist (const gchar *uri,
-		  GPtrArray   *metadata)
+		  TrackerSparqlBuilder   *metadata)
 {
 	TotemPlParser       *pl;
 	TotemPlParserResult  result;
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index 8052a0d..3506061 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -67,7 +67,7 @@ typedef struct {
 
 static gchar *rfc1123_to_iso8601_date (gchar	   *rfc_date);
 static void   extract_png	      (const gchar *filename,
-				       GPtrArray   *metadata);
+				       TrackerSparqlBuilder   *metadata);
 
 static TagProcessors tag_processors[] = {
 	{ "Author",		NCO_PREFIX "creator",      NULL, TRUE},
@@ -98,7 +98,7 @@ rfc1123_to_iso8601_date (gchar *date)
 }
 
 static void
-read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, GPtrArray *metadata)
+read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, TrackerSparqlBuilder *metadata)
 {
 	gint	     num_text;
 	png_textp    text_ptr;
@@ -165,7 +165,7 @@ read_metadata (png_structp png_ptr, png_infop info_ptr, const gchar *uri, GPtrAr
 
 static void
 extract_png (const gchar *uri,
-	     GPtrArray   *metadata)
+	     TrackerSparqlBuilder   *metadata)
 {
 	goffset      size;
 	FILE	    *f;
diff --git a/src/tracker-extract/tracker-extract-ps.c b/src/tracker-extract/tracker-extract-ps.c
index 2c044da..9e12d7b 100644
--- a/src/tracker-extract/tracker-extract-ps.c
+++ b/src/tracker-extract/tracker-extract-ps.c
@@ -65,10 +65,10 @@
 
 #ifdef USING_UNZIPPSFILES
 static void extract_ps_gz (const gchar *uri,
-			   GPtrArray  *metadata);
+			   TrackerSparqlBuilder  *metadata);
 #endif
 static void extract_ps	  (const gchar *uri,
-			   GPtrArray   *metadata);
+			   TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 #ifdef USING_UNZIPPSFILES
@@ -210,7 +210,7 @@ date_to_iso8601 (const gchar *date)
 
 static void
 extract_ps (const gchar *uri,
-	    GPtrArray	*metadata)
+	    TrackerSparqlBuilder	*metadata)
 {
 	FILE *f;
 	gchar *filename = g_filename_from_uri (uri, NULL, NULL);
@@ -297,7 +297,7 @@ extract_ps (const gchar *uri,
 #ifdef USING_UNZIPPSFILES
 static void
 extract_ps_gz (const gchar *uri,
-	       GPtrArray   *metadata)
+	       TrackerSparqlBuilder   *metadata)
 {
 	FILE	    *fz, *f;
 	GError	    *error = NULL;
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 417e5d7..02bd782 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -80,7 +80,7 @@ typedef struct {
 } TiffTag;
  
 static void   extract_tiff    (const gchar *filename,
-			       GPtrArray   *metadata);
+			       TrackerSparqlBuilder   *metadata);
 
 static gchar *date_to_iso8601	(const gchar *exif_date, gboolean *free_it);
 static gchar *fix_focal_length	(const gchar *fl, gboolean *free_it);
@@ -338,7 +338,7 @@ fix_white_balance (const gchar *white_balance, gboolean *free_it)
 
 static void
 extract_tiff (const gchar *uri, 
-	      GPtrArray   *metadata)
+	      TrackerSparqlBuilder   *metadata)
 {
 	TIFF *image;
 	glong exifOffset;
diff --git a/src/tracker-extract/tracker-extract-totem.c b/src/tracker-extract/tracker-extract-totem.c
index 0481506..253c703 100644
--- a/src/tracker-extract/tracker-extract-totem.c
+++ b/src/tracker-extract/tracker-extract-totem.c
@@ -54,7 +54,7 @@ static const gchar *tags[][2] = {
 };
 
 static void extract_totem (const gchar *uri,
-			   GPtrArray   *metadata);
+			   TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "audio/*", extract_totem },
@@ -64,7 +64,7 @@ static TrackerExtractData data[] = {
 
 static void
 extract_totem (const gchar *uri,
-	       GPtrArray   *metadata)
+	       TrackerSparqlBuilder   *metadata)
 {
 	gchar *argv[3];
 	gchar *totem;
diff --git a/src/tracker-extract/tracker-extract-vorbis.c b/src/tracker-extract/tracker-extract-vorbis.c
index c97a78d..a6c78c2 100644
--- a/src/tracker-extract/tracker-extract-vorbis.c
+++ b/src/tracker-extract/tracker-extract-vorbis.c
@@ -44,7 +44,7 @@
 #define RDF_TYPE RDF_PREFIX "type"
 
 static void extract_vorbis (const char *uri, 
-                            GPtrArray  *metadata);
+                            TrackerSparqlBuilder  *metadata);
 
 static struct {
 	gchar *name;
@@ -137,7 +137,7 @@ ogg_write (const char *meta_name,
 
 static void
 extract_vorbis (const char *uri,
-                GPtrArray *metadata)
+                TrackerSparqlBuilder *metadata)
 {
 	FILE	       *f;
 	OggVorbis_File  vf;
diff --git a/src/tracker-extract/tracker-extract-xmp.c b/src/tracker-extract/tracker-extract-xmp.c
index 5496fb3..2f6e391 100644
--- a/src/tracker-extract/tracker-extract-xmp.c
+++ b/src/tracker-extract/tracker-extract-xmp.c
@@ -28,7 +28,7 @@
 #include "tracker-xmp.h"
 
 static void extract_xmp (const gchar *filename, 
-                         GPtrArray   *metadata);
+                         TrackerSparqlBuilder   *metadata);
 
 static TrackerExtractData data[] = {
 	{ "application/rdf+xml", extract_xmp },
@@ -137,7 +137,7 @@ find_orig_uri (const gchar *xmp_filename)
 
 static void
 extract_xmp (const gchar *uri, 
-             GPtrArray   *metadata)
+             TrackerSparqlBuilder   *metadata)
 {
 	gchar *contents;
 	gsize length;
diff --git a/src/tracker-extract/tracker-extract.c b/src/tracker-extract/tracker-extract.c
index 12c6642..16ae43c 100644
--- a/src/tracker-extract/tracker-extract.c
+++ b/src/tracker-extract/tracker-extract.c
@@ -94,17 +94,6 @@ tracker_extract_finalize (GObject *object)
 	G_OBJECT_CLASS (tracker_extract_parent_class)->finalize (object);
 }
 
-static void
-statements_free (GPtrArray *statements)
-{
-	guint i;
-
-	for (i = 0; i < statements->len; i++) {
-		g_value_array_free (statements->pdata[i]);
-	}
-	g_ptr_array_free (statements, TRUE);
-}
-
 TrackerExtract *
 tracker_extract_new (void)
 {
@@ -199,13 +188,13 @@ tracker_extract_new (void)
 	return object;
 }
 
-static GPtrArray *
+static TrackerSparqlBuilder *
 get_file_metadata (TrackerExtract *extract,
 		   guint           request_id,
 		   const gchar    *uri,
 		   const gchar    *mime_)
 {
-	GPtrArray *statements;
+	TrackerSparqlBuilder *statements;
 	GFile *file;
 	GFileInfo *info;
 	GError *error = NULL;
@@ -216,7 +205,9 @@ get_file_metadata (TrackerExtract *extract,
 	const gchar *mime = mime_;
 
 	/* Create hash table to send back */
-	statements = g_ptr_array_new ();
+	statements = tracker_sparql_builder_new_update ();
+
+	tracker_sparql_builder_insert_open (statements);
 
 #ifdef HAVE_STREAMANALYZER
 	tracker_topanalyzer_extract (uri, statements, &content_type);
@@ -230,7 +221,7 @@ get_file_metadata (TrackerExtract *extract,
 		g_warning ("Could not create GFile for uri:'%s'",
 			   uri);
 		g_free (content_type);
-		statements_free (statements);
+		g_object_unref (statements);
 		return NULL;
 	}
 
@@ -239,7 +230,7 @@ get_file_metadata (TrackerExtract *extract,
 		g_warning ("File does not exist '%s'", uri);
 		g_object_unref (file);
 		g_free (content_type);
-		statements_free (statements);
+		g_object_unref (statements);
 		return NULL;
 	}
 
@@ -271,7 +262,7 @@ get_file_metadata (TrackerExtract *extract,
 		
 		g_object_unref (file);
 		g_free (content_type);
-		statements_free (statements);
+		g_object_unref (statements);
 		return NULL;
 	}
 
@@ -286,7 +277,7 @@ get_file_metadata (TrackerExtract *extract,
 		g_object_unref (file);
 
 		g_free (content_type);
-		statements_free (statements);
+		g_object_unref (statements);
 		return NULL;
 	}
 
@@ -331,7 +322,7 @@ get_file_metadata (TrackerExtract *extract,
 
 				(*edata->extract) (uri, statements);
 
-				items = statements->len;
+				items = tracker_sparql_builder_get_length (statements);
 
 				tracker_dbus_request_comment (request_id,
 							      "  Found %d metadata items",
@@ -340,6 +331,8 @@ get_file_metadata (TrackerExtract *extract,
 					continue;
 				}
 
+				tracker_sparql_builder_insert_close (statements);
+
 				g_free (mime_used);
 				g_free (content_type);
 
@@ -363,7 +356,7 @@ get_file_metadata (TrackerExtract *extract,
 				
 				(*edata->extract) (uri, statements);
 
-				items = statements->len;
+				items = tracker_sparql_builder_get_length (statements);
 
 				tracker_dbus_request_comment (request_id,
 							      "  Found %d metadata items",
@@ -372,6 +365,8 @@ get_file_metadata (TrackerExtract *extract,
 					continue;
 				}
 
+				tracker_sparql_builder_insert_close (statements);
+
 				g_free (mime_used);
 				g_free (content_type);
 
@@ -388,56 +383,13 @@ get_file_metadata (TrackerExtract *extract,
 					      "  No mime available, not extracting data");
 	}
 
+	tracker_sparql_builder_insert_close (statements);
+
 	g_free (content_type);
 
 	return statements;
 }
 
-static gchar *
-get_file_metadata_as_sparql (TrackerExtract *extract,
-			     guint           request_id,
-			     const gchar    *uri,
-			     const gchar    *mime)
-{
-	TrackerSparqlBuilder *sparql;
-	GPtrArray            *statements;
-	gint                  i;
-	gchar                *result;
-
-	statements = get_file_metadata (extract, request_id, uri, mime);
-
-	sparql = tracker_sparql_builder_new_update ();
-	tracker_sparql_builder_insert_open (sparql);
-
-	if (statements) {
-		for (i = 0; i < statements->len; i++) {
-			GValueArray *statement;
-			const gchar *subject;
-			const gchar *predicate;
-			const gchar *object;
-
-			statement = statements->pdata[i];
-
-			subject = g_value_get_string (&statement->values[0]);
-			predicate = g_value_get_string (&statement->values[1]);
-			object = g_value_get_string (&statement->values[2]);
-
-			tracker_sparql_builder_subject_iri (sparql, subject);
-			tracker_sparql_builder_predicate_iri (sparql, predicate);
-			tracker_sparql_builder_object_string (sparql, object);
-		}
-		statements_free (statements);
-	}
-
-	tracker_sparql_builder_insert_close (sparql);
-
-	result = g_strdup (tracker_sparql_builder_get_result (sparql));
-
-	g_object_unref (sparql);
-
-	return result;
-}
-
 void
 tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
 					 const gchar    *uri,
@@ -445,7 +397,7 @@ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
 {
 	guint       request_id;
 	gint        i;
-	GPtrArray   *statements = NULL;
+	TrackerSparqlBuilder *statements = NULL;
 
 	request_id = tracker_dbus_get_next_request_id ();
 
@@ -461,21 +413,9 @@ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
 	statements = get_file_metadata (object, request_id, uri, mime);
 
 	if (statements) {
-		for (i = 0; i < statements->len; i++) {
-			GValueArray *statement;
-			const gchar *subject;
-			const gchar *predicate;
-			const gchar *object;
-
-			statement = statements->pdata[i];
-
-			subject = g_value_get_string (&statement->values[0]);
-			predicate = g_value_get_string (&statement->values[1]);
-			object = g_value_get_string (&statement->values[2]);
-
-			tracker_dbus_request_debug (request_id, "  '%s' '%s' '%s'", subject, predicate, object);
-		}
-		statements_free (statements);
+		tracker_dbus_request_debug (request_id, "%s",
+		                            tracker_sparql_builder_get_result (statements));
+		g_object_unref (statements);
 	}
 
 	tracker_dbus_request_success (request_id);
@@ -511,7 +451,7 @@ tracker_extract_get_metadata (TrackerExtract	     *object,
 			      GError		    **error)
 {
 	guint       request_id;
-	gchar      *sparql = NULL;
+	TrackerSparqlBuilder *sparql = NULL;
 
 	request_id = tracker_dbus_get_next_request_id ();
 
@@ -531,11 +471,11 @@ tracker_extract_get_metadata (TrackerExtract	     *object,
 		alarm (MAX_EXTRACT_TIME);
 	}
 
-	sparql = get_file_metadata_as_sparql (object, request_id, uri, mime);
+	sparql = get_file_metadata (object, request_id, uri, mime);
 
 	if (sparql) {
-		dbus_g_method_return (context, sparql);
-		g_free (sparql);
+		dbus_g_method_return (context, tracker_sparql_builder_get_result (sparql));
+		g_object_unref (sparql);
 		tracker_dbus_request_success (request_id);
 	} else {
 		GError *actual_error = NULL;
diff --git a/src/tracker-extract/tracker-main.h b/src/tracker-extract/tracker-main.h
index 8032ff1..d1513cf 100644
--- a/src/tracker-extract/tracker-main.h
+++ b/src/tracker-extract/tracker-main.h
@@ -37,7 +37,7 @@ struct TrackerExtractData {
 	const gchar *mime;
 
 	void (* extract) (const gchar *path,
-			  GPtrArray   *metadata);
+			  TrackerSparqlBuilder *metadata);
 };
 
 /* This is defined in each extract */
diff --git a/src/tracker-extract/tracker-topanalyzer.cpp b/src/tracker-extract/tracker-topanalyzer.cpp
index fae01cc..59f4da2 100644
--- a/src/tracker-extract/tracker-topanalyzer.cpp
+++ b/src/tracker-extract/tracker-topanalyzer.cpp
@@ -39,6 +39,7 @@
 
 #include <libtracker-common/tracker-type-utils.h>
 #include <libtracker-common/tracker-os-dependant.h>
+#include <libtracker-common/tracker-sparql-builder.h>
 #include <libtracker-common/tracker-statement-list.h>
 
 #include <libtracker-common/tracker-ontology.h>
@@ -82,7 +83,7 @@ namespace Tracker {
 		void addValue( const AnalysisResult*, const RegisteredField* field,
 			       const std::string& name, const std::string& value );
 		void finishAnalysis( const AnalysisResult* );
-		void setParams (const gchar *uri_, GPtrArray *metadata_);
+		void setParams (const gchar *uri_, TrackerSparqlBuilder *metadata_);
 
 		gchar *content_type;
 
@@ -91,7 +92,7 @@ namespace Tracker {
 		const gchar* PredicateMapping (const std::string &key);
 
 		const gchar *uri;
-		GPtrArray *metadata;
+		TrackerSparqlBuilder *metadata;
 	};
 
 	Tracker::TripleCollector::TripleCollector () 
@@ -99,7 +100,7 @@ namespace Tracker {
 		content_type = NULL;
 	}
 
-	void Tracker::TripleCollector::setParams (const gchar *uri_, GPtrArray *metadata_)
+	void Tracker::TripleCollector::setParams (const gchar *uri_, TrackerSparqlBuilder *metadata_)
 	{
 		uri = uri_;
 		metadata = metadata_;
@@ -273,7 +274,7 @@ tracker_topanalyzer_shutdown (void)
 }
 
 void
-tracker_topanalyzer_extract (const gchar *uri, GPtrArray  *metadata, gchar **content_type)
+tracker_topanalyzer_extract (const gchar *uri, TrackerSparqlBuilder  *metadata, gchar **content_type)
 {
 	gchar *filename;
 	TrackerTopanalyzerPrivate *priv;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]