diff options
author | Jürg Billeter <j@bitron.ch> | 2010-06-09 14:29:56 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2010-06-10 10:09:36 +0200 |
commit | 6abb425c65b2a53ebed4802b642416423a3bbea2 (patch) | |
tree | e6427716aaaa86ede3eb37b8534cdef207cb23f3 | |
parent | 7167f81d9b5705e1f97d08c9b0d59603c6daf3d5 (diff) | |
download | tracker-6abb425c65b2a53ebed4802b642416423a3bbea2.tar.gz |
SPARQL: Support GRAPH in predicate variable queries
-rw-r--r-- | src/libtracker-data/tracker-sparql-pattern.vala | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/libtracker-data/tracker-sparql-pattern.vala b/src/libtracker-data/tracker-sparql-pattern.vala index 810b76dfa..37115b775 100644 --- a/src/libtracker-data/tracker-sparql-pattern.vala +++ b/src/libtracker-data/tracker-sparql-pattern.vala @@ -59,7 +59,7 @@ namespace Tracker.Sparql { Expression.append_expression_as_string (sql, "\"%s\"".printf (prop.name), prop.data_type); - sql.append (" AS \"object\" FROM "); + sql.append_printf (" AS \"object\", \"%s:graph\" AS \"graph\" FROM ", prop.name); sql.append_printf ("\"%s\"", prop.table_name); sql.append (" WHERE ID = ?"); @@ -102,7 +102,7 @@ namespace Tracker.Sparql { Expression.append_expression_as_string (sql, "\"%s\"".printf (prop.name), prop.data_type); - sql.append (" AS \"object\" FROM "); + sql.append_printf (" AS \"object\", \"%s:graph\" AS \"graph\" FROM ", prop.name); sql.append_printf ("\"%s\"", prop.table_name); } } @@ -1365,14 +1365,20 @@ class Tracker.Sparql.Pattern : Object { triple_context.bindings.append (binding); } - if (current_graph != null && prop != null) { + if (current_graph != null) { if (current_graph_is_var) { var binding = new VariableBinding (); binding.variable = context.get_variable (current_graph); binding.table = table; - binding.data_type = PropertyType.RESOURCE; - binding.sql_db_column_name = prop.name + ":graph"; + + if (prop != null) { + binding.sql_db_column_name = prop.name + ":graph"; + } else { + // variable as predicate + binding.sql_db_column_name = "graph"; + } + binding.maybe_null = true; binding.in_simple_optional = in_simple_optional; @@ -1388,9 +1394,15 @@ class Tracker.Sparql.Pattern : Object { var binding = new LiteralBinding (); binding.literal = current_graph; binding.table = table; - binding.data_type = PropertyType.RESOURCE; - binding.sql_db_column_name = prop.name + ":graph"; + + if (prop != null) { + binding.sql_db_column_name = prop.name + ":graph"; + } else { + // variable as predicate + binding.sql_db_column_name = "graph"; + } + triple_context.bindings.append (binding); } } |