[tracker] SPARQL: Support INSERT { GRAPH <...> { ... } }
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] SPARQL: Support INSERT { GRAPH <...> { ... } }
- Date: Wed, 17 Feb 2010 15:22:55 +0000 (UTC)
commit 411a88798da50a3331d63531b9e5d5ee5697f4c7
Author: Jürg Billeter <j bitron ch>
Date: Wed Feb 17 11:10:40 2010 +0100
SPARQL: Support INSERT { GRAPH <...> { ... } }
Syntax specified in SPARQL 1.1 Update draft.
src/libtracker-data/tracker-sparql-query.vala | 28 ++++++++++++++++++++++--
1 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-query.vala b/src/libtracker-data/tracker-sparql-query.vala
index 0c7a7ca..064ba66 100644
--- a/src/libtracker-data/tracker-sparql-query.vala
+++ b/src/libtracker-data/tracker-sparql-query.vala
@@ -2021,11 +2021,33 @@ public class Tracker.SparqlQuery : Object {
void parse_construct_triples_block (HashTable<string,string> var_value_map) throws SparqlError, DataError {
expect (SparqlTokenType.OPEN_BRACE);
- if (current () != SparqlTokenType.CLOSE_BRACE) {
- do {
+ while (current () != SparqlTokenType.CLOSE_BRACE) {
+ if (accept (SparqlTokenType.GRAPH)) {
+ var old_graph = current_graph;
+ current_graph = parse_construct_var_or_term (var_value_map);
+
+ expect (SparqlTokenType.OPEN_BRACE);
+
+ while (current () != SparqlTokenType.CLOSE_BRACE) {
+ current_subject = parse_construct_var_or_term (var_value_map);
+ parse_construct_property_list_not_empty (var_value_map);
+ if (!accept (SparqlTokenType.DOT)) {
+ // no triples following
+ break;
+ }
+ }
+
+ expect (SparqlTokenType.CLOSE_BRACE);
+
+ current_graph = old_graph;
+ } else {
current_subject = parse_construct_var_or_term (var_value_map);
parse_construct_property_list_not_empty (var_value_map);
- } while (accept (SparqlTokenType.DOT) && current () != SparqlTokenType.CLOSE_BRACE);
+ if (!accept (SparqlTokenType.DOT) && current () != SparqlTokenType.GRAPH) {
+ // neither GRAPH nor triples following
+ break;
+ }
+ }
}
expect (SparqlTokenType.CLOSE_BRACE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]