From bd9f12a7a3751466937b698fc2938802ea9299bd Mon Sep 17 00:00:00 2001 From: Manish R Jain <manishrjain@gmail.com> Date: Wed, 13 Apr 2016 16:23:39 +1000 Subject: [PATCH] Also parse _uid_ from object id. --- rdf/parse_test.go | 22 ++++++++++++++++++++++ rdf/state.go | 8 +++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/rdf/parse_test.go b/rdf/parse_test.go index fcba4a7b..77e18c5b 100644 --- a/rdf/parse_test.go +++ b/rdf/parse_test.go @@ -53,6 +53,24 @@ var testNQuads = []struct { ObjectValue: nil, }, }, + { + input: `<some_subject_id> <predicate> _uid_:0x01 .`, + nq: NQuad{ + Subject: "some_subject_id", + Predicate: "predicate", + ObjectId: "_uid_:0x01", + ObjectValue: nil, + }, + }, + { + input: `_uid_:0x01 <predicate> _uid_:0x02 .`, + nq: NQuad{ + Subject: "_uid_:0x01", + Predicate: "predicate", + ObjectId: "_uid_:0x02", + ObjectValue: nil, + }, + }, { input: `_:alice <follows> _:bob0 .`, nq: NQuad{ @@ -119,6 +137,10 @@ var testNQuads = []struct { input: "_uid_: 0x01 <knows> <something> .", hasErr: true, }, + { + input: "<alice> <knows> _uid_: 0x01 .", + hasErr: true, + }, { input: `_:alice "knows" stuff .`, hasErr: true, diff --git a/rdf/state.go b/rdf/state.go index 78b3a7e0..737d9018 100644 --- a/rdf/state.go +++ b/rdf/state.go @@ -267,7 +267,13 @@ func lexObject(l *lex.Lexer) lex.StateFn { } if r == '_' { l.Depth += 1 - return lexBlankNode(l, itemObject, lexText) + r = l.Next() + if r == 'u' { + return lexUidNode(l, itemObject, lexText) + + } else if r == ':' { + return lexBlankNode(l, itemObject, lexText) + } } if r == '"' { l.Ignore() -- GitLab