[tracker] Drop RDF query support



commit ebc9620ed3c01717407fc1743c83e16bdb0f37d5
Author: Jürg Billeter <j bitron ch>
Date:   Wed Apr 8 09:42:27 2009 +0200

    Drop RDF query support
    
    The XML-based RDF query support will be replaced by SPARQL.
---
 Makefile.am                               |    5 -
 data/dbus/tracker-metadata.xml            |   70 --
 data/dbus/tracker-search.xml              |   54 -
 docs/manpages/Makefile.am                 |    2 -
 docs/manpages/tracker-query.1             |   36 -
 docs/manpages/tracker-unique.1            |   55 -
 po/POTFILES.in                            |    2 -
 rdf-query-examples/80s-music.rdf          |   15 -
 rdf-query-examples/90s-music.rdf          |   15 -
 rdf-query-examples/all-documents.rdf      |    8 -
 rdf-query-examples/big-documents.rdf      |   15 -
 rdf-query-examples/wallpapers.rdf         |   16 -
 src/libtracker-data/Makefile.am           |    2 -
 src/libtracker-data/tracker-data-search.c |  606 -----------
 src/libtracker-data/tracker-data-search.h |   46 -
 src/libtracker-data/tracker-rdf-query.c   | 1693 -----------------------------
 src/libtracker-data/tracker-rdf-query.h   |   62 --
 src/libtracker/tracker.c                  |  227 ----
 src/libtracker/tracker.h                  |   16 -
 src/tracker-utils/Makefile.am             |    8 -
 src/tracker-utils/tracker-query.c         |  281 -----
 src/tracker-utils/tracker-unique.c        |  244 -----
 src/trackerd/tracker-metadata.c           |  337 ------
 src/trackerd/tracker-metadata.h           |   54 -
 src/trackerd/tracker-search.c             |  333 ------
 src/trackerd/tracker-search.h             |   28 -
 26 files changed, 0 insertions(+), 4230 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 62412b5..d56107d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,11 +21,6 @@ gen-ChangeLog:
 EXTRA_DIST = 					\
 	ChangeLog.pre-0-6-93			\
 	gitlog-to-changelog			\
-	rdf-query-examples/80s-music.rdf 	\
-	rdf-query-examples/90s-music.rdf 	\
-	rdf-query-examples/all-documents.rdf 	\
-	rdf-query-examples/big-documents.rdf 	\
-	rdf-query-examples/wallpapers.rdf 	\
 	intltool-extract.in 			\
 	intltool-merge.in 			\
 	intltool-update.in 
diff --git a/data/dbus/tracker-metadata.xml b/data/dbus/tracker-metadata.xml
index 7a8da82..5afb489 100644
--- a/data/dbus/tracker-metadata.xml
+++ b/data/dbus/tracker-metadata.xml
@@ -74,75 +74,5 @@
       <arg type="as" name="result" direction="out" />
     </method>
 
-    <!-- returns an array of all unique values of given metadata types. Optionally a rdf query can be
-	 used to filter the results. The results are sorted based on the metadata fields either in
-	 ascending or descending order. 
-      -->
-    <method name="GetUniqueValues">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="as" name="meta_types" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="b" name="descending" direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="aas" name="result" direction="out" />
-    </method>
-
-    <method name="GetSum">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="s" name="field" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="i" name="result" direction="out" />
-    </method>
-
-    <method name="GetCount">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="s" name="field" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="i" name="result" direction="out" />
-    </method>
-
-    <method name="GetUniqueValuesWithCount">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="as" name="meta_types" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="s" name="count_field" direction="in" />
-      <arg type="b" name="descending" direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="aas" name="result" direction="out" />
-    </method>
-
-    <method name="GetUniqueValuesWithCountAndSum">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="as" name="meta_types" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="s" name="count_field" direction="in" />
-      <arg type="s" name="sum_field" direction="in" />
-      <arg type="b" name="descending" direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="aas" name="result" direction="out" />
-    </method>
-
-    <method name="GetUniqueValuesWithConcatCountAndSum">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="as" name="meta_types" direction="in" />
-      <arg type="s" name="query" direction="in" />
-      <arg type="s" name="concat_field" direction="in" />
-      <arg type="s" name="count_field" direction="in" />
-      <arg type="s" name="sum_field" direction="in" />
-      <arg type="b" name="descending" direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="aas" name="result" direction="out" />
-    </method>
-
   </interface>
 </node>
diff --git a/data/dbus/tracker-search.xml b/data/dbus/tracker-search.xml
index 1cb1b96..e0d73f8 100644
--- a/data/dbus/tracker-search.xml
+++ b/data/dbus/tracker-search.xml
@@ -58,60 +58,6 @@
       <arg type="s" name="result" direction="out" />
     </method>
 
-    <!-- searches a specific metadata field (field parameter) for a
-	 search term (search_text). The result is an array of uri/id's.
-      -->
-    <method name="Metadata">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
-      <arg type="s" name="service" direction="in" />
-      <arg type="s" name="field" direction="in" />
-      <arg type="s" name="search_text"  direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="as" name="result" direction="out" />
-    </method>
-
-    <!-- Searches specified service for matching entities.
-	 - The service parameter specifies the service which the query
-	 will be performed on.
-	 - The fields parameter specifies an array of aditional metadata
-	 fields to return in addition to the id field (which is
-	 returned as the "key" in the resultant dict/hashtable) and
-	 the service category. This can be null.
-	 - The optional search_text paramter specifies the text to
-	 search for in a full text search of all indexed fields. 
-	 - The optional keyword search, a single keyword may be used
-	 here to filter the results.
-	 - The optional query_condition parameter specifies an
-	 xml-based rdf query condition which is used to filter out the
-	 results.
-	 - The Offset parameter sets the start row of the returned
-	 result set (useful for paging/cursors). A value of 0 should
-	 be passed to get rows from the beginning. 
-	 - The max_hits parameter limits the size of the result set.
-	 - The sort_by_service parameter optionally sorts results by
-	 their service category (if FALSE no service sorting is done).
-	 - The result is a array of stringarrays in format [uri,
-	 service, field1, field2...] where field1 is the first
-	 specified field in the fields paramter and so on.
-      -->
-    <method name="Query">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="i" name="live_query_id" direction="in" />
-      <arg type="s" name="service" direction="in" />
-      <arg type="as" name="fields" direction="in" />
-      <arg type="s" name="search_text" direction="in" />
-      <arg type="as" name="keywords" direction="in" />
-      <arg type="s" name="query_condition" direction="in" />
-      <arg type="b" name="sort_by_service" direction="in" />
-      <arg type="as" name="sort_fields" direction="in" />
-      <arg type="b" name="sort_descending" direction="in" />
-      <arg type="i" name="offset" direction="in" />
-      <arg type="i" name="max_hits" direction="in" />
-      <arg type="aas" name="result" direction="out" />
-    </method>
-
     <!-- Suggests an alternate spelling based on the word index. -->
     <method name="Suggest">
       <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
diff --git a/docs/manpages/Makefile.am b/docs/manpages/Makefile.am
index 32eafb6..305195c 100644
--- a/docs/manpages/Makefile.am
+++ b/docs/manpages/Makefile.am
@@ -16,7 +16,6 @@ man_MANS = 			\
 	tracker-extract.1	\
 	tracker-files.1		\
 	tracker-meta-folder.1	\
-	tracker-query.1		\
 	tracker-search.1	\
 	tracker-stats.1		\
 	trackerd.1		\
@@ -26,7 +25,6 @@ man_MANS = 			\
 	tracker.cfg.5		\
 	tracker-services.1	\
 	tracker-info.1		\
-	tracker-unique.1	\
 	$(tst)			\
 	$(ta)			\
 	$(tp)
diff --git a/docs/manpages/tracker-query.1 b/docs/manpages/tracker-query.1
deleted file mode 100644
index b44ac70..0000000
--- a/docs/manpages/tracker-query.1
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH tracker-query 1 "July 2007" GNU "User Commands"
-
-.SH NAME
-tracker-query \- command line tool to query tracker database 
-
-.SH SYNOPSIS
-.B tracker-query
-.I [OPTIONS] query-file.rdf [MetaDataFields...]
-
-.SH DESCRIPTION
-.B tracker-query
-Exectutes an RDF query and prints the result. Additionally the behavior
-can be customized using below described options.
-
-.SH OPTIONS
-.TP
-\-?, --help
-Show a brief help message.
-
-.TP
-\-s, --service=ServiceName
-Search for files from a specific service. ServiceName has to be one of
-trackers services.  For mor information on services, see
-.BR tracker-services (1).
-
-.TP
-\-t, --search-term=SerchTerm
-Adds a full text search filter to the query.
-
-.TP
-\-k, --keyword=Keyword
-Adds a keyword filter to the query.
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-services (1).
diff --git a/docs/manpages/tracker-unique.1 b/docs/manpages/tracker-unique.1
deleted file mode 100644
index 27c1c4b..0000000
--- a/docs/manpages/tracker-unique.1
+++ /dev/null
@@ -1,55 +0,0 @@
-.TH tracker-unique 1 "Oct 2008" GNU "User Commands"
-
-.SH NAME
-tracker-unique \- command line tool to ask for unique values of a
-property in tracker.
-
-.SH SYNOPSIS
-\fBtracker-unique\fR 
-[OPTIONS]
--p \fIRDFFILE\fR \fIFIELD\fR [FIELD...]
-
-.SH DESCRIPTION
-.B tracker-unique
-gets all the unique values of \fIFIELD\fR
-after running the RDF query in \fIRDFFILE\fR. 
-
-.PP
-More than one field can be used, and then it will return the 
-unique values of the combination.
-
-.SH OPTIONS
-.TP
-.B \-?, \-\-help
-Show summary of options.
-.TP
-.B \-p, \-\-path=RDFFILE
-A file containing a RDF query. (See
-documentation for description of the format).
-.TP
-.B FIELD
-A valid property in tracker. For more information on tracker
-properties, see
-.BR tracker-services (1)
-.TP
-.B \-s, \-\-service=SERVICE
-Limit the query to the specified service type. For more information on
-tracker services, see 
-.BR tracker-services (1)
-.TP
-.B \-c, \-\-count=FIELD
-Count different values of \fIFIELD\fR in the result of the query.
-.TP
-.B \-u, \-\-sum=FIELD
-Add all values of \fIFIELD\fR in the result of the query.
-.TP
-.B \-o, \-\-desc
-Sort to descending order
-
-
-.SH SEE ALSO
-.BR trackerd (1),
-.BR tracker-services (1).
-
-.SH AUTHOR
-tracker-unique was written by Mikael Ottela <mikael ottela ixonos com>.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index abbdb37..afe2c4b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -29,11 +29,9 @@ src/tracker-utils/tracker-files.c
 src/tracker-utils/tracker-info.c
 src/tracker-utils/tracker-meta-folder.c
 src/tracker-utils/tracker-processes.c
-src/tracker-utils/tracker-query.c
 src/tracker-utils/tracker-search.c
 src/tracker-utils/tracker-services.c
 src/tracker-utils/tracker-stats.c
 src/tracker-utils/tracker-status.c
 src/tracker-utils/tracker-tag.c
-src/tracker-utils/tracker-unique.c
 src/trackerd/tracker-main.c
diff --git a/rdf-query-examples/80s-music.rdf b/rdf-query-examples/80s-music.rdf
deleted file mode 100644
index 7040c23..0000000
--- a/rdf-query-examples/80s-music.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
-  <rdfq:and>	
-
-    <rdfq:greaterThan>
-      <rdfq:Property name="Audio:ReleaseDate" />
-      <rdf:Integer>1979</rdf:Integer> 
-    </rdfq:greaterThan>
-
-    <rdfq:lessThan>
-      <rdfq:Property name="Audio:ReleaseDate" />
-      <rdf:Integer>1990</rdf:Integer> 
-    </rdfq:lessThan>
-    
-  </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/90s-music.rdf b/rdf-query-examples/90s-music.rdf
deleted file mode 100644
index d49fc7b..0000000
--- a/rdf-query-examples/90s-music.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
-  <rdfq:and>	
-
-    <rdfq:greaterThan>
-      <rdfq:Property name="Audio:ReleaseDate" />
-      <rdf:Integer>1989</rdf:Integer> 
-    </rdfq:greaterThan>
-
-    <rdfq:lessThan>
-      <rdfq:Property name="Audio:ReleaseDate" />
-      <rdf:Integer>2000</rdf:Integer> 
-    </rdfq:lessThan>
-    
-  </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/all-documents.rdf b/rdf-query-examples/all-documents.rdf
deleted file mode 100644
index f58b980..0000000
--- a/rdf-query-examples/all-documents.rdf
+++ /dev/null
@@ -1,8 +0,0 @@
-<rdfq:Condition>
-
-  <rdfq:inSet>
-    <rdfq:Property name="File:Mime" />
-    <rdf:String>application/msword,application/pdf,application/vnd.ms-excel,application/vnd.oasis.opendocument.text,application/vnd.sun.xml.writer</rdf:String> 
-  </rdfq:inSet>
-
-</rdfq:Condition>
diff --git a/rdf-query-examples/big-documents.rdf b/rdf-query-examples/big-documents.rdf
deleted file mode 100644
index e003a63..0000000
--- a/rdf-query-examples/big-documents.rdf
+++ /dev/null
@@ -1,15 +0,0 @@
-<rdfq:Condition>
-  <rdfq:and>
-
-    <rdfq:inSet>
-      <rdfq:Property name="File:Mime" />
-      <rdf:String>application/msword,application/pdf,application/vnd.ms-excel,application/vnd.oasis.opendocument.text,application/vnd.sun.xml.writer</rdf:String> 
-    </rdfq:inSet>
-
-    <rdfq:greaterThan>
-      <rdfq:Property name="Doc:PageCount" />
-      <rdf:Integer>10</rdf:Integer> 
-    </rdfq:greaterThan>
-
-  </rdfq:and>
-</rdfq:Condition>
diff --git a/rdf-query-examples/wallpapers.rdf b/rdf-query-examples/wallpapers.rdf
deleted file mode 100644
index 7596e11..0000000
--- a/rdf-query-examples/wallpapers.rdf
+++ /dev/null
@@ -1,16 +0,0 @@
-<rdfq:Condition>
-  <rdfq:and>	
-
-    <rdfq:greaterThan>
-      <rdfq:Property name="Image:Width" />
-      <rdf:Integer>1023</rdf:Integer> 
-    </rdfq:greaterThan>
-
-    <rdfq:greaterThan>
-      <rdfq:Property name="Image:Height" />
-      <rdf:Integer>767</rdf:Integer> 
-    </rdfq:greaterThan>
-
-
-  </rdfq:and>
-</rdfq:Condition>
diff --git a/src/libtracker-data/Makefile.am b/src/libtracker-data/Makefile.am
index 8dbc06f..fa7a6e3 100644
--- a/src/libtracker-data/Makefile.am
+++ b/src/libtracker-data/Makefile.am
@@ -24,7 +24,6 @@ libtracker_data_la_SOURCES = 						\
 	tracker-data-update.c						\
 	tracker-field-data.c						\
 	tracker-query-tree.c						\
-	tracker-rdf-query.c						\
 	tracker-turtle.c						
 
 noinst_HEADERS =							\
@@ -37,7 +36,6 @@ noinst_HEADERS =							\
 	tracker-data-update.h						\
 	tracker-field-data.h						\
 	tracker-query-tree.h						\
-	tracker-rdf-query.h						\
 	tracker-turtle.h						
 
 libtracker_data_la_LDFLAGS =						\
diff --git a/src/libtracker-data/tracker-data-search.c b/src/libtracker-data/tracker-data-search.c
index 1c2b0ba..1a9fd5b 100644
--- a/src/libtracker-data/tracker-data-search.c
+++ b/src/libtracker-data/tracker-data-search.c
@@ -40,7 +40,6 @@
 #include "tracker-data-schema.h"
 #include "tracker-data-search.h"
 #include "tracker-query-tree.h"
-#include "tracker-rdf-query.h"
 
 #define DEFAULT_METADATA_MAX_HITS 1024
 
@@ -619,611 +618,6 @@ tracker_data_search_keywords_get_list (TrackerDBInterface *iface,
 }
 
 
-static gint
-metadata_sanity_check_max_hits (gint max_hits)
-{
-	if (max_hits < 1) {
-		return DEFAULT_METADATA_MAX_HITS;
-	}
-
-	return max_hits;
-}
-
-static gboolean
-is_data_type_numeric (TrackerFieldType type) 
-{
-	return 
-		type == TRACKER_FIELD_TYPE_INTEGER ||
-		type == TRACKER_FIELD_TYPE_DOUBLE;
-}
-
-static gboolean
-is_data_type_text (TrackerFieldType type) 
-{
-	return 
-		type == TRACKER_FIELD_TYPE_STRING ||
-		type == TRACKER_FIELD_TYPE_INDEX;
-}
-
-static TrackerFieldData *
-tracker_metadata_add_metadata_field (TrackerDBInterface *iface,
-				     const gchar        *service,
-				     GSList	       **fields,
-				     const gchar        *field_name,
-				     gboolean		 is_select,
-				     gboolean		 is_condition,
-				     gboolean            is_order)
-{
-	TrackerFieldData *field_data;
-	gboolean	  field_exists;
-	GSList		 *l;
-
-	field_exists = FALSE;
-	field_data = NULL;
-
-	/* Check if field is already in list */
-	for (l = *fields; l; l = l->next) {
-		const gchar *this_field_name;
-
-		this_field_name = tracker_field_data_get_field_name (l->data);
-		if (!this_field_name) {
-			continue;
-		}
-
-		if (strcasecmp (this_field_name, field_name) == 0) {
-			field_data = l->data;
-			field_exists = TRUE;
-
-			if (is_condition) {
-				tracker_field_data_set_is_condition (field_data, TRUE);
-			}
-
-			if (is_select) {
-				tracker_field_data_set_is_select (field_data, TRUE);
-			}
-
-			if (is_order) {
-				tracker_field_data_set_is_order (field_data, TRUE);
-			}
-			
-			break;			
-		}
-	}
-
-	if (!field_exists) {
-		field_data = tracker_data_schema_get_metadata_field (iface,
-								     service,
-								     field_name,
-								     g_slist_length (*fields),
-								     is_select,
-								     is_condition);
-		if (field_data) {
-			*fields = g_slist_prepend (*fields, field_data);
-		}
-
-		if (is_order) {
-			tracker_field_data_set_is_order (field_data, TRUE);
-		}
-	}
-
-	return field_data;
-}
-
-TrackerDBResultSet *
-tracker_data_search_get_unique_values (const gchar  *service_type,
-				       gchar	   **fields,
-				       const gchar  *query_condition,
-				       gboolean	     order_desc,
-				       gint	     offset,
-				       gint	     max_hits,
-				       GError	   **error)
-{
-	return tracker_data_search_get_unique_values_with_concat_count_and_sum (service_type,
-										fields,
-										query_condition,
-										NULL,
-										NULL,
-										NULL,
-										order_desc,
-										offset,
-										max_hits,
-										error);
-}
-
-TrackerDBResultSet *
-tracker_data_search_get_unique_values_with_count (const gchar  *service_type,
-						  gchar	      **fields,
-						  const gchar  *query_condition,
-						  const gchar  *count_field,
-						  gboolean      order_desc,
-						  gint	        offset,
-						  gint	        max_hits,
-						  GError      **error)
-{
-	return tracker_data_search_get_unique_values_with_concat_count_and_sum (service_type,
-										fields,
-										query_condition,
-										NULL,
-										count_field,
-										NULL,
-										order_desc,
-										offset,
-										max_hits,
-										error);	
-}
-
-TrackerDBResultSet *
-tracker_data_search_get_unique_values_with_count_and_sum (const gchar	      *service_type,
-							  gchar		     **fields,
-							  const gchar	      *query_condition,
-							  const gchar	      *count_field,
-							  const gchar         *sum_field,
-							  gboolean	       order_desc,
-							  gint		       offset,
-							  gint		       max_hits,
-							  GError	     **error)
-{
-	return tracker_data_search_get_unique_values_with_concat_count_and_sum (service_type,
-										fields,
-										query_condition,
-										NULL,
-										count_field,
-										sum_field,
-										order_desc,
-										offset,
-										max_hits,
-										error);
-}
-
-TrackerDBResultSet *
-tracker_data_search_get_unique_values_with_concat_count_and_sum (const gchar	      *service_type,
-								 gchar		     **fields,
-								 const gchar	      *query_condition,
-								 const gchar          *concat_field,
-								 const gchar	      *count_field,
-								 const gchar          *sum_field,
-								 gboolean	       order_desc,
-								 gint		       offset,
-								 gint		       max_hits,
-								 GError	             **error)
-{
-	TrackerDBInterface *iface;
-	TrackerDBResultSet *result_set = NULL;
-
-	GSList		   *field_list = NULL;
-	gchar		   *str_offset, *str_limit;
-
-	GString		   *sql_select;
-	GString		   *sql_from;
-	GString		   *sql_where;
-	GString		   *sql_order;
-	GString		   *sql_group;
-	gchar		   *sql;
-
-	gchar		   *rdf_where;
-	gchar		   *rdf_from;
-	GError		   *actual_error = NULL;
-
-	guint		    i;
-
-	g_return_val_if_fail (service_type != NULL, NULL);
-	g_return_val_if_fail (fields != NULL, NULL);
-	g_return_val_if_fail (query_condition != NULL, NULL);
-
-	if (!tracker_ontology_service_is_valid (service_type)) {
-		g_set_error (error, TRACKER_DBUS_ERROR, 0,
-			     "Service_Type '%s' is invalid or has not been implemented yet",
-			     service_type);
-		return NULL;
-	}
-
-	iface = tracker_db_manager_get_db_interface_by_service (service_type);
-
-	sql_select = g_string_new ("SELECT DISTINCT ");
-	sql_from   = g_string_new ("\nFROM Services AS S ");
-	sql_where  = g_string_new ("\nWHERE ");
-	sql_order  = g_string_new ("");
-	sql_group  = g_string_new ("\nGROUP BY ");
-
-
-	for (i = 0; i < g_strv_length (fields); i++) {
-		TrackerFieldData *fd;
-
-		fd = tracker_metadata_add_metadata_field (iface, service_type, &field_list, fields[i], TRUE, FALSE, TRUE);
-
-		if (!fd) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			g_string_free (sql_order, TRUE);
-			g_string_free (sql_group, TRUE);
-
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Invalid or non-existant metadata type '%s' specified",
-				     fields[i]);
-			return NULL;
-		}
-
-		if (i) {
-			g_string_append_printf (sql_select, ",");
-			g_string_append_printf (sql_group, ",");
-		}
-
-		g_string_append_printf (sql_select, "%s", tracker_field_data_get_select_field (fd));
-		if (order_desc) {
-			if (i) {
-				g_string_append_printf (sql_order, ",");
-			}
-			g_string_append_printf (sql_order, "\nORDER BY %s DESC ",
-						tracker_field_data_get_order_field (fd));
-		}
-		g_string_append_printf (sql_group, "%s", tracker_field_data_get_order_field (fd));
-
-	}
-
-	if (concat_field && !(tracker_is_empty_string (concat_field))) {
-		TrackerFieldData *fd;
-		TrackerFieldType  data_type;
-
-		fd = tracker_metadata_add_metadata_field (iface, service_type, &field_list, concat_field, TRUE, FALSE, FALSE);
-
-		if (!fd) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			g_string_free (sql_order, TRUE);
-			g_string_free (sql_group, TRUE);
-
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Invalid or non-existant metadata type '%s' specified",
-				     sum_field);
-			return NULL;
-		}
-
-		data_type = tracker_field_data_get_data_type (fd);
-
-		if (!is_data_type_text (data_type)) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			g_string_free (sql_order, TRUE);
-			g_string_free (sql_group, TRUE);
-
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Cannot concatenate '%s': this metadata type is not text",
-				     sum_field);
-			return NULL;
-		}
-
-		g_string_append_printf (sql_select, ", GROUP_CONCAT (DISTINCT %s)", tracker_field_data_get_select_field (fd));
-	}
-
-	if (count_field && !(tracker_is_empty_string (count_field))) {
-		TrackerFieldData *fd;
-
-		if (strcmp (count_field, "*")) {
-			fd = tracker_metadata_add_metadata_field (iface, service_type, &field_list, count_field,
-								  TRUE, FALSE, FALSE);
-			
-			if (!fd) {
-				g_string_free (sql_select, TRUE);
-				g_string_free (sql_from, TRUE);
-				g_string_free (sql_where, TRUE);
-				g_string_free (sql_order, TRUE);
-				g_string_free (sql_group, TRUE);
-				
-				g_set_error (error, TRACKER_DBUS_ERROR, 0,
-					     "Invalid or non-existant metadata type '%s' specified",
-					     count_field);
-				return NULL;
-			}
-			
-			g_string_append_printf (sql_select, ", COUNT (DISTINCT %s)", tracker_field_data_get_select_field (fd));
-		} else {
-				g_string_append_printf (sql_select, ", COUNT (DISTINCT S.ID)");		
-		}
-	}
-
-	if (sum_field && !(tracker_is_empty_string (sum_field))) {
-		TrackerFieldData *fd;
-		TrackerFieldType  data_type;
-
-		fd = tracker_metadata_add_metadata_field (iface, service_type, &field_list, sum_field, TRUE, FALSE, FALSE);
-
-		if (!fd) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			g_string_free (sql_order, TRUE);
-			g_string_free (sql_group, TRUE);
-
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Invalid or non-existant metadata type '%s' specified",
-				     sum_field);
-			return NULL;
-		}
-
-		data_type = tracker_field_data_get_data_type (fd);
-
-		if (!is_data_type_numeric (data_type)) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			g_string_free (sql_order, TRUE);
-			g_string_free (sql_group, TRUE);
-
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Cannot sum '%s': this metadata type is not numeric",
-				     sum_field);
-			return NULL;
-		}
-
-		g_string_append_printf (sql_select, ", SUM (%s)", tracker_field_data_get_select_field (fd));
-	}
-
-	tracker_rdf_filter_to_sql (iface, query_condition, service_type,
-				   &field_list, &rdf_from, &rdf_where, &actual_error);
-
-	if (actual_error) {
-		g_string_free (sql_select, TRUE);
-		g_string_free (sql_from, TRUE);
-		g_string_free (sql_where, TRUE);
-		g_string_free (sql_order, TRUE);
-		g_string_free (sql_group, TRUE);
-
-		g_propagate_error (error, actual_error);
-
-		return NULL;
-	}
-
-	g_string_append_printf (sql_from, " %s ", rdf_from);
-	g_string_append_printf (sql_where, " %s ", rdf_where);
-
-	g_free (rdf_from);
-	g_free (rdf_where);
-
-	str_offset = tracker_gint_to_string (offset);
-	str_limit = tracker_gint_to_string (metadata_sanity_check_max_hits (max_hits));
-
-	g_string_append_printf (sql_order, " LIMIT %s,%s", str_offset, str_limit);
-
-	sql = g_strconcat (sql_select->str, " ",
-			   sql_from->str, " ",
-			   sql_where->str, " ",
-			   sql_group->str, " ",
-			   sql_order->str, NULL);
-
-	g_free (str_offset);
-	g_free (str_limit);
-
-	g_string_free (sql_select, TRUE);
-	g_string_free (sql_from, TRUE);
-	g_string_free (sql_where, TRUE);
-	g_string_free (sql_order, TRUE);
-	g_string_free (sql_group, TRUE);
-
-	g_slist_foreach (field_list, (GFunc) g_object_unref, NULL);
-	g_slist_free (field_list);
-
-	g_message ("Unique values query executed:\n%s", sql);
-
-	result_set =  tracker_db_interface_execute_query (iface, NULL, "%s", sql);
-
-	g_free (sql);
-
-	return result_set;
-}
-
-gint
-tracker_data_search_get_sum (const gchar	 *service_type,
-			     const gchar	 *field,
-			     const gchar	 *query_condition,
-			     GError		**error)
-{
-	TrackerDBInterface *iface;
-	TrackerDBResultSet *result_set = NULL;
-
-	gint		    sum;
-	GSList		   *fields = NULL;
-	TrackerFieldData   *fd = NULL;
-	TrackerFieldType    data_type;
-	GString		   *sql_select;
-	GString		   *sql_from;
-	GString		   *sql_where;
-	gchar		   *sql;
-
-	char		   *rdf_where;
-	char		   *rdf_from;
-	GError		   *actual_error = NULL;
-
-	g_return_val_if_fail (service_type != NULL, 0);
-	g_return_val_if_fail (field != NULL, 0);
-	g_return_val_if_fail (query_condition != NULL, 0);
-
-	if (!tracker_ontology_service_is_valid (service_type)) {
-		g_set_error (error, TRACKER_DBUS_ERROR, 0,
-			     "Service_Type '%s' is invalid or has not been implemented yet",
-			     service_type);
-		return 0;
-	}
-
-	iface = tracker_db_manager_get_db_interface_by_service (service_type);
-
-	sql_select = g_string_new ("SELECT ");
-	sql_from   = g_string_new ("\nFROM Services AS S ");
-	sql_where  = g_string_new ("\nWHERE ");
-
-	fd = tracker_metadata_add_metadata_field (iface, service_type, &fields, field, TRUE, FALSE, FALSE);
-
-	if (!fd) {
-		g_string_free (sql_select, TRUE);
-		g_string_free (sql_from, TRUE);
-		g_string_free (sql_where, TRUE);
-
-		g_set_error (error, TRACKER_DBUS_ERROR, 0,
-			     "Invalid or non-existant metadata type '%s' specified",
-			     field);
-		return 0;
-	}
-
-	data_type = tracker_field_data_get_data_type (fd);
-	if (!is_data_type_numeric (data_type)) {
-		g_string_free (sql_select, TRUE);
-		g_string_free (sql_from, TRUE);
-		g_string_free (sql_where, TRUE);
-
-		g_set_error (error, TRACKER_DBUS_ERROR, 0,
-			     "Cannot sum '%s': this metadata type is not numeric",
-			     field);
-		return 0;
-	}
-
-	g_string_append_printf (sql_select, "SUM (%s)", tracker_field_data_get_select_field (fd));
-
-	tracker_rdf_filter_to_sql (iface, query_condition, service_type,
-				   &fields, &rdf_from, &rdf_where, &actual_error);
-
-	if (actual_error) {
-
-		g_string_free (sql_select, TRUE);
-		g_string_free (sql_from, TRUE);
-		g_string_free (sql_where, TRUE);
-
-		g_propagate_error (error, actual_error);
-		return 0;
-	}
-
-	g_string_append_printf (sql_from, " %s ", rdf_from);
-	g_string_append_printf (sql_where, " %s ", rdf_where);
-
-	g_free (rdf_from);
-	g_free (rdf_where);
-
-	sql = g_strconcat (sql_select->str, " ", sql_from->str, " ", sql_where->str, NULL);
-
-	g_string_free (sql_select, TRUE);
-	g_string_free (sql_from, TRUE);
-	g_string_free (sql_where, TRUE);
-
-	g_slist_foreach (fields, (GFunc) g_object_unref, NULL);
-	g_slist_free (fields);
-
-	g_debug ("Sum query executed:\n%s", sql);
-
-	result_set =  tracker_db_interface_execute_query (iface, NULL, "%s", sql);
-
-	g_free (sql);
-
-	tracker_db_result_set_get (result_set, 0, &sum, -1);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	return sum;
-}
-
-
-gint
-tracker_data_search_get_count (const gchar	   *service_type,
-			       const gchar	   *field,
-			       const gchar	   *query_condition,
-			       GError		  **error)
-{
-	TrackerDBInterface *iface;
-	TrackerDBResultSet *result_set = NULL;
-	gint		    count;
-	GSList		   *fields = NULL;
-	TrackerFieldData   *fd;
-
-	GString		   *sql_select;
-	GString		   *sql_from;
-	GString		   *sql_where;
-	gchar		   *sql;
-
-	char		   *rdf_where;
-	char		   *rdf_from;
-	GError		   *actual_error = NULL;
-
-	g_return_val_if_fail (service_type != NULL, 0);
-	g_return_val_if_fail (field != NULL, 0);
-	g_return_val_if_fail (query_condition != NULL, 0);
-
-	if (!tracker_ontology_service_is_valid (service_type)) {
-		g_set_error (error, TRACKER_DBUS_ERROR, 0,
-			     "Service_Type '%s' is invalid or has not been implemented yet",
-			     service_type);
-		return 0;
-	}
-
-	iface = tracker_db_manager_get_db_interface_by_service (service_type);
-
-	sql_select = g_string_new ("SELECT ");
-	sql_from   = g_string_new ("\nFROM Services AS S ");
-	sql_where  = g_string_new ("\nWHERE ");
-
-	if (strcmp (field, "*")) {
-		fd = tracker_metadata_add_metadata_field (iface, service_type, &fields, field, TRUE, FALSE, FALSE);
-		
-		if (!fd) {
-			g_string_free (sql_select, TRUE);
-			g_string_free (sql_from, TRUE);
-			g_string_free (sql_where, TRUE);
-			
-			g_set_error (error, TRACKER_DBUS_ERROR, 0,
-				     "Invalid or non-existant metadata type '%s' specified",
-				     field);
-			return 0;
-		}
-
-		g_string_append_printf (sql_select, "COUNT (DISTINCT %s)", tracker_field_data_get_select_field (fd));
-	} else {
-		g_string_append_printf (sql_select, "COUNT (DISTINCT S.ID)");
-	}
-
-	tracker_rdf_filter_to_sql (iface, query_condition, service_type,
-				   &fields, &rdf_from, &rdf_where, &actual_error);
-
-	if (actual_error) {
-
-		g_string_free (sql_select, TRUE);
-		g_string_free (sql_from, TRUE);
-		g_string_free (sql_where, TRUE);
-
-		g_propagate_error (error, actual_error);
-		return 0;
-	}
-
-	g_string_append_printf (sql_from, " %s ", rdf_from);
-	g_string_append_printf (sql_where, " %s ", rdf_where);
-
-	g_free (rdf_from);
-	g_free (rdf_where);
-
-	sql = g_strconcat (sql_select->str, " ", sql_from->str, " ", sql_where->str, NULL);
-
-	g_string_free (sql_select, TRUE);
-	g_string_free (sql_from, TRUE);
-	g_string_free (sql_where, TRUE);
-
-	g_slist_foreach (fields, (GFunc) g_object_unref, NULL);
-	g_slist_free (fields);
-
-	g_message ("Count query executed:\n%s", sql);
-
-	result_set =  tracker_db_interface_execute_query (iface, NULL, "%s", sql);
-
-	g_free (sql);
-
-	tracker_db_result_set_get (result_set, 0, &count, -1);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	return count;
-}
-
 TrackerDBResultSet *
 tracker_data_search_metadata_in_path (const gchar	       *path,
 				      gchar		      **fields,
diff --git a/src/libtracker-data/tracker-data-search.h b/src/libtracker-data/tracker-data-search.h
index 50dcca2..3c12807 100644
--- a/src/libtracker-data/tracker-data-search.h
+++ b/src/libtracker-data/tracker-data-search.h
@@ -75,52 +75,6 @@ TrackerDBResultSet *tracker_data_search_files_get_by_mime	 (TrackerDBInterface
 TrackerDBResultSet *tracker_data_search_keywords_get_list	 (TrackerDBInterface  *iface,
 								  const gchar	      *service);
 
-TrackerDBResultSet *tracker_data_search_get_unique_values			(const gchar	   *service_type,
-										 gchar		  **fields,
-										 const gchar	   *query_condition,
-										 gboolean	    order_desc,
-										 gint		    offset,
-										 gint		    max_hits,
-										 GError		  **error);
-gint		    tracker_data_search_get_sum					(const gchar	   *service_type,
-										 const gchar	   *field,
-										 const gchar	   *query_condition,
-										 GError		  **error);
-gint		    tracker_data_search_get_count				(const gchar	   *service_type,
-										 const gchar	   *field,
-										 const gchar	   *query_condition,
-										 GError		  **error);
-
-TrackerDBResultSet *tracker_data_search_get_unique_values_with_count		(const gchar	   *service_type,
-										 gchar		  **fields,
-										 const gchar	   *query_condition,
-										 const gchar	   *count,
-										 gboolean	    order_desc,
-										 gint		    offset,
-										 gint		    max_hits,
-										 GError		  **error);
-
-TrackerDBResultSet *tracker_data_search_get_unique_values_with_count_and_sum	(const gchar	   *service_type,
-										 gchar		  **fields,
-										 const gchar	   *query_condition,
-										 const gchar	   *count,
-										 const gchar       *sum,
-										 gboolean	    order_desc,
-										 gint		    offset,
-										 gint		    max_hits,
-										 GError		  **error);
-
-TrackerDBResultSet *tracker_data_search_get_unique_values_with_concat_count_and_sum	(const gchar	   *service_type,
-											 gchar		  **fields,
-											 const gchar	   *query_condition,
-											 const gchar       *concat_field,
-											 const gchar	   *count,
-											 const gchar       *sum,
-											 gboolean	    order_desc,
-											 gint		    offset,
-											 gint		    max_hits,
-											 GError		  **error);
-
 TrackerDBResultSet *tracker_data_search_metadata_in_path			(const gchar	   *path,
 										 gchar		  **fields,
 										 GError		  **error);
diff --git a/src/libtracker-data/tracker-rdf-query.c b/src/libtracker-data/tracker-rdf-query.c
deleted file mode 100644
index 49474e2..0000000
--- a/src/libtracker-data/tracker-rdf-query.c
+++ /dev/null
@@ -1,1693 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Tracker - indexer and metadata database engine
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- */
-
-#include <string.h>
-#include <glib.h>
-
-#include <libtracker-common/tracker-log.h>
-#include <libtracker-common/tracker-ontology.h>
-#include <libtracker-common/tracker-type-utils.h>
-#include <libtracker-common/tracker-utils.h>
-
-#include "tracker-data-manager.h"
-#include "tracker-data-schema.h"
-#include "tracker-field-data.h"
-#include "tracker-rdf-query.h"
-
-/* RDF Query Condition
- * <rdfq:Condition>
- *	<rdfq:and>
- *		<rdfq:greaterThan>
- *			<rdfq:Property name="File:Size" />
- *			<rdf:Integer>1000000</rdf:Integer>
- *		</rdfq:greaterThan>
- *		<rdfq:equals>
- *			<rdfq:Property name="File:Path" />
- *			<rdf:String>/home/jamie</rdf:String>
- *		</rdfq:equals>
- *	</rdfq:and>
- * </rdfq:Condition>
- */
-
-/* Main elements */
-#define ELEMENT_RDF_CONDITION		"rdfq:Condition"
-#define ELEMENT_RDF_PROPERTY		"rdfq:Property"
-
-/* Operators */
-#define ELEMENT_RDF_AND			"rdfq:and"
-#define ELEMENT_RDF_OR			"rdfq:or"
-#define ELEMENT_RDF_NOT			"rdfq:not"
-#define ELEMENT_RDF_EQUALS		"rdfq:equals"
-#define ELEMENT_RDF_GREATER_THAN	"rdfq:greaterThan"
-#define ELEMENT_RDF_GREATER_OR_EQUAL	"rdfq:greaterOrEqual"
-#define ELEMENT_RDF_LESS_THAN		"rdfq:lessThan"
-#define ELEMENT_RDF_LESS_OR_EQUAL	"rdfq:lessOrEqual"
-
-/* Extension operators - "contains" does a substring or full text
- * match, "in_Set" does string in list match
- */
-#define ELEMENT_RDF_CONTAINS		"rdfq:contains"
-#define ELEMENT_RDF_REGEX		"rdfq:regex"
-#define ELEMENT_RDF_STARTS_WITH		"rdfq:startsWith"
-#define ELEMENT_RDF_IN_SET		"rdfq:inSet"
-
-/* Types */
-#define ELEMENT_RDF_INTEGER		"rdf:Integer"
-#define ELEMENT_RDF_DATE		"rdf:Date"	/* Format can
-							 * be iso 8601
-							 * with
-							 * optional
-							 * timezone
-							 * "yyyy-mm-ddThh:mm:ss"
-							 * or
-							 * "yyyy-mm-ddThh:mm:ss+hh:mm"
-							 * - most
-							 * other
-							 * formats are
-							 * supported
-							 * too
-							 */
-#define ELEMENT_RDF_STRING		"rdf:String"
-#define ELEMENT_RDF_FLOAT		"rdf:Float"
-
-#define ELEMENT_IS(name) (strcmp (element_name, (name)) == 0)
-
-enum {
-	NO_ERROR,
-	PARSE_ERROR,
-};
-
-typedef enum {
-	STATE_START,
-	STATE_CONDITION,
-	STATE_END_CONDITION,
-	STATE_PROPERTY,
-	STATE_AND,
-	STATE_END_AND,
-	STATE_OR,
-	STATE_END_OR,
-	STATE_NOT,
-	STATE_END_NOT,
-	STATE_EQUALS,
-	STATE_END_EQUALS,
-	STATE_GREATER_THAN,
-	STATE_END_GREATER_THAN,
-	STATE_GREATER_OR_EQUAL,
-	STATE_END_GREATER_OR_EQUAL,
-	STATE_LESS_THAN,
-	STATE_END_LESS_THAN,
-	STATE_LESS_OR_EQUAL,
-	STATE_END_LESS_OR_EQUAL,
-	STATE_CONTAINS,
-	STATE_END_CONTAINS,
-	STATE_REGEX,
-	STATE_END_REGEX,
-	STATE_STARTS_WITH,
-	STATE_END_STARTS_WITH,
-	STATE_IN_SET,
-	STATE_END_IN_SET,
-	STATE_INTEGER,
-	STATE_END_INTEGER,
-	STATE_STRING,
-	STATE_END_STRING,
-	STATE_FLOAT,
-	STATE_END_FLOAT,
-	STATE_DATE,
-	STATE_END_DATE
-} ParseState;
-
-typedef enum {
-	OP_NONE,
-	OP_EQUALS,
-	OP_GREATER,
-	OP_GREATER_EQUAL,
-	OP_LESS,
-	OP_LESS_EQUAL,
-	OP_CONTAINS,
-	OP_REGEX,
-	OP_SET,
-	OP_STARTS
-} Operators;
-
-typedef enum {
-	LOP_NONE,
-	LOP_AND,
-	LOP_OR
-} LogicOperators;
-
-typedef struct {
-	GMarkupParseContext *context;
-	GMarkupParser	    *parser;
-	GSList		    *stack;
-	GSList		    *fields;
-	gboolean	     query_okay;
-	gint		     statement_count;
-	LogicOperators	     current_logic_operator;
-	Operators	     current_operator;
-	gchar		    *current_field;
-	gchar		    *current_value;
-	TrackerDBInterface  *iface;
-	GString		    *sql_select;
-	GString		    *sql_from;
-	GString		    *sql_where;
-	GString             *sql_group;
-	GString		    *sql_order;
-	gchar		    *service;
-} ParserData;
-
-static void start_element_handler (GMarkupParseContext	*context,
-				   const gchar		*element_name,
-				   const gchar	       **attribute_names,
-				   const gchar	       **attribute_values,
-				   gpointer		 user_data,
-				   GError	       **error);
-static void end_element_handler   (GMarkupParseContext	*context,
-				   const gchar		*element_name,
-				   gpointer		 user_data,
-				   GError	       **error);
-static void text_handler	  (GMarkupParseContext	*context,
-				   const gchar		*text,
-				   gsize		 text_len,
-				   gpointer		 user_data,
-				   GError	       **error);
-static void error_handler	  (GMarkupParseContext	*context,
-				   GError		*error,
-				   gpointer		 user_data);
-
-static gboolean
-is_operator (ParseState state)
-{
-	return
-		state == STATE_EQUALS ||
-		state == STATE_GREATER_THAN ||
-		state == STATE_LESS_THAN ||
-		state == STATE_CONTAINS ||
-		state == STATE_IN_SET ||
-		state == STATE_LESS_OR_EQUAL ||
-		state == STATE_GREATER_OR_EQUAL ||
-		state == STATE_STARTS_WITH ||
-		state == STATE_REGEX;
-}
-
-static gboolean
-is_end_operator (ParseState state)
-{
-	return
-		state == STATE_END_EQUALS ||
-		state == STATE_END_GREATER_THAN ||
-		state == STATE_END_LESS_THAN ||
-		state == STATE_END_CONTAINS ||
-		state == STATE_END_IN_SET ||
-		state == STATE_END_LESS_OR_EQUAL ||
-		state == STATE_END_GREATER_OR_EQUAL ||
-		state == STATE_END_STARTS_WITH ||
-		state == STATE_REGEX;
-}
-
-static gboolean
-is_logic (ParseState state)
-{
-	return
-		state == STATE_AND ||
-		state == STATE_OR ||
-		state == STATE_NOT;
-}
-
-static gboolean
-is_end_logic (ParseState state)
-{
-	return
-		state == STATE_END_AND ||
-		state == STATE_END_NOT ||
-		state == STATE_END_OR;
-}
-
-static void
-set_error (GError	       **err,
-	   GMarkupParseContext	*context,
-	   gint			 error_code,
-	   const gchar		*format,
-	   ...)
-{
-	gint	 line, ch;
-	va_list  args;
-	gchar	*str;
-
-	g_markup_parse_context_get_position (context, &line, &ch);
-
-	va_start (args, format);
-	str = g_strdup_vprintf (format, args);
-	va_end (args);
-
-	g_set_error (err,
-		     tracker_rdf_error_quark (),
-		     error_code,
-		     "Line %d character %d: %s",
-		     line, ch, str);
-
-	g_free (str);
-}
-
-static gboolean
-set_error_on_fail (gboolean		 condition,
-		   GMarkupParseContext	*context,
-		   const gchar		*msg,
-		   GError	       **err)
-{
-	if (!condition) {
-		set_error (err, context, 1, msg);
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-static const gchar *
-get_attribute_value (const gchar *name,
-		     const gchar **names,
-		     const gchar **values)
-{
-	gint i;
-
-	i = 0;
-
-	while (names[i]) {
-		if (strcmp (name, names[i]) == 0) {
-			return values[i];
-		}
-		i++;
-	}
-
-	return NULL;
-}
-
-static const gchar *
-get_attribute_value_required (GMarkupParseContext  *context,
-			      const gchar	   *tag,
-			      const gchar	   *name,
-			      const gchar	  **names,
-			      const gchar	  **values,
-			      GError		  **error)
-{
-	const gchar *value;
-
-	value = get_attribute_value (name, names, values);
-
-	if (!value) {
-		set_error (error,
-			   context,
-			   PARSE_ERROR,
-			   "%s must have \"%s\" attribute",
-			   tag, name);
-	}
-
-	return value;
-}
-
-static void
-push_stack (ParserData *data, ParseState state)
-{
-	data->stack = g_slist_prepend (data->stack, GINT_TO_POINTER (state));
-}
-
-static void
-pop_stack (ParserData *data)
-{
-	g_return_if_fail (data->stack != NULL);
-
-	data->stack = g_slist_remove (data->stack, data->stack->data);
-}
-
-static ParseState
-peek_state (ParserData *data)
-{
-	g_return_val_if_fail (data->stack != NULL, STATE_START);
-
-	return GPOINTER_TO_INT (data->stack->data);
-}
-
-static void
-pop_stack_until (ParserData *data, ParseState state)
-{
-	while (data->stack != NULL) {
-
-		if (state == peek_state (data)) {
-			pop_stack (data);
-			break;
-		}
-
-		pop_stack (data);
-	}
-}
-
-static TrackerFieldData *
-add_metadata_field (ParserData	*data,
-		    const gchar *field_name,
-		    gboolean	 is_select,
-		    gboolean	 is_condition,
-		    gboolean     is_order)
-{
-	TrackerFieldData *field_data;
-	gboolean	  field_exists;
-	GSList		 *l;
-
-	field_exists = FALSE;
-	field_data = NULL;
-
-	/* Check if field is already in list */
-	for (l = data->fields; l; l = l->next) {
-		const gchar *this_field_name;
-
-		this_field_name = tracker_field_data_get_field_name (l->data);
-
-		if (!this_field_name) {
-			continue;
-		}
-
-		if (strcasecmp (this_field_name, field_name) == 0) {
-			field_data = l->data;
-			field_exists = TRUE;
-
-			if (is_condition) {
-				tracker_field_data_set_is_condition (field_data, TRUE);
-			}
-
-			if (is_select) {
-				if (!tracker_field_data_get_is_select (field_data)) {
-					tracker_field_data_set_is_select (field_data, TRUE);
-					if(tracker_field_data_get_multiple_values(field_data)) {
-						g_string_append_printf (data->sql_select, ", GROUP_CONCAT (%s)",
-									tracker_field_data_get_select_field (field_data));
-					} else {
-						g_string_append_printf (data->sql_select, ", %s",
-									tracker_field_data_get_select_field (field_data));
-					}
-				}
-			}
-
-			if (is_order) {
-				tracker_field_data_set_is_order (field_data, TRUE);
-			}
-
-			break;
-		}
-	}
-
-	if (!field_exists) {
-		field_data = tracker_data_schema_get_metadata_field (data->iface,
-                                                                     data->service,
-                                                                     field_name,
-                                                                     g_slist_length (data->fields),
-                                                                     is_select,
-                                                                     is_condition);
-		if (field_data) {
-			data->fields = g_slist_prepend (data->fields, field_data);
-			if (is_select) {
-				if(tracker_field_data_get_multiple_values(field_data)) {
-					g_string_append_printf (data->sql_select, ", GROUP_CONCAT (%s)",
-								tracker_field_data_get_select_field (field_data));
-				} else {
-					g_string_append_printf (data->sql_select, ", %s",
-								tracker_field_data_get_select_field (field_data));
-				}
-			}
-
-			if (is_order) {
-				tracker_field_data_set_is_order (field_data, TRUE);
-			}
-		}
-	}
-
-	return field_data;
-}
-
-static void
-start_element_handler (GMarkupParseContext  *context,
-		       const gchar	    *element_name,
-		       const gchar	   **attribute_names,
-		       const gchar	   **attribute_values,
-		       gpointer		     user_data,
-		       GError		   **error)
-{
-	ParserData *data;
-	ParseState state;
-
-	data = user_data;
-	state = peek_state (data);
-
-	if (ELEMENT_IS (ELEMENT_RDF_CONDITION)) {
-		if (set_error_on_fail (state == STATE_START,
-				       context,
-				       "Condition element not expected here",
-				       error)) {
-			return;
-		}
-
-		push_stack (data, STATE_CONDITION);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_PROPERTY)) {
-		const char *name;
-
-		if (set_error_on_fail (is_operator (state),
-				       context,
-				       "Property element not expected here",
-				       error)) {
-			return;
-		}
-
-		name = get_attribute_value_required (context,
-						     "<rdfq:Property>", "name",
-						     attribute_names, attribute_values,
-						     error);
-
-		if (!name) {
-			return;
-		} else {
-			if (data->current_operator == OP_NONE) {
-				set_error (error,
-					   context,
-					   PARSE_ERROR,
-					   "no operator found for Property \"%s\"",
-					   name);
-				return;
-			}
-
-			data->current_field = g_strdup (name);
-
-			push_stack (data, STATE_PROPERTY);
-		}
-	} else if (ELEMENT_IS (ELEMENT_RDF_AND)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       is_end_logic (state) ||
-				       is_end_operator (state),
-				       context,
-				       "AND element not expected here",
-				       error)) {
-			return;
-		}
-
-		if (data->statement_count >= 1) {
-			if (data->current_logic_operator == LOP_AND) {
-				data->sql_where = g_string_append (data->sql_where,
-								   " AND ");
-			} else {
-				if (data->current_logic_operator == LOP_OR) {
-					data->sql_where = g_string_append (data->sql_where,
-									   " OR ");
-				}
-			}
-		}
-
-		data->statement_count = 0;
-		data->sql_where = g_string_append (data->sql_where, " ( ");
-		data->current_logic_operator = LOP_AND;
-		push_stack (data, STATE_AND);
-	} else if (ELEMENT_IS (ELEMENT_RDF_OR)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       is_end_logic (state) ||
-				       is_end_operator (state),
-				       context,
-				       "OR element not expected here",
-				       error)) {
-			return;
-		}
-
-		if (data->statement_count >= 1) {
-			if (data->current_logic_operator == LOP_AND) {
-				data->sql_where = g_string_append (data->sql_where,
-								   " AND ");
-			} else {
-				if (data->current_logic_operator == LOP_OR) {
-					data->sql_where = g_string_append (data->sql_where,
-									   " OR ");
-				}
-			}
-		}
-
-		data->statement_count = 0;
-		data->sql_where = g_string_append (data->sql_where, " ( ");
-		data->current_logic_operator = LOP_OR;
-		push_stack (data, STATE_OR);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_NOT)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       is_end_logic (state) ||
-				       is_end_operator (state),
-				       context,
-				       "NOT element not expected here",
-				       error)) {
-			return;
-		}
-
-		if (data->statement_count >= 1) {
-			if (data->current_logic_operator == LOP_AND) {
-				data->sql_where = g_string_append (data->sql_where,
-								   " AND ");
-			} else {
-				if (data->current_logic_operator == LOP_OR) {
-					data->sql_where = g_string_append (data->sql_where,
-									   " OR ");
-				}
-			}
-		}
-
-		data->statement_count = 0;
-		data->sql_where = g_string_append (data->sql_where, " NOT ( ");
-		push_stack (data, STATE_NOT);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_EQUALS)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "EQUALS element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_EQUALS;
-		push_stack (data, STATE_EQUALS);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_GREATER_THAN)) {
-
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "GREATERTHAN element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_GREATER;
-		push_stack (data, STATE_GREATER_THAN);
-	} else if (ELEMENT_IS (ELEMENT_RDF_GREATER_OR_EQUAL)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "GREATEROREQUAL element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_GREATER_EQUAL;
-		push_stack (data, STATE_GREATER_OR_EQUAL);
-	} else if (ELEMENT_IS (ELEMENT_RDF_LESS_THAN )) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "LESSTHAN element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_LESS;
-		push_stack (data, STATE_LESS_THAN);
-	} else if (ELEMENT_IS (ELEMENT_RDF_LESS_OR_EQUAL)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "LESSOREQUAL element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_LESS_EQUAL;
-		push_stack (data, STATE_LESS_OR_EQUAL);
-	} else if (ELEMENT_IS (ELEMENT_RDF_CONTAINS)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "CONTAINS element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_CONTAINS;
-		push_stack (data, STATE_CONTAINS);
-	} else if (ELEMENT_IS (ELEMENT_RDF_REGEX)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "REGEX element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_REGEX;
-		push_stack (data, STATE_REGEX);
-	} else if (ELEMENT_IS (ELEMENT_RDF_STARTS_WITH)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "STARTSWITH element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_STARTS;
-		push_stack (data, STATE_STARTS_WITH);
-	} else if (ELEMENT_IS (ELEMENT_RDF_IN_SET)) {
-		if (set_error_on_fail (state == STATE_CONDITION ||
-				       is_logic (state) ||
-				       ((data->current_logic_operator == LOP_AND ||
-					 data->current_logic_operator == LOP_OR) &&
-					is_end_operator (state)),
-				       context,
-				       "IN SET element not expected here",
-				       error)) {
-			return;
-		}
-
-		data->current_operator = OP_SET;
-		push_stack (data, STATE_IN_SET);
-	} else if (ELEMENT_IS (ELEMENT_RDF_INTEGER)) {
-		if (set_error_on_fail (state == STATE_PROPERTY,
-				       context,
-				       "INTEGER element not expected here",
-				       error)) {
-			return;
-		}
-
-		push_stack (data, STATE_INTEGER);
-	} else if (ELEMENT_IS (ELEMENT_RDF_DATE)) {
-		if (set_error_on_fail (state == STATE_PROPERTY,
-				       context,
-				       "DATE element not expected here",
-				       error)) {
-			return;
-		}
-
-		push_stack (data, STATE_DATE);
-	} else if (ELEMENT_IS (ELEMENT_RDF_STRING)) {
-		if (set_error_on_fail (state == STATE_PROPERTY,
-				       context,
-				       "STRING element not expected here",
-				       error)) {
-			return;
-		}
-
-		push_stack (data, STATE_STRING);
-	} else if (ELEMENT_IS (ELEMENT_RDF_FLOAT)) {
-		if (set_error_on_fail (state == STATE_PROPERTY,
-				       context,
-				       "FLOAT element not expected here",
-				       error)) {
-			return;
-		}
-
-		push_stack (data, STATE_FLOAT);
-	}
-}
-
-static gchar *
-get_value (const gchar *value, gboolean quote)
-{
-	gchar *escaped;
-	gchar *ret;
-
-	escaped = tracker_escape_string(value);
-	if (quote) {
-		ret = g_strconcat (" '", escaped, "' ", NULL);
-	} else {
-		ret = g_strdup (escaped);
-	}
-
-	g_free (escaped);
-
-	return ret;
-}
-
-static gboolean
-build_sql (ParserData *data)
-{
-	TrackerFieldData  *field_data;
-	ParseState	   state;
-	gchar		  *avalue, *value, *sub;
-	const gchar	  *where_field;
-	GString		  *str;
-	gchar		 **s;
-
-	g_return_val_if_fail (data->current_field &&
-			      data->current_operator != OP_NONE &&
-			      data->current_value,
-			      FALSE);
-
-	str = g_string_new ("");
-
-	data->statement_count++;
-
-	state = peek_state (data);
-
-	avalue = get_value (data->current_value, (state != STATE_END_DATE &&
-						  state != STATE_END_INTEGER &&
-						  state != STATE_END_FLOAT));
-
-	field_data = add_metadata_field (data, data->current_field, FALSE, TRUE, FALSE);
-
-	if (!field_data) {
-		g_free (avalue);
-		g_free (data->current_field);
-		g_free (data->current_value);
-		data->current_field = NULL;
-		data->current_value = NULL;
-		return FALSE;
-	}
-
-	if (tracker_field_data_get_data_type (field_data) == TRACKER_FIELD_TYPE_DATE) {
-		gchar *bvalue;
-		gint   cvalue;
-
-		bvalue = tracker_date_format (avalue);
-		cvalue = tracker_string_to_date (bvalue);
-		value = tracker_gint_to_string (cvalue);
-		g_free (bvalue);
-	} else {
-		value = g_strdup (avalue);
-	}
-
-	g_free (avalue);
-
-	if (data->statement_count > 1) {
-		if (data->current_logic_operator == LOP_AND) {
-			data->sql_where = g_string_append (data->sql_where, "\n AND ");
-		} else {
-			if (data->current_logic_operator == LOP_OR) {
-				data->sql_where = g_string_append (data->sql_where, "\n OR ");
-			}
-		}
-	}
-
-	where_field = tracker_field_data_get_where_field (field_data);
-
-	switch (data->current_operator) {
-	case OP_EQUALS:
-		sub = strchr (data->current_value, '*');
-		if (sub) {
-			g_string_append_printf (str, " (%s glob '%s') ",
-						where_field,
-						data->current_value);
-		} else {
-			if ( !strlen(value) || (strcmp(value, " '' ") == 0) ) {
-				tracker_field_data_set_needs_null (field_data, TRUE);
-				g_string_append_printf (str, " ((%s = '') OR %s IS NULL) ",
-							where_field,
-							where_field);
-			} else {
-				g_string_append_printf (str, " (%s = %s) ",
-							where_field,
-							value);
-			}
-		}
-		break;
-
-	case OP_GREATER:
-		g_string_append_printf (str, " (%s > %s) ",
-					where_field,
-					value);
-		break;
-
-	case OP_GREATER_EQUAL:
-		g_string_append_printf (str, " (%s >= %s) ",
-					where_field,
-					value);
-		break;
-
-	case OP_LESS:
-		g_string_append_printf (str, " (%s < %s) ",
-					where_field,
-					value);
-		break;
-
-	case OP_LESS_EQUAL:
-		g_string_append_printf (str, " (%s <= %s) ",
-					where_field,
-					value);
-		break;
-
-	case OP_CONTAINS:
-		sub = strchr (data->current_value, '*');
-
-		if (sub) {
-			g_string_append_printf (str, " (%s like '%%%%%s%%%%') ",
-						where_field,
-						data->current_value);
-		} else {
-			g_string_append_printf (str, " (%s like '%%%%%s%%%%') ",
-						where_field,
-						data->current_value);
-		}
-		break;
-
-	case OP_STARTS:
-		sub = strchr (data->current_value, '*');
-
-		if (sub) {
-			g_string_append_printf (str, " (%s like '%s') ",
-						where_field,
-						data->current_value);
-		} else {
-			g_string_append_printf (str, " (%s like '%s%%%%') ",
-						where_field,
-						data->current_value);
-		}
-		break;
-
-	case OP_REGEX:
-		g_string_append_printf (str, " (%s REGEXP '%s') ",
-					where_field,
-					data->current_value);
-		break;
-
-	case OP_SET:
-		s = g_strsplit (data->current_value, ",", 0);
-
-		if (s && s[0]) {
-			gchar **p;
-
-			g_string_append_printf (str, " (%s in ('%s'",
-						where_field,
-						s[0]);
-
-			for (p = s + 1; *p; p++) {
-				g_string_append_printf (str, ",'%s'", *p);
-			}
-
-			g_string_append_printf (str, ") ) " );
-		}
-		break;
-
-	default:
-	case OP_NONE:
-		break;
-	}
-
-	data->sql_where = g_string_append (data->sql_where, str->str);
-
-	g_string_free (str, TRUE);
-
-	g_free (data->current_field);
-	data->current_field = NULL;
-
-	g_free (data->current_value);
-	data->current_value = NULL;
-
-	g_free (value);
-
-	return TRUE;
-}
-
-static void
-end_element_handler (GMarkupParseContext *context,
-		     const gchar	 *element_name,
-		     gpointer		 user_data,
-		     GError		 **error)
-{
-	ParserData *data;
-
-	data = user_data;
-
-	if (ELEMENT_IS (ELEMENT_RDF_CONDITION)) {
-
-		push_stack (data, STATE_END_CONDITION);
-		data->query_okay = TRUE;
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_AND)) {
-
-		data->sql_where = g_string_append (data->sql_where, " ) ");
-
-		pop_stack_until (data, STATE_AND);
-
-		if (peek_state (data) != STATE_AND) {
-			if (peek_state (data) == STATE_OR) {
-				data->current_logic_operator = LOP_OR;
-			} else {
-				data->current_logic_operator = LOP_NONE;
-			}
-		}
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_OR)) {
-
-		data->sql_where = g_string_append (data->sql_where, " ) ");
-
-		pop_stack_until (data, STATE_OR);
-
-		if (peek_state (data) != STATE_OR) {
-			if (peek_state (data) == STATE_AND) {
-				data->current_logic_operator = LOP_AND;
-			} else {
-				data->current_logic_operator = LOP_NONE;
-			}
-		}
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_NOT)) {
-
-		data->sql_where = g_string_append (data->sql_where, " ) ");
-		pop_stack_until (data, STATE_NOT);
-
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_EQUALS)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-		push_stack (data, STATE_END_EQUALS);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_GREATER_THAN)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_GREATER_THAN);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_GREATER_OR_EQUAL)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_GREATER_OR_EQUAL);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_LESS_THAN )) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_LESS_THAN );
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_LESS_OR_EQUAL )) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_LESS_OR_EQUAL );
-
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_CONTAINS)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_CONTAINS);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_REGEX)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_REGEX);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_STARTS_WITH)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_STARTS_WITH);
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_IN_SET)) {
-
-		if (!build_sql (data)) {
-			set_error (error, context, 1, "parse error");
-			return;
-		}
-
-		push_stack (data, STATE_END_IN_SET);
-
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_INTEGER)) {
-
-		push_stack (data, STATE_END_INTEGER);
-
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_DATE)) {
-
-		push_stack (data, STATE_END_DATE);
-
-
-	} else if (ELEMENT_IS (ELEMENT_RDF_STRING)) {
-
-		push_stack (data, STATE_END_STRING);
-
-	}  else if (ELEMENT_IS (ELEMENT_RDF_FLOAT)) {
-
-		push_stack (data, STATE_END_FLOAT);
-	}
-}
-
-static void
-text_handler (GMarkupParseContext *context,
-	      const gchar	  *text,
-	      gsize		  text_len,
-	      gpointer		  user_data,
-	      GError		  **error)
-{
-	ParserData *data;
-	ParseState state;
-
-	data = user_data;
-	state = peek_state (data);
-
-	switch (state) {
-
-        case STATE_INTEGER:
-        case STATE_STRING:
-        case STATE_DATE:
-        case STATE_FLOAT:
-
-                data->current_value = g_strstrip (g_strndup (text, text_len));
-                break;
-        default:
-                break;
-	}
-}
-
-static void
-error_handler (GMarkupParseContext *context,
-	       GError		   *error,
-	       gpointer		   user_data)
-{
-	g_message ("in rdf query parse: %s", error->message);
-}
-
-static GString *
-get_select_header (const char *service)
-{
-	GString *result;
-	int type;
-
-	result = g_string_new ("");
-	type = tracker_ontology_get_service_id_by_name (service);
-
-	switch (type) {
-
-        case 0:
-        case 1:
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
-        case 8:
-                g_string_append_printf (result, " Select DISTINCT (S.Path || '%s' || S.Name) as uri, GetServiceName(S.ServiceTypeID) as stype ", G_DIR_SEPARATOR_S);
-                break;
-
-        default :
-                g_string_append_printf (result, " Select DISTINCT (S.Path || '%s' || S.Name) as uri, GetServiceName(S.ServiceTypeID) as stype ", G_DIR_SEPARATOR_S);
-                break;
-	}
-
-	return result;
-
-}
-
-static void
-append_where_header (GString *string, const char *service)
-{
-	int type;
-	
-	type = tracker_ontology_get_service_id_by_name (service);
-
-	/* Sqlite is currently unable to perform any ORDER or GROUP BY on split index, so we try not to split
-	   unless necessary on ServiceType FIXME remove when not needed anymore (ie. fixed in sqlite) */
-
-	switch (type) {
-	case 2:
-		/* FILES */
-	case 12:
-		/* EMAILS */
-		g_string_append_printf (string, " (S.ServiceTypeID in (select TypeId from ServiceTypes where TypeName = '%s' or Parent = '%s')) ", service, service);
-		break;
-	default:
-		g_string_append_printf (string, " (S.ServiceTypeID=%d) ", type);
-	}
-
-	/* only search for enabled items */
-	g_string_append_printf (string, "AND (S.Enabled = 1) ");
-
-	/* only search for items on enabled volumes */
-	g_string_append_printf (string, "AND (S.AuxilaryID = 0 OR S.AuxilaryID IN (SELECT VolumeID FROM Volumes WHERE Enabled = 1)) ");
-}
-
-GQuark
-tracker_rdf_error_quark (void)
-{
-	return g_quark_from_static_string (TRACKER_RDF_ERROR_DOMAIN);
-}
-
-gchar *
-tracker_rdf_query_to_sql (TrackerDBInterface  *iface,
-			  const gchar	      *query,
-			  const gchar	      *service,
-			  const gchar        **fields,
-			  gint		       field_count,
-			  const gchar	      *search_text,
-			  const gchar	     **keywords,
-			  gint                 keyword_count,
-			  gboolean	       sort_by_service,
-			  const gchar	     **sort_fields,
-			  gint		       sort_field_count,
-			  gboolean	       sort_desc,
-			  gint		       offset,
-			  gint		       limit,
-			  GError	     **error)
-{
-	ParserData   data;
-	gchar	    *result;
-	const gchar *table_name;
-	gboolean     do_search = FALSE;
-
-	g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), NULL);
-	g_return_val_if_fail (query != NULL, NULL);
-	g_return_val_if_fail (service != NULL, NULL);
-	g_return_val_if_fail (fields != NULL, NULL);
-	g_return_val_if_fail (search_text != NULL, NULL);
-	g_return_val_if_fail (keywords != NULL, NULL);
-
-	memset (&data, 0, sizeof (data));
-	data.iface = iface;
-	data.statement_count = 0;
-	data.service = (gchar*) service;
-	data.sql_select = get_select_header (service);
-
-	if (field_count > 0) {
-		gint i;
-
-		for (i = 0; i < field_count; i++) {
-			TrackerFieldData *field_data;
-
-			field_data = add_metadata_field (&data, fields[i], TRUE, FALSE, FALSE);
-
-			if (!field_data) {
-				g_set_error (error,
-					     tracker_rdf_error_quark (),
-					     PARSE_ERROR,
-					     "RDF Query failed, field:'%s' not found",
-					     fields[i]);
-
-				g_slist_foreach (data.fields,
-						 (GFunc) g_object_unref,
-						 NULL);
-				g_slist_free (data.fields);
-				g_string_free (data.sql_select, TRUE);
-
-				return NULL;
-			}
-		}
-	}
-
-	table_name = "Services";
-
-	data.sql_from = g_string_new ("");
-
-	if (!tracker_is_empty_string (search_text)) {
-		do_search = TRUE;
-		g_string_append_printf (data.sql_from,
-					"\n FROM %s AS S INNER JOIN SearchResults1 M ON S.ID = M.SID ",
-					table_name);
-	} else {
-		g_string_append_printf (data.sql_from,
-					"\n FROM %s AS S ",
-					table_name);
-	}
-
-	data.sql_where = g_string_new ("\nWHERE ");
-
-	append_where_header(data.sql_where, service);
-
-	if (keyword_count > 0) {
-		guint keyword;
-		GHashTable *table = NULL;
-		GHashTableIter iter;
-		GList *list = NULL;
-		gchar *key;
-
-		table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-
-		for (keyword = 0; keyword < (guint) keyword_count; keyword++) {
-			gchar *full;
-			gchar *sep;
-			gchar *value;
-
-			full = g_strdup (keywords[keyword]);
-
-			sep = strchr (full, '=');
-			if (sep) {
-				sep[0]= '\0';
-				key   = full;
-				value = sep+1;
-
-			} else {
-				key   = g_strdup ("DC:Keywords");
-				value = g_strdup (keywords[keyword]);
-			}
-
-			list = g_hash_table_lookup (table, key);
-			list = g_list_prepend (list, tracker_escape_string(value));
-			g_hash_table_insert (table, g_strdup (key), list);
-
-			g_free (full);
-		}
-		
-		g_hash_table_iter_init (&iter, table);
-		while (g_hash_table_iter_next (&iter, (gpointer) &key, (gpointer) &list)) {
-		
-			GList *l = NULL;
-			gchar *keyword_metadata;
-
-			keyword_metadata = tracker_data_schema_metadata_field_get_related_names (iface, key);
-
-			for (l = list; l; l = l->next) {
-				g_string_append_printf (data.sql_where,
-				     " AND (S.ID IN (SELECT ServiceID FROM ServiceKeywordMetaData WHERE MetaDataID in (%s) AND MetadataValue = '%s')) ",
-							keyword_metadata,
-							(gchar*) l->data);
-			}
-
-			g_list_foreach(list, (GFunc)g_free, NULL);
-			g_list_free (list);
-			g_free (keyword_metadata);
-			
-		}
-		g_hash_table_destroy (table);
-	}
-
-	if (strlen (query) >= 10) {
-		g_string_append_printf (data.sql_where, "AND ");
-	}
-
-	data.sql_group = g_string_new (" GROUP BY S.ID ");
-
-	if (limit < 1) {
-		limit = 1024;
-	}
-
-	data.sql_order = g_string_new ("");
-
-	if (sort_by_service) {
-		if (do_search) {
-			g_string_append_printf (data.sql_order,"M.Score desc, S.ServiceTypeID, uri ");
-		} else {
-			g_string_append_printf (data.sql_order,"S.ServiceTypeID, uri ");
-		}
-	} else {
-		if (do_search) {
-			g_string_append_printf (data.sql_order,"M.Score desc ");
-		} else {
-			/* Nothing */
-		}
-
-	}
-
-	if (sort_field_count > 0) {
-		gint i;
-
-		for (i = 0; i < sort_field_count; i++) {
-			TrackerFieldData *field_data;
-
-			field_data = add_metadata_field (&data, sort_fields[i], FALSE, FALSE, TRUE);
-
-			if (!field_data) {
-				g_set_error (error,
-					     tracker_rdf_error_quark (),
-					     PARSE_ERROR,
-					     "RDF Query failed, sort field:'%s' not found",
-					     sort_fields[i]);
-				g_slist_foreach (data.fields,
-						 (GFunc) g_object_unref,
-						 NULL);
-				g_slist_free (data.fields);
-				g_string_free (data.sql_select, TRUE);
-				g_string_free (data.sql_where, TRUE);
-				g_string_free (data.sql_group, TRUE);
-				g_string_free (data.sql_order, TRUE);
-
-				return NULL;
-			}
-
-			if (i) {
-				g_string_append_printf (data.sql_order, ", ");
-			}
-
-			g_string_append_printf (data.sql_order, "%s %s",
-						tracker_field_data_get_order_field (field_data),
-						sort_desc ? "DESC" : "ASC");
-		}
-	}
-
-	if (!tracker_is_empty_string (data.sql_order->str)) {
-		g_string_prepend (data.sql_order, "\n ORDER BY ");
-	}
-
-	g_string_append_printf (data.sql_order, " LIMIT ");
-
-	g_string_append_printf (data.sql_order, "%d,%d ", offset, limit);
-
-	data.parser = g_new0 (GMarkupParser, 1);
-	data.parser->start_element = start_element_handler;
-	data.parser->text = text_handler;
-	data.parser->end_element = end_element_handler;
-	data.parser->error = error_handler;
-
-	data.current_operator = OP_NONE;
-	data.current_logic_operator = LOP_NONE;
-	data.query_okay = FALSE;
-
-	data.context = g_markup_parse_context_new (data.parser, 0, &data, NULL);
-
-	push_stack (&data, STATE_START);
-
-	if (!g_markup_parse_context_parse (data.context, query, -1, error)) {
-                result = NULL;
-
-		g_string_free (data.sql_select, TRUE);
-		g_string_free (data.sql_from, TRUE);
-		g_string_free (data.sql_where, TRUE);
-		g_string_free (data.sql_group, TRUE);
-		g_string_free (data.sql_order, TRUE);
-	} else {
-		GSList *l;
-
-		for (l = data.fields; l; l = l->next) {
-			if (!tracker_field_data_get_is_condition (l->data)) {
-				if (tracker_field_data_get_is_select (l->data) &&
-				    tracker_field_data_get_needs_join (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_id_field (l->data));
-				} else if (tracker_field_data_get_is_order (l->data) &&
-					   tracker_field_data_get_needs_collate (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_id_field (l->data));
-				}
-			} else {
-				gchar *related_metadata;
-
-				related_metadata = tracker_data_schema_metadata_field_get_related_names (iface,
-                                                                                                         tracker_field_data_get_field_name (l->data));
-				if (tracker_field_data_get_needs_null (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								related_metadata);
-				} else {
-					g_string_append_printf (data.sql_from,
-								"\n INNER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								related_metadata);
-				}
-				g_free (related_metadata);
-			}
-		}
-
-		result = g_strconcat (data.sql_select->str,
-				      " ",
-				      data.sql_from->str,
-				      " ",
-				      data.sql_where->str,
-				      " ",
-				      data.sql_group->str,
-				      " ",
-				      data.sql_order->str,
-				      NULL);
-
-		g_string_free (data.sql_select, TRUE);
-		g_string_free (data.sql_from, TRUE);
-		g_string_free (data.sql_where, TRUE);
-		g_string_free (data.sql_group, TRUE);
-		g_string_free (data.sql_order, TRUE);
-	}
-
-	g_slist_foreach (data.fields, (GFunc) g_object_unref, NULL);
-	g_slist_free (data.fields);
-
-	g_slist_free (data.stack);
-	g_markup_parse_context_free (data.context);
-
-	if (data.current_field) {
-		g_free (data.current_field);
-	}
-
-	if (data.current_value) {
-		g_free (data.current_value);
-	}
-
-	g_free (data.parser);
-
-	return result;
-}
-
-
-/*
- * The following function turns an rdf query into a filter that can be used for example
- * for getting unique values of a field with a certain query.
- * FIXME It is not pretty. The calling function needs to define Services S that is joined in this method.
- */
-
-void
-tracker_rdf_filter_to_sql (TrackerDBInterface *iface,
-			   const char	      *query,
-			   const char	      *service,
-			   GSList	     **fields,
-			   char		     **from,
-			   char		     **where,
-			   GError	     **error)
-{
-	ParserData data;
-
-	g_return_if_fail (TRACKER_IS_DB_INTERFACE (iface));
-	g_return_if_fail (service != NULL);
-	g_return_if_fail (from != NULL);
-	g_return_if_fail (where != NULL);
-
-	memset (&data, 0, sizeof (data));
-	data.iface = iface;
-	data.statement_count = 0;
-	data.service = (char *) service;
-
-	data.sql_from = g_string_new ("");
-	data.sql_where = g_string_new ("");
-	append_where_header (data.sql_where, service);
-
-	data.fields = *fields;
-
-	if (strlen (query) >= 10) {
-		g_string_append (data.sql_where, "AND ");
-	}
-
-	data.parser = g_new0 (GMarkupParser, 1);
-	data.parser->start_element = start_element_handler;
-	data.parser->text = text_handler;
-	data.parser->end_element = end_element_handler;
-	data.parser->error = error_handler;
-
-	data.current_operator = OP_NONE;
-	data.current_logic_operator = LOP_NONE;
-	data.query_okay = FALSE;
-
-	data.context = g_markup_parse_context_new (data.parser, 0, &data, NULL);
-
-	push_stack (&data, STATE_START);
-
-	if ( (query != NULL) && (!g_markup_parse_context_parse (data.context, query, -1, error))) {
-
-		*from = NULL;
-		*where = NULL;
-
-		g_string_free (data.sql_from, TRUE);
-		g_string_free (data.sql_where, TRUE);
-
-	} else {
-		GSList *l;
-
-		for (l = data.fields; l; l = l->next) {
-			if (!tracker_field_data_get_is_condition (l->data)) {
-				if (tracker_field_data_get_is_select (l->data) &&
-				    tracker_field_data_get_needs_join (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_id_field (l->data));
-				} else if (tracker_field_data_get_is_order (l->data) &&
-					   tracker_field_data_get_needs_collate (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID = %s) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_id_field (l->data));
-				}
-			} else {
-				gchar *related_metadata;
-
-				related_metadata = tracker_data_schema_metadata_field_get_related_names (iface,
-                                                                        tracker_field_data_get_field_name (l->data));
-				if (tracker_field_data_get_needs_null (l->data)) {
-					g_string_append_printf (data.sql_from,
-								"\n LEFT OUTER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								related_metadata);
-				} else {
-					g_string_append_printf (data.sql_from,
-								"\n INNER JOIN %s %s ON (S.ID = %s.ServiceID and %s.MetaDataID in (%s)) ",
-								tracker_field_data_get_table_name (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								tracker_field_data_get_alias (l->data),
-								related_metadata);
-				}
-
-				g_free (related_metadata);
-			}
-		}
-
-
-		*from  = g_strdup (data.sql_from->str);
-		*where = g_strdup (data.sql_where->str);
-		g_string_free (data.sql_from, TRUE);
-		g_string_free (data.sql_where, TRUE);
-
-
-	}
-
-	*fields = data.fields;
-
-	g_slist_free (data.stack);
-	g_markup_parse_context_free (data.context);
-
-	if (data.current_field) {
-		g_free (data.current_field);
-	}
-
-	if (data.current_value) {
-		g_free (data.current_value);
-	}
-
-	g_free (data.parser);
-}
-
-gchar *
-tracker_rdf_query_for_attr_value (const gchar *field,
-                                  const gchar *value)
-{
- 	TrackerField *field_def;
- 	const gchar  *rdf_type = NULL;
- 	gchar        *rdf_query;
- 	
- 	field_def = tracker_ontology_get_field_by_name (field);
- 	
- 	if (!field_def) {
-                return NULL;
- 	}
- 	
- 	switch (tracker_field_get_data_type (field_def)) {
- 	case TRACKER_FIELD_TYPE_KEYWORD:
- 	case TRACKER_FIELD_TYPE_INDEX:
- 	case TRACKER_FIELD_TYPE_FULLTEXT:
- 	case TRACKER_FIELD_TYPE_STRING:
-                rdf_type = "rdf:String";
-                break;
-
- 	case TRACKER_FIELD_TYPE_INTEGER:
- 	case TRACKER_FIELD_TYPE_DOUBLE:
- 	case TRACKER_FIELD_TYPE_DATE:
-                rdf_type = "rdf:Integer";
-                break;
-
- 	default:
- 	case TRACKER_FIELD_TYPE_BLOB:
- 	case TRACKER_FIELD_TYPE_STRUCT:
- 	case TRACKER_FIELD_TYPE_LINK:
-                g_warning ("Unsupport field type for property %s", 
-                           tracker_field_get_name (field_def));
-                return NULL;
- 	}
-
- 	rdf_query = g_strconcat ("<rdfq:Condition>",
-                                 "  <rdfq:equals>", 
-                                 "    <rdfq:Property name=\"", field, "\"/>",
-                                 "      <", rdf_type, ">", value, "</", rdf_type, ">", 
-                                 "  </rdfq:equals>"
-                                 "</rdfq:Condition>", 
-                                 NULL);
-
- 	return rdf_query;
-} 
diff --git a/src/libtracker-data/tracker-rdf-query.h b/src/libtracker-data/tracker-rdf-query.h
deleted file mode 100644
index 5168485..0000000
--- a/src/libtracker-data/tracker-rdf-query.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- */
-
-#ifndef __TRACKERD_RDF_QUERY_H__
-#define __TRACKERD_RDF_QUERY_H__
-
-#include <glib.h>
-
-#include <libtracker-db/tracker-db-manager.h>
-
-G_BEGIN_DECLS
-
-#define TRACKER_RDF_ERROR_DOMAIN "TrackerRDF"
-#define TRACKER_RDF_ERROR        tracker_rdf_error_quark()
-
-GQuark  tracker_rdf_error_quark          (void);
-
-gchar  *tracker_rdf_query_to_sql         (TrackerDBInterface  *iface,
-					  const gchar         *query,
-					  const gchar         *service,
-					  const gchar        **fields,
-					  gint                 field_count,
-					  const gchar         *search_text,
-					  const gchar        **keywords,
-					  gint                 keyword_count,
-					  gboolean             sort_by_service,
-					  const gchar        **sort_fields,
-					  gint                 sort_field_count,
-					  gboolean             sort_desc,
-					  gint                 offset,
-					  gint                 limit,
-					  GError             **error);
-void    tracker_rdf_filter_to_sql        (TrackerDBInterface  *iface,
-					  const gchar         *query,
-					  const gchar         *service,
-					  GSList             **fields,
-					  gchar              **from,
-					  gchar              **where,
-					  GError             **error);
-gchar  *tracker_rdf_query_for_attr_value (const gchar         *field,
-					  const gchar         *value);
-
-G_END_DECLS
-
-#endif /* __TRACKERD_RDF_QUERY_H__ */
diff --git a/src/libtracker/tracker.c b/src/libtracker/tracker.c
index 8a3a729..62d3ce2 100644
--- a/src/libtracker/tracker.c
+++ b/src/libtracker/tracker.c
@@ -538,84 +538,6 @@ tracker_metadata_get_registered_classes (TrackerClient *client, GError **error)
 }
 
 
-GPtrArray *
-tracker_metadata_get_unique_values (TrackerClient *client, ServiceType service, char **meta_types, char *query, gboolean descending, int offset, int max_hits, GError **error)
-{
-	GPtrArray *table;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_unique_values (client->proxy_metadata, service_str, (const char **)meta_types, query, descending, offset, max_hits, &table, &*error)) {
-		return NULL;
-	}
-
-	return table;
-}
-
-int
-tracker_metadata_get_sum (TrackerClient *client, ServiceType service, char *field, char *query, GError **error)
-{
-	int sum;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_sum (client->proxy_metadata, service_str, field, query, &sum, &*error)) {
-		return -1;
-	}
-
-	return sum;
-}
-
-int
-tracker_metadata_get_count (TrackerClient *client, ServiceType service, char *field, char *query, GError **error)
-{
-	int count;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_count (client->proxy_metadata, service_str, field, query, &count, &*error)) {
-		return -1;
-	}
-
-	return count;
-
-}
-
-GPtrArray *
-tracker_metadata_get_unique_values_with_count (TrackerClient *client, ServiceType service, char **meta_types, char *query, char *count, gboolean descending, int offset, int max_hits, GError **error)
-{
-	GPtrArray *table;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_unique_values_with_count (client->proxy_metadata, service_str, (const char **)meta_types, query, count, descending, offset, max_hits, &table, &*error)) {
-		return NULL;
-	}
-
-	return table;
-}
-
-GPtrArray *
-tracker_metadata_get_unique_values_with_count_and_sum (TrackerClient *client, ServiceType service, char **meta_types, char *query, char *count, char *sum, gboolean descending, int offset, int max_hits, GError **error)
-{
-	GPtrArray *table;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_unique_values_with_count_and_sum (client->proxy_metadata, service_str, (const char **)meta_types, query, count, sum, descending, offset, max_hits, &table, &*error)) {
-		return NULL;
-	}
-
-	return table;
-}
-
-GPtrArray *
-tracker_metadata_get_unique_values_with_concat_count_and_sum (TrackerClient *client, ServiceType service, char **meta_types, char *query, char *concat, char *count, char *sum, gboolean descending, int offset, int max_hits, GError **error)
-{
-	GPtrArray *table;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Metadata_get_unique_values_with_concat_count_and_sum (client->proxy_metadata, service_str, (const char **)meta_types, query, concat, count, sum, descending, offset, max_hits, &table, &*error)) {
-		return NULL;
-	}
-
-	return table;
-}
 
 GPtrArray *
 tracker_keywords_get_list (TrackerClient *client, ServiceType service, GError **error)
@@ -764,35 +686,6 @@ tracker_search_get_snippet (TrackerClient *client, ServiceType service, const ch
 }
 
 
-
-char **
-tracker_search_metadata	(TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, GError **error)
-{
-	char **array = NULL;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Search_metadata (client->proxy_search, service_str, field, search_text,  offset, max_hits, &array, &*error)) {
-		return NULL;
-	}
-
-	return array;
-}
-
-
-
-GPtrArray *
-tracker_search_query (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, char **keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, char **sort_fields, gboolean sort_descending, GError **error)
-{
-	GPtrArray *table;
-	const char *service_str = tracker_service_types[service];
-
-	if (!org_freedesktop_Tracker_Search_query (client->proxy_search, live_query_id, service_str, (const char **)fields, search_text, (const char **)keywords, query, sort_by_service, (const char **)sort_fields, sort_descending, offset, max_hits , &table, &*error)) {
-		return NULL;
-	}
-
-	return table;
-}
-
 char *
 tracker_search_suggest (TrackerClient *client, const char *search_term, int maxdist, GError **error)
 {
@@ -1214,93 +1107,6 @@ tracker_metadata_get_registered_classes_async (TrackerClient *client, TrackerArr
 
 
 void
-tracker_metadata_get_unique_values_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
-	GPtrArrayCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (GPtrArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_unique_values_async (client->proxy_metadata, service_str, (const char **) meta_types, query, descending, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-void
-tracker_metadata_get_sum_async (TrackerClient *client, ServiceType service, char *field, char *query, TrackerIntReply callback, gpointer user_data)
-{
-	IntCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (IntCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_sum_async (client->proxy_metadata, service_str, field, query, tracker_int_reply, callback_struct);
-}
-
-
-void
-tracker_metadata_get_count_async (TrackerClient *client, ServiceType service, char *field, char *query, TrackerIntReply callback, gpointer user_data)
-{
-	IntCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (IntCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_count_async (client->proxy_metadata, service_str, field, query, tracker_int_reply, callback_struct);
-}
-
-void
-tracker_metadata_get_unique_values_with_count_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *count, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
-	GPtrArrayCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (GPtrArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_unique_values_with_count_async (client->proxy_metadata, service_str, (const char **) meta_types, query, count, descending, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-void
-tracker_metadata_get_unique_values_with_count_and_sum_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *count, char *sum, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
-	GPtrArrayCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (GPtrArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_unique_values_with_count_and_sum_async (client->proxy_metadata, service_str, (const char **) meta_types, query, count, sum, descending, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-void
-tracker_metadata_get_unique_values_with_concat_count_and_sum_async (TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *concat, char *count, char *sum, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-
-	GPtrArrayCallBackStruct *callback_struct;
-	const char *service_str = tracker_service_types[service];
-
-	callback_struct = g_new (GPtrArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	client->last_pending_call = org_freedesktop_Tracker_Metadata_get_unique_values_with_concat_count_and_sum_async (client->proxy_metadata, service_str, (const char **) meta_types, query, concat, count, sum, descending, offset, max_hits, tracker_GPtrArray_reply, callback_struct);
-
-}
-
-void
 tracker_keywords_get_list_async (TrackerClient *client, ServiceType service, TrackerGPtrArrayReply callback, gpointer user_data)
 {
 
@@ -1494,39 +1300,6 @@ tracker_search_get_snippet_async (TrackerClient *client, ServiceType service, co
 
 
 void
-tracker_search_metadata_async	(TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data)
-{
-	ArrayCallBackStruct *callback_struct;
-	const char *service_str;
-
-	callback_struct = g_new (ArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	service_str = tracker_service_types[service];
-
-	org_freedesktop_Tracker_Search_metadata_async (client->proxy_search, service_str, field, search_text,  offset, max_hits,  tracker_array_reply, callback_struct);
-
-}
-
-void
-tracker_search_query_async (TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text,  char **keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, char **sort_fields, gboolean sort_descending, TrackerGPtrArrayReply callback, gpointer user_data)
-{
-	GPtrArrayCallBackStruct *callback_struct;
-	const char *service_str;
-
-	callback_struct = g_new (GPtrArrayCallBackStruct, 1);
-	callback_struct->callback = callback;
-	callback_struct->data = user_data;
-
-	service_str = tracker_service_types[service];
-
-	client->last_pending_call = org_freedesktop_Tracker_Search_query_async (client->proxy_search, live_query_id, service_str, (const char **)fields, search_text, (const char **)keywords, query, sort_by_service, (const char **)sort_fields, sort_descending, offset, max_hits,	tracker_GPtrArray_reply, callback_struct);
-
-}
-
-
-void
 tracker_search_suggest_async (TrackerClient *client, const char *search_text, int maxdist, TrackerStringReply callback, gpointer user_data)
 {
 
diff --git a/src/libtracker/tracker.h b/src/libtracker/tracker.h
index 7a3f1cc..50d8ae7 100644
--- a/src/libtracker/tracker.h
+++ b/src/libtracker/tracker.h
@@ -127,12 +127,6 @@ MetaDataTypeDetails *	tracker_metadata_get_type_details		(TrackerClient *client,
 char **			tracker_metadata_get_registered_types		(TrackerClient *client, const char *classname, GError **error);
 char **			tracker_metadata_get_writeable_types		(TrackerClient *client, const char *classname, GError **error);
 char **			tracker_metadata_get_registered_classes		(TrackerClient *client, GError **error);
-GPtrArray *		tracker_metadata_get_unique_values		(TrackerClient *client, ServiceType service, char **meta_types, char *query, gboolean descending, int offset, int max_hits, GError **error);
-int		tracker_metadata_get_sum			(TrackerClient *client, ServiceType service, char *field, char *query, GError **error);
-int		tracker_metadata_get_count			(TrackerClient *client, ServiceType service, char *field, char *query, GError **error);
-GPtrArray *	tracker_metadata_get_unique_values_with_count	(TrackerClient *client, ServiceType service, char **meta_types, char *query, char *count, gboolean descending, int offset, int max_hits, GError **error);
-GPtrArray *	tracker_metadata_get_unique_values_with_count_and_sum   (TrackerClient *client, ServiceType service, char **meta_types, char *query, char *count, char *sum, gboolean descending, int offset, int max_hits, GError **error);
-GPtrArray *	tracker_metadata_get_unique_values_with_concat_count_and_sum   (TrackerClient *client, ServiceType service, char **meta_types, char *query, char *concat, char *count, char *sum, gboolean descending, int offset, int max_hits, GError **error);
 
 GPtrArray *	tracker_keywords_get_list			(TrackerClient *client, ServiceType service, GError **error);
 char **		tracker_keywords_get				(TrackerClient *client, ServiceType service, const char *id, GError **error);
@@ -147,8 +141,6 @@ GPtrArray *	tracker_search_get_hit_count_all		(TrackerClient *client, const char
 char **		tracker_search_text				(TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error);
 GPtrArray *	tracker_search_text_detailed			(TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, GError **error);
 char *		tracker_search_get_snippet			(TrackerClient *client, ServiceType service, const char *uri, const char *search_text, GError **error);
-char **		tracker_search_metadata				(TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, GError **error);
-GPtrArray *	tracker_search_query				(TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, char **keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, char **sort_fields, gboolean sort_descending, GError **error);
 gchar *		tracker_search_suggest				(TrackerClient *client, const char *search_text, int maxdist, GError **error);
 
 
@@ -192,12 +184,6 @@ void		tracker_metadata_register_type_async			(TrackerClient *client, const char
 void		tracker_metadata_get_registered_types_async		(TrackerClient *client, const char *classname, TrackerArrayReply callback, gpointer user_data);
 void		tracker_metadata_get_writeable_types_async		(TrackerClient *client, const char *classname, TrackerArrayReply callback, gpointer user_data);
 void		tracker_metadata_get_registered_classes_async		(TrackerClient *client, TrackerArrayReply callback, gpointer user_data);
-void		tracker_metadata_get_unique_values_async		(TrackerClient *client, ServiceType service, char **meta_types, const char *query, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
-void		tracker_metadata_get_sum_async				(TrackerClient *client, ServiceType service, char *field, char *query, TrackerIntReply callback, gpointer user_data);
-void		tracker_metadata_get_count_async			(TrackerClient *client, ServiceType service, char *field, char *query, TrackerIntReply callback, gpointer user_data);
-void		tracker_metadata_get_unique_values_with_count_async	(TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *count, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
-void	   tracker_metadata_get_unique_values_with_count_and_sum_async	(TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *count, char *sum, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
-void	   tracker_metadata_get_unique_values_with_concat_count_and_sum_async	(TrackerClient *client, ServiceType service, char **meta_types, const char *query, char *concat, char *count, char *sum, gboolean descending, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
 
 void		tracker_keywords_get_list_async				(TrackerClient *client, ServiceType service, TrackerGPtrArrayReply callback, gpointer user_data);
 void		tracker_keywords_get_async				(TrackerClient *client, ServiceType service, const char *id, TrackerArrayReply callback, gpointer user_data);
@@ -211,8 +197,6 @@ void		tracker_search_text_get_hit_count_all_async		(TrackerClient *client, const
 void		tracker_search_text_async				(TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
 void		tracker_search_text_detailed_async			(TrackerClient *client, int live_query_id, ServiceType service, const char *search_text, int offset, int max_hits, TrackerGPtrArrayReply callback, gpointer user_data);
 void		tracker_search_get_snippet_async			(TrackerClient *client, ServiceType service, const char *uri, const char *search_text, TrackerStringReply callback, gpointer user_data);
-void		tracker_search_metadata_async				(TrackerClient *client, ServiceType service, const char *field, const char* search_text, int offset, int max_hits, TrackerArrayReply callback, gpointer user_data);
-void		tracker_search_query_async				(TrackerClient *client, int live_query_id, ServiceType service, char **fields, const char *search_text, char **keywords, const char *query, int offset, int max_hits, gboolean sort_by_service, char **sort_fields, gboolean sort_descending, TrackerGPtrArrayReply callback, gpointer user_data);
 void		tracker_search_suggest_async				(TrackerClient *client, const char *search_text, int maxdist, TrackerStringReply callback, gpointer user_data);
 
 void		tracker_files_create_async				(TrackerClient *client,  const char *uri, gboolean is_directory, const char *mime, int size, int mtime, TrackerVoidReply callback, gpointer user_data);
diff --git a/src/tracker-utils/Makefile.am b/src/tracker-utils/Makefile.am
index 987b19b..8f2d113 100644
--- a/src/tracker-utils/Makefile.am
+++ b/src/tracker-utils/Makefile.am
@@ -21,13 +21,11 @@ libs = 									\
 
 bin_PROGRAMS = 								\
 	tracker-search 							\
-	tracker-query 							\
 	tracker-meta-folder						\
 	tracker-stats							\
 	tracker-tag							\
 	tracker-files							\
 	tracker-status							\
-	tracker-unique							\
 	tracker-info							\
 	tracker-processes						\
 	tracker-services
@@ -35,9 +33,6 @@ bin_PROGRAMS = 								\
 tracker_search_SOURCES = tracker-search.c
 tracker_search_LDADD = $(libs)
 
-tracker_query_SOURCES = tracker-query.c
-tracker_query_LDADD = $(libs)
-
 tracker_meta_folder_SOURCES = tracker-meta-folder.c
 tracker_meta_folder_LDADD = $(libs)
 
@@ -53,9 +48,6 @@ tracker_files_LDADD = $(libs)
 tracker_status_SOURCES = tracker-status.c
 tracker_status_LDADD = $(libs)
 
-tracker_unique_SOURCES = tracker-unique.c
-tracker_unique_LDADD = $(libs)
-
 tracker_info_SOURCES = tracker-info.c
 tracker_info_LDADD = $(libs)
 
diff --git a/src/tracker-utils/tracker-query.c b/src/tracker-utils/tracker-query.c
deleted file mode 100644
index a7b3543..0000000
--- a/src/tracker-utils/tracker-query.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <sys/param.h>
-#include <stdlib.h>
-#include <time.h>
-#include <locale.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gio/gio.h>
-
-#include <libtracker/tracker.h>
-#include <libtracker-common/tracker-common.h>
-
-#ifdef G_OS_WIN32
-#include <trackerd/mingw-compat.h>
-#endif /* G_OS_WIN32 */
-
-static gchar	     *path;
-static gchar	     *search;
-static gchar	    **fields;
-static gchar	     *service;
-static gchar	    **keywords;
-static gchar        **order;
-static gint	      limit = 512;
-static gint	      offset;
-
-static GOptionEntry   entries[] = {
-	{ "path", 'p', 0, G_OPTION_ARG_STRING, &path,
-	  N_("Path to use in query"),
-	  NULL,
-	},
-	{ "service", 's', 0, G_OPTION_ARG_STRING, &service,
-	  N_("Search from a specific service"),
-	  NULL
-	},
-	{ "limit", 'l', 0, G_OPTION_ARG_INT, &limit,
-	  N_("Limit the number of results shown"),
-	  N_("512")
-	},
-	{ "offset", 'o', 0, G_OPTION_ARG_INT, &offset,
-	  N_("Offset the results"),
-	  N_("0")
-	},
-	{ "search-term", 't', 0, G_OPTION_ARG_STRING, &search,
-	  N_("Adds a fulltext search filter"),
-	  NULL,
-	},
-	{ "keyword", 'k', 0, G_OPTION_ARG_STRING_ARRAY, &keywords,
-	  N_("Adds a keyword filter"),
-	  NULL
-	},
-	{ "order", 'r', 0, G_OPTION_ARG_STRING_ARRAY, &order,
-	  N_("Adds an order field"),
-	  NULL
-	},
-	{ G_OPTION_REMAINING, 0, 0,
-	  G_OPTION_ARG_STRING_ARRAY, &fields,
-	  N_("Metadata Fields"),
-	  N_("FIELD [FIELD...]")
-	},
-	{ NULL }
-};
-
-static void
-get_meta_table_data (gpointer value)
-{
-	gchar **meta;
-	gchar **p;
-	gint	i;
-
-	meta = value;
-
-	for (p = meta, i = 0; *p; p++, i++) {
-		if (i == 0) {
-			g_print ("  %s", *p);
-		} else {
-			g_print (", %s", *p);
-		}
-	}
-
-	g_print ("\n");
-}
-
-int
-main (int argc, char **argv)
-{
-	TrackerClient	*client;
-	ServiceType	 type;
-	GOptionContext	*context;
-	GError		*error = NULL;
-	GFile           *file;
-	gchar		*path_in_utf8, *abs_path;
-	gchar		*content;
-	gchar		*buffer;
-	gsize		 size;
-	GPtrArray	*array;
-
-	setlocale (LC_ALL, "");
-
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new (_("- Query using RDF and return results "
-					  "with specified metadata fields"));
-
-	g_option_context_add_main_entries (context, entries, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-
-	if (!fields || !path) {
-		gchar *help;
-
-		g_printerr ("%s\n\n",
-			    _("Path or fields are missing"));
-
-		help = g_option_context_get_help (context, TRUE, NULL);
-		g_option_context_free (context);
-		g_printerr ("%s", help);
-		g_free (help);
-
-		return EXIT_FAILURE;
-	}
-
-	g_option_context_free (context);
-
-	client = tracker_connect (FALSE);
-
-	if (!client) {
-		g_printerr ("%s\n",
-			    _("Could not establish a DBus connection to Tracker"));
-		return EXIT_FAILURE;
-	}
-
-	if (limit <= 0) {
-		limit = 512;
-	}
-
-	if (!service) {
-		g_print ("%s\n",
-			 _("Defaulting to 'files' service"));
-
-		type = SERVICE_FILES;
-	} else {
-		type = tracker_service_name_to_type (service);
-
-		if (type == SERVICE_OTHER_FILES && g_ascii_strcasecmp (service, "Other")) {
-			g_printerr ("%s\n",
-				    _("Service not recognized, searching in other files..."));
-		}
-	}
-
-	path_in_utf8 = g_filename_to_utf8 (path, -1, NULL, NULL, &error);
-	if (error) {
-		g_printerr ("%s:'%s', %s\n",
-			    _("Could not get UTF-8 path from path"),
-			    path,
-			    error->message);
-		g_error_free (error);
-		tracker_disconnect (client);
-
-		return EXIT_FAILURE;
-	}
-
-	file = g_file_new_for_commandline_arg (path_in_utf8);
-	abs_path = g_file_get_path (file);
-
-	g_file_get_contents (abs_path, &content, &size, &error);
-	if (error) {
-		g_printerr ("%s:'%s', %s\n",
-			    _("Could not read file"),
-			    abs_path,
-			    error->message);
-		g_error_free (error);
-		g_free (path_in_utf8);
-		g_free (abs_path);
-		g_object_unref (file);
-		tracker_disconnect (client);
-
-		return EXIT_FAILURE;
-	}
-
-	g_free (path_in_utf8);
-	g_free (abs_path);
-	g_object_unref (file);
-
-	buffer = g_locale_to_utf8 (content, size, NULL, NULL, &error);
-	g_free (content);
-
-	if (error) {
-		g_printerr ("%s, %s\n",
-			    _("Could not convert query file to UTF-8"),
-			    error->message);
-		g_error_free (error);
-		tracker_disconnect (client);
-
-		return EXIT_FAILURE;
-	}
-
-	array = tracker_search_query (client,
-				      time (NULL),
-				      type,
-				      fields,
-				      search,
-				      keywords,
-				      buffer,
-				      offset,
-				      limit,
-				      FALSE,
-				      order,
-				      FALSE,
-				      &error);
-	g_free (buffer);
-
-	if (error) {
-		g_printerr ("%s, %s\n",
-			    _("Could not query search"),
-			    error->message);
-		g_error_free (error);
-
-		return EXIT_FAILURE;
-	}
-
-	if (!array) {
-		g_print ("%s\n",
-			 _("No results found matching your query"));
-	} else {
-		gint length;
-
-		length = array->len;
-
-		g_print (tracker_dngettext (NULL,
-					    _("Result: %d"), 
-					    _("Results: %d"),
-					    length),
-			 length);
-		g_print ("\n");
-
-		g_ptr_array_foreach (array, (GFunc) get_meta_table_data, NULL);
-		g_ptr_array_free (array, TRUE);
-
-		if (length >= limit) {
-			/* Display '...' so the user thinks there is
-			 * more items.
-			 */
-			g_print ("  ...\n");
-
-			/* Display warning so the user knows this is
-			 * not the WHOLE data set.
-			 */
-			g_printerr ("\n"
-				    "%s\n",
-				    _("NOTE: Limit was reached, there are more items in the database not listed here"));
-		}
-	}
-
-	tracker_disconnect (client);
-
-	return EXIT_SUCCESS;
-}
diff --git a/src/tracker-utils/tracker-unique.c b/src/tracker-utils/tracker-unique.c
deleted file mode 100644
index 59b340e..0000000
--- a/src/tracker-utils/tracker-unique.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <sys/param.h>
-#include <stdlib.h>
-#include <locale.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <libtracker/tracker.h>
-#include <libtracker-common/tracker-common.h>
-
-#ifdef G_OS_WIN32
-#include <trackerd/mingw-compat.h>
-#endif /* G_OS_WIN32 */
-
-static gchar	    **fields;
-static gchar	     *service;
-static gchar	     *path;
-static gchar         *concat;
-static gchar	     *count;
-static gchar         *sum;
-static gboolean       descending;
-
-static GOptionEntry   entries[] = {
-	{ "path", 'p', 0, G_OPTION_ARG_STRING, &path,
-	  N_("Path to use in query"),
-	  NULL
-	},
-	{ "service", 's', 0, G_OPTION_ARG_STRING, &service,
-	  N_("Search from a specific service"),
-	  NULL
-	},
-	{ "concat", 'n', 0, G_OPTION_ARG_STRING, &concat,
-	  N_("Concatenate different values of this field"),
-	  "e.g. File:Mime"
-	},
-	{ "count", 'c', 0, G_OPTION_ARG_STRING, &count,
-	  N_("Count instances of unique fields of this type"),
-	  "e.g. File:Mime"
-	},
-	{ "sum", 'u', 0, G_OPTION_ARG_STRING, &sum,
-	  N_("Sum the values of this field"),
-	  "e.g. File:Mime"
-	},
-	{ "desc", 'o', 0, G_OPTION_ARG_NONE, &descending,
-	  N_("Sort to descending order"),
-	  NULL},
-	{ G_OPTION_REMAINING, 0, 0,
-	  G_OPTION_ARG_STRING_ARRAY, &fields,
-	  N_("Required fields"), N_("FIELD [FIELD...]")},
-	{ NULL }
-};
-
-static void
-get_meta_table_data (gpointer value)
-{
-	gchar **meta;
-	gchar **p;
-	gint	i;
-
-	meta = value;
-
-	for (p = meta, i = 0; *p; p++, i++) {
-		if (i == 0) {
-			g_print ("  %s", *p);
-		} else {
-			g_print (", %s", *p);
-		}
-	}
-
-	g_print ("\n");
-}
-
-int
-main (int argc, char **argv)
-{
-	TrackerClient	*client;
-	ServiceType	 type;
-	GOptionContext	*context;
-	GError		*error = NULL;
-	gchar		*content;
-	gchar		*buffer = NULL;
-	gsize		 size;
-	GPtrArray	*array;
-
-	setlocale (LC_ALL, "");
-
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new ("- Get unique values with an optional RDF query filter");
-	g_option_context_add_main_entries (context, entries, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-
-	if (!fields) {
-		gchar *help;
-
-		g_printerr ("%s\n\n",
-			    _("Fields are missing"));
-
-		help = g_option_context_get_help (context, TRUE, NULL);
-		g_option_context_free (context);
-		g_printerr ("%s", help);
-		g_free (help);
-
-		return EXIT_FAILURE;
-	}
-
-	g_option_context_free (context);
-
-	client = tracker_connect (FALSE);
-
-	if (!client) {
-		g_printerr ("%s\n",
-			    _("Could not establish a DBus connection to Tracker"));
-		return EXIT_FAILURE;
-	}
-
-	if (!service) {
-		g_print ("%s\n",
-			 _("Defaulting to 'files' service"));
-
-		type = SERVICE_FILES;
-	} else {
-		type = tracker_service_name_to_type (service);
-
-		if (type == SERVICE_OTHER_FILES && g_ascii_strcasecmp (service, "Other")) {
-			g_printerr ("%s\n",
-				    _("Service not recognized, searching in other files..."));
-		}
-	}
-
-	if (path) {
-		gchar *path_in_utf8;
-
-		path_in_utf8 = g_filename_to_utf8 (path, -1, NULL, NULL, &error);
-		if (error) {
-			g_printerr ("%s:'%s', %s\n",
-				    _("Could not get UTF-8 path from path"),
-				    path,
-				    error->message);
-			g_error_free (error);
-			tracker_disconnect (client);
-
-			return EXIT_FAILURE;
-		}
-
-		g_file_get_contents (path_in_utf8, &content, &size, &error);
-		if (error) {
-			g_printerr ("%s:'%s', %s\n",
-				    _("Could not read file"),
-				    path_in_utf8,
-				    error->message);
-			g_error_free (error);
-			g_free (path_in_utf8);
-			tracker_disconnect (client);
-
-			return EXIT_FAILURE;
-		}
-
-		g_free (path_in_utf8);
-
-		buffer = g_locale_to_utf8 (content, size, NULL, NULL, &error);
-		g_free (content);
-
-		if (error) {
-			g_printerr ("%s, %s\n",
-				    _("Could not convert query file to UTF-8"),
-				    error->message);
-			g_error_free (error);
-			tracker_disconnect (client);
-
-			return EXIT_FAILURE;
-		}
-	}
-
-	array = tracker_metadata_get_unique_values_with_concat_count_and_sum (client,
-									      type,
-									      fields,
-									      buffer,
-									      concat,
-									      count,
-									      sum,
-									      descending,
-									      0,
-									      512,
-									      &error);
-	g_free (buffer);
-
-	if (error) {
-		g_printerr ("%s, %s\n",
-			    _("Could not query search"),
-			    error->message);
-		g_error_free (error);
-
-		return EXIT_FAILURE;
-	}
-
-	if (!array) {
-		g_print ("%s\n",
-			 _("No results found matching your query"));
-	} else {
-		gint length;
-
-		length = array->len;
-		
-		g_print (tracker_dngettext (NULL,
-					    _("Result: %d"), 
-					    _("Results: %d"),
-					    length),
-			 length);
-		g_print ("\n");
-
-		g_ptr_array_foreach (array, (GFunc) get_meta_table_data, NULL);
-		g_ptr_array_free (array, TRUE);
-	}
-
-	tracker_disconnect (client);
-
-	return EXIT_SUCCESS;
-}
diff --git a/src/trackerd/tracker-metadata.c b/src/trackerd/tracker-metadata.c
index cc72296..1ce5176 100644
--- a/src/trackerd/tracker-metadata.c
+++ b/src/trackerd/tracker-metadata.c
@@ -36,7 +36,6 @@
 #include <libtracker-data/tracker-data-query.h>
 #include <libtracker-data/tracker-data-schema.h>
 #include <libtracker-data/tracker-data-search.h>
-#include <libtracker-data/tracker-rdf-query.h>
 
 #include "tracker-indexer-client.h"
 #include "tracker-dbus.h"
@@ -533,340 +532,4 @@ tracker_metadata_get_registered_classes (TrackerMetadata	*object,
 	tracker_dbus_request_success (request_id);
 }
 
-void
-tracker_metadata_get_unique_values (TrackerMetadata	   *object,
-				    const gchar		   *service_type,
-				    gchar		  **fields,
-				    const gchar		   *query_condition,
-				    gboolean		    order_desc,
-				    gint		    offset,
-				    gint		    max_hits,
-				    DBusGMethodInvocation  *context,
-				    GError		  **error)
-{
-	TrackerDBResultSet *result_set = NULL;
-	guint		    request_id;
-
-	GPtrArray	   *values = NULL;
-
-	GError		   *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (fields != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get unique values, "
-				  "service type:'%s', query '%s'",
-				  service_type,
-				  query_condition);
-
-	result_set = tracker_data_search_get_unique_values (service_type, fields,
-							    query_condition,
-							    order_desc,
-							    offset,
-							    max_hits,
-							    &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	values = tracker_dbus_query_result_to_ptr_array (result_set);
-
-	dbus_g_method_return (context, values);
-
-	tracker_dbus_results_ptr_array_free (&values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_metadata_get_unique_values_with_count (TrackerMetadata	      *object,
-					       const gchar	      *service_type,
-					       gchar		     **fields,
-					       const gchar	      *query_condition,
-					       const gchar	      *count_field,
-					       gboolean		       order_desc,
-					       gint		       offset,
-					       gint		       max_hits,
-					       DBusGMethodInvocation  *context,
-					       GError		     **error)
-{
-	TrackerDBResultSet *result_set = NULL;
-	guint		    request_id;
-	GPtrArray	   *values = NULL;
-	GError		   *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (fields != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get unique values, "
-				  "service type:'%s', query '%s'"
-				  "count field :'%s'",
-				  service_type,
-				  query_condition,
-				  count_field);
-
-	result_set = 
-		tracker_data_search_get_unique_values_with_count (service_type,
-								  fields,
-								  query_condition,
-								  count_field,
-								  order_desc,
-								  offset,
-								  max_hits,
-								  &actual_error);
-	
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	values = tracker_dbus_query_result_to_ptr_array (result_set);
-
-	dbus_g_method_return (context, values);
-
-	tracker_dbus_results_ptr_array_free (&values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_metadata_get_unique_values_with_count_and_sum (TrackerMetadata	      *object,
-						       const gchar	      *service_type,
-						       gchar		     **fields,
-						       const gchar	      *query_condition,
-						       const gchar	      *count_field,
-						       const gchar            *sum_field,
-						       gboolean		       order_desc,
-						       gint		       offset,
-						       gint		       max_hits,
-						       DBusGMethodInvocation  *context,
-						       GError		     **error)
-{
-	TrackerDBResultSet *result_set = NULL;
-	guint		    request_id;
-	GPtrArray	   *values = NULL;
-	GError		   *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (fields != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get unique values with count and sum, "
-				  "service type:'%s', query '%s', "
-				  "count field :'%s', "
-				  "sum field :'%s'",
-				  service_type,
-				  query_condition,
-				  count_field,
-				  sum_field);
-
-	result_set = 
-		tracker_data_search_get_unique_values_with_count_and_sum (service_type,
-									  fields,
-									  query_condition,
-									  count_field,
-									  sum_field,
-									  order_desc,
-									  offset,
-									  max_hits,
-									  &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	values = tracker_dbus_query_result_to_ptr_array (result_set);
-
-	dbus_g_method_return (context, values);
-
-	tracker_dbus_results_ptr_array_free (&values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_metadata_get_unique_values_with_concat_count_and_sum (TrackerMetadata	      *object,
-							      const gchar	      *service_type,
-							      gchar		     **fields,
-							      const gchar	      *query_condition,
-							      const gchar             *concat_field,
-							      const gchar	      *count_field,
-							      const gchar             *sum_field,
-							      gboolean		       order_desc,
-							      gint		       offset,
-							      gint		       max_hits,
-							      DBusGMethodInvocation  *context,
-							      GError		     **error)
-{
-	TrackerDBResultSet *result_set = NULL;
-	guint		    request_id;
-	GPtrArray	   *values = NULL;
-	GError		   *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (fields != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get unique values with count and sum, "
-				  "service type:'%s', query '%s', "
-				  "concat field :'%s' "
-				  "count field :'%s', "
-				  "sum field :'%s'",
-				  service_type,
-				  query_condition,
-				  concat_field,
-				  count_field,
-				  sum_field);
-
-	result_set = 
-		tracker_data_search_get_unique_values_with_concat_count_and_sum (service_type,
-										 fields,
-										 query_condition,
-										 concat_field,
-										 count_field,
-										 sum_field,
-										 order_desc,
-										 offset,
-										 max_hits,
-										 &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	values = tracker_dbus_query_result_to_ptr_array (result_set);
-
-	dbus_g_method_return (context, values);
-
-	tracker_dbus_results_ptr_array_free (&values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_metadata_get_sum (TrackerMetadata	 *object,
-			  const gchar		 *service_type,
-			  const gchar		 *field,
-			  const gchar		 *query_condition,
-			  DBusGMethodInvocation  *context,
-			  GError		**error)
-{
-	guint   request_id;
-	gint    sum;
-	GError *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (field != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get sum, "
-				  "service type:'%s', field '%s', query '%s'",
-				  service_type,
-				  field,
-				  query_condition);
-
-	sum = tracker_data_search_get_sum (service_type,
-					   field,
-					   query_condition,
-					   &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	dbus_g_method_return (context, sum);
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_metadata_get_count (TrackerMetadata	   *object,
-			    const gchar		   *service_type,
-			    const gchar		   *field,
-			    const gchar		   *query_condition,
-			    DBusGMethodInvocation  *context,
-			    GError		  **error)
-{
-	guint	request_id;
-	gint    count;
-
-	GError *actual_error = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service_type != NULL, context);
-	tracker_dbus_async_return_if_fail (field != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to get count, "
-				  "service type:'%s', field '%s', query '%s'",
-				  service_type,
-				  field,
-				  query_condition);
-
-	count = tracker_data_search_get_count (service_type,
-					       field,
-					       query_condition,
-					       &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id, &actual_error, NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	dbus_g_method_return (context, count);
-
-	tracker_dbus_request_success (request_id);
-}
 
diff --git a/src/trackerd/tracker-metadata.h b/src/trackerd/tracker-metadata.h
index ec51ea2..23132c2 100644
--- a/src/trackerd/tracker-metadata.h
+++ b/src/trackerd/tracker-metadata.h
@@ -87,60 +87,6 @@ void             tracker_metadata_get_registered_types                        (T
 void             tracker_metadata_get_registered_classes                      (TrackerMetadata        *object,
 									       DBusGMethodInvocation  *context,
 									       GError                **error);
-void             tracker_metadata_get_unique_values                           (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       gchar                 **fields,
-									       const gchar            *query_condition,
-									       gboolean                order_desc,
-									       gint                    offset,
-									       gint                    max_hits,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
-void             tracker_metadata_get_sum                                     (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       const gchar            *field,
-									       const gchar            *query_condition,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
-void             tracker_metadata_get_count                                   (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       const gchar            *field,
-									       const gchar            *query_condition,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
-void             tracker_metadata_get_unique_values_with_count                (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       gchar                 **fields,
-									       const gchar            *query_condition,
-									       const gchar            *count,
-									       gboolean                order_desc,
-									       gint                    offset,
-									       gint                    max_hits,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
-void             tracker_metadata_get_unique_values_with_count_and_sum        (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       gchar                 **fields,
-									       const gchar            *query_condition,
-									       const gchar            *count,
-									       const gchar            *sum,
-									       gboolean                order_desc,
-									       gint                    offset,
-									       gint                    max_hits,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
-void             tracker_metadata_get_unique_values_with_concat_count_and_sum (TrackerMetadata        *object,
-									       const gchar            *service_type,
-									       gchar                 **fields,
-									       const gchar            *query_condition,
-									       const gchar            *concat,
-									       const gchar            *count,
-									       const gchar            *sum,
-									       gboolean                order_desc,
-									       gint                    offset,
-									       gint                    max_hits,
-									       DBusGMethodInvocation  *context,
-									       GError                **error);
 
 G_END_DECLS
 
diff --git a/src/trackerd/tracker-search.c b/src/trackerd/tracker-search.c
index 72ee554..67f0c7b 100644
--- a/src/trackerd/tracker-search.c
+++ b/src/trackerd/tracker-search.c
@@ -40,7 +40,6 @@
 #include <libtracker-data/tracker-data-schema.h>
 #include <libtracker-data/tracker-data-search.h>
 #include <libtracker-data/tracker-query-tree.h>
-#include <libtracker-data/tracker-rdf-query.h>
 
 #include "tracker-dbus.h"
 #include "tracker-search.h"
@@ -410,88 +409,6 @@ search_get_snippet (const gchar  *text,
 	}
 }
 
-static TrackerDBResultSet *
-search_perform_rdf_query (gint	        request_id,
-			  const gchar  *service,
-			  const gchar **fields,
-			  const gchar  *search_text,
-			  const gchar **keywords,
-			  const gchar  *query_condition,
-			  gboolean      sort_by_service,
-			  const gchar **sort_fields,
-			  gboolean      sort_desc,
-			  gint	        offset,
-			  gint	        max_hits,
-			  GError      **error) 
-{
-	TrackerDBInterface *iface;
-	TrackerDBResultSet *result_set;
-
-	result_set = NULL;
-
-	iface = tracker_db_manager_get_db_interface_by_service (service);
-
-	if (query_condition) {
-		GError *query_error = NULL;
-		gchar  *query_translated;
-
-		tracker_dbus_request_comment (request_id,
-					      "Executing RDF query:'%s' with search "
-					      "term:'%s'",
-					      query_condition,
-					      search_text);
-
-		query_translated = tracker_rdf_query_to_sql (iface,
-							     query_condition,
-							     service,
-							     fields,
-							     g_strv_length ((GStrv) fields),
-							     search_text,
-							     keywords,
-							     keywords ? g_strv_length ((GStrv) keywords) : 0,
-							     sort_by_service,
-							     sort_fields,
-							     sort_fields ? g_strv_length ((GStrv) sort_fields) : 0,
-							     sort_desc,
-							     offset,
-							     search_sanity_check_max_hits (max_hits),
-							     &query_error);
-
-		if (query_error) {
-			g_propagate_error (error, query_error);
-			return NULL;
-		} else if (!query_translated) {
-			g_set_error (error, 
-				     tracker_rdf_error_quark (), 
-				     0, 
-				     "Invalid rdf query, no error given");
-			return NULL;
-		}
-
-		tracker_dbus_request_comment (request_id,
-					      "Translated RDF query:'%s'",
-					      query_translated);
-
-		if (!tracker_is_empty_string (search_text)) {
-			tracker_data_search_text (iface,
-						  service,
-						  search_text,
-						  0,
-						  999999,
-						  TRUE,
-						  FALSE);
-		}
-
-		result_set = tracker_db_interface_execute_query (iface,
-								 NULL,
-								 "%s", 
-								 query_translated);
-		g_free (query_translated);
-	}
-
-	return result_set;
-}
-
 void
 tracker_search_get_hit_count (TrackerSearch	     *object,
 			      const gchar	     *service,
@@ -974,256 +891,6 @@ tracker_search_files_by_text (TrackerSearch	    *object,
 }
 
 void
-tracker_search_metadata (TrackerSearch		*object,
-			 const gchar		*service,
-			 const gchar		*field,
-			 const gchar		*search_text,
-			 gint			 offset,
-			 gint			 max_hits,
-			 DBusGMethodInvocation	*context,
-			 GError		       **error)
-{
-	TrackerDBResultSet *result_set;
-	GError		   *actual_error = NULL;
-	guint		    request_id;
-	gchar		  **values;
-	gchar              *query_condition;
-	const gchar        *fields[] = { 
-		"File:NameDelimited", 
-		NULL
-	};
-
-	/* FIXME: This function is completely redundant */
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service != NULL, context);
-	tracker_dbus_async_return_if_fail (field != NULL, context);
-	tracker_dbus_async_return_if_fail (search_text != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to search metadata, "
-				  "service:'%s', search text:'%s', field:'%s', "
-				  "offset:%d, max hits:%d",
-				  service,
-				  search_text,
-				  field,
-				  offset,
-				  max_hits);
-
-	if (!tracker_ontology_service_is_valid (service)) {
-		tracker_dbus_request_failed (request_id, 
-					     &actual_error, 
-					     "Service '%s' is invalid or has not been implemented yet",
-					     service);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	if (tracker_ontology_get_field_by_name (field) == NULL) {
-		tracker_dbus_request_failed (request_id,
-					     &actual_error,
-					     "Metadata field '%s' not registered in the system",
-					     field);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-
-	query_condition = tracker_rdf_query_for_attr_value (field, search_text);
-	result_set = search_perform_rdf_query (request_id, 
-					       service, 
-					       fields,
-					       "", 
-					       NULL, 
-					       query_condition,
-					       FALSE,
-					       NULL,
-					       FALSE,
-					       offset,
-					       max_hits,
-					       &actual_error);
-	g_free (query_condition);
-
-	values = tracker_dbus_query_result_to_strv (result_set, 1, NULL);
-
-	dbus_g_method_return (context, values);
-
-	g_strfreev (values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_search_matching_fields (TrackerSearch	      *object,
-				const gchar	      *service,
-				const gchar	      *id,
-				const gchar	      *search_text,
-				DBusGMethodInvocation  *context,
-				GError		      **error)
-{
-	TrackerDBInterface *iface;
-	TrackerDBResultSet *result_set;
-	GError		   *actual_error = NULL;
-	guint		    request_id;
-	GHashTable	   *values = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service != NULL, context);
-	tracker_dbus_async_return_if_fail (id != NULL, context);
-	tracker_dbus_async_return_if_fail (search_text != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to search matching fields, "
-				  "service:'%s', search text:'%s', id:'%s'",
-				  service,
-				  search_text,
-				  id);
-
-	if (!tracker_ontology_service_is_valid (service)) {
-		g_set_error (&actual_error,
-			     TRACKER_DBUS_ERROR,
-			     0,
-			     "Service '%s' is invalid or has not been implemented yet",
-			     service);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	if (tracker_is_empty_string (id)) {
-		g_set_error (&actual_error,
-			     TRACKER_DBUS_ERROR,
-			     0,
-			     "ID field must have a value");
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	iface = tracker_db_manager_get_db_interface_by_service (service);
-
-	/* FIXME: This function no longer exists, it was returning
-	 * NULL in every case, this DBus function needs rewriting or
-	 * to be removed.
-	 */
-	result_set = NULL;
-
-	/* result_set = tracker_db_search_matching_metadata (iface,  */
-	/*						  service,  */
-	/*						  id,  */
-	/*						  search_text); */
-
-	values = tracker_dbus_query_result_to_hash_table (result_set);
-
-	dbus_g_method_return (context, values);
-
-	g_hash_table_destroy (values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
-tracker_search_query (TrackerSearch	     *object,
-		      gint		      live_query_id,
-		      const gchar	     *service,
-		      const gchar	    **fields,
-		      const gchar	     *search_text,
-		      const gchar	    **keywords,
-		      const gchar	     *query_condition,
-		      gboolean		      sort_by_service,
-		      const gchar           **sort_fields,
-		      gboolean		      sort_desc,
-		      gint		      offset,
-		      gint		      max_hits,
-		      DBusGMethodInvocation  *context,
-		      GError		    **error)
-{
-	TrackerDBResultSet *result_set;
-	GError		   *actual_error = NULL;
-	guint		    request_id;
-	GPtrArray	   *values = NULL;
-
-	request_id = tracker_dbus_get_next_request_id ();
-
-	tracker_dbus_async_return_if_fail (service != NULL, context);
-	tracker_dbus_async_return_if_fail (fields != NULL, context);
-	tracker_dbus_async_return_if_fail (search_text != NULL, context);
-	tracker_dbus_async_return_if_fail (keywords != NULL, context);
-	tracker_dbus_async_return_if_fail (query_condition != NULL, context);
-
-	tracker_dbus_request_new (request_id,
-				  "DBus request to search query, "
-				  "query id:%d, service:'%s', search text '%s', "
-				  "query condition:'%s', offset:%d, "
-				  "max hits:%d, sort by service:'%s', sort descending'%s'",
-				  live_query_id,
-				  service,
-				  search_text,
-				  query_condition,
-				  offset,
-				  max_hits,
-				  sort_by_service ? "yes" : "no",
-				  sort_desc ? "yes" : "no");
-
-	if (!tracker_ontology_service_is_valid (service)) {
-		tracker_dbus_request_failed (request_id,
-					     &actual_error,
-					     "Service '%s' is invalid or has not been implemented yet",
-					     service);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-
-	result_set = search_perform_rdf_query (request_id, 
-					       service, 
-					       fields, 
-					       search_text, 
-					       keywords, 
-					       query_condition,
-					       sort_by_service,
-					       sort_fields, 
-					       sort_desc, 
-					       offset, 
-					       max_hits, 
-					       &actual_error);
-
-	if (actual_error) {
-		tracker_dbus_request_failed (request_id,
-					     &actual_error,
-					     NULL);
-		dbus_g_method_return_error (context, actual_error);
-		g_error_free (actual_error);
-		return;
-	}
-
-	values = tracker_dbus_query_result_to_ptr_array (result_set);
-
-	dbus_g_method_return (context, values);
-
-	tracker_dbus_results_ptr_array_free (&values);
-
-	if (result_set) {
-		g_object_unref (result_set);
-	}
-
-	tracker_dbus_request_success (request_id);
-}
-
-void
 tracker_search_suggest (TrackerSearch	       *object,
 			const gchar	       *search_text,
 			gint			max_dist,
diff --git a/src/trackerd/tracker-search.h b/src/trackerd/tracker-search.h
index a0c2b7d..890a1ed 100644
--- a/src/trackerd/tracker-search.h
+++ b/src/trackerd/tracker-search.h
@@ -96,34 +96,6 @@ void	       tracker_search_files_by_text	(TrackerSearch		*object,
 						 gboolean		 group_results,
 						 DBusGMethodInvocation	*context,
 						 GError		       **error);
-void	       tracker_search_metadata		(TrackerSearch		*object,
-						 const gchar		*service,
-						 const gchar		*field,
-						 const gchar		*search_text,
-						 gint			 offset,
-						 gint			 max_hits,
-						 DBusGMethodInvocation	*context,
-						 GError		       **error);
-void	       tracker_search_matching_fields	(TrackerSearch		*object,
-						 const gchar		*service,
-						 const gchar		*id,
-						 const gchar		*search_text,
-						 DBusGMethodInvocation	*context,
-						 GError		       **error);
-void	       tracker_search_query		(TrackerSearch		*object,
-						 gint			 live_query_id,
-						 const gchar		*service,
-						 const gchar	       **fields,
-						 const gchar		*search_text,
-						 const gchar	       **keywords,
-						 const gchar		*query_condition,
-						 gboolean		 sort_by_service,
-						 const gchar	       **sort_fields,
-						 gint			 sort_field_count,
-						 gint			 offset,
-						 gint			 max_hits,
-						 DBusGMethodInvocation	*context,
-						 GError		       **error);
 void	       tracker_search_suggest		(TrackerSearch		*object,
 						 const gchar		*search_text,
 						 gint			 max_dist,



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