[tracker/parser] Turtle: Report error when using undefined prefix
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/parser] Turtle: Report error when using undefined prefix
- Date: Wed, 19 Aug 2009 11:03:30 +0000 (UTC)
commit 2fe2554d025370c37a068102b8fbbb17249bb396
Author: Jürg Billeter <j bitron ch>
Date: Wed Aug 19 12:59:55 2009 +0200
Turtle: Report error when using undefined prefix
src/libtracker-data/tracker-turtle-reader.vala | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-data/tracker-turtle-reader.vala b/src/libtracker-data/tracker-turtle-reader.vala
index 0d86959..a7a39b1 100644
--- a/src/libtracker-data/tracker-turtle-reader.vala
+++ b/src/libtracker-data/tracker-turtle-reader.vala
@@ -129,6 +129,14 @@ public class Tracker.TurtleReader : Object {
return ((string) (tokens[last_index].begin.pos + strip)).ndup ((tokens[last_index].end.pos - tokens[last_index].begin.pos - 2 * strip));
}
+ string resolve_prefixed_name (string prefix, string local_name) throws SparqlError {
+ string ns = prefix_map.lookup (prefix);
+ if (ns == null) {
+ throw new SparqlError.PARSE ("use of undefined prefix `%s'", prefix);
+ }
+ return ns + local_name;
+ }
+
public bool next () throws SparqlError {
while (true) {
switch (state) {
@@ -165,12 +173,12 @@ public class Tracker.TurtleReader : Object {
// prefixed name with namespace foo:bar
string ns = get_last_string ();
expect (SparqlTokenType.COLON);
- subject = prefix_map.lookup (ns) + get_last_string ().substring (1);
+ subject = resolve_prefixed_name (ns, get_last_string ().substring (1));
state = State.SUBJECT;
continue;
} else if (accept (SparqlTokenType.COLON)) {
// prefixed name without namespace :bar
- subject = prefix_map.lookup ("") + get_last_string ().substring (1);
+ subject = resolve_prefixed_name ("", get_last_string ().substring (1));
state = State.SUBJECT;
continue;
} else if (accept (SparqlTokenType.BLANK_NODE)) {
@@ -191,11 +199,11 @@ public class Tracker.TurtleReader : Object {
} else if (accept (SparqlTokenType.PN_PREFIX)) {
string ns = get_last_string ();
expect (SparqlTokenType.COLON);
- predicate = prefix_map.lookup (ns) + get_last_string ().substring (1);
+ predicate = resolve_prefixed_name (ns, get_last_string ().substring (1));
state = State.PREDICATE;
continue;
} else if (accept (SparqlTokenType.COLON)) {
- predicate = prefix_map.lookup ("") + get_last_string ().substring (1);
+ predicate = resolve_prefixed_name ("", get_last_string ().substring (1));
state = State.PREDICATE;
continue;
} else if (accept (SparqlTokenType.A)) {
@@ -216,13 +224,13 @@ public class Tracker.TurtleReader : Object {
// prefixed name with namespace foo:bar
string ns = get_last_string ();
expect (SparqlTokenType.COLON);
- object = prefix_map.lookup (ns) + get_last_string ().substring (1);
+ object = resolve_prefixed_name (ns, get_last_string ().substring (1));
object_is_uri = true;
state = State.OBJECT;
return true;
} else if (accept (SparqlTokenType.COLON)) {
// prefixed name without namespace :bar
- object = prefix_map.lookup ("") + get_last_string ().substring (1);
+ object = resolve_prefixed_name ("", get_last_string ().substring (1));
object_is_uri = true;
state = State.OBJECT;
return true;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]