[tracker] Initial implementation for SPARQL str()



commit 18d40c9f916904eeb2bdb0d52e8731a8541145ae
Author: Philip Van Hoof <philip codeminded be>
Date:   Thu Jul 30 18:20:07 2009 +0200

    Initial implementation for SPARQL str()

 src/libtracker-data/tracker-sparql-query.vala |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index d2484f3..6c8ecf1 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -1133,6 +1133,24 @@ public class Tracker.SparqlQuery : Object {
 			visit_filter (expr.arg1);
 			pattern_sql.append (")");
 			break;
+		case Rasqal.Op.STR:
+				if (expr.arg1.literal.type == Rasqal.Literal.Type.VARIABLE) {
+					string variable_name = expr.arg1.literal.as_variable ().name;
+					var binding = var_map.lookup (variable_name);
+
+					if (binding.is_uri) {
+						pattern_sql.append_printf ("(SELECT \"%s\".\"Uri\" as \"STR\" FROM \"%s\" WHERE \"%s\".\"ID\" = \"%s_u\")", 
+						                           binding.table.sql_db_tablename,
+						                           binding.table.sql_db_tablename,
+						                           binding.table.sql_db_tablename,
+						                           variable_name);
+					} else {
+						visit_filter (expr.arg1);
+					}
+				} else {
+					visit_filter (expr.arg1);
+				}
+			break;
 		case Rasqal.Op.LITERAL:
 			if (expr.literal.type == Rasqal.Literal.Type.VARIABLE) {
 				string variable_name = expr.literal.as_variable ().name;



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