Skip to content

Instantly share code, notes, and snippets.

/-

Created January 10, 2017 08:08
Show Gist options
  • Save anonymous/b36694c3a1577944acbecad4262deef9 to your computer and use it in GitHub Desktop.
Save anonymous/b36694c3a1577944acbecad4262deef9 to your computer and use it in GitHub Desktop.
[2](3)("parse(production)" "token \"PREFIX\", prod :QueryUnit, depth 0")
[2](2) ("QueryUnit(:start:1)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :QueryUnit, prod_branch [\"ASK\", \"BASE\", \"CONSTRUCT\", \"DESCRIBE\", \"PREFIX\", \"SELECT\"], sequence [:Query]"
)
[2](3) ("parse(terms)" "todo {:prod=>:QueryUnit, :terms=>[:Query]}, depth 1")
[2](3) ("parse(token)" "accept :Query")
[2](3) ("parse(push)" "term :Query, depth 1")
[2](3) ("parse(production)" "token \"PREFIX\", prod :Query, depth 1")
[2](2) ("Query(:start:2)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :Query, prod_branch [\"ASK\", \"BASE\", \"CONSTRUCT\", \"DESCRIBE\", \"PREFIX\", \"SELECT\"], sequence [:Prologue, :_Query_1]"
)
[2](3) ("parse(terms)" "todo {:prod=>:Query, :terms=>[:Prologue, :_Query_1]}, depth 2")
[2](3) ("parse(token)" "accept :Prologue")
[2](3) ("parse(push)" "term :Prologue, depth 2")
[2](3) ("parse(production)" "token \"PREFIX\", prod :Prologue, depth 2")
[2](2) ("Prologue(:start:3)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :Prologue, prod_branch [\"ADD\", \"ASK\", \"BASE\", \"CLEAR\", \"CONSTRUCT\", \"COPY\", \"CREATE\", \"DELETE\", \"DELETE DATA\", \"DELETE WHERE\", \"DESCRIBE\", \"DROP\", \"INSERT\", \"INSERT DATA\", \"LOAD\", \"MOVE\", \"PREFIX\", \"SELECT\", \"WITH\"], sequence [:_Prologue_2]"
)
[2](3) ("parse(terms)" "todo {:prod=>:Prologue, :terms=>[:_Prologue_2]}, depth 3")
[2](3) ("parse(token)" "accept :_Prologue_2")
[2](3) ("parse(push)" "term :_Prologue_2, depth 3")
[2](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_2, depth 3")
[2](2) ("_Prologue_2(:start:3)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_2, prod_branch [\"BASE\", \"PREFIX\"], sequence [:_Prologue_1, :Prologue]"
)
[2](3) ("parse(terms)"
"todo {:prod=>:_Prologue_2, :terms=>[:_Prologue_1, :Prologue]}, depth 4" )
[2](3) ("parse(token)" "accept :_Prologue_1")
[2](3) ("parse(push)" "term :_Prologue_1, depth 4")
[2](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_1, depth 4")
[2](2) ("_Prologue_1(:start:3)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_1, prod_branch [\"BASE\", \"PREFIX\"], sequence [:PrefixDecl]"
)
[2](3) ("parse(terms)" "todo {:prod=>:_Prologue_1, :terms=>[:PrefixDecl]}, depth 5")
[2](3) ("parse(token)" "accept :PrefixDecl")
[2](3) ("parse(push)" "term :PrefixDecl, depth 5")
[2](3) ("parse(production)" "token \"PREFIX\", prod :PrefixDecl, depth 5")
[2](2) ("PrefixDecl(:start:4)" "\"PREFIX\"")
[2](3) ("parse(production)"
"token \"PREFIX\" prod :PrefixDecl, prod_branch [\"PREFIX\"], sequence [\"PREFIX\", :PNAME_NS, :IRIREF]"
)
[2](3) ("parse(terms)"
"todo {:prod=>:PrefixDecl, :terms=>[\"PREFIX\", :PNAME_NS, :IRIREF]}, depth 6"
)
[2](3) ("parse(token)" "accept \"PREFIX\"")
[2](3) ("accept" "\"PREFIX\" === \"PREFIX\"")
[2](3) ("parse(token)" "token \"PREFIX\", term \"PREFIX\"")
[2](2) ("PREFIX(:terminal)" "" "PREFIX: {}")
[2](3) ("parse(token)" "accept :PNAME_NS")
[2](3) ("accept" "\"rdf:\"(PNAME_NS) === :PNAME_NS")
[2](3) ("parse(token)" "token \"rdf:\"(PNAME_NS), term :PNAME_NS")
[2](3) ("ns(\"rdf\"): base: '', suffix: ''")
[2](2) ("PNAME_NS(:terminal)" ""
":PNAME_NS: {:iri=>#<RDF::URI:0x3f813da79254 URI:>, :prefix=>:rdf}" )
[2](3) ("parse(token)" "accept :IRIREF")
[2](3) ("accept" "\"<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\"(IRIREF) === :IRIREF")
[2](3) ("parse(token)"
"token \"<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\"(IRIREF), term :IRIREF"
)
[2](2) ("IRIREF(:terminal)" ""
":IRIREF: {:iri=>#<RDF::URI:0x3f813da74d30 URI:http://www.w3.org/1999/02/22-rdf-syntax-ns#>, :prefix=>:rdf}"
)
[2](3) ("parse(pop)" "todo {:prod=>:PrefixDecl, :terms=>[]}, depth 6")
[2](3) ("add_prod_datum(PrefixDecl)"
"[] << #<SPARQL::Algebra::Operator::Prefix:0x3f813d994c80((((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ()))>"
)
[2](2) ("PrefixDecl(:finish):3"
((PrefixDecl ((prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ())))))
[2](3) ("parse(pop)" "todo {:prod=>:_Prologue_1, :terms=>[]}, depth 5")
[2](2) ("_Prologue_1(:finish):3")
[2](3) ("parse(terms)" "todo {:prod=>:_Prologue_2, :terms=>[:Prologue]}, depth 4")
[2](3) ("parse(token)" "accept :Prologue")
[3](3) ("parse(push)" "term :Prologue, depth 4")
[3](3) ("parse(production)" "token \"PREFIX\", prod :Prologue, depth 4")
[3](2) ("Prologue(:start:4)" "\"PREFIX\"")
[3](3) ("parse(production)"
"token \"PREFIX\" prod :Prologue, prod_branch [\"ADD\", \"ASK\", \"BASE\", \"CLEAR\", \"CONSTRUCT\", \"COPY\", \"CREATE\", \"DELETE\", \"DELETE DATA\", \"DELETE WHERE\", \"DESCRIBE\", \"DROP\", \"INSERT\", \"INSERT DATA\", \"LOAD\", \"MOVE\", \"PREFIX\", \"SELECT\", \"WITH\"], sequence [:_Prologue_2]"
)
[3](3) ("parse(terms)" "todo {:prod=>:Prologue, :terms=>[:_Prologue_2]}, depth 5")
[3](3) ("parse(token)" "accept :_Prologue_2")
[3](3) ("parse(push)" "term :_Prologue_2, depth 5")
[3](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_2, depth 5")
[3](2) ("_Prologue_2(:start:4)" "\"PREFIX\"")
[3](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_2, prod_branch [\"BASE\", \"PREFIX\"], sequence [:_Prologue_1, :Prologue]"
)
[3](3) ("parse(terms)"
"todo {:prod=>:_Prologue_2, :terms=>[:_Prologue_1, :Prologue]}, depth 6" )
[3](3) ("parse(token)" "accept :_Prologue_1")
[3](3) ("parse(push)" "term :_Prologue_1, depth 6")
[3](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_1, depth 6")
[3](2) ("_Prologue_1(:start:4)" "\"PREFIX\"")
[3](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_1, prod_branch [\"BASE\", \"PREFIX\"], sequence [:PrefixDecl]"
)
[3](3) ("parse(terms)" "todo {:prod=>:_Prologue_1, :terms=>[:PrefixDecl]}, depth 7")
[3](3) ("parse(token)" "accept :PrefixDecl")
[3](3) ("parse(push)" "term :PrefixDecl, depth 7")
[3](3) ("parse(production)" "token \"PREFIX\", prod :PrefixDecl, depth 7")
[3](2) ("PrefixDecl(:start:5)" "\"PREFIX\"")
[3](3) ("parse(production)"
"token \"PREFIX\" prod :PrefixDecl, prod_branch [\"PREFIX\"], sequence [\"PREFIX\", :PNAME_NS, :IRIREF]"
)
[3](3) ("parse(terms)"
"todo {:prod=>:PrefixDecl, :terms=>[\"PREFIX\", :PNAME_NS, :IRIREF]}, depth 8"
)
[3](3) ("parse(token)" "accept \"PREFIX\"")
[3](3) ("accept" "\"PREFIX\" === \"PREFIX\"")
[3](3) ("parse(token)" "token \"PREFIX\", term \"PREFIX\"")
[3](2) ("PREFIX(:terminal)" "" "PREFIX: {}")
[3](3) ("parse(token)" "accept :PNAME_NS")
[3](3) ("accept" "\"owl:\"(PNAME_NS) === :PNAME_NS")
[3](3) ("parse(token)" "token \"owl:\"(PNAME_NS), term :PNAME_NS")
[3](3) ("ns(\"owl\"): base: '', suffix: ''")
[3](2) ("PNAME_NS(:terminal)" ""
":PNAME_NS: {:iri=>#<RDF::URI:0x3f813d955544 URI:>, :prefix=>:owl}" )
[3](3) ("parse(token)" "accept :IRIREF")
[3](3) ("accept" "\"<http://www.w3.org/2002/07/owl#>\"(IRIREF) === :IRIREF")
[3](3) ("parse(token)"
"token \"<http://www.w3.org/2002/07/owl#>\"(IRIREF), term :IRIREF" )
[3](2) ("IRIREF(:terminal)" ""
":IRIREF: {:iri=>#<RDF::URI:0x3f813d94cee4 URI:http://www.w3.org/2002/07/owl#>, :prefix=>:owl}"
)
[3](3) ("parse(pop)" "todo {:prod=>:PrefixDecl, :terms=>[]}, depth 8")
[3](3) ("add_prod_datum(PrefixDecl)"
"[] << #<SPARQL::Algebra::Operator::Prefix:0x3f813d945a54((((owl: <http://www.w3.org/2002/07/owl#>)) ()))>"
)
[3](2) ("PrefixDecl(:finish):4" ((PrefixDecl ((prefix ((owl: <http://www.w3.org/2002/07/owl#>)) ())))))
[3](3) ("parse(pop)" "todo {:prod=>:_Prologue_1, :terms=>[]}, depth 7")
[3](2) ("_Prologue_1(:finish):4")
[3](3) ("parse(terms)" "todo {:prod=>:_Prologue_2, :terms=>[:Prologue]}, depth 6")
[3](3) ("parse(token)" "accept :Prologue")
[4](3) ("parse(push)" "term :Prologue, depth 6")
[4](3) ("parse(production)" "token \"PREFIX\", prod :Prologue, depth 6")
[4](2) ("Prologue(:start:5)" "\"PREFIX\"")
[4](3) ("parse(production)"
"token \"PREFIX\" prod :Prologue, prod_branch [\"ADD\", \"ASK\", \"BASE\", \"CLEAR\", \"CONSTRUCT\", \"COPY\", \"CREATE\", \"DELETE\", \"DELETE DATA\", \"DELETE WHERE\", \"DESCRIBE\", \"DROP\", \"INSERT\", \"INSERT DATA\", \"LOAD\", \"MOVE\", \"PREFIX\", \"SELECT\", \"WITH\"], sequence [:_Prologue_2]"
)
[4](3) ("parse(terms)" "todo {:prod=>:Prologue, :terms=>[:_Prologue_2]}, depth 7")
[4](3) ("parse(token)" "accept :_Prologue_2")
[4](3) ("parse(push)" "term :_Prologue_2, depth 7")
[4](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_2, depth 7")
[4](2) ("_Prologue_2(:start:5)" "\"PREFIX\"")
[4](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_2, prod_branch [\"BASE\", \"PREFIX\"], sequence [:_Prologue_1, :Prologue]"
)
[4](3) ("parse(terms)"
"todo {:prod=>:_Prologue_2, :terms=>[:_Prologue_1, :Prologue]}, depth 8" )
[4](3) ("parse(token)" "accept :_Prologue_1")
[4](3) ("parse(push)" "term :_Prologue_1, depth 8")
[4](3) ("parse(production)" "token \"PREFIX\", prod :_Prologue_1, depth 8")
[4](2) ("_Prologue_1(:start:5)" "\"PREFIX\"")
[4](3) ("parse(production)"
"token \"PREFIX\" prod :_Prologue_1, prod_branch [\"BASE\", \"PREFIX\"], sequence [:PrefixDecl]"
)
[4](3) ("parse(terms)" "todo {:prod=>:_Prologue_1, :terms=>[:PrefixDecl]}, depth 9")
[4](3) ("parse(token)" "accept :PrefixDecl")
[4](3) ("parse(push)" "term :PrefixDecl, depth 9")
[4](3) ("parse(production)" "token \"PREFIX\", prod :PrefixDecl, depth 9")
[4](2) ("PrefixDecl(:start:6)" "\"PREFIX\"")
[4](3) ("parse(production)"
"token \"PREFIX\" prod :PrefixDecl, prod_branch [\"PREFIX\"], sequence [\"PREFIX\", :PNAME_NS, :IRIREF]"
)
[4](3) ("parse(terms)"
"todo {:prod=>:PrefixDecl, :terms=>[\"PREFIX\", :PNAME_NS, :IRIREF]}, depth 10"
)
[4](3) ("parse(token)" "accept \"PREFIX\"")
[4](3) ("accept" "\"PREFIX\" === \"PREFIX\"")
[4](3) ("parse(token)" "token \"PREFIX\", term \"PREFIX\"")
[4](2) ("PREFIX(:terminal)" "" "PREFIX: {}")
[4](3) ("parse(token)" "accept :PNAME_NS")
[4](3) ("accept" "\"rdfs:\"(PNAME_NS) === :PNAME_NS")
[4](3) ("parse(token)" "token \"rdfs:\"(PNAME_NS), term :PNAME_NS")
[4](3) ("ns(\"rdfs\"): base: '', suffix: ''")
[4](2) ("PNAME_NS(:terminal)" ""
":PNAME_NS: {:iri=>#<RDF::URI:0x3f813d90d258 URI:>, :prefix=>:rdfs}" )
[4](3) ("parse(token)" "accept :IRIREF")
[4](3) ("accept" "\"<http://www.w3.org/2000/01/rdf-schema#>\"(IRIREF) === :IRIREF")
[4](3) ("parse(token)"
"token \"<http://www.w3.org/2000/01/rdf-schema#>\"(IRIREF), term :IRIREF" )
[4](2) ("IRIREF(:terminal)" ""
":IRIREF: {:iri=>#<RDF::URI:0x3f813d904b6c URI:http://www.w3.org/2000/01/rdf-schema#>, :prefix=>:rdfs}"
)
[4](3) ("parse(pop)" "todo {:prod=>:PrefixDecl, :terms=>[]}, depth 10")
[4](3) ("add_prod_datum(PrefixDecl)"
"[] << #<SPARQL::Algebra::Operator::Prefix:0x3f813d8fd7a4((((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ()))>"
)
[4](2) ("PrefixDecl(:finish):5"
((PrefixDecl ((prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ())))))
[4](3) ("parse(pop)" "todo {:prod=>:_Prologue_1, :terms=>[]}, depth 9")
[4](2) ("_Prologue_1(:finish):5")
[4](3) ("parse(terms)" "todo {:prod=>:_Prologue_2, :terms=>[:Prologue]}, depth 8")
[4](3) ("parse(token)" "accept :Prologue")
[6](3) ("parse(token)" "skip optional term :Prologue on \"SELECT\"")
[6](3) ("parse(pop)" "todo {:prod=>:_Prologue_2, :terms=>[]}, depth 8")
[6](2) ("_Prologue_2(:finish):5")
[6](3) ("parse(pop)" "todo {:prod=>:Prologue, :terms=>[]}, depth 7")
[6](3) ("add_prod_datum(PrefixDecl)"
"[#<SPARQL::Algebra::Operator::Prefix:0x3f813d945a54((((owl: <http://www.w3.org/2002/07/owl#>)) ()))>] += [#<SPARQL::Algebra::Operator::Prefix:0x3f813d8fd7a4((((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ()))>]"
)
[6](2) ("Prologue(:finish):4"
(
(PrefixDecl
(
(prefix ((owl: <http://www.w3.org/2002/07/owl#>)) ())
(prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ())) )) )
[6](3) ("parse(pop)" "todo {:prod=>:_Prologue_2, :terms=>[]}, depth 6")
[6](2) ("_Prologue_2(:finish):4")
[6](3) ("parse(pop)" "todo {:prod=>:Prologue, :terms=>[]}, depth 5")
[6](3) ("add_prod_datum(PrefixDecl)"
"[#<SPARQL::Algebra::Operator::Prefix:0x3f813d994c80((((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ()))>] += [#<SPARQL::Algebra::Operator::Prefix:0x3f813d945a54((((owl: <http://www.w3.org/2002/07/owl#>)) ()))>, #<SPARQL::Algebra::Operator::Prefix:0x3f813d8fd7a4((((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ()))>]"
)
[6](2) ("Prologue(:finish):3"
(
(PrefixDecl
(
(prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ())
(prefix ((owl: <http://www.w3.org/2002/07/owl#>)) ())
(prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ())) )) )
[6](3) ("parse(pop)" "todo {:prod=>:_Prologue_2, :terms=>[]}, depth 4")
[6](2) ("_Prologue_2(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:Prologue, :terms=>[]}, depth 3")
[6](3) ("add_prod_datum(PrefixDecl)"
"[] += [#<SPARQL::Algebra::Operator::Prefix:0x3f813d994c80((((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ()))>, #<SPARQL::Algebra::Operator::Prefix:0x3f813d945a54((((owl: <http://www.w3.org/2002/07/owl#>)) ()))>, #<SPARQL::Algebra::Operator::Prefix:0x3f813d8fd7a4((((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ()))>]"
)
[6](2) ("Prologue(:finish):2"
(
(PrefixDecl
(
(prefix ((rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) ())
(prefix ((owl: <http://www.w3.org/2002/07/owl#>)) ())
(prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>)) ())) )) )
[6](3) ("parse(terms)" "todo {:prod=>:Query, :terms=>[:_Query_1]}, depth 2")
[6](3) ("parse(token)" "accept :_Query_1")
[6](3) ("parse(push)" "term :_Query_1, depth 2")
[6](3) ("parse(production)" "token \"SELECT\", prod :_Query_1, depth 2")
[6](2) ("_Query_1(:start:2)" "\"SELECT\"")
[6](3) ("parse(production)"
"token \"SELECT\" prod :_Query_1, prod_branch [\"ASK\", \"CONSTRUCT\", \"DESCRIBE\", \"SELECT\"], sequence [:SelectQuery]"
)
[6](3) ("parse(terms)" "todo {:prod=>:_Query_1, :terms=>[:SelectQuery]}, depth 3")
[6](3) ("parse(token)" "accept :SelectQuery")
[6](3) ("parse(push)" "term :SelectQuery, depth 3")
[6](3) ("parse(production)" "token \"SELECT\", prod :SelectQuery, depth 3")
[6](2) ("SelectQuery(:start:3)" "\"SELECT\"")
[6](3) ("parse(production)"
"token \"SELECT\" prod :SelectQuery, prod_branch [\"SELECT\"], sequence [:SelectClause, :_SelectQuery_1, :WhereClause, :SolutionModifier, :ValuesClause]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:SelectQuery, :terms=>[:SelectClause, :_SelectQuery_1, :WhereClause, :SolutionModifier, :ValuesClause]}, depth 4"
)
[6](3) ("parse(token)" "accept :SelectClause")
[6](3) ("parse(push)" "term :SelectClause, depth 4")
[6](3) ("parse(production)" "token \"SELECT\", prod :SelectClause, depth 4")
[6](2) ("SelectClause(:start:3)" "\"SELECT\"")
[6](3) ("parse(production)"
"token \"SELECT\" prod :SelectClause, prod_branch [\"SELECT\"], sequence [\"SELECT\", :_SelectClause_1, :_SelectClause_2]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:SelectClause, :terms=>[\"SELECT\", :_SelectClause_1, :_SelectClause_2]}, depth 5"
)
[6](3) ("parse(token)" "accept \"SELECT\"")
[6](3) ("accept" "\"SELECT\" === \"SELECT\"")
[6](3) ("parse(token)" "token \"SELECT\", term \"SELECT\"")
[6](2) ("SELECT(:terminal)" "" "SELECT: {}")
[6](3) ("parse(token)" "accept :_SelectClause_1")
[6](3) ("parse(token)" "skip optional term :_SelectClause_1 on \"?class\"(VAR1)")
[6](3) ("parse(terms)"
"todo {:prod=>:SelectClause, :terms=>[:_SelectClause_2]}, depth 5" )
[6](3) ("parse(token)" "accept :_SelectClause_2")
[6](3) ("parse(push)" "term :_SelectClause_2, depth 5")
[6](3) ("parse(production)" "token :VAR1, prod :_SelectClause_2, depth 5")
[6](2) ("_SelectClause_2(:start:3)" "\"?class\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :_SelectClause_2, prod_branch [\"(\", \"*\", :VAR1, :VAR2], sequence [:_SelectClause_4]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_2, :terms=>[:_SelectClause_4]}, depth 6" )
[6](3) ("parse(token)" "accept :_SelectClause_4")
[6](3) ("parse(push)" "term :_SelectClause_4, depth 6")
[6](3) ("parse(production)" "token :VAR1, prod :_SelectClause_4, depth 6")
[6](2) ("_SelectClause_4(:start:3)" "\"?class\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :_SelectClause_4, prod_branch [\"(\", :VAR1, :VAR2], sequence [:_SelectClause_5, :_SelectClause_6]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_4, :terms=>[:_SelectClause_5, :_SelectClause_6]}, depth 7"
)
[6](3) ("parse(token)" "accept :_SelectClause_5")
[6](3) ("parse(push)" "term :_SelectClause_5, depth 7")
[6](3) ("parse(production)" "token :VAR1, prod :_SelectClause_5, depth 7")
[6](2) ("_SelectClause_5(:start:3)" "\"?class\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :_SelectClause_5, prod_branch [\"(\", :VAR1, :VAR2], sequence [:Var]"
)
[6](3) ("parse(terms)" "todo {:prod=>:_SelectClause_5, :terms=>[:Var]}, depth 8")
[6](3) ("parse(token)" "accept :Var")
[6](3) ("parse(push)" "term :Var, depth 8")
[6](3) ("parse(production)" "token :VAR1, prod :Var, depth 8")
[6](2) ("Var(:start:3)" "\"?class\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[6](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 9")
[6](3) ("parse(token)" "accept :VAR1")
[6](3) ("accept" "\"?class\"(VAR1) === :VAR1")
[6](3) ("parse(token)" "token \"?class\"(VAR1), term :VAR1")
[6](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d85ce30(?class)>")
[6](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813d85ce30(?class)>]}" )
[6](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 9")
[6](2) ("Var(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_5, :terms=>[]}, depth 8")
[6](2) ("_SelectClause_5(:finish):3")
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_4, :terms=>[:_SelectClause_6]}, depth 7" )
[6](3) ("parse(token)" "accept :_SelectClause_6")
[6](3) ("parse(push)" "term :_SelectClause_6, depth 7")
[6](3) ("parse(production)" "token \"(\", prod :_SelectClause_6, depth 7")
[6](2) ("_SelectClause_6(:start:3)" "\"(\"")
[6](3) ("parse(production)"
"token \"(\" prod :_SelectClause_6, prod_branch [\"(\", \"FROM\", :VAR1, :VAR2, \"WHERE\", \"{\"], sequence [:_SelectClause_7]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_6, :terms=>[:_SelectClause_7]}, depth 8" )
[6](3) ("parse(token)" "accept :_SelectClause_7")
[6](3) ("parse(push)" "term :_SelectClause_7, depth 8")
[6](3) ("parse(production)" "token \"(\", prod :_SelectClause_7, depth 8")
[6](2) ("_SelectClause_7(:start:3)" "\"(\"")
[6](3) ("parse(production)"
"token \"(\" prod :_SelectClause_7, prod_branch [\"(\", :VAR1, :VAR2], sequence [:_SelectClause_5, :_SelectClause_6]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_7, :terms=>[:_SelectClause_5, :_SelectClause_6]}, depth 9"
)
[6](3) ("parse(token)" "accept :_SelectClause_5")
[6](3) ("parse(push)" "term :_SelectClause_5, depth 9")
[6](3) ("parse(production)" "token \"(\", prod :_SelectClause_5, depth 9")
[6](2) ("_SelectClause_5(:start:3)" "\"(\"")
[6](3) ("parse(production)"
"token \"(\" prod :_SelectClause_5, prod_branch [\"(\", :VAR1, :VAR2], sequence [:_SelectClause_8]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_5, :terms=>[:_SelectClause_8]}, depth 10" )
[6](3) ("parse(token)" "accept :_SelectClause_8")
[6](3) ("parse(push)" "term :_SelectClause_8, depth 10")
[6](3) ("parse(production)" "token \"(\", prod :_SelectClause_8, depth 10")
[6](2) ("_SelectClause_8(:start:4)" "\"(\"")
[6](3) ("parse(production)"
"token \"(\" prod :_SelectClause_8, prod_branch [\"(\"], sequence [\"(\", :Expression, \"AS\", :Var, \")\"]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_8, :terms=>[\"(\", :Expression, \"AS\", :Var, \")\"]}, depth 11"
)
[6](3) ("parse(token)" "accept \"(\"")
[6](3) ("accept" "\"(\" === \"(\"")
[6](3) ("parse(token)" "token \"(\", term \"(\"")
[6](2) ("((:terminal)" "" "(: {}")
[6](3) ("parse(token)" "accept :Expression")
[6](3) ("parse(push)" "term :Expression, depth 11")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :Expression, depth 11")
[6](2) ("Expression(:start:5)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :Expression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ConditionalOrExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:Expression, :terms=>[:ConditionalOrExpression]}, depth 12" )
[6](3) ("parse(token)" "accept :ConditionalOrExpression")
[6](3) ("parse(push)" "term :ConditionalOrExpression, depth 12")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\", prod :ConditionalOrExpression, depth 12" )
[6](2) ("ConditionalOrExpression(:start:6)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :ConditionalOrExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ConditionalAndExpression, :_ConditionalOrExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalOrExpression, :terms=>[:ConditionalAndExpression, :_ConditionalOrExpression_1]}, depth 13"
)
[6](3) ("parse(token)" "accept :ConditionalAndExpression")
[6](3) ("parse(push)" "term :ConditionalAndExpression, depth 13")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\", prod :ConditionalAndExpression, depth 13" )
[6](2) ("ConditionalAndExpression(:start:7)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :ConditionalAndExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ValueLogical, :_ConditionalAndExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalAndExpression, :terms=>[:ValueLogical, :_ConditionalAndExpression_1]}, depth 14"
)
[6](3) ("parse(token)" "accept :ValueLogical")
[6](3) ("parse(push)" "term :ValueLogical, depth 14")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :ValueLogical, depth 14")
[6](2) ("ValueLogical(:start:7)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :ValueLogical, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:RelationalExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ValueLogical, :terms=>[:RelationalExpression]}, depth 15" )
[6](3) ("parse(token)" "accept :RelationalExpression")
[6](3) ("parse(push)" "term :RelationalExpression, depth 15")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\", prod :RelationalExpression, depth 15" )
[6](2) ("RelationalExpression(:start:8)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :RelationalExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:NumericExpression, :_RelationalExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:RelationalExpression, :terms=>[:NumericExpression, :_RelationalExpression_1]}, depth 16"
)
[6](3) ("parse(token)" "accept :NumericExpression")
[6](3) ("parse(push)" "term :NumericExpression, depth 16")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :NumericExpression, depth 16")
[6](2) ("NumericExpression(:start:8)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :NumericExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:AdditiveExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:NumericExpression, :terms=>[:AdditiveExpression]}, depth 17" )
[6](3) ("parse(token)" "accept :AdditiveExpression")
[6](3) ("parse(push)" "term :AdditiveExpression, depth 17")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :AdditiveExpression, depth 17")
[6](2) ("AdditiveExpression(:start:9)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :AdditiveExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:MultiplicativeExpression, :_AdditiveExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:AdditiveExpression, :terms=>[:MultiplicativeExpression, :_AdditiveExpression_1]}, depth 18"
)
[6](3) ("parse(token)" "accept :MultiplicativeExpression")
[6](3) ("parse(push)" "term :MultiplicativeExpression, depth 18")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\", prod :MultiplicativeExpression, depth 18" )
[6](2) ("MultiplicativeExpression(:start:10)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :MultiplicativeExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:UnaryExpression, :_MultiplicativeExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:MultiplicativeExpression, :terms=>[:UnaryExpression, :_MultiplicativeExpression_1]}, depth 19"
)
[6](3) ("parse(token)" "accept :UnaryExpression")
[6](3) ("parse(push)" "term :UnaryExpression, depth 19")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :UnaryExpression, depth 19")
[6](2) ("UnaryExpression(:start:11)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :UnaryExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:PrimaryExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:UnaryExpression, :terms=>[:PrimaryExpression]}, depth 20" )
[6](3) ("parse(token)" "accept :PrimaryExpression")
[6](3) ("parse(push)" "term :PrimaryExpression, depth 20")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :PrimaryExpression, depth 20")
[6](2) ("PrimaryExpression(:start:12)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :PrimaryExpression, prod_branch [\"(\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:BuiltInCall]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:PrimaryExpression, :terms=>[:BuiltInCall]}, depth 21" )
[6](3) ("parse(token)" "accept :BuiltInCall")
[6](3) ("parse(push)" "term :BuiltInCall, depth 21")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :BuiltInCall, depth 21")
[6](2) ("BuiltInCall(:start:13)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :BuiltInCall, prod_branch [\"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", \"IRI\", \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", \"YEAR\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\"], sequence [:Aggregate]"
)
[6](3) ("parse(terms)" "todo {:prod=>:BuiltInCall, :terms=>[:Aggregate]}, depth 22")
[6](3) ("parse(token)" "accept :Aggregate")
[6](3) ("parse(push)" "term :Aggregate, depth 22")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :Aggregate, depth 22")
[6](2) ("Aggregate(:start:14)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :Aggregate, prod_branch [\"AVG\", \"COUNT\", \"GROUP_CONCAT\", \"MAX\", \"MIN\", \"SAMPLE\", \"SUM\"], sequence [:_Aggregate_7]"
)
[6](3) ("parse(terms)" "todo {:prod=>:Aggregate, :terms=>[:_Aggregate_7]}, depth 23")
[6](3) ("parse(token)" "accept :_Aggregate_7")
[6](3) ("parse(push)" "term :_Aggregate_7, depth 23")
[6](3) ("parse(production)" "token \"GROUP_CONCAT\", prod :_Aggregate_7, depth 23")
[6](2) ("_Aggregate_7(:start:14)" "\"GROUP_CONCAT\"")
[6](3) ("parse(production)"
"token \"GROUP_CONCAT\" prod :_Aggregate_7, prod_branch [\"GROUP_CONCAT\"], sequence [\"GROUP_CONCAT\", \"(\", :_Aggregate_15, :Expression, :_Aggregate_16, \")\"]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:_Aggregate_7, :terms=>[\"GROUP_CONCAT\", \"(\", :_Aggregate_15, :Expression, :_Aggregate_16, \")\"]}, depth 24"
)
[6](3) ("parse(token)" "accept \"GROUP_CONCAT\"")
[6](3) ("accept" "\"GROUP_CONCAT\" === \"GROUP_CONCAT\"")
[6](3) ("parse(token)" "token \"GROUP_CONCAT\", term \"GROUP_CONCAT\"")
[6](3) ("add_prod_datum(group_concat)" "[] << :group_concat")
[6](2) ("GROUP_CONCAT(:terminal)" "" "GROUP_CONCAT: {:group_concat=>[:group_concat]}")
[6](3) ("parse(token)" "accept \"(\"")
[6](3) ("accept" "\"(\" === \"(\"")
[6](3) ("parse(token)" "token \"(\", term \"(\"")
[6](2) ("((:terminal)" "" "(: {:group_concat=>[:group_concat]}")
[6](3) ("parse(token)" "accept :_Aggregate_15")
[6](3) ("parse(push)" "term :_Aggregate_15, depth 24")
[6](3) ("parse(production)" "token \"DISTINCT\", prod :_Aggregate_15, depth 24")
[6](2) ("_Aggregate_15(:start:14)" "\"DISTINCT\"")
[6](3) ("parse(production)"
"token \"DISTINCT\" prod :_Aggregate_15, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, \"DISTINCT\", :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [\"DISTINCT\"]"
)
[6](3) ("parse(terms)" "todo {:prod=>:_Aggregate_15, :terms=>[\"DISTINCT\"]}, depth 25")
[6](3) ("parse(token)" "accept \"DISTINCT\"")
[6](3) ("accept" "\"DISTINCT\" === \"DISTINCT\"")
[6](3) ("parse(token)" "token \"DISTINCT\", term \"DISTINCT\"")
[6](2) ("DISTINCT(:terminal)" ""
"DISTINCT: {:group_concat=>[:group_concat], :DISTINCT_REDUCED=>:distinct}" )
[6](3) ("parse(pop)" "todo {:prod=>:_Aggregate_15, :terms=>[]}, depth 25")
[6](2) ("_Aggregate_15(:finish):14")
[6](3) ("parse(terms)"
"todo {:prod=>:_Aggregate_7, :terms=>[:Expression, :_Aggregate_16, \")\"]}, depth 24"
)
[6](3) ("parse(token)" "accept :Expression")
[6](3) ("parse(push)" "term :Expression, depth 24")
[6](3) ("parse(production)" "token :VAR1, prod :Expression, depth 24")
[6](2) ("Expression(:start:15)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :Expression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ConditionalOrExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:Expression, :terms=>[:ConditionalOrExpression]}, depth 25" )
[6](3) ("parse(token)" "accept :ConditionalOrExpression")
[6](3) ("parse(push)" "term :ConditionalOrExpression, depth 25")
[6](3) ("parse(production)" "token :VAR1, prod :ConditionalOrExpression, depth 25")
[6](2) ("ConditionalOrExpression(:start:16)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :ConditionalOrExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ConditionalAndExpression, :_ConditionalOrExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalOrExpression, :terms=>[:ConditionalAndExpression, :_ConditionalOrExpression_1]}, depth 26"
)
[6](3) ("parse(token)" "accept :ConditionalAndExpression")
[6](3) ("parse(push)" "term :ConditionalAndExpression, depth 26")
[6](3) ("parse(production)" "token :VAR1, prod :ConditionalAndExpression, depth 26")
[6](2) ("ConditionalAndExpression(:start:17)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :ConditionalAndExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:ValueLogical, :_ConditionalAndExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalAndExpression, :terms=>[:ValueLogical, :_ConditionalAndExpression_1]}, depth 27"
)
[6](3) ("parse(token)" "accept :ValueLogical")
[6](3) ("parse(push)" "term :ValueLogical, depth 27")
[6](3) ("parse(production)" "token :VAR1, prod :ValueLogical, depth 27")
[6](2) ("ValueLogical(:start:17)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :ValueLogical, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:RelationalExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:ValueLogical, :terms=>[:RelationalExpression]}, depth 28" )
[6](3) ("parse(token)" "accept :RelationalExpression")
[6](3) ("parse(push)" "term :RelationalExpression, depth 28")
[6](3) ("parse(production)" "token :VAR1, prod :RelationalExpression, depth 28")
[6](2) ("RelationalExpression(:start:18)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :RelationalExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:NumericExpression, :_RelationalExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:RelationalExpression, :terms=>[:NumericExpression, :_RelationalExpression_1]}, depth 29"
)
[6](3) ("parse(token)" "accept :NumericExpression")
[6](3) ("parse(push)" "term :NumericExpression, depth 29")
[6](3) ("parse(production)" "token :VAR1, prod :NumericExpression, depth 29")
[6](2) ("NumericExpression(:start:18)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :NumericExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:AdditiveExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:NumericExpression, :terms=>[:AdditiveExpression]}, depth 30" )
[6](3) ("parse(token)" "accept :AdditiveExpression")
[6](3) ("parse(push)" "term :AdditiveExpression, depth 30")
[6](3) ("parse(production)" "token :VAR1, prod :AdditiveExpression, depth 30")
[6](2) ("AdditiveExpression(:start:19)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :AdditiveExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:MultiplicativeExpression, :_AdditiveExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:AdditiveExpression, :terms=>[:MultiplicativeExpression, :_AdditiveExpression_1]}, depth 31"
)
[6](3) ("parse(token)" "accept :MultiplicativeExpression")
[6](3) ("parse(push)" "term :MultiplicativeExpression, depth 31")
[6](3) ("parse(production)" "token :VAR1, prod :MultiplicativeExpression, depth 31")
[6](2) ("MultiplicativeExpression(:start:20)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :MultiplicativeExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:UnaryExpression, :_MultiplicativeExpression_1]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:MultiplicativeExpression, :terms=>[:UnaryExpression, :_MultiplicativeExpression_1]}, depth 32"
)
[6](3) ("parse(token)" "accept :UnaryExpression")
[6](3) ("parse(push)" "term :UnaryExpression, depth 32")
[6](3) ("parse(production)" "token :VAR1, prod :UnaryExpression, depth 32")
[6](2) ("UnaryExpression(:start:21)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :UnaryExpression, prod_branch [\"!\", \"(\", \"+\", \"-\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:PrimaryExpression]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:UnaryExpression, :terms=>[:PrimaryExpression]}, depth 33" )
[6](3) ("parse(token)" "accept :PrimaryExpression")
[6](3) ("parse(push)" "term :PrimaryExpression, depth 33")
[6](3) ("parse(production)" "token :VAR1, prod :PrimaryExpression, depth 33")
[6](2) ("PrimaryExpression(:start:22)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :PrimaryExpression, prod_branch [\"(\", \"ABS\", \"AVG\", \"BNODE\", \"BOUND\", \"CEIL\", \"COALESCE\", \"CONCAT\", \"CONTAINS\", \"COUNT\", \"DATATYPE\", \"DAY\", :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"ENCODE_FOR_URI\", \"EXISTS\", \"FLOOR\", \"GROUP_CONCAT\", \"HOURS\", \"IF\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, \"IRI\", :IRIREF, \"LANG\", \"LANGMATCHES\", \"LCASE\", \"MAX\", \"MD5\", \"MIN\", \"MINUTES\", \"MONTH\", \"NOT\", \"NOW\", :PNAME_LN, :PNAME_NS, \"RAND\", \"REGEX\", \"REPLACE\", \"ROUND\", \"SAMPLE\", \"SECONDS\", \"SHA1\", \"SHA224\", \"SHA256\", \"SHA384\", \"SHA512\", \"STR\", \"STRAFTER\", \"STRBEFORE\", \"STRDT\", \"STRENDS\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"STRLANG\", \"STRLEN\", \"STRSTARTS\", \"STRUUID\", \"SUBSTR\", \"SUM\", \"TIMEZONE\", \"TZ\", \"UCASE\", \"URI\", \"UUID\", :VAR1, :VAR2, \"YEAR\", \"false\", \"isBLANK\", \"isIRI\", \"isLITERAL\", \"isNUMERIC\", \"isURI\", \"sameTerm\", \"true\"], sequence [:Var]"
)
[6](3) ("parse(terms)" "todo {:prod=>:PrimaryExpression, :terms=>[:Var]}, depth 34")
[6](3) ("parse(token)" "accept :Var")
[6](3) ("parse(push)" "term :Var, depth 34")
[6](3) ("parse(production)" "token :VAR1, prod :Var, depth 34")
[6](2) ("Var(:start:22)" "\"?item\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[6](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 35")
[6](3) ("parse(token)" "accept :VAR1")
[6](3) ("accept" "\"?item\"(VAR1) === :VAR1")
[6](3) ("parse(token)" "token \"?item\"(VAR1), term :VAR1")
[6](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d79437c(?item)>")
[6](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813d79437c(?item)>]}" )
[6](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 35")
[6](2) ("Var(:finish):22")
[6](3) ("parse(pop)" "todo {:prod=>:PrimaryExpression, :terms=>[]}, depth 34")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("PrimaryExpression(:finish):21" ((Expression (?item))))
[6](3) ("parse(pop)" "todo {:prod=>:UnaryExpression, :terms=>[]}, depth 33")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("UnaryExpression(:finish):20" ((Expression (?item))))
[6](3) ("parse(terms)"
"todo {:prod=>:MultiplicativeExpression, :terms=>[:_MultiplicativeExpression_1]}, depth 32"
)
[6](3) ("parse(token)" "accept :_MultiplicativeExpression_1")
[6](3) ("parse(token)" "skip optional term :_MultiplicativeExpression_1 on \")\"")
[6](3) ("parse(pop)" "todo {:prod=>:MultiplicativeExpression, :terms=>[]}, depth 32")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("MultiplicativeExpression(:finish):19" ((Expression (?item))))
[6](3) ("parse(terms)"
"todo {:prod=>:AdditiveExpression, :terms=>[:_AdditiveExpression_1]}, depth 31"
)
[6](3) ("parse(token)" "accept :_AdditiveExpression_1")
[6](3) ("parse(token)" "skip optional term :_AdditiveExpression_1 on \")\"")
[6](3) ("parse(pop)" "todo {:prod=>:AdditiveExpression, :terms=>[]}, depth 31")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("AdditiveExpression(:finish):18" ((Expression (?item))))
[6](3) ("parse(pop)" "todo {:prod=>:NumericExpression, :terms=>[]}, depth 30")
[6](2) ("NumericExpression(:finish):18")
[6](3) ("parse(terms)"
"todo {:prod=>:RelationalExpression, :terms=>[:_RelationalExpression_1]}, depth 29"
)
[6](3) ("parse(token)" "accept :_RelationalExpression_1")
[6](3) ("parse(token)" "skip optional term :_RelationalExpression_1 on \")\"")
[6](3) ("parse(pop)" "todo {:prod=>:RelationalExpression, :terms=>[]}, depth 29")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("RelationalExpression(:finish):17" ((Expression (?item))))
[6](3) ("parse(pop)" "todo {:prod=>:ValueLogical, :terms=>[]}, depth 28")
[6](2) ("ValueLogical(:finish):17")
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalAndExpression, :terms=>[:_ConditionalAndExpression_1]}, depth 27"
)
[6](3) ("parse(token)" "accept :_ConditionalAndExpression_1")
[6](3) ("parse(token)" "skip optional term :_ConditionalAndExpression_1 on \")\"")
[6](3) ("parse(pop)" "todo {:prod=>:ConditionalAndExpression, :terms=>[]}, depth 27")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("ConditionalAndExpression(:finish):16" ((Expression (?item))))
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalOrExpression, :terms=>[:_ConditionalOrExpression_1]}, depth 26"
)
[6](3) ("parse(token)" "accept :_ConditionalOrExpression_1")
[6](3) ("parse(token)" "skip optional term :_ConditionalOrExpression_1 on \")\"")
[6](3) ("parse(pop)" "todo {:prod=>:ConditionalOrExpression, :terms=>[]}, depth 26")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("ConditionalOrExpression(:finish):15" ((Expression (?item))))
[6](3) ("parse(pop)" "todo {:prod=>:Expression, :terms=>[]}, depth 25")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[6](2) ("Expression(:finish):14"
((group_concat (group_concat)) (DISTINCT_REDUCED distinct) (Expression (?item))))
[6](3) ("parse(terms)"
"todo {:prod=>:_Aggregate_7, :terms=>[:_Aggregate_16, \")\"]}, depth 24" )
[6](3) ("parse(token)" "accept :_Aggregate_16")
[6](3) ("parse(token)" "skip optional term :_Aggregate_16 on \")\"")
[6](3) ("parse(terms)" "todo {:prod=>:_Aggregate_7, :terms=>[\")\"]}, depth 24")
[6](3) ("parse(token)" "accept \")\"")
[6](3) ("accept" "\")\" === \")\"")
[6](3) ("parse(token)" "token \")\", term \")\"")
[6](2) (")(:terminal)" ""
"): {:group_concat=>[:group_concat], :DISTINCT_REDUCED=>:distinct, :Expression=>[#<RDF::Query::Variable:0x3f813d79437c(?item)>]}"
)
[6](3) ("parse(pop)" "todo {:prod=>:_Aggregate_7, :terms=>[]}, depth 24")
[6](2) ("_Aggregate_7(:finish):14")
[6](3) ("parse(pop)" "todo {:prod=>:Aggregate, :terms=>[]}, depth 23")
[6](3) ("add_prod_data(group_concat)"
"[[#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]] += [[#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]]"
)
[6](2) ("Aggregate(:finish):13" ((group_concat (((group_concat distinct ?item))))))
[6](3) ("parse(pop)" "todo {:prod=>:BuiltInCall, :terms=>[]}, depth 22")
[6](2) ("BuiltInCall(:finish):12" ((BuiltInCall ((group_concat distinct ?item)))))
[6](3) ("parse(pop)" "todo {:prod=>:PrimaryExpression, :terms=>[]}, depth 21")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("PrimaryExpression(:finish):11" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(pop)" "todo {:prod=>:UnaryExpression, :terms=>[]}, depth 20")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("UnaryExpression(:finish):10" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(terms)"
"todo {:prod=>:MultiplicativeExpression, :terms=>[:_MultiplicativeExpression_1]}, depth 19"
)
[6](3) ("parse(token)" "accept :_MultiplicativeExpression_1")
[6](3) ("parse(token)" "skip optional term :_MultiplicativeExpression_1 on \"AS\"")
[6](3) ("parse(pop)" "todo {:prod=>:MultiplicativeExpression, :terms=>[]}, depth 19")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("MultiplicativeExpression(:finish):9" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(terms)"
"todo {:prod=>:AdditiveExpression, :terms=>[:_AdditiveExpression_1]}, depth 18"
)
[6](3) ("parse(token)" "accept :_AdditiveExpression_1")
[6](3) ("parse(token)" "skip optional term :_AdditiveExpression_1 on \"AS\"")
[6](3) ("parse(pop)" "todo {:prod=>:AdditiveExpression, :terms=>[]}, depth 18")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("AdditiveExpression(:finish):8" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(pop)" "todo {:prod=>:NumericExpression, :terms=>[]}, depth 17")
[6](2) ("NumericExpression(:finish):8")
[6](3) ("parse(terms)"
"todo {:prod=>:RelationalExpression, :terms=>[:_RelationalExpression_1]}, depth 16"
)
[6](3) ("parse(token)" "accept :_RelationalExpression_1")
[6](3) ("parse(token)" "skip optional term :_RelationalExpression_1 on \"AS\"")
[6](3) ("parse(pop)" "todo {:prod=>:RelationalExpression, :terms=>[]}, depth 16")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("RelationalExpression(:finish):7" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(pop)" "todo {:prod=>:ValueLogical, :terms=>[]}, depth 15")
[6](2) ("ValueLogical(:finish):7")
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalAndExpression, :terms=>[:_ConditionalAndExpression_1]}, depth 14"
)
[6](3) ("parse(token)" "accept :_ConditionalAndExpression_1")
[6](3) ("parse(token)" "skip optional term :_ConditionalAndExpression_1 on \"AS\"")
[6](3) ("parse(pop)" "todo {:prod=>:ConditionalAndExpression, :terms=>[]}, depth 14")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("ConditionalAndExpression(:finish):6" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(terms)"
"todo {:prod=>:ConditionalOrExpression, :terms=>[:_ConditionalOrExpression_1]}, depth 13"
)
[6](3) ("parse(token)" "accept :_ConditionalOrExpression_1")
[6](3) ("parse(token)" "skip optional term :_ConditionalOrExpression_1 on \"AS\"")
[6](3) ("parse(pop)" "todo {:prod=>:ConditionalOrExpression, :terms=>[]}, depth 13")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("ConditionalOrExpression(:finish):5" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(pop)" "todo {:prod=>:Expression, :terms=>[]}, depth 12")
[6](3) ("add_prod_datum(Expression)"
"[] += [#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]"
)
[6](2) ("Expression(:finish):4" ((Expression ((group_concat distinct ?item)))))
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_8, :terms=>[\"AS\", :Var, \")\"]}, depth 11" )
[6](3) ("parse(token)" "accept \"AS\"")
[6](3) ("accept" "\"AS\" === \"AS\"")
[6](3) ("parse(token)" "token \"AS\", term \"AS\"")
[6](2) ("AS(:terminal)" ""
"AS: {:Expression=>[#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]}"
)
[6](3) ("parse(token)" "accept :Var")
[6](3) ("parse(push)" "term :Var, depth 11")
[6](3) ("parse(production)" "token :VAR1, prod :Var, depth 11")
[6](2) ("Var(:start:4)" "\"?keys\"(VAR1)")
[6](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[6](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 12")
[6](3) ("parse(token)" "accept :VAR1")
[6](3) ("accept" "\"?keys\"(VAR1) === :VAR1")
[6](3) ("parse(token)" "token \"?keys\"(VAR1), term :VAR1")
[6](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d742144(?keys)>")
[6](2) ("VAR1(:terminal)" ""
":VAR1: {:Expression=>[#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>], :Var=>[#<RDF::Query::Variable:0x3f813d742144(?keys)>]}"
)
[6](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 12")
[6](2) ("Var(:finish):4")
[6](3) ("parse(terms)" "todo {:prod=>:_SelectClause_8, :terms=>[\")\"]}, depth 11")
[6](3) ("parse(token)" "accept \")\"")
[6](3) ("accept" "\")\" === \")\"")
[6](3) ("parse(token)" "token \")\", term \")\"")
[6](2) (")(:terminal)" ""
"): {:Expression=>[#<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>], :Var=>[#<RDF::Query::Variable:0x3f813d742144(?keys)>]}"
)
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_8, :terms=>[]}, depth 11")
[6](3) ("add_prod_datum(extend)"
"[] += [[#<RDF::Query::Variable:0x3f813d742144(?keys)>, #<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]]"
)
[6](2) ("_SelectClause_8(:finish):3" ((Var (?class)) (extend ((?keys (group_concat distinct ?item))))))
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_5, :terms=>[]}, depth 10")
[6](2) ("_SelectClause_5(:finish):3")
[6](3) ("parse(terms)"
"todo {:prod=>:_SelectClause_7, :terms=>[:_SelectClause_6]}, depth 9" )
[6](3) ("parse(token)" "accept :_SelectClause_6")
[6](3) ("parse(token)" "skip optional term :_SelectClause_6 on \"WHERE\"")
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_7, :terms=>[]}, depth 9")
[6](2) ("_SelectClause_7(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_6, :terms=>[]}, depth 8")
[6](2) ("_SelectClause_6(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_4, :terms=>[]}, depth 7")
[6](2) ("_SelectClause_4(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:_SelectClause_2, :terms=>[]}, depth 6")
[6](2) ("_SelectClause_2(:finish):3")
[6](3) ("parse(pop)" "todo {:prod=>:SelectClause, :terms=>[]}, depth 5")
[6](2) ("SelectClause(:finish):3")
[6](3) ("parse(terms)"
"todo {:prod=>:SelectQuery, :terms=>[:_SelectQuery_1, :WhereClause, :SolutionModifier, :ValuesClause]}, depth 4"
)
[6](3) ("parse(token)" "accept :_SelectQuery_1")
[6](3) ("parse(token)" "skip optional term :_SelectQuery_1 on \"WHERE\"")
[6](3) ("parse(terms)"
"todo {:prod=>:SelectQuery, :terms=>[:WhereClause, :SolutionModifier, :ValuesClause]}, depth 4"
)
[6](3) ("parse(token)" "accept :WhereClause")
[6](3) ("parse(push)" "term :WhereClause, depth 4")
[6](3) ("parse(production)" "token \"WHERE\", prod :WhereClause, depth 4")
[6](2) ("WhereClause(:start:3)" "\"WHERE\"")
[6](3) ("parse(production)"
"token \"WHERE\" prod :WhereClause, prod_branch [\"WHERE\", \"{\"], sequence [:_WhereClause_1, :GroupGraphPattern]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:WhereClause, :terms=>[:_WhereClause_1, :GroupGraphPattern]}, depth 5"
)
[6](3) ("parse(token)" "accept :_WhereClause_1")
[6](3) ("parse(push)" "term :_WhereClause_1, depth 5")
[6](3) ("parse(production)" "token \"WHERE\", prod :_WhereClause_1, depth 5")
[6](2) ("_WhereClause_1(:start:3)" "\"WHERE\"")
[6](3) ("parse(production)"
"token \"WHERE\" prod :_WhereClause_1, prod_branch [\"WHERE\", \"{\"], sequence [\"WHERE\"]"
)
[6](3) ("parse(terms)" "todo {:prod=>:_WhereClause_1, :terms=>[\"WHERE\"]}, depth 6")
[6](3) ("parse(token)" "accept \"WHERE\"")
[6](3) ("accept" "\"WHERE\" === \"WHERE\"")
[6](3) ("parse(token)" "token \"WHERE\", term \"WHERE\"")
[6](2) ("WHERE(:terminal)" ""
"WHERE: {:Var=>[#<RDF::Query::Variable:0x3f813d85ce30(?class)>], :extend=>[[#<RDF::Query::Variable:0x3f813d742144(?keys)>, #<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]]}"
)
[6](3) ("parse(pop)" "todo {:prod=>:_WhereClause_1, :terms=>[]}, depth 6")
[6](2) ("_WhereClause_1(:finish):3")
[6](3) ("parse(terms)"
"todo {:prod=>:WhereClause, :terms=>[:GroupGraphPattern]}, depth 5" )
[6](3) ("parse(token)" "accept :GroupGraphPattern")
[6](3) ("parse(push)" "term :GroupGraphPattern, depth 5")
[6](3) ("parse(production)" "token \"{\", prod :GroupGraphPattern, depth 5")
[6](2) ("GroupGraphPattern(:start:3)" "\"{\"")
[6](3) ("parse(production)"
"token \"{\" prod :GroupGraphPattern, prod_branch [\"{\"], sequence [\"{\", :_GroupGraphPattern_1, \"}\"]"
)
[6](3) ("parse(terms)"
"todo {:prod=>:GroupGraphPattern, :terms=>[\"{\", :_GroupGraphPattern_1, \"}\"]}, depth 6"
)
[6](3) ("parse(token)" "accept \"{\"")
[6](3) ("accept" "\"{\" === \"{\"")
[6](3) ("parse(token)" "token \"{\", term \"{\"")
[6](2) ("{(:terminal)" ""
"{: {:Var=>[#<RDF::Query::Variable:0x3f813d85ce30(?class)>], :extend=>[[#<RDF::Query::Variable:0x3f813d742144(?keys)>, #<SPARQL::Algebra::Operator::GroupConcat:0x3f813d76cafc((distinct ?item))>]]}"
)
[6](3) ("parse(token)" "accept :_GroupGraphPattern_1")
[7](3) ("parse(push)" "term :_GroupGraphPattern_1, depth 6")
[7](3) ("parse(production)" "token :VAR1, prod :_GroupGraphPattern_1, depth 6")
[7](2) ("_GroupGraphPattern_1(:start:3)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :_GroupGraphPattern_1, prod_branch [\"(\", :ANON, \"BIND\", :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"FILTER\", \"GRAPH\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, \"MINUS\", :NIL, \"OPTIONAL\", :PNAME_LN, :PNAME_NS, \"SELECT\", \"SERVICE\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"VALUES\", :VAR1, :VAR2, \"[\", \"false\", \"true\", \"{\", \"}\"], sequence [:GroupGraphPatternSub]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_GroupGraphPattern_1, :terms=>[:GroupGraphPatternSub]}, depth 7"
)
[7](3) ("parse(token)" "accept :GroupGraphPatternSub")
[7](3) ("parse(push)" "term :GroupGraphPatternSub, depth 7")
[7](3) ("parse(production)" "token :VAR1, prod :GroupGraphPatternSub, depth 7")
[7](2) ("GroupGraphPatternSub(:start:4)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :GroupGraphPatternSub, prod_branch [\"(\", :ANON, \"BIND\", :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"FILTER\", \"GRAPH\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, \"MINUS\", :NIL, \"OPTIONAL\", :PNAME_LN, :PNAME_NS, \"SERVICE\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"VALUES\", :VAR1, :VAR2, \"[\", \"false\", \"true\", \"{\", \"}\"], sequence [:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:GroupGraphPatternSub, :terms=>[:_GroupGraphPatternSub_1, :_GroupGraphPatternSub_2]}, depth 8"
)
[7](3) ("parse(token)" "accept :_GroupGraphPatternSub_1")
[7](3) ("parse(push)" "term :_GroupGraphPatternSub_1, depth 8")
[7](3) ("parse(production)" "token :VAR1, prod :_GroupGraphPatternSub_1, depth 8")
[7](2) ("_GroupGraphPatternSub_1(:start:4)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :_GroupGraphPatternSub_1, prod_branch [\"(\", :ANON, \"BIND\", :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"FILTER\", \"GRAPH\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, \"MINUS\", :NIL, \"OPTIONAL\", :PNAME_LN, :PNAME_NS, \"SERVICE\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"VALUES\", :VAR1, :VAR2, \"[\", \"false\", \"true\", \"{\", \"}\"], sequence [:TriplesBlock]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_GroupGraphPatternSub_1, :terms=>[:TriplesBlock]}, depth 9" )
[7](3) ("parse(token)" "accept :TriplesBlock")
[7](3) ("parse(push)" "term :TriplesBlock, depth 9")
[7](3) ("parse(production)" "token :VAR1, prod :TriplesBlock, depth 9")
[7](2) ("TriplesBlock(:start:5)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :TriplesBlock, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:TriplesSameSubjectPath, :_TriplesBlock_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:TriplesSameSubjectPath, :_TriplesBlock_1]}, depth 10"
)
[7](3) ("parse(token)" "accept :TriplesSameSubjectPath")
[7](3) ("parse(push)" "term :TriplesSameSubjectPath, depth 10")
[7](3) ("parse(production)" "token :VAR1, prod :TriplesSameSubjectPath, depth 10")
[7](2) ("TriplesSameSubjectPath(:start:6)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :TriplesSameSubjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:_TriplesSameSubjectPath_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:TriplesSameSubjectPath, :terms=>[:_TriplesSameSubjectPath_1]}, depth 11"
)
[7](3) ("parse(token)" "accept :_TriplesSameSubjectPath_1")
[7](3) ("parse(push)" "term :_TriplesSameSubjectPath_1, depth 11")
[7](3) ("parse(production)" "token :VAR1, prod :_TriplesSameSubjectPath_1, depth 11")
[7](2) ("_TriplesSameSubjectPath_1(:start:6)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :_TriplesSameSubjectPath_1, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:VarOrTerm, :PropertyListPathNotEmpty]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:VarOrTerm, :PropertyListPathNotEmpty]}, depth 12"
)
[7](3) ("parse(token)" "accept :VarOrTerm")
[7](3) ("parse(push)" "term :VarOrTerm, depth 12")
[7](3) ("parse(production)" "token :VAR1, prod :VarOrTerm, depth 12")
[7](2) ("VarOrTerm(:start:7)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:Var]"
)
[7](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:Var]}, depth 13")
[7](3) ("parse(token)" "accept :Var")
[7](3) ("parse(push)" "term :Var, depth 13")
[7](3) ("parse(production)" "token :VAR1, prod :Var, depth 13")
[7](2) ("Var(:start:7)" "\"?class\"(VAR1)")
[7](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[7](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 14")
[7](3) ("parse(token)" "accept :VAR1")
[7](3) ("accept" "\"?class\"(VAR1) === :VAR1")
[7](3) ("parse(token)" "token \"?class\"(VAR1), term :VAR1")
[7](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d85ce30(?class)>")
[7](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813d85ce30(?class)>]}" )
[7](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 14")
[7](2) ("Var(:finish):7")
[7](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 13")
[7](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::Query::Variable:0x3f813d85ce30(?class)>]" )
[7](2) ("VarOrTerm(:finish):6" ((VarOrTerm (?class))))
[7](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:PropertyListPathNotEmpty]}, depth 12"
)
[7](3) ("parse(token)" "accept :PropertyListPathNotEmpty")
[7](3) ("parse(push)" "term :PropertyListPathNotEmpty, depth 12")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PropertyListPathNotEmpty, depth 12")
[7](2) ("PropertyListPathNotEmpty(:start):6" ((VarOrTerm (?class))))
[7](3) ("parse(production)"
"token :PNAME_LN prod :PropertyListPathNotEmpty, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 13"
)
[7](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_1")
[7](3) ("parse(push)" "term :_PropertyListPathNotEmpty_1, depth 13")
[7](3) ("parse(production)"
"token :PNAME_LN, prod :_PropertyListPathNotEmpty_1, depth 13" )
[7](2) ("_PropertyListPathNotEmpty_1(:start:7)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :_PropertyListPathNotEmpty_1, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:VerbPath]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[:VerbPath]}, depth 14" )
[7](3) ("parse(token)" "accept :VerbPath")
[7](3) ("parse(push)" "term :VerbPath, depth 14")
[7](3) ("parse(production)" "token :PNAME_LN, prod :VerbPath, depth 14")
[7](2) ("VerbPath(:start:8)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :VerbPath, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:Path]"
)
[7](3) ("parse(terms)" "todo {:prod=>:VerbPath, :terms=>[:Path]}, depth 15")
[7](3) ("parse(token)" "accept :Path")
[7](3) ("parse(push)" "term :Path, depth 15")
[7](3) ("parse(production)" "token :PNAME_LN, prod :Path, depth 15")
[7](2) ("Path(:start:9)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :Path, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathAlternative]"
)
[7](3) ("parse(terms)" "todo {:prod=>:Path, :terms=>[:PathAlternative]}, depth 16")
[7](3) ("parse(token)" "accept :PathAlternative")
[7](3) ("parse(push)" "term :PathAlternative, depth 16")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PathAlternative, depth 16")
[7](2) ("PathAlternative(:start:10)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PathAlternative, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathSequence, :_PathAlternative_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:PathSequence, :_PathAlternative_1]}, depth 17"
)
[7](3) ("parse(token)" "accept :PathSequence")
[7](3) ("parse(push)" "term :PathSequence, depth 17")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PathSequence, depth 17")
[7](2) ("PathSequence(:start:11)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PathSequence, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathEltOrInverse, :_PathSequence_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:PathEltOrInverse, :_PathSequence_1]}, depth 18"
)
[7](3) ("parse(token)" "accept :PathEltOrInverse")
[7](3) ("parse(push)" "term :PathEltOrInverse, depth 18")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PathEltOrInverse, depth 18")
[7](2) ("PathEltOrInverse(:start:12)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PathEltOrInverse, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathElt]"
)
[7](3) ("parse(terms)" "todo {:prod=>:PathEltOrInverse, :terms=>[:PathElt]}, depth 19")
[7](3) ("parse(token)" "accept :PathElt")
[7](3) ("parse(push)" "term :PathElt, depth 19")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PathElt, depth 19")
[7](2) ("PathElt(:start:13)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PathElt, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:PathPrimary, :_PathElt_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:PathElt, :terms=>[:PathPrimary, :_PathElt_1]}, depth 20" )
[7](3) ("parse(token)" "accept :PathPrimary")
[7](3) ("parse(push)" "term :PathPrimary, depth 20")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PathPrimary, depth 20")
[7](2) ("PathPrimary(:start:14)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PathPrimary, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:iri]"
)
[7](3) ("parse(terms)" "todo {:prod=>:PathPrimary, :terms=>[:iri]}, depth 21")
[7](3) ("parse(token)" "accept :iri")
[7](3) ("parse(push)" "term :iri, depth 21")
[7](3) ("parse(production)" "token :PNAME_LN, prod :iri, depth 21")
[7](2) ("iri(:start:14)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :iri, prod_branch [:IRIREF, :PNAME_LN, :PNAME_NS], sequence [:PrefixedName]"
)
[7](3) ("parse(terms)" "todo {:prod=>:iri, :terms=>[:PrefixedName]}, depth 22")
[7](3) ("parse(token)" "accept :PrefixedName")
[7](3) ("parse(push)" "term :PrefixedName, depth 22")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PrefixedName, depth 22")
[7](2) ("PrefixedName(:start:14)" "\"rdf:type\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PrefixedName, prod_branch [:PNAME_LN, :PNAME_NS], sequence [:PNAME_LN]"
)
[7](3) ("parse(terms)" "todo {:prod=>:PrefixedName, :terms=>[:PNAME_LN]}, depth 23")
[7](3) ("parse(token)" "accept :PNAME_LN")
[7](3) ("accept" "\"rdf:type\"(PNAME_LN) === :PNAME_LN")
[7](3) ("parse(token)" "token \"rdf:type\"(PNAME_LN), term :PNAME_LN")
[7](3) ("ns(\"rdf\"): base: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', suffix: 'type'"
)
[7](2) ("PNAME_LN(:terminal)" ""
":PNAME_LN: {:iri=>#<RDF::URI:0x3f813d6976f4 URI:http://www.w3.org/1999/02/22-rdf-syntax-ns#type>}"
)
[7](3) ("parse(pop)" "todo {:prod=>:PrefixedName, :terms=>[]}, depth 23")
[7](2) ("PrefixedName(:finish):14")
[7](3) ("parse(pop)" "todo {:prod=>:iri, :terms=>[]}, depth 22")
[7](2) ("iri(:finish):14")
[7](3) ("parse(pop)" "todo {:prod=>:PathPrimary, :terms=>[]}, depth 21")
[7](2) ("PathPrimary(:finish):13" ((PathPrimary rdf:type)))
[7](3) ("parse(terms)" "todo {:prod=>:PathElt, :terms=>[:_PathElt_1]}, depth 20")
[7](3) ("parse(token)" "accept :_PathElt_1")
[7](3) ("parse(token)" "skip optional term :_PathElt_1 on \"owl:Class\"(PNAME_LN)")
[7](3) ("parse(pop)" "todo {:prod=>:PathElt, :terms=>[]}, depth 20")
[7](2) ("PathElt(:finish):12" ((Path rdf:type)))
[7](3) ("parse(pop)" "todo {:prod=>:PathEltOrInverse, :terms=>[]}, depth 19")
[7](2) ("PathEltOrInverse(:finish):11" ((PathEltOrInverse (rdf:type))))
[7](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:_PathSequence_1]}, depth 18" )
[7](3) ("parse(token)" "accept :_PathSequence_1")
[7](3) ("parse(token)" "skip optional term :_PathSequence_1 on \"owl:Class\"(PNAME_LN)")
[7](3) ("parse(pop)" "todo {:prod=>:PathSequence, :terms=>[]}, depth 18")
[7](2) ("PathSequence(:finish):10" ((PathSequence (rdf:type))))
[7](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:_PathAlternative_1]}, depth 17" )
[7](3) ("parse(token)" "accept :_PathAlternative_1")
[7](3) ("parse(token)"
"skip optional term :_PathAlternative_1 on \"owl:Class\"(PNAME_LN)" )
[7](3) ("parse(pop)" "todo {:prod=>:PathAlternative, :terms=>[]}, depth 17")
[7](2) ("PathAlternative(:finish):9" ((Path rdf:type)))
[7](3) ("parse(pop)" "todo {:prod=>:Path, :terms=>[]}, depth 16")
[7](2) ("Path(:finish):8" ((iri rdf:type)))
[7](3) ("parse(pop)" "todo {:prod=>:VerbPath, :terms=>[]}, depth 15")
[7](2) ("VerbPath(:finish):7" ((Subject (?class)) (Verb rdf:type)))
[7](3) ("parse(pop)" "todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[]}, depth 14")
[7](2) ("_PropertyListPathNotEmpty_1(:finish):7")
[7](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 13"
)
[7](3) ("parse(token)" "accept :ObjectListPath")
[7](3) ("parse(push)" "term :ObjectListPath, depth 13")
[7](3) ("parse(production)" "token :PNAME_LN, prod :ObjectListPath, depth 13")
[7](2) ("ObjectListPath(:start):7" ((Subject (?class)) (Verb rdf:type)))
[7](3) ("parse(production)"
"token :PNAME_LN prod :ObjectListPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:ObjectPath, :_ObjectListPath_1]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:ObjectPath, :_ObjectListPath_1]}, depth 14"
)
[7](3) ("parse(token)" "accept :ObjectPath")
[7](3) ("parse(push)" "term :ObjectPath, depth 14")
[7](3) ("parse(production)" "token :PNAME_LN, prod :ObjectPath, depth 14")
[7](2) ("ObjectPath(:start:9)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :ObjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:GraphNodePath]"
)
[7](3) ("parse(terms)" "todo {:prod=>:ObjectPath, :terms=>[:GraphNodePath]}, depth 15")
[7](3) ("parse(token)" "accept :GraphNodePath")
[7](3) ("parse(push)" "term :GraphNodePath, depth 15")
[7](3) ("parse(production)" "token :PNAME_LN, prod :GraphNodePath, depth 15")
[7](2) ("GraphNodePath(:start:10)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :GraphNodePath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:VarOrTerm]"
)
[7](3) ("parse(terms)" "todo {:prod=>:GraphNodePath, :terms=>[:VarOrTerm]}, depth 16")
[7](3) ("parse(token)" "accept :VarOrTerm")
[7](3) ("parse(push)" "term :VarOrTerm, depth 16")
[7](3) ("parse(production)" "token :PNAME_LN, prod :VarOrTerm, depth 16")
[7](2) ("VarOrTerm(:start:11)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:GraphTerm]"
)
[7](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:GraphTerm]}, depth 17")
[7](3) ("parse(token)" "accept :GraphTerm")
[7](3) ("parse(push)" "term :GraphTerm, depth 17")
[7](3) ("parse(production)" "token :PNAME_LN, prod :GraphTerm, depth 17")
[7](2) ("GraphTerm(:start:12)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :GraphTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"false\", \"true\"], sequence [:iri]"
)
[7](3) ("parse(terms)" "todo {:prod=>:GraphTerm, :terms=>[:iri]}, depth 18")
[7](3) ("parse(token)" "accept :iri")
[7](3) ("parse(push)" "term :iri, depth 18")
[7](3) ("parse(production)" "token :PNAME_LN, prod :iri, depth 18")
[7](2) ("iri(:start:12)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :iri, prod_branch [:IRIREF, :PNAME_LN, :PNAME_NS], sequence [:PrefixedName]"
)
[7](3) ("parse(terms)" "todo {:prod=>:iri, :terms=>[:PrefixedName]}, depth 19")
[7](3) ("parse(token)" "accept :PrefixedName")
[7](3) ("parse(push)" "term :PrefixedName, depth 19")
[7](3) ("parse(production)" "token :PNAME_LN, prod :PrefixedName, depth 19")
[7](2) ("PrefixedName(:start:12)" "\"owl:Class\"(PNAME_LN)")
[7](3) ("parse(production)"
"token :PNAME_LN prod :PrefixedName, prod_branch [:PNAME_LN, :PNAME_NS], sequence [:PNAME_LN]"
)
[7](3) ("parse(terms)" "todo {:prod=>:PrefixedName, :terms=>[:PNAME_LN]}, depth 20")
[7](3) ("parse(token)" "accept :PNAME_LN")
[7](3) ("accept" "\"owl:Class\"(PNAME_LN) === :PNAME_LN")
[7](3) ("parse(token)" "token \"owl:Class\"(PNAME_LN), term :PNAME_LN")
[7](3) ("ns(\"owl\"): base: 'http://www.w3.org/2002/07/owl#', suffix: 'Class'")
[7](2) ("PNAME_LN(:terminal)" ""
":PNAME_LN: {:iri=>#<RDF::URI:0x3f813d640458 URI:http://www.w3.org/2002/07/owl#Class>}"
)
[7](3) ("parse(pop)" "todo {:prod=>:PrefixedName, :terms=>[]}, depth 20")
[7](2) ("PrefixedName(:finish):12")
[7](3) ("parse(pop)" "todo {:prod=>:iri, :terms=>[]}, depth 19")
[7](2) ("iri(:finish):12")
[7](3) ("parse(pop)" "todo {:prod=>:GraphTerm, :terms=>[]}, depth 18")
[7](3) ("add_prod_datum(GraphTerm)"
"[] << #<RDF::URI:0x3f813d640458 URI:http://www.w3.org/2002/07/owl#Class>" )
[7](2) ("GraphTerm(:finish):11" ((GraphTerm (owl:Class))))
[7](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 17")
[7](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::URI:0x3f813d640458 URI:http://www.w3.org/2002/07/owl#Class>]" )
[7](2) ("VarOrTerm(:finish):10" ((VarOrTerm (owl:Class))))
[7](3) ("parse(pop)" "todo {:prod=>:GraphNodePath, :terms=>[]}, depth 16")
[7](3) ("add_prod_datum(GraphNode)"
"[] += [#<RDF::URI:0x3f813d640458 URI:http://www.w3.org/2002/07/owl#Class>]" )
[7](2) ("GraphNodePath(:finish):9" ((GraphNode (owl:Class))))
[7](3) ("parse(pop)" "todo {:prod=>:ObjectPath, :terms=>[]}, depth 15")
[7](2) (Object
"[:pattern, [#<RDF::Query::Variable:0x3f813d85ce30(?class)>], http://www.w3.org/1999/02/22-rdf-syntax-ns#type, [#<RDF::URI:0x3f813d640458 URI:http://www.w3.org/2002/07/owl#Class>]]"
)
[7](3) ("add_prod_datum(pattern)"
"[] << #<RDF::Query::Pattern:0x3f813d627a98(?class <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .)>"
)
[7](2) ("ObjectPath(:finish):8"
((Subject (?class)) (Verb rdf:type) (pattern ((triple ?class rdf:type owl:Class)))))
[7](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:_ObjectListPath_1]}, depth 14" )
[7](3) ("parse(token)" "accept :_ObjectListPath_1")
[7](3) ("parse(token)" "skip optional term :_ObjectListPath_1 on \".\"")
[7](3) ("parse(pop)" "todo {:prod=>:ObjectListPath, :terms=>[]}, depth 14")
[7](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813d627a98(?class <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .)>]"
)
[7](2) ("ObjectListPath(:finish):7"
((Subject (?class)) (Verb rdf:type) (pattern ((triple ?class rdf:type owl:Class)))))
[7](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_2]}, depth 13"
)
[7](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_2")
[7](3) ("parse(token)" "skip optional term :_PropertyListPathNotEmpty_2 on \".\"")
[7](3) ("parse(pop)" "todo {:prod=>:PropertyListPathNotEmpty, :terms=>[]}, depth 13")
[7](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813d627a98(?class <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .)>]"
)
[7](2) ("PropertyListPathNotEmpty(:finish):6"
((VarOrTerm (?class)) (pattern ((triple ?class rdf:type owl:Class)))))
[7](3) ("parse(pop)" "todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[]}, depth 12")
[7](2) ("_TriplesSameSubjectPath_1(:finish):6")
[7](3) ("parse(pop)" "todo {:prod=>:TriplesSameSubjectPath, :terms=>[]}, depth 11")
[7](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813d627a98(?class <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .)>]"
)
[7](2) ("TriplesSameSubjectPath(:finish):5" ((pattern ((triple ?class rdf:type owl:Class)))))
[7](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:_TriplesBlock_1]}, depth 10" )
[7](3) ("parse(token)" "accept :_TriplesBlock_1")
[7](3) ("parse(push)" "term :_TriplesBlock_1, depth 10")
[7](3) ("parse(production)" "token \".\", prod :_TriplesBlock_1, depth 10")
[7](2) ("_TriplesBlock_1(:start:5)" "\".\"")
[7](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_1, prod_branch [\".\", \"BIND\", \"FILTER\", \"GRAPH\", \"MINUS\", \"OPTIONAL\", \"SERVICE\", \"VALUES\", \"{\", \"}\"], sequence [:_TriplesBlock_2]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_1, :terms=>[:_TriplesBlock_2]}, depth 11" )
[7](3) ("parse(token)" "accept :_TriplesBlock_2")
[7](3) ("parse(push)" "term :_TriplesBlock_2, depth 11")
[7](3) ("parse(production)" "token \".\", prod :_TriplesBlock_2, depth 11")
[7](2) ("_TriplesBlock_2(:start:5)" "\".\"")
[7](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_2, prod_branch [\".\"], sequence [\".\", :_TriplesBlock_3]"
)
[7](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_2, :terms=>[\".\", :_TriplesBlock_3]}, depth 12"
)
[7](3) ("parse(token)" "accept \".\"")
[7](3) ("accept" "\".\" === \".\"")
[7](3) ("parse(token)" "token \".\", term \".\"")
[7](2) (".(:terminal)" ""
".: {:pattern=>[#<RDF::Query::Pattern:0x3f813d627a98(?class <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .)>]}"
)
[7](3) ("parse(token)" "accept :_TriplesBlock_3")
[8](3) ("parse(push)" "term :_TriplesBlock_3, depth 12")
[8](3) ("parse(production)" "token :VAR1, prod :_TriplesBlock_3, depth 12")
[8](2) ("_TriplesBlock_3(:start:5)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :_TriplesBlock_3, prod_branch [\"(\", :ANON, \"BIND\", :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"FILTER\", \"GRAPH\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, \"MINUS\", :NIL, \"OPTIONAL\", :PNAME_LN, :PNAME_NS, \"SERVICE\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"VALUES\", :VAR1, :VAR2, \"[\", \"false\", \"true\", \"{\", \"}\"], sequence [:TriplesBlock]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_3, :terms=>[:TriplesBlock]}, depth 13" )
[8](3) ("parse(token)" "accept :TriplesBlock")
[8](3) ("parse(push)" "term :TriplesBlock, depth 13")
[8](3) ("parse(production)" "token :VAR1, prod :TriplesBlock, depth 13")
[8](2) ("TriplesBlock(:start:6)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :TriplesBlock, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:TriplesSameSubjectPath, :_TriplesBlock_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:TriplesSameSubjectPath, :_TriplesBlock_1]}, depth 14"
)
[8](3) ("parse(token)" "accept :TriplesSameSubjectPath")
[8](3) ("parse(push)" "term :TriplesSameSubjectPath, depth 14")
[8](3) ("parse(production)" "token :VAR1, prod :TriplesSameSubjectPath, depth 14")
[8](2) ("TriplesSameSubjectPath(:start:7)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :TriplesSameSubjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:_TriplesSameSubjectPath_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:TriplesSameSubjectPath, :terms=>[:_TriplesSameSubjectPath_1]}, depth 15"
)
[8](3) ("parse(token)" "accept :_TriplesSameSubjectPath_1")
[8](3) ("parse(push)" "term :_TriplesSameSubjectPath_1, depth 15")
[8](3) ("parse(production)" "token :VAR1, prod :_TriplesSameSubjectPath_1, depth 15")
[8](2) ("_TriplesSameSubjectPath_1(:start:7)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :_TriplesSameSubjectPath_1, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:VarOrTerm, :PropertyListPathNotEmpty]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:VarOrTerm, :PropertyListPathNotEmpty]}, depth 16"
)
[8](3) ("parse(token)" "accept :VarOrTerm")
[8](3) ("parse(push)" "term :VarOrTerm, depth 16")
[8](3) ("parse(production)" "token :VAR1, prod :VarOrTerm, depth 16")
[8](2) ("VarOrTerm(:start:8)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:Var]"
)
[8](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:Var]}, depth 17")
[8](3) ("parse(token)" "accept :Var")
[8](3) ("parse(push)" "term :Var, depth 17")
[8](3) ("parse(production)" "token :VAR1, prod :Var, depth 17")
[8](2) ("Var(:start:8)" "\"?class\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[8](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 18")
[8](3) ("parse(token)" "accept :VAR1")
[8](3) ("accept" "\"?class\"(VAR1) === :VAR1")
[8](3) ("parse(token)" "token \"?class\"(VAR1), term :VAR1")
[8](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d85ce30(?class)>")
[8](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813d85ce30(?class)>]}" )
[8](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 18")
[8](2) ("Var(:finish):8")
[8](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 17")
[8](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::Query::Variable:0x3f813d85ce30(?class)>]" )
[8](2) ("VarOrTerm(:finish):7" ((VarOrTerm (?class))))
[8](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:PropertyListPathNotEmpty]}, depth 16"
)
[8](3) ("parse(token)" "accept :PropertyListPathNotEmpty")
[8](3) ("parse(push)" "term :PropertyListPathNotEmpty, depth 16")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PropertyListPathNotEmpty, depth 16")
[8](2) ("PropertyListPathNotEmpty(:start):7" ((VarOrTerm (?class))))
[8](3) ("parse(production)"
"token :PNAME_LN prod :PropertyListPathNotEmpty, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 17"
)
[8](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_1")
[8](3) ("parse(push)" "term :_PropertyListPathNotEmpty_1, depth 17")
[8](3) ("parse(production)"
"token :PNAME_LN, prod :_PropertyListPathNotEmpty_1, depth 17" )
[8](2) ("_PropertyListPathNotEmpty_1(:start:8)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :_PropertyListPathNotEmpty_1, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:VerbPath]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[:VerbPath]}, depth 18" )
[8](3) ("parse(token)" "accept :VerbPath")
[8](3) ("parse(push)" "term :VerbPath, depth 18")
[8](3) ("parse(production)" "token :PNAME_LN, prod :VerbPath, depth 18")
[8](2) ("VerbPath(:start:9)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :VerbPath, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:Path]"
)
[8](3) ("parse(terms)" "todo {:prod=>:VerbPath, :terms=>[:Path]}, depth 19")
[8](3) ("parse(token)" "accept :Path")
[8](3) ("parse(push)" "term :Path, depth 19")
[8](3) ("parse(production)" "token :PNAME_LN, prod :Path, depth 19")
[8](2) ("Path(:start:10)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :Path, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathAlternative]"
)
[8](3) ("parse(terms)" "todo {:prod=>:Path, :terms=>[:PathAlternative]}, depth 20")
[8](3) ("parse(token)" "accept :PathAlternative")
[8](3) ("parse(push)" "term :PathAlternative, depth 20")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PathAlternative, depth 20")
[8](2) ("PathAlternative(:start:11)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PathAlternative, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathSequence, :_PathAlternative_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:PathSequence, :_PathAlternative_1]}, depth 21"
)
[8](3) ("parse(token)" "accept :PathSequence")
[8](3) ("parse(push)" "term :PathSequence, depth 21")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PathSequence, depth 21")
[8](2) ("PathSequence(:start:12)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PathSequence, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathEltOrInverse, :_PathSequence_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:PathEltOrInverse, :_PathSequence_1]}, depth 22"
)
[8](3) ("parse(token)" "accept :PathEltOrInverse")
[8](3) ("parse(push)" "term :PathEltOrInverse, depth 22")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PathEltOrInverse, depth 22")
[8](2) ("PathEltOrInverse(:start:13)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PathEltOrInverse, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathElt]"
)
[8](3) ("parse(terms)" "todo {:prod=>:PathEltOrInverse, :terms=>[:PathElt]}, depth 23")
[8](3) ("parse(token)" "accept :PathElt")
[8](3) ("parse(push)" "term :PathElt, depth 23")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PathElt, depth 23")
[8](2) ("PathElt(:start:14)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PathElt, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:PathPrimary, :_PathElt_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:PathElt, :terms=>[:PathPrimary, :_PathElt_1]}, depth 24" )
[8](3) ("parse(token)" "accept :PathPrimary")
[8](3) ("parse(push)" "term :PathPrimary, depth 24")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PathPrimary, depth 24")
[8](2) ("PathPrimary(:start:15)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PathPrimary, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:iri]"
)
[8](3) ("parse(terms)" "todo {:prod=>:PathPrimary, :terms=>[:iri]}, depth 25")
[8](3) ("parse(token)" "accept :iri")
[8](3) ("parse(push)" "term :iri, depth 25")
[8](3) ("parse(production)" "token :PNAME_LN, prod :iri, depth 25")
[8](2) ("iri(:start:15)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :iri, prod_branch [:IRIREF, :PNAME_LN, :PNAME_NS], sequence [:PrefixedName]"
)
[8](3) ("parse(terms)" "todo {:prod=>:iri, :terms=>[:PrefixedName]}, depth 26")
[8](3) ("parse(token)" "accept :PrefixedName")
[8](3) ("parse(push)" "term :PrefixedName, depth 26")
[8](3) ("parse(production)" "token :PNAME_LN, prod :PrefixedName, depth 26")
[8](2) ("PrefixedName(:start:15)" "\"owl:hasKey\"(PNAME_LN)")
[8](3) ("parse(production)"
"token :PNAME_LN prod :PrefixedName, prod_branch [:PNAME_LN, :PNAME_NS], sequence [:PNAME_LN]"
)
[8](3) ("parse(terms)" "todo {:prod=>:PrefixedName, :terms=>[:PNAME_LN]}, depth 27")
[8](3) ("parse(token)" "accept :PNAME_LN")
[8](3) ("accept" "\"owl:hasKey\"(PNAME_LN) === :PNAME_LN")
[8](3) ("parse(token)" "token \"owl:hasKey\"(PNAME_LN), term :PNAME_LN")
[8](3) ("ns(\"owl\"): base: 'http://www.w3.org/2002/07/owl#', suffix: 'hasKey'")
[8](2) ("PNAME_LN(:terminal)" ""
":PNAME_LN: {:iri=>#<RDF::URI:0x3f813d54939c URI:http://www.w3.org/2002/07/owl#hasKey>}"
)
[8](3) ("parse(pop)" "todo {:prod=>:PrefixedName, :terms=>[]}, depth 27")
[8](2) ("PrefixedName(:finish):15")
[8](3) ("parse(pop)" "todo {:prod=>:iri, :terms=>[]}, depth 26")
[8](2) ("iri(:finish):15")
[8](3) ("parse(pop)" "todo {:prod=>:PathPrimary, :terms=>[]}, depth 25")
[8](2) ("PathPrimary(:finish):14" ((PathPrimary owl:hasKey)))
[8](3) ("parse(terms)" "todo {:prod=>:PathElt, :terms=>[:_PathElt_1]}, depth 24")
[8](3) ("parse(token)" "accept :_PathElt_1")
[8](3) ("parse(token)" "skip optional term :_PathElt_1 on \"?key\"(VAR1)")
[8](3) ("parse(pop)" "todo {:prod=>:PathElt, :terms=>[]}, depth 24")
[8](2) ("PathElt(:finish):13" ((Path owl:hasKey)))
[8](3) ("parse(pop)" "todo {:prod=>:PathEltOrInverse, :terms=>[]}, depth 23")
[8](2) ("PathEltOrInverse(:finish):12" ((PathEltOrInverse (owl:hasKey))))
[8](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:_PathSequence_1]}, depth 22" )
[8](3) ("parse(token)" "accept :_PathSequence_1")
[8](3) ("parse(token)" "skip optional term :_PathSequence_1 on \"?key\"(VAR1)")
[8](3) ("parse(pop)" "todo {:prod=>:PathSequence, :terms=>[]}, depth 22")
[8](2) ("PathSequence(:finish):11" ((PathSequence (owl:hasKey))))
[8](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:_PathAlternative_1]}, depth 21" )
[8](3) ("parse(token)" "accept :_PathAlternative_1")
[8](3) ("parse(token)" "skip optional term :_PathAlternative_1 on \"?key\"(VAR1)")
[8](3) ("parse(pop)" "todo {:prod=>:PathAlternative, :terms=>[]}, depth 21")
[8](2) ("PathAlternative(:finish):10" ((Path owl:hasKey)))
[8](3) ("parse(pop)" "todo {:prod=>:Path, :terms=>[]}, depth 20")
[8](2) ("Path(:finish):9" ((iri owl:hasKey)))
[8](3) ("parse(pop)" "todo {:prod=>:VerbPath, :terms=>[]}, depth 19")
[8](2) ("VerbPath(:finish):8" ((Subject (?class)) (Verb owl:hasKey)))
[8](3) ("parse(pop)" "todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[]}, depth 18")
[8](2) ("_PropertyListPathNotEmpty_1(:finish):8")
[8](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 17"
)
[8](3) ("parse(token)" "accept :ObjectListPath")
[8](3) ("parse(push)" "term :ObjectListPath, depth 17")
[8](3) ("parse(production)" "token :VAR1, prod :ObjectListPath, depth 17")
[8](2) ("ObjectListPath(:start):8" ((Subject (?class)) (Verb owl:hasKey)))
[8](3) ("parse(production)"
"token :VAR1 prod :ObjectListPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:ObjectPath, :_ObjectListPath_1]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:ObjectPath, :_ObjectListPath_1]}, depth 18"
)
[8](3) ("parse(token)" "accept :ObjectPath")
[8](3) ("parse(push)" "term :ObjectPath, depth 18")
[8](3) ("parse(production)" "token :VAR1, prod :ObjectPath, depth 18")
[8](2) ("ObjectPath(:start:10)" "\"?key\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :ObjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:GraphNodePath]"
)
[8](3) ("parse(terms)" "todo {:prod=>:ObjectPath, :terms=>[:GraphNodePath]}, depth 19")
[8](3) ("parse(token)" "accept :GraphNodePath")
[8](3) ("parse(push)" "term :GraphNodePath, depth 19")
[8](3) ("parse(production)" "token :VAR1, prod :GraphNodePath, depth 19")
[8](2) ("GraphNodePath(:start:11)" "\"?key\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :GraphNodePath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:VarOrTerm]"
)
[8](3) ("parse(terms)" "todo {:prod=>:GraphNodePath, :terms=>[:VarOrTerm]}, depth 20")
[8](3) ("parse(token)" "accept :VarOrTerm")
[8](3) ("parse(push)" "term :VarOrTerm, depth 20")
[8](3) ("parse(production)" "token :VAR1, prod :VarOrTerm, depth 20")
[8](2) ("VarOrTerm(:start:12)" "\"?key\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:Var]"
)
[8](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:Var]}, depth 21")
[8](3) ("parse(token)" "accept :Var")
[8](3) ("parse(push)" "term :Var, depth 21")
[8](3) ("parse(production)" "token :VAR1, prod :Var, depth 21")
[8](2) ("Var(:start:12)" "\"?key\"(VAR1)")
[8](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[8](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 22")
[8](3) ("parse(token)" "accept :VAR1")
[8](3) ("accept" "\"?key\"(VAR1) === :VAR1")
[8](3) ("parse(token)" "token \"?key\"(VAR1), term :VAR1")
[8](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813cf67438(?key)>")
[8](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813cf67438(?key)>]}" )
[8](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 22")
[8](2) ("Var(:finish):12")
[8](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 21")
[8](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::Query::Variable:0x3f813cf67438(?key)>]" )
[8](2) ("VarOrTerm(:finish):11" ((VarOrTerm (?key))))
[8](3) ("parse(pop)" "todo {:prod=>:GraphNodePath, :terms=>[]}, depth 20")
[8](3) ("add_prod_datum(GraphNode)"
"[] += [#<RDF::Query::Variable:0x3f813cf67438(?key)>]" )
[8](2) ("GraphNodePath(:finish):10" ((GraphNode (?key))))
[8](3) ("parse(pop)" "todo {:prod=>:ObjectPath, :terms=>[]}, depth 19")
[8](2) (Object
"[:pattern, [#<RDF::Query::Variable:0x3f813d85ce30(?class)>], http://www.w3.org/2002/07/owl#hasKey, [#<RDF::Query::Variable:0x3f813cf67438(?key)>]]"
)
[8](3) ("add_prod_datum(pattern)"
"[] << #<RDF::Query::Pattern:0x3f813cf417b0(?class <http://www.w3.org/2002/07/owl#hasKey> ?key .)>"
)
[8](2) ("ObjectPath(:finish):9"
((Subject (?class)) (Verb owl:hasKey) (pattern ((triple ?class owl:hasKey ?key)))))
[8](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:_ObjectListPath_1]}, depth 18" )
[8](3) ("parse(token)" "accept :_ObjectListPath_1")
[8](3) ("parse(token)" "skip optional term :_ObjectListPath_1 on \".\"")
[8](3) ("parse(pop)" "todo {:prod=>:ObjectListPath, :terms=>[]}, depth 18")
[8](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813cf417b0(?class <http://www.w3.org/2002/07/owl#hasKey> ?key .)>]"
)
[8](2) ("ObjectListPath(:finish):8"
((Subject (?class)) (Verb owl:hasKey) (pattern ((triple ?class owl:hasKey ?key)))))
[8](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_2]}, depth 17"
)
[8](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_2")
[8](3) ("parse(token)" "skip optional term :_PropertyListPathNotEmpty_2 on \".\"")
[8](3) ("parse(pop)" "todo {:prod=>:PropertyListPathNotEmpty, :terms=>[]}, depth 17")
[8](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813cf417b0(?class <http://www.w3.org/2002/07/owl#hasKey> ?key .)>]"
)
[8](2) ("PropertyListPathNotEmpty(:finish):7"
((VarOrTerm (?class)) (pattern ((triple ?class owl:hasKey ?key)))))
[8](3) ("parse(pop)" "todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[]}, depth 16")
[8](2) ("_TriplesSameSubjectPath_1(:finish):7")
[8](3) ("parse(pop)" "todo {:prod=>:TriplesSameSubjectPath, :terms=>[]}, depth 15")
[8](3) ("add_prod_datum(pattern)"
"[] += [#<RDF::Query::Pattern:0x3f813cf417b0(?class <http://www.w3.org/2002/07/owl#hasKey> ?key .)>]"
)
[8](2) ("TriplesSameSubjectPath(:finish):6" ((pattern ((triple ?class owl:hasKey ?key)))))
[8](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:_TriplesBlock_1]}, depth 14" )
[8](3) ("parse(token)" "accept :_TriplesBlock_1")
[8](3) ("parse(push)" "term :_TriplesBlock_1, depth 14")
[8](3) ("parse(production)" "token \".\", prod :_TriplesBlock_1, depth 14")
[8](2) ("_TriplesBlock_1(:start:6)" "\".\"")
[8](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_1, prod_branch [\".\", \"BIND\", \"FILTER\", \"GRAPH\", \"MINUS\", \"OPTIONAL\", \"SERVICE\", \"VALUES\", \"{\", \"}\"], sequence [:_TriplesBlock_2]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_1, :terms=>[:_TriplesBlock_2]}, depth 15" )
[8](3) ("parse(token)" "accept :_TriplesBlock_2")
[8](3) ("parse(push)" "term :_TriplesBlock_2, depth 15")
[8](3) ("parse(production)" "token \".\", prod :_TriplesBlock_2, depth 15")
[8](2) ("_TriplesBlock_2(:start:6)" "\".\"")
[8](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_2, prod_branch [\".\"], sequence [\".\", :_TriplesBlock_3]"
)
[8](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_2, :terms=>[\".\", :_TriplesBlock_3]}, depth 16"
)
[8](3) ("parse(token)" "accept \".\"")
[8](3) ("accept" "\".\" === \".\"")
[8](3) ("parse(token)" "token \".\", term \".\"")
[8](2) (".(:terminal)" ""
".: {:pattern=>[#<RDF::Query::Pattern:0x3f813cf417b0(?class <http://www.w3.org/2002/07/owl#hasKey> ?key .)>]}"
)
[8](3) ("parse(token)" "accept :_TriplesBlock_3")
[9](3) ("parse(push)" "term :_TriplesBlock_3, depth 16")
[9](3) ("parse(production)" "token :VAR1, prod :_TriplesBlock_3, depth 16")
[9](2) ("_TriplesBlock_3(:start:6)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :_TriplesBlock_3, prod_branch [\"(\", :ANON, \"BIND\", :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, \"FILTER\", \"GRAPH\", :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, \"MINUS\", :NIL, \"OPTIONAL\", :PNAME_LN, :PNAME_NS, \"SERVICE\", :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, \"VALUES\", :VAR1, :VAR2, \"[\", \"false\", \"true\", \"{\", \"}\"], sequence [:TriplesBlock]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_3, :terms=>[:TriplesBlock]}, depth 17" )
[9](3) ("parse(token)" "accept :TriplesBlock")
[9](3) ("parse(push)" "term :TriplesBlock, depth 17")
[9](3) ("parse(production)" "token :VAR1, prod :TriplesBlock, depth 17")
[9](2) ("TriplesBlock(:start:7)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :TriplesBlock, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:TriplesSameSubjectPath, :_TriplesBlock_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:TriplesSameSubjectPath, :_TriplesBlock_1]}, depth 18"
)
[9](3) ("parse(token)" "accept :TriplesSameSubjectPath")
[9](3) ("parse(push)" "term :TriplesSameSubjectPath, depth 18")
[9](3) ("parse(production)" "token :VAR1, prod :TriplesSameSubjectPath, depth 18")
[9](2) ("TriplesSameSubjectPath(:start:8)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :TriplesSameSubjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:_TriplesSameSubjectPath_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:TriplesSameSubjectPath, :terms=>[:_TriplesSameSubjectPath_1]}, depth 19"
)
[9](3) ("parse(token)" "accept :_TriplesSameSubjectPath_1")
[9](3) ("parse(push)" "term :_TriplesSameSubjectPath_1, depth 19")
[9](3) ("parse(production)" "token :VAR1, prod :_TriplesSameSubjectPath_1, depth 19")
[9](2) ("_TriplesSameSubjectPath_1(:start:8)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :_TriplesSameSubjectPath_1, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:VarOrTerm, :PropertyListPathNotEmpty]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:VarOrTerm, :PropertyListPathNotEmpty]}, depth 20"
)
[9](3) ("parse(token)" "accept :VarOrTerm")
[9](3) ("parse(push)" "term :VarOrTerm, depth 20")
[9](3) ("parse(production)" "token :VAR1, prod :VarOrTerm, depth 20")
[9](2) ("VarOrTerm(:start:9)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:Var]"
)
[9](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:Var]}, depth 21")
[9](3) ("parse(token)" "accept :Var")
[9](3) ("parse(push)" "term :Var, depth 21")
[9](3) ("parse(production)" "token :VAR1, prod :Var, depth 21")
[9](2) ("Var(:start:9)" "\"?key\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[9](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 22")
[9](3) ("parse(token)" "accept :VAR1")
[9](3) ("accept" "\"?key\"(VAR1) === :VAR1")
[9](3) ("parse(token)" "token \"?key\"(VAR1), term :VAR1")
[9](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813cf67438(?key)>")
[9](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813cf67438(?key)>]}" )
[9](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 22")
[9](2) ("Var(:finish):9")
[9](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 21")
[9](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::Query::Variable:0x3f813cf67438(?key)>]" )
[9](2) ("VarOrTerm(:finish):8" ((VarOrTerm (?key))))
[9](3) ("parse(terms)"
"todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[:PropertyListPathNotEmpty]}, depth 20"
)
[9](3) ("parse(token)" "accept :PropertyListPathNotEmpty")
[9](3) ("parse(push)" "term :PropertyListPathNotEmpty, depth 20")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PropertyListPathNotEmpty, depth 20")
[9](2) ("PropertyListPathNotEmpty(:start):8" ((VarOrTerm (?key))))
[9](3) ("parse(production)"
"token :PNAME_LN prod :PropertyListPathNotEmpty, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_1, :ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 21"
)
[9](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_1")
[9](3) ("parse(push)" "term :_PropertyListPathNotEmpty_1, depth 21")
[9](3) ("parse(production)"
"token :PNAME_LN, prod :_PropertyListPathNotEmpty_1, depth 21" )
[9](2) ("_PropertyListPathNotEmpty_1(:start:9)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :_PropertyListPathNotEmpty_1, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, :VAR1, :VAR2, \"^\", \"a\"], sequence [:VerbPath]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[:VerbPath]}, depth 22" )
[9](3) ("parse(token)" "accept :VerbPath")
[9](3) ("parse(push)" "term :VerbPath, depth 22")
[9](3) ("parse(production)" "token :PNAME_LN, prod :VerbPath, depth 22")
[9](2) ("VerbPath(:start:10)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :VerbPath, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:Path]"
)
[9](3) ("parse(terms)" "todo {:prod=>:VerbPath, :terms=>[:Path]}, depth 23")
[9](3) ("parse(token)" "accept :Path")
[9](3) ("parse(push)" "term :Path, depth 23")
[9](3) ("parse(production)" "token :PNAME_LN, prod :Path, depth 23")
[9](2) ("Path(:start:11)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :Path, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathAlternative]"
)
[9](3) ("parse(terms)" "todo {:prod=>:Path, :terms=>[:PathAlternative]}, depth 24")
[9](3) ("parse(token)" "accept :PathAlternative")
[9](3) ("parse(push)" "term :PathAlternative, depth 24")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathAlternative, depth 24")
[9](2) ("PathAlternative(:start:12)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathAlternative, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathSequence, :_PathAlternative_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:PathSequence, :_PathAlternative_1]}, depth 25"
)
[9](3) ("parse(token)" "accept :PathSequence")
[9](3) ("parse(push)" "term :PathSequence, depth 25")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathSequence, depth 25")
[9](2) ("PathSequence(:start:13)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathSequence, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathEltOrInverse, :_PathSequence_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:PathEltOrInverse, :_PathSequence_1]}, depth 26"
)
[9](3) ("parse(token)" "accept :PathEltOrInverse")
[9](3) ("parse(push)" "term :PathEltOrInverse, depth 26")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathEltOrInverse, depth 26")
[9](2) ("PathEltOrInverse(:start:14)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathEltOrInverse, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathElt]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PathEltOrInverse, :terms=>[:PathElt]}, depth 27")
[9](3) ("parse(token)" "accept :PathElt")
[9](3) ("parse(push)" "term :PathElt, depth 27")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathElt, depth 27")
[9](2) ("PathElt(:start:15)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathElt, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:PathPrimary, :_PathElt_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:PathElt, :terms=>[:PathPrimary, :_PathElt_1]}, depth 28" )
[9](3) ("parse(token)" "accept :PathPrimary")
[9](3) ("parse(push)" "term :PathPrimary, depth 28")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathPrimary, depth 28")
[9](2) ("PathPrimary(:start:16)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathPrimary, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:iri]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PathPrimary, :terms=>[:iri]}, depth 29")
[9](3) ("parse(token)" "accept :iri")
[9](3) ("parse(push)" "term :iri, depth 29")
[9](3) ("parse(production)" "token :PNAME_LN, prod :iri, depth 29")
[9](2) ("iri(:start:16)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :iri, prod_branch [:IRIREF, :PNAME_LN, :PNAME_NS], sequence [:PrefixedName]"
)
[9](3) ("parse(terms)" "todo {:prod=>:iri, :terms=>[:PrefixedName]}, depth 30")
[9](3) ("parse(token)" "accept :PrefixedName")
[9](3) ("parse(push)" "term :PrefixedName, depth 30")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PrefixedName, depth 30")
[9](2) ("PrefixedName(:start:16)" "\"rdf:rest\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PrefixedName, prod_branch [:PNAME_LN, :PNAME_NS], sequence [:PNAME_LN]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PrefixedName, :terms=>[:PNAME_LN]}, depth 31")
[9](3) ("parse(token)" "accept :PNAME_LN")
[9](3) ("accept" "\"rdf:rest\"(PNAME_LN) === :PNAME_LN")
[9](3) ("parse(token)" "token \"rdf:rest\"(PNAME_LN), term :PNAME_LN")
[9](3) ("ns(\"rdf\"): base: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', suffix: 'rest'"
)
[9](2) ("PNAME_LN(:terminal)" ""
":PNAME_LN: {:iri=>#<RDF::URI:0x3f813cc077d4 URI:http://www.w3.org/1999/02/22-rdf-syntax-ns#rest>}"
)
[9](3) ("parse(pop)" "todo {:prod=>:PrefixedName, :terms=>[]}, depth 31")
[9](2) ("PrefixedName(:finish):16")
[9](3) ("parse(pop)" "todo {:prod=>:iri, :terms=>[]}, depth 30")
[9](2) ("iri(:finish):16")
[9](3) ("parse(pop)" "todo {:prod=>:PathPrimary, :terms=>[]}, depth 29")
[9](2) ("PathPrimary(:finish):15" ((PathPrimary rdf:rest)))
[9](3) ("parse(terms)" "todo {:prod=>:PathElt, :terms=>[:_PathElt_1]}, depth 28")
[9](3) ("parse(token)" "accept :_PathElt_1")
[9](3) ("parse(push)" "term :_PathElt_1, depth 28")
[9](3) ("parse(production)" "token \"*\", prod :_PathElt_1, depth 28")
[9](2) ("_PathElt_1(:start:15)" "\"*\"")
[9](3) ("parse(production)"
"token \"*\" prod :_PathElt_1, prod_branch [\"(\", \")\", \"*\", \"+\", \"/\", \"?\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\", \"|\"], sequence [:PathMod]"
)
[9](3) ("parse(terms)" "todo {:prod=>:_PathElt_1, :terms=>[:PathMod]}, depth 29")
[9](3) ("parse(token)" "accept :PathMod")
[9](3) ("parse(push)" "term :PathMod, depth 29")
[9](3) ("parse(production)" "token \"*\", prod :PathMod, depth 29")
[9](2) ("PathMod(:start:15)" "\"*\"")
[9](3) ("parse(production)"
"token \"*\" prod :PathMod, prod_branch [\"*\", \"+\", \"?\"], sequence [\"*\"]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PathMod, :terms=>[\"*\"]}, depth 30")
[9](3) ("parse(token)" "accept \"*\"")
[9](3) ("accept" "\"*\" === \"*\"")
[9](3) ("parse(token)" "token \"*\", term \"*\"")
[9](3) ("add_prod_datum(MultiplicativeExpression)" "[] << \"*\"")
[9](2) ("*(:terminal)" ""
"*: {:PathPrimary=>#<RDF::URI:0x3f813cc077d4 URI:http://www.w3.org/1999/02/22-rdf-syntax-ns#rest>, :MultiplicativeExpression=>[\"*\"]}"
)
[9](3) ("parse(pop)" "todo {:prod=>:PathMod, :terms=>[]}, depth 30")
[9](2) ("PathMod(:finish):15")
[9](3) ("parse(pop)" "todo {:prod=>:_PathElt_1, :terms=>[]}, depth 29")
[9](2) ("_PathElt_1(:finish):15")
[9](3) ("parse(pop)" "todo {:prod=>:PathElt, :terms=>[]}, depth 28")
[9](2) ("PathElt(:finish):14" ((Path (path* rdf:rest))))
[9](3) ("parse(pop)" "todo {:prod=>:PathEltOrInverse, :terms=>[]}, depth 27")
[9](2) ("PathEltOrInverse(:finish):13" ((PathEltOrInverse ((path* rdf:rest)))))
[9](3) ("parse(terms)"
"todo {:prod=>:PathSequence, :terms=>[:_PathSequence_1]}, depth 26" )
[9](3) ("parse(token)" "accept :_PathSequence_1")
[9](3) ("parse(push)" "term :_PathSequence_1, depth 26")
[9](3) ("parse(production)" "token \"/\", prod :_PathSequence_1, depth 26")
[9](2) ("_PathSequence_1(:start:14)" "\"/\"")
[9](3) ("parse(production)"
"token \"/\" prod :_PathSequence_1, prod_branch [\"(\", \")\", \"/\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\", \"|\"], sequence [:_PathSequence_3]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_PathSequence_1, :terms=>[:_PathSequence_3]}, depth 27" )
[9](3) ("parse(token)" "accept :_PathSequence_3")
[9](3) ("parse(push)" "term :_PathSequence_3, depth 27")
[9](3) ("parse(production)" "token \"/\", prod :_PathSequence_3, depth 27")
[9](2) ("_PathSequence_3(:start:14)" "\"/\"")
[9](3) ("parse(production)"
"token \"/\" prod :_PathSequence_3, prod_branch [\"/\"], sequence [:_PathSequence_2, :_PathSequence_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_PathSequence_3, :terms=>[:_PathSequence_2, :_PathSequence_1]}, depth 28"
)
[9](3) ("parse(token)" "accept :_PathSequence_2")
[9](3) ("parse(push)" "term :_PathSequence_2, depth 28")
[9](3) ("parse(production)" "token \"/\", prod :_PathSequence_2, depth 28")
[9](2) ("_PathSequence_2(:start:14)" "\"/\"")
[9](3) ("parse(production)"
"token \"/\" prod :_PathSequence_2, prod_branch [\"/\"], sequence [\"/\", :PathEltOrInverse]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_PathSequence_2, :terms=>[\"/\", :PathEltOrInverse]}, depth 29"
)
[9](3) ("parse(token)" "accept \"/\"")
[9](3) ("accept" "\"/\" === \"/\"")
[9](3) ("parse(token)" "token \"/\", term \"/\"")
[9](3) ("add_prod_datum(MultiplicativeExpression)" "[] << \"/\"")
[9](2) ("/(:terminal)" "" "/: {:MultiplicativeExpression=>[\"/\"]}")
[9](3) ("parse(token)" "accept :PathEltOrInverse")
[9](3) ("parse(push)" "term :PathEltOrInverse, depth 29")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathEltOrInverse, depth 29")
[9](2) ("PathEltOrInverse(:start:15)" "\"rdf:first\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathEltOrInverse, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"^\", \"a\"], sequence [:PathElt]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PathEltOrInverse, :terms=>[:PathElt]}, depth 30")
[9](3) ("parse(token)" "accept :PathElt")
[9](3) ("parse(push)" "term :PathElt, depth 30")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathElt, depth 30")
[9](2) ("PathElt(:start:16)" "\"rdf:first\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathElt, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:PathPrimary, :_PathElt_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:PathElt, :terms=>[:PathPrimary, :_PathElt_1]}, depth 31" )
[9](3) ("parse(token)" "accept :PathPrimary")
[9](3) ("parse(push)" "term :PathPrimary, depth 31")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PathPrimary, depth 31")
[9](2) ("PathPrimary(:start:17)" "\"rdf:first\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PathPrimary, prod_branch [\"!\", \"(\", :IRIREF, :PNAME_LN, :PNAME_NS, \"a\"], sequence [:iri]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PathPrimary, :terms=>[:iri]}, depth 32")
[9](3) ("parse(token)" "accept :iri")
[9](3) ("parse(push)" "term :iri, depth 32")
[9](3) ("parse(production)" "token :PNAME_LN, prod :iri, depth 32")
[9](2) ("iri(:start:17)" "\"rdf:first\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :iri, prod_branch [:IRIREF, :PNAME_LN, :PNAME_NS], sequence [:PrefixedName]"
)
[9](3) ("parse(terms)" "todo {:prod=>:iri, :terms=>[:PrefixedName]}, depth 33")
[9](3) ("parse(token)" "accept :PrefixedName")
[9](3) ("parse(push)" "term :PrefixedName, depth 33")
[9](3) ("parse(production)" "token :PNAME_LN, prod :PrefixedName, depth 33")
[9](2) ("PrefixedName(:start:17)" "\"rdf:first\"(PNAME_LN)")
[9](3) ("parse(production)"
"token :PNAME_LN prod :PrefixedName, prod_branch [:PNAME_LN, :PNAME_NS], sequence [:PNAME_LN]"
)
[9](3) ("parse(terms)" "todo {:prod=>:PrefixedName, :terms=>[:PNAME_LN]}, depth 34")
[9](3) ("parse(token)" "accept :PNAME_LN")
[9](3) ("accept" "\"rdf:first\"(PNAME_LN) === :PNAME_LN")
[9](3) ("parse(token)" "token \"rdf:first\"(PNAME_LN), term :PNAME_LN")
[9](3) ("ns(\"rdf\"): base: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', suffix: 'first'"
)
[9](2) ("PNAME_LN(:terminal)" ""
":PNAME_LN: {:iri=>#<RDF::URI:0x3f813c911160 URI:http://www.w3.org/1999/02/22-rdf-syntax-ns#first>}"
)
[9](3) ("parse(pop)" "todo {:prod=>:PrefixedName, :terms=>[]}, depth 34")
[9](2) ("PrefixedName(:finish):17")
[9](3) ("parse(pop)" "todo {:prod=>:iri, :terms=>[]}, depth 33")
[9](2) ("iri(:finish):17")
[9](3) ("parse(pop)" "todo {:prod=>:PathPrimary, :terms=>[]}, depth 32")
[9](2) ("PathPrimary(:finish):16" ((PathPrimary rdf:first)))
[9](3) ("parse(terms)" "todo {:prod=>:PathElt, :terms=>[:_PathElt_1]}, depth 31")
[9](3) ("parse(token)" "accept :_PathElt_1")
[9](3) ("parse(token)" "skip optional term :_PathElt_1 on \"?item\"(VAR1)")
[9](3) ("parse(pop)" "todo {:prod=>:PathElt, :terms=>[]}, depth 31")
[9](2) ("PathElt(:finish):15" ((Path rdf:first)))
[9](3) ("parse(pop)" "todo {:prod=>:PathEltOrInverse, :terms=>[]}, depth 30")
[9](2) ("PathEltOrInverse(:finish):14"
((MultiplicativeExpression ("/")) (PathEltOrInverse (rdf:first))))
[9](3) ("parse(pop)" "todo {:prod=>:_PathSequence_2, :terms=>[]}, depth 29")
[9](2) ("_PathSequence_2(:finish):14")
[9](3) ("parse(terms)"
"todo {:prod=>:_PathSequence_3, :terms=>[:_PathSequence_1]}, depth 28" )
[9](3) ("parse(token)" "accept :_PathSequence_1")
[9](3) ("parse(token)" "skip optional term :_PathSequence_1 on \"?item\"(VAR1)")
[9](3) ("parse(pop)" "todo {:prod=>:_PathSequence_3, :terms=>[]}, depth 28")
[9](2) ("_PathSequence_3(:finish):14")
[9](3) ("parse(pop)" "todo {:prod=>:_PathSequence_1, :terms=>[]}, depth 27")
[9](2) ("_PathSequence_1(:finish):13" ((PathEltOrInverse ((path* rdf:rest) rdf:first))))
[9](3) ("parse(pop)" "todo {:prod=>:PathSequence, :terms=>[]}, depth 26")
[9](2) ("PathSequence(:finish):12" ((PathSequence ((seq (path* rdf:rest) rdf:first)))))
[9](3) ("parse(terms)"
"todo {:prod=>:PathAlternative, :terms=>[:_PathAlternative_1]}, depth 25" )
[9](3) ("parse(token)" "accept :_PathAlternative_1")
[9](3) ("parse(token)" "skip optional term :_PathAlternative_1 on \"?item\"(VAR1)")
[9](3) ("parse(pop)" "todo {:prod=>:PathAlternative, :terms=>[]}, depth 25")
[9](2) ("PathAlternative(:finish):11" ((Path (seq (path* rdf:rest) rdf:first))))
[9](3) ("parse(pop)" "todo {:prod=>:Path, :terms=>[]}, depth 24")
[9](2) ("Path(:finish):10" ((Path (seq (path* rdf:rest) rdf:first))))
[9](3) ("parse(pop)" "todo {:prod=>:VerbPath, :terms=>[]}, depth 23")
[9](2) ("VerbPath(:finish):9" ((Subject (?key)) (VerbPath (seq (path* rdf:rest) rdf:first))))
[9](3) ("parse(pop)" "todo {:prod=>:_PropertyListPathNotEmpty_1, :terms=>[]}, depth 22")
[9](2) ("_PropertyListPathNotEmpty_1(:finish):9")
[9](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:ObjectListPath, :_PropertyListPathNotEmpty_2]}, depth 21"
)
[9](3) ("parse(token)" "accept :ObjectListPath")
[9](3) ("parse(push)" "term :ObjectListPath, depth 21")
[9](3) ("parse(production)" "token :VAR1, prod :ObjectListPath, depth 21")
[9](2) ("ObjectListPath(:start):9" ((Subject (?key)) (VerbPath (seq (path* rdf:rest) rdf:first))))
[9](3) ("parse(production)"
"token :VAR1 prod :ObjectListPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:ObjectPath, :_ObjectListPath_1]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:ObjectPath, :_ObjectListPath_1]}, depth 22"
)
[9](3) ("parse(token)" "accept :ObjectPath")
[9](3) ("parse(push)" "term :ObjectPath, depth 22")
[9](3) ("parse(production)" "token :VAR1, prod :ObjectPath, depth 22")
[9](2) ("ObjectPath(:start:11)" "\"?item\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :ObjectPath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:GraphNodePath]"
)
[9](3) ("parse(terms)" "todo {:prod=>:ObjectPath, :terms=>[:GraphNodePath]}, depth 23")
[9](3) ("parse(token)" "accept :GraphNodePath")
[9](3) ("parse(push)" "term :GraphNodePath, depth 23")
[9](3) ("parse(production)" "token :VAR1, prod :GraphNodePath, depth 23")
[9](2) ("GraphNodePath(:start:12)" "\"?item\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :GraphNodePath, prod_branch [\"(\", :ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"[\", \"false\", \"true\"], sequence [:VarOrTerm]"
)
[9](3) ("parse(terms)" "todo {:prod=>:GraphNodePath, :terms=>[:VarOrTerm]}, depth 24")
[9](3) ("parse(token)" "accept :VarOrTerm")
[9](3) ("parse(push)" "term :VarOrTerm, depth 24")
[9](3) ("parse(production)" "token :VAR1, prod :VarOrTerm, depth 24")
[9](2) ("VarOrTerm(:start:13)" "\"?item\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :VarOrTerm, prod_branch [:ANON, :BLANK_NODE_LABEL, :DECIMAL, :DECIMAL_NEGATIVE, :DECIMAL_POSITIVE, :DOUBLE, :DOUBLE_NEGATIVE, :DOUBLE_POSITIVE, :INTEGER, :INTEGER_NEGATIVE, :INTEGER_POSITIVE, :IRIREF, :NIL, :PNAME_LN, :PNAME_NS, :STRING_LITERAL1, :STRING_LITERAL2, :STRING_LITERAL_LONG1, :STRING_LITERAL_LONG2, :VAR1, :VAR2, \"false\", \"true\"], sequence [:Var]"
)
[9](3) ("parse(terms)" "todo {:prod=>:VarOrTerm, :terms=>[:Var]}, depth 25")
[9](3) ("parse(token)" "accept :Var")
[9](3) ("parse(push)" "term :Var, depth 25")
[9](3) ("parse(production)" "token :VAR1, prod :Var, depth 25")
[9](2) ("Var(:start:13)" "\"?item\"(VAR1)")
[9](3) ("parse(production)"
"token :VAR1 prod :Var, prod_branch [:VAR1, :VAR2], sequence [:VAR1]" )
[9](3) ("parse(terms)" "todo {:prod=>:Var, :terms=>[:VAR1]}, depth 26")
[9](3) ("parse(token)" "accept :VAR1")
[9](3) ("accept" "\"?item\"(VAR1) === :VAR1")
[9](3) ("parse(token)" "token \"?item\"(VAR1), term :VAR1")
[9](3) ("add_prod_datum(Var)" "[] << #<RDF::Query::Variable:0x3f813d79437c(?item)>")
[9](2) ("VAR1(:terminal)" ""
":VAR1: {:Var=>[#<RDF::Query::Variable:0x3f813d79437c(?item)>]}" )
[9](3) ("parse(pop)" "todo {:prod=>:Var, :terms=>[]}, depth 26")
[9](2) ("Var(:finish):13")
[9](3) ("parse(pop)" "todo {:prod=>:VarOrTerm, :terms=>[]}, depth 25")
[9](3) ("add_prod_datum(VarOrTerm)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[9](2) ("VarOrTerm(:finish):12" ((VarOrTerm (?item))))
[9](3) ("parse(pop)" "todo {:prod=>:GraphNodePath, :terms=>[]}, depth 24")
[9](3) ("add_prod_datum(GraphNode)"
"[] += [#<RDF::Query::Variable:0x3f813d79437c(?item)>]" )
[9](2) ("GraphNodePath(:finish):11" ((GraphNode (?item))))
[9](3) ("parse(pop)" "todo {:prod=>:ObjectPath, :terms=>[]}, depth 23")
[9](3) ("add_prod_datum(path)"
"[] << #<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>"
)
[9](2) ("ObjectPath(:finish):10"
(
(Subject (?key))
(VerbPath (seq (path* rdf:rest) rdf:first))
(path ((path ?key (seq (path* rdf:rest) rdf:first) ?item)))) )
[9](3) ("parse(terms)"
"todo {:prod=>:ObjectListPath, :terms=>[:_ObjectListPath_1]}, depth 22" )
[9](3) ("parse(token)" "accept :_ObjectListPath_1")
[9](3) ("parse(token)" "skip optional term :_ObjectListPath_1 on \".\"")
[9](3) ("parse(pop)" "todo {:prod=>:ObjectListPath, :terms=>[]}, depth 22")
[9](3) ("add_prod_datum(path)"
"[] += [#<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>]"
)
[9](2) ("ObjectListPath(:finish):9"
(
(Subject (?key))
(VerbPath (seq (path* rdf:rest) rdf:first))
(path ((path ?key (seq (path* rdf:rest) rdf:first) ?item)))) )
[9](3) ("parse(terms)"
"todo {:prod=>:PropertyListPathNotEmpty, :terms=>[:_PropertyListPathNotEmpty_2]}, depth 21"
)
[9](3) ("parse(token)" "accept :_PropertyListPathNotEmpty_2")
[9](3) ("parse(token)" "skip optional term :_PropertyListPathNotEmpty_2 on \".\"")
[9](3) ("parse(pop)" "todo {:prod=>:PropertyListPathNotEmpty, :terms=>[]}, depth 21")
[9](3) ("add_prod_datum(path)"
"[] += [#<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>]"
)
[9](2) ("PropertyListPathNotEmpty(:finish):8"
((VarOrTerm (?key)) (path ((path ?key (seq (path* rdf:rest) rdf:first) ?item)))))
[9](3) ("parse(pop)" "todo {:prod=>:_TriplesSameSubjectPath_1, :terms=>[]}, depth 20")
[9](2) ("_TriplesSameSubjectPath_1(:finish):8")
[9](3) ("parse(pop)" "todo {:prod=>:TriplesSameSubjectPath, :terms=>[]}, depth 19")
[9](3) ("add_prod_datum(path)"
"[] += [#<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>]"
)
[9](2) ("TriplesSameSubjectPath(:finish):7"
((path ((path ?key (seq (path* rdf:rest) rdf:first) ?item)))))
[9](3) ("parse(terms)"
"todo {:prod=>:TriplesBlock, :terms=>[:_TriplesBlock_1]}, depth 18" )
[9](3) ("parse(token)" "accept :_TriplesBlock_1")
[9](3) ("parse(push)" "term :_TriplesBlock_1, depth 18")
[9](3) ("parse(production)" "token \".\", prod :_TriplesBlock_1, depth 18")
[9](2) ("_TriplesBlock_1(:start:7)" "\".\"")
[9](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_1, prod_branch [\".\", \"BIND\", \"FILTER\", \"GRAPH\", \"MINUS\", \"OPTIONAL\", \"SERVICE\", \"VALUES\", \"{\", \"}\"], sequence [:_TriplesBlock_2]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_1, :terms=>[:_TriplesBlock_2]}, depth 19" )
[9](3) ("parse(token)" "accept :_TriplesBlock_2")
[9](3) ("parse(push)" "term :_TriplesBlock_2, depth 19")
[9](3) ("parse(production)" "token \".\", prod :_TriplesBlock_2, depth 19")
[9](2) ("_TriplesBlock_2(:start:7)" "\".\"")
[9](3) ("parse(production)"
"token \".\" prod :_TriplesBlock_2, prod_branch [\".\"], sequence [\".\", :_TriplesBlock_3]"
)
[9](3) ("parse(terms)"
"todo {:prod=>:_TriplesBlock_2, :terms=>[\".\", :_TriplesBlock_3]}, depth 20"
)
[9](3) ("parse(token)" "accept \".\"")
[9](3) ("accept" "\".\" === \".\"")
[9](3) ("parse(token)" "token \".\", term \".\"")
[9](2) (".(:terminal)" ""
".: {:path=>[#<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>]}"
)
[9](3) ("parse(token)" "accept :_TriplesBlock_3")
[10](3) ("parse(token)" "skip optional term :_TriplesBlock_3 on \"}\"")
[10](3) ("parse(pop)" "todo {:prod=>:_TriplesBlock_2, :terms=>[]}, depth 20")
[10](2) ("_TriplesBlock_2(:finish):7")
[10](3) ("parse(pop)" "todo {:prod=>:_TriplesBlock_1, :terms=>[]}, depth 19")
[10](2) ("_TriplesBlock_1(:finish):7")
[10](3) ("parse(pop)" "todo {:prod=>:TriplesBlock, :terms=>[]}, depth 18")
[10](3) ("add_prod_datum(query)"
"[] += [#<SPARQL::Algebra::Operator::Path:0x3f813d5f17f4((?key (seq (path* rdf:rest) rdf:first) ?item))>]"
)
[10](2) ("TriplesBlock(:finish):6"
(
(pattern ((triple ?class owl:hasKey ?key)))
(query ((path ?key (seq (path* rdf:rest) rdf:first) ?item)))) )
[10](3) ("parse(pop)" "todo {:prod=>:_TriplesBlock_3, :terms=>[]}, depth 17")
[10](2) ("_TriplesBlock_3(:finish):6")
[10](3) ("parse(pop)" "todo {:prod=>:_TriplesBlock_2, :terms=>[]}, depth 16")
[10](2) ("_TriplesBlock_2(:finish):6")
[10](3) ("parse(pop)" "todo {:prod=>:_TriplesBlock_1, :terms=>[]}, depth 15")
[10](2) ("_TriplesBlock_1(:finish):6")
[10](3) ("parse(pop)" "todo {:prod=>:TriplesBlock, :terms=>[]}, depth 14")
/home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/rdf-2.1.1/lib/rdf/query.rb:404:in `+': undefined method `patterns' for #<SPARQL::Algebra::Operator::Path:0x007f027abe2fe8> (NoMethodError)
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/sparql-2.1.0/lib/sparql/grammar/parser11.rb:610:in `block (2 levels) in <class:Parser>'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/sparql-2.1.0/lib/sparql/grammar/parser11.rb:610:in `each'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/sparql-2.1.0/lib/sparql/grammar/parser11.rb:610:in `block in <class:Parser>'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:600:in `call'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:600:in `block in onFinish'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:118:in `block in eval_with_binding'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:118:in `instance_eval'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:118:in `eval_with_binding'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:599:in `onFinish'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/ebnf-1.1.0/lib/ebnf/ll1/parser.rb:402:in `parse'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/sparql-2.1.0/lib/sparql/grammar/parser11.rb:1517:in `parse'
from /home/andris/dotfiles/ruby/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/sparql-2.1.0/lib/sparql.rb:32:in `parse'
from main.rb:50:in `all_keys'
from main.rb:153:in `run'
from main.rb:161:in `<main>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment