Skip to content

Turtle serializing creates invalid PNames #1661

@GreenfishK

Description

@GreenfishK

Consider following triple from DBPedia serialized as .ttl:

test.ttl

@prefix ns1: <http://dbpedia.org/property/> .
<http://dbpedia.org/resource/Maine_Mendoza> ns2:spouse(s)_ "Nate Winchester 2013-Present"@en .

It is not possible to parse this triple due to the brackets in ns2:spouses(s)_ in a .ttl file. However, there is no such problem for an .nt file.

Code to parse the test.ttl file with the triple inside.

from rdflib import Graph
g = Graph()
g.parse(test.ttl)

Exception:

Traceback (most recent call last):
  File "/home/fkovacev/PhD/RDFStarVersioningEval/OSTRICH/BEAR/scripts/build_tb_rdf_star_datasets.py", line 204, in <module>
    construct_tb_star_ds(source_ic0=data_dir + "/alldata.IC.nt/000001.nt",
  File "/home/fkovacev/PhD/RDFStarVersioningEval/OSTRICH/BEAR/scripts/build_tb_rdf_star_datasets.py", line 140, in construct_tb_star_ds
    cs_add.parse(source_cs + "/" + t[1])
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/graph.py", line 1261, in parse
    raise se
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/graph.py", line 1252, in parse
    parser.parse(source, self, **args)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1921, in parse
    p.loadStream(stream)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 438, in loadStream
    return self.loadBuf(stream.read())  # Not ideal
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 444, in loadBuf
    self.feed(buf)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 470, in feed
    i = self.directiveOrStatement(s, j)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 490, in directiveOrStatement
    j = self.statement(argstr, i)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 740, in statement
    j = self.property_list(argstr, i, r[0])
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1088, in property_list
    i = self.objectList(argstr, j, objs)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1132, in objectList
    i = self.object(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1418, in object
    j = self.subject(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 747, in subject
    return self.item(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 839, in item
    return self.path(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 846, in path
    j = self.nodeOrLiteral(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1446, in nodeOrLiteral
    j = self.node(argstr, i, res)
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1025, in node
    self.BadSyntax(argstr, i, "expected item in list or ')'")
  File "/home/fkovacev/anaconda3/envs/baseDSEnv/lib/python3.8/site-packages/rdflib/plugins/parsers/notation3.py", line 1653, in BadSyntax
    raise BadSyntax(self._thisDoc, self.lines, argstr, i, msg)
rdflib.plugins.parsers.notation3.BadSyntax: at line 3 of <>:
Bad syntax (expected item in list or ')') at ^ in:
"...b'> .\n\n<http://dbpedia.org/resource/Maine_Mendoza> ns1:spouse('^b's)_ "Nate Winchester 2013-Present"@en .\n\n\n'"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions