diff --git a/rdf/parse_test.go b/rdf/parse_test.go index fcba4a7b8609b4b76dba37439c1c8476ef516cc7..77e18c5bdb2cea9917b36489cfb7bf640e8a5f67 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 78b3a7e0d150495057ee6c62f5722d67a52eb07f..737d901871496a906004f2244ef9feecdd3a6515 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()