NTriples fails to parse URIs with only a scheme · Issue #920 · RDFLib/rdflib (original) (raw)

from rdflib import Graph
g=Graph()
g.parse(data='<a:> <b:> <c:> .', format='nt') # nquads also fails

Traceback (most recent call last):
File "", line 1, in
File "/Library/Python/2.7/site-packages/rdflib/graph.py", line 1039, in parse
parser.parse(source, self, **args)
File "/Library/Python/2.7/site-packages/rdflib/plugins/parsers/nt.py", line 26, in parse
parser.parse(f)
File "/Library/Python/2.7/site-packages/rdflib/plugins/parsers/ntriples.py", line 142, in parse
raise ParseError("Invalid line: %r" % self.line)
rdflib.plugins.parsers.ntriples.ParseError: Invalid line: u'<a:> <b:> <c:> .'

N3, by contrast, succeeds:

g.parse(data='<a:> <b:> <c:> .', format='n3')

Fix is to change:
uriref = r'<([^:]+:[^\s"<>]+)>'
to:
uriref = r'<([^:]+:[^\s"<>]*)>'
in ntriples.py.