[tracker] Implementation for SPARQL isIRI()
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] Implementation for SPARQL isIRI()
- Date: Fri, 31 Jul 2009 09:18:51 +0000 (UTC)
commit b4f3c94a73de0d80e6b16cf58aec8b0ccd03a67a
Author: Philip Van Hoof <philip codeminded be>
Date: Fri Jul 31 11:18:19 2009 +0200
Implementation for SPARQL isIRI()
src/libtracker-data/tracker-sparql-query.vala | 52 ++++++++++++++++---------
1 files changed, 34 insertions(+), 18 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 077c68b..f714a86 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -1139,28 +1139,44 @@ public class Tracker.SparqlQuery : Object {
pattern_sql.append ("(0)");
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 (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 if (expr.arg1.literal.type == Rasqal.Literal.Type.URI) {
- // Rasqal already takes care of this, but I added it here
- // for the reader of this code to understand what goes on
- // Note that rasqal will have converted a str(<urn:something>)
- // to a literal string 'urn:something'
- pattern_sql.append_printf ("'%s'", expr.arg1.literal.as_string ());
+ 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 if (expr.arg1.literal.type == Rasqal.Literal.Type.URI) {
+ // Rasqal already takes care of this, but I added it here
+ // for the reader of this code to understand what goes on
+ // Note that rasqal will have converted a str(<urn:something>)
+ // to a literal string 'urn:something'
+ pattern_sql.append_printf ("'%s'", expr.arg1.literal.as_string ());
+ } else {
+ visit_filter (expr.arg1);
+ }
+ break;
+ case Rasqal.Op.ISURI:
+ 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 ("(0)");
+ } else {
+ pattern_sql.append ("(1)");
+ }
+ } else if (expr.arg1.literal.type != Rasqal.Literal.Type.URI) {
+ pattern_sql.append ("(0)");
+ } else {
+ pattern_sql.append ("(1)");
+ }
break;
case Rasqal.Op.LITERAL:
if (expr.literal.type == Rasqal.Literal.Type.VARIABLE) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]