Skip to content

Error when parsing SPARQL query with blank node #2530

@william-vw

Description

@william-vw

The following should work, I think:

PREFIX tr: <http://example.org/trace#>
PREFIX : <http://example.org#>
SELECT ?t
WHERE { 
    [ tr:from :a1 ; tr:to :a2 ] tr:in ?t .
}

But it gives the following parsing error:

Traceback (most recent call last):
  File "/Users/wvw/git/pm/pmq/test.py", line 16, in <module>
    qres = g.query(query)
           ^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/rdflib/graph.py", line 1565, in query
    return result(processor.query(query_object, initBindings, initNs, **kwargs))  # type: ignore[arg-type]
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/rdflib/plugins/sparql/processor.py", line 144, in query
    strOrQuery = translateQuery(parseQuery(strOrQuery), base, initNs)
                                ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/rdflib/plugins/sparql/parser.py", line 1542, in parseQuery
    return Query.parseString(q, parseAll=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 1131, in parse_string
    loc, tokens = self._parse(instring, 0)
                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 3886, in parseImpl
    loc, exprtokens = e._parse(instring, loc, doActions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4114, in parseImpl
    return e._parse(
           ^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 3886, in parseImpl
    loc, exprtokens = e._parse(instring, loc, doActions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 5226, in parseImpl
    return super().parseImpl(instring, loc, doActions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 3886, in parseImpl
    loc, exprtokens = e._parse(instring, loc, doActions)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4114, in parseImpl
    return e._parse(
           ^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 3864, in parseImpl
    loc, resultlist = self.exprs[0]._parse(
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4959, in parseImpl
    loc, tokens = self_expr._parse(instring, loc, doActions, callPreParse=False)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 5226, in parseImpl
    return super().parseImpl(instring, loc, doActions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 3864, in parseImpl
    loc, resultlist = self.exprs[0]._parse(
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 817, in _parseNoCache
    loc, tokens = self.parseImpl(instring, pre_loc, doActions)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 4375, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 856, in _parseNoCache
    tokens = fn(instring, tokens_start, ret_tokens)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/pyparsing/core.py", line 291, in wrapper
    ret = func(*args[limit:])
          ^^^^^^^^^^^^^^^^^^^
  File "/Users/wvw/anaconda3/lib/python3.11/site-packages/rdflib/plugins/sparql/parser.py", line 82, in expandTriples
    if i + 1 < l_ and terms[i + 1] not in ".,;":
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'in <string>' requires string as left operand, not CompValue

I'm using rdflib v.7.

Metadata

Metadata

Assignees

No one assigned

    Labels

    SPARQLbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions