[tracker/parser] SPARQL: limited ISBLANK support



commit 333e4c776bcacd899d4e0d6886e9183d8ace232b
Author: Philip Van Hoof <philip codeminded be>
Date:   Thu Aug 13 11:42:45 2009 +0200

    SPARQL: limited ISBLANK support

 src/libtracker-data/tracker-sparql-query.vala   |   13 ++++++++++---
 src/libtracker-data/tracker-sparql-scanner.vala |    6 ++++++
 2 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 95ea075..a2641d9 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -1260,7 +1260,14 @@ public class Tracker.SparqlQuery : Object {
 		case SparqlTokenType.ISURI:
 			translate_isuri (sql);
 			return DataType.BOOLEAN;
-		// case SparqlTokenType.ISBLANK:
+		case SparqlTokenType.ISBLANK:
+			next ();
+			expect (SparqlTokenType.OPEN_PARENS);
+			next ();
+			// TODO: support ISBLANK properly
+			sql.append ("0");
+			expect (SparqlTokenType.CLOSE_PARENS);
+			return DataType.BOOLEAN;
 		case SparqlTokenType.ISLITERAL:
 			next ();
 			return DataType.BOOLEAN;
@@ -1478,7 +1485,7 @@ public class Tracker.SparqlQuery : Object {
 		case SparqlTokenType.SAMETERM:
 		case SparqlTokenType.ISIRI:
 		case SparqlTokenType.ISURI:
-		// case SparqlTokenType.ISBLANK:
+		case SparqlTokenType.ISBLANK:
 		case SparqlTokenType.ISLITERAL:
 		case SparqlTokenType.REGEX:
 			return translate_primary_expression (sql);
@@ -1503,7 +1510,7 @@ public class Tracker.SparqlQuery : Object {
 		case SparqlTokenType.SAMETERM:
 		case SparqlTokenType.ISIRI:
 		case SparqlTokenType.ISURI:
-		// case SparqlTokenType.ISBLANK:
+		case SparqlTokenType.ISBLANK:
 		case SparqlTokenType.ISLITERAL:
 		case SparqlTokenType.REGEX:
 			next ();
diff --git a/src/libtracker-data/tracker-sparql-scanner.vala b/src/libtracker-data/tracker-sparql-scanner.vala
index 71382de..9dbfbff 100644
--- a/src/libtracker-data/tracker-sparql-scanner.vala
+++ b/src/libtracker-data/tracker-sparql-scanner.vala
@@ -255,6 +255,10 @@ public class Tracker.SparqlScanner : Object {
 			case 'r':
 				if (matches (begin, "REDUCED")) return SparqlTokenType.REDUCED;
 				break;
+			case 'I':
+			case 'i':
+				if (matches (begin, "ISBLANK")) return SparqlTokenType.ISBLANK;
+				break;
 			}
 			break;
 		case 8:
@@ -779,6 +783,7 @@ public enum Tracker.SparqlTokenType {
 	ISIRI,
 	ISLITERAL,
 	ISURI,
+	ISBLANK,
 	LANG,
 	LANGMATCHES,
 	LIMIT,
@@ -849,6 +854,7 @@ public enum Tracker.SparqlTokenType {
 		case INTEGER: return "`INTEGER'";
 		case INTO: return "`INTO'";
 		case ISIRI: return "`ISIRI'";
+		case ISBLANK: return "`ISBLANK'";
 		case ISLITERAL: return "`ISLITERAL'";
 		case ISURI: return "`ISURI'";
 		case LANG: return "`LANG'";



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