All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.flint.sparql.sparql11querymode_ll1.js Maven / Gradle / Ivy

Go to download

Corese is a Semantic Web Factory (triple store and SPARQL endpoint) implementing RDF, RDFS, SPARQL 1.1 Query and Update.

The newest version!
CodeMirror.defineMode("sparql11query", function(config, parserConfig) {

	var indentUnit = config.indentUnit;

	// ll1_table is auto-generated from grammar
	// - do not edit manually
	// %%%table%%%
var ll1_table=
{
  "*[ (,), expression]" : {
     ",": ["[ (,), expression]","*[ (,), expression]"], 
     ")": []}, 
  "*[ (,), objectPath]" : {
     ",": ["[ (,), objectPath]","*[ (,), objectPath]"], 
     ".": [], 
     ";": [], 
     "]": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "*[ (,), object]" : {
     ",": ["[ (,), object]","*[ (,), object]"], 
     ".": [], 
     ";": [], 
     "]": [], 
     "}": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": []}, 
  "*[ (;), ?[or([verbPath, verbSimple]), objectList]]" : {
     ";": ["[ (;), ?[or([verbPath, verbSimple]), objectList]]","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     ".": [], 
     "]": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "*[ (;), ?[verb, objectList]]" : {
     ";": ["[ (;), ?[verb, objectList]]","*[ (;), ?[verb, objectList]]"], 
     ".": [], 
     "]": [], 
     "}": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": []}, 
  "*[ (|), pathOneInPropertySet]" : {
     "|": ["[ (|), pathOneInPropertySet]","*[ (|), pathOneInPropertySet]"], 
     ")": []}, 
  "*[ (|), pathSequence]" : {
     "|": ["[ (|), pathSequence]","*[ (|), pathSequence]"], 
     ")": [], 
     "(": [], 
     "[": [], 
     "VAR1": [], 
     "VAR2": [], 
     "NIL": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": []}, 
  "*[&&, valueLogical]" : {
     "&&": ["[&&, valueLogical]","*[&&, valueLogical]"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     ";": []}, 
  "*[/, pathEltOrInverse]" : {
     "/": ["[/, pathEltOrInverse]","*[/, pathEltOrInverse]"], 
     "|": [], 
     ")": [], 
     "(": [], 
     "[": [], 
     "VAR1": [], 
     "VAR2": [], 
     "NIL": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": []}, 
  "*[UNION, groupGraphPattern]" : {
     "UNION": ["[UNION, groupGraphPattern]","*[UNION, groupGraphPattern]"], 
     "VAR1": [], 
     "VAR2": [], 
     "NIL": [], 
     "(": [], 
     "[": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     ".": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "*[graphPatternNotTriples, ?., ?triplesBlock]" : {
     "{": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "OPTIONAL": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "MINUS": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "GRAPH": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "SERVICE": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "FILTER": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "BIND": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "VALUES": ["[graphPatternNotTriples, ?., ?triplesBlock]","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "}": []}, 
  "*[||, conditionalAndExpression]" : {
     "||": ["[||, conditionalAndExpression]","*[||, conditionalAndExpression]"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     ";": []}, 
  "*dataBlockValue" : {
     "UNDEF": ["dataBlockValue","*dataBlockValue"], 
     "IRI_REF": ["dataBlockValue","*dataBlockValue"], 
     "TRUE": ["dataBlockValue","*dataBlockValue"], 
     "FALSE": ["dataBlockValue","*dataBlockValue"], 
     "PNAME_LN": ["dataBlockValue","*dataBlockValue"], 
     "PNAME_NS": ["dataBlockValue","*dataBlockValue"], 
     "STRING_LITERAL1": ["dataBlockValue","*dataBlockValue"], 
     "STRING_LITERAL2": ["dataBlockValue","*dataBlockValue"], 
     "STRING_LITERAL_LONG1": ["dataBlockValue","*dataBlockValue"], 
     "STRING_LITERAL_LONG2": ["dataBlockValue","*dataBlockValue"], 
     "INTEGER": ["dataBlockValue","*dataBlockValue"], 
     "DECIMAL": ["dataBlockValue","*dataBlockValue"], 
     "DOUBLE": ["dataBlockValue","*dataBlockValue"], 
     "INTEGER_POSITIVE": ["dataBlockValue","*dataBlockValue"], 
     "DECIMAL_POSITIVE": ["dataBlockValue","*dataBlockValue"], 
     "DOUBLE_POSITIVE": ["dataBlockValue","*dataBlockValue"], 
     "INTEGER_NEGATIVE": ["dataBlockValue","*dataBlockValue"], 
     "DECIMAL_NEGATIVE": ["dataBlockValue","*dataBlockValue"], 
     "DOUBLE_NEGATIVE": ["dataBlockValue","*dataBlockValue"], 
     "}": [], 
     ")": []}, 
  "*datasetClause" : {
     "FROM": ["datasetClause","*datasetClause"], 
     "WHERE": [], 
     "{": []}, 
  "*describeDatasetClause" : {
     "FROM": ["describeDatasetClause","*describeDatasetClause"], 
     "ORDER": [], 
     "HAVING": [], 
     "GROUP": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "WHERE": [], 
     "{": [], 
     "$": [], 
     "VALUES": []}, 
  "*graphNode" : {
     "(": ["graphNode","*graphNode"], 
     "[": ["graphNode","*graphNode"], 
     "VAR1": ["graphNode","*graphNode"], 
     "VAR2": ["graphNode","*graphNode"], 
     "NIL": ["graphNode","*graphNode"], 
     "IRI_REF": ["graphNode","*graphNode"], 
     "TRUE": ["graphNode","*graphNode"], 
     "FALSE": ["graphNode","*graphNode"], 
     "BLANK_NODE_LABEL": ["graphNode","*graphNode"], 
     "ANON": ["graphNode","*graphNode"], 
     "PNAME_LN": ["graphNode","*graphNode"], 
     "PNAME_NS": ["graphNode","*graphNode"], 
     "STRING_LITERAL1": ["graphNode","*graphNode"], 
     "STRING_LITERAL2": ["graphNode","*graphNode"], 
     "STRING_LITERAL_LONG1": ["graphNode","*graphNode"], 
     "STRING_LITERAL_LONG2": ["graphNode","*graphNode"], 
     "INTEGER": ["graphNode","*graphNode"], 
     "DECIMAL": ["graphNode","*graphNode"], 
     "DOUBLE": ["graphNode","*graphNode"], 
     "INTEGER_POSITIVE": ["graphNode","*graphNode"], 
     "DECIMAL_POSITIVE": ["graphNode","*graphNode"], 
     "DOUBLE_POSITIVE": ["graphNode","*graphNode"], 
     "INTEGER_NEGATIVE": ["graphNode","*graphNode"], 
     "DECIMAL_NEGATIVE": ["graphNode","*graphNode"], 
     "DOUBLE_NEGATIVE": ["graphNode","*graphNode"], 
     ")": []}, 
  "*graphNodePath" : {
     "(": ["graphNodePath","*graphNodePath"], 
     "[": ["graphNodePath","*graphNodePath"], 
     "VAR1": ["graphNodePath","*graphNodePath"], 
     "VAR2": ["graphNodePath","*graphNodePath"], 
     "NIL": ["graphNodePath","*graphNodePath"], 
     "IRI_REF": ["graphNodePath","*graphNodePath"], 
     "TRUE": ["graphNodePath","*graphNodePath"], 
     "FALSE": ["graphNodePath","*graphNodePath"], 
     "BLANK_NODE_LABEL": ["graphNodePath","*graphNodePath"], 
     "ANON": ["graphNodePath","*graphNodePath"], 
     "PNAME_LN": ["graphNodePath","*graphNodePath"], 
     "PNAME_NS": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL1": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL2": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL_LONG1": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL_LONG2": ["graphNodePath","*graphNodePath"], 
     "INTEGER": ["graphNodePath","*graphNodePath"], 
     "DECIMAL": ["graphNodePath","*graphNodePath"], 
     "DOUBLE": ["graphNodePath","*graphNodePath"], 
     "INTEGER_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "DECIMAL_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "DOUBLE_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "INTEGER_NEGATIVE": ["graphNodePath","*graphNodePath"], 
     "DECIMAL_NEGATIVE": ["graphNodePath","*graphNodePath"], 
     "DOUBLE_NEGATIVE": ["graphNodePath","*graphNodePath"], 
     ")": []}, 
  "*groupCondition" : {
     "(": ["groupCondition","*groupCondition"], 
     "STR": ["groupCondition","*groupCondition"], 
     "LANG": ["groupCondition","*groupCondition"], 
     "LANGMATCHES": ["groupCondition","*groupCondition"], 
     "DATATYPE": ["groupCondition","*groupCondition"], 
     "BOUND": ["groupCondition","*groupCondition"], 
     "IRI": ["groupCondition","*groupCondition"], 
     "URI": ["groupCondition","*groupCondition"], 
     "BNODE": ["groupCondition","*groupCondition"], 
     "RAND": ["groupCondition","*groupCondition"], 
     "ABS": ["groupCondition","*groupCondition"], 
     "CEIL": ["groupCondition","*groupCondition"], 
     "FLOOR": ["groupCondition","*groupCondition"], 
     "ROUND": ["groupCondition","*groupCondition"], 
     "CONCAT": ["groupCondition","*groupCondition"], 
     "STRLEN": ["groupCondition","*groupCondition"], 
     "UCASE": ["groupCondition","*groupCondition"], 
     "LCASE": ["groupCondition","*groupCondition"], 
     "ENCODE_FOR_URI": ["groupCondition","*groupCondition"], 
     "CONTAINS": ["groupCondition","*groupCondition"], 
     "STRSTARTS": ["groupCondition","*groupCondition"], 
     "STRENDS": ["groupCondition","*groupCondition"], 
     "STRBEFORE": ["groupCondition","*groupCondition"], 
     "STRAFTER": ["groupCondition","*groupCondition"], 
     "YEAR": ["groupCondition","*groupCondition"], 
     "MONTH": ["groupCondition","*groupCondition"], 
     "DAY": ["groupCondition","*groupCondition"], 
     "HOURS": ["groupCondition","*groupCondition"], 
     "MINUTES": ["groupCondition","*groupCondition"], 
     "SECONDS": ["groupCondition","*groupCondition"], 
     "TIMEZONE": ["groupCondition","*groupCondition"], 
     "TZ": ["groupCondition","*groupCondition"], 
     "NOW": ["groupCondition","*groupCondition"], 
     "UUID": ["groupCondition","*groupCondition"], 
     "STRUUID": ["groupCondition","*groupCondition"], 
     "MD5": ["groupCondition","*groupCondition"], 
     "SHA1": ["groupCondition","*groupCondition"], 
     "SHA256": ["groupCondition","*groupCondition"], 
     "SHA384": ["groupCondition","*groupCondition"], 
     "SHA512": ["groupCondition","*groupCondition"], 
     "COALESCE": ["groupCondition","*groupCondition"], 
     "IF": ["groupCondition","*groupCondition"], 
     "STRLANG": ["groupCondition","*groupCondition"], 
     "STRDT": ["groupCondition","*groupCondition"], 
     "SAMETERM": ["groupCondition","*groupCondition"], 
     "ISIRI": ["groupCondition","*groupCondition"], 
     "ISURI": ["groupCondition","*groupCondition"], 
     "ISBLANK": ["groupCondition","*groupCondition"], 
     "ISLITERAL": ["groupCondition","*groupCondition"], 
     "ISNUMERIC": ["groupCondition","*groupCondition"], 
     "VAR1": ["groupCondition","*groupCondition"], 
     "VAR2": ["groupCondition","*groupCondition"], 
     "SUBSTR": ["groupCondition","*groupCondition"], 
     "REPLACE": ["groupCondition","*groupCondition"], 
     "REGEX": ["groupCondition","*groupCondition"], 
     "EXISTS": ["groupCondition","*groupCondition"], 
     "NOT": ["groupCondition","*groupCondition"], 
     "IRI_REF": ["groupCondition","*groupCondition"], 
     "PNAME_LN": ["groupCondition","*groupCondition"], 
     "PNAME_NS": ["groupCondition","*groupCondition"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "ORDER": [], 
     "HAVING": [], 
     "$": [], 
     "}": []}, 
  "*havingCondition" : {
     "(": ["havingCondition","*havingCondition"], 
     "STR": ["havingCondition","*havingCondition"], 
     "LANG": ["havingCondition","*havingCondition"], 
     "LANGMATCHES": ["havingCondition","*havingCondition"], 
     "DATATYPE": ["havingCondition","*havingCondition"], 
     "BOUND": ["havingCondition","*havingCondition"], 
     "IRI": ["havingCondition","*havingCondition"], 
     "URI": ["havingCondition","*havingCondition"], 
     "BNODE": ["havingCondition","*havingCondition"], 
     "RAND": ["havingCondition","*havingCondition"], 
     "ABS": ["havingCondition","*havingCondition"], 
     "CEIL": ["havingCondition","*havingCondition"], 
     "FLOOR": ["havingCondition","*havingCondition"], 
     "ROUND": ["havingCondition","*havingCondition"], 
     "CONCAT": ["havingCondition","*havingCondition"], 
     "STRLEN": ["havingCondition","*havingCondition"], 
     "UCASE": ["havingCondition","*havingCondition"], 
     "LCASE": ["havingCondition","*havingCondition"], 
     "ENCODE_FOR_URI": ["havingCondition","*havingCondition"], 
     "CONTAINS": ["havingCondition","*havingCondition"], 
     "STRSTARTS": ["havingCondition","*havingCondition"], 
     "STRENDS": ["havingCondition","*havingCondition"], 
     "STRBEFORE": ["havingCondition","*havingCondition"], 
     "STRAFTER": ["havingCondition","*havingCondition"], 
     "YEAR": ["havingCondition","*havingCondition"], 
     "MONTH": ["havingCondition","*havingCondition"], 
     "DAY": ["havingCondition","*havingCondition"], 
     "HOURS": ["havingCondition","*havingCondition"], 
     "MINUTES": ["havingCondition","*havingCondition"], 
     "SECONDS": ["havingCondition","*havingCondition"], 
     "TIMEZONE": ["havingCondition","*havingCondition"], 
     "TZ": ["havingCondition","*havingCondition"], 
     "NOW": ["havingCondition","*havingCondition"], 
     "UUID": ["havingCondition","*havingCondition"], 
     "STRUUID": ["havingCondition","*havingCondition"], 
     "MD5": ["havingCondition","*havingCondition"], 
     "SHA1": ["havingCondition","*havingCondition"], 
     "SHA256": ["havingCondition","*havingCondition"], 
     "SHA384": ["havingCondition","*havingCondition"], 
     "SHA512": ["havingCondition","*havingCondition"], 
     "COALESCE": ["havingCondition","*havingCondition"], 
     "IF": ["havingCondition","*havingCondition"], 
     "STRLANG": ["havingCondition","*havingCondition"], 
     "STRDT": ["havingCondition","*havingCondition"], 
     "SAMETERM": ["havingCondition","*havingCondition"], 
     "ISIRI": ["havingCondition","*havingCondition"], 
     "ISURI": ["havingCondition","*havingCondition"], 
     "ISBLANK": ["havingCondition","*havingCondition"], 
     "ISLITERAL": ["havingCondition","*havingCondition"], 
     "ISNUMERIC": ["havingCondition","*havingCondition"], 
     "SUBSTR": ["havingCondition","*havingCondition"], 
     "REPLACE": ["havingCondition","*havingCondition"], 
     "REGEX": ["havingCondition","*havingCondition"], 
     "EXISTS": ["havingCondition","*havingCondition"], 
     "NOT": ["havingCondition","*havingCondition"], 
     "IRI_REF": ["havingCondition","*havingCondition"], 
     "PNAME_LN": ["havingCondition","*havingCondition"], 
     "PNAME_NS": ["havingCondition","*havingCondition"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "ORDER": [], 
     "$": [], 
     "}": []}, 
  "*or([[ (, *dataBlockValue, )], NIL])" : {
     "(": ["or([[ (, *dataBlockValue, )], NIL])","*or([[ (, *dataBlockValue, )], NIL])"], 
     "NIL": ["or([[ (, *dataBlockValue, )], NIL])","*or([[ (, *dataBlockValue, )], NIL])"], 
     "}": []}, 
  "*or([[*, unaryExpression], [/, unaryExpression]])" : {
     "*": ["or([[*, unaryExpression], [/, unaryExpression]])","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "/": ["or([[*, unaryExpression], [/, unaryExpression]])","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     "&&": [], 
     "=": [], 
     "!=": [], 
     "<": [], 
     ">": [], 
     "<=": [], 
     ">=": [], 
     "IN": [], 
     "NOT": [], 
     "+": [], 
     "-": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     ";": []}, 
  "*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])" : {
     "+": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "-": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "INTEGER_POSITIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DECIMAL_POSITIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DOUBLE_POSITIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "INTEGER_NEGATIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DECIMAL_NEGATIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DOUBLE_NEGATIVE": ["or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     "&&": [], 
     "=": [], 
     "!=": [], 
     "<": [], 
     ">": [], 
     "<=": [], 
     ">=": [], 
     "IN": [], 
     "NOT": [], 
     ";": []}, 
  "*or([var, [ (, expression, AS, var, )]])" : {
     "(": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"], 
     "VAR1": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"], 
     "VAR2": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"], 
     "WHERE": [], 
     "{": [], 
     "FROM": []}, 
  "*orderCondition" : {
     "ASC": ["orderCondition","*orderCondition"], 
     "DESC": ["orderCondition","*orderCondition"], 
     "VAR1": ["orderCondition","*orderCondition"], 
     "VAR2": ["orderCondition","*orderCondition"], 
     "(": ["orderCondition","*orderCondition"], 
     "STR": ["orderCondition","*orderCondition"], 
     "LANG": ["orderCondition","*orderCondition"], 
     "LANGMATCHES": ["orderCondition","*orderCondition"], 
     "DATATYPE": ["orderCondition","*orderCondition"], 
     "BOUND": ["orderCondition","*orderCondition"], 
     "IRI": ["orderCondition","*orderCondition"], 
     "URI": ["orderCondition","*orderCondition"], 
     "BNODE": ["orderCondition","*orderCondition"], 
     "RAND": ["orderCondition","*orderCondition"], 
     "ABS": ["orderCondition","*orderCondition"], 
     "CEIL": ["orderCondition","*orderCondition"], 
     "FLOOR": ["orderCondition","*orderCondition"], 
     "ROUND": ["orderCondition","*orderCondition"], 
     "CONCAT": ["orderCondition","*orderCondition"], 
     "STRLEN": ["orderCondition","*orderCondition"], 
     "UCASE": ["orderCondition","*orderCondition"], 
     "LCASE": ["orderCondition","*orderCondition"], 
     "ENCODE_FOR_URI": ["orderCondition","*orderCondition"], 
     "CONTAINS": ["orderCondition","*orderCondition"], 
     "STRSTARTS": ["orderCondition","*orderCondition"], 
     "STRENDS": ["orderCondition","*orderCondition"], 
     "STRBEFORE": ["orderCondition","*orderCondition"], 
     "STRAFTER": ["orderCondition","*orderCondition"], 
     "YEAR": ["orderCondition","*orderCondition"], 
     "MONTH": ["orderCondition","*orderCondition"], 
     "DAY": ["orderCondition","*orderCondition"], 
     "HOURS": ["orderCondition","*orderCondition"], 
     "MINUTES": ["orderCondition","*orderCondition"], 
     "SECONDS": ["orderCondition","*orderCondition"], 
     "TIMEZONE": ["orderCondition","*orderCondition"], 
     "TZ": ["orderCondition","*orderCondition"], 
     "NOW": ["orderCondition","*orderCondition"], 
     "UUID": ["orderCondition","*orderCondition"], 
     "STRUUID": ["orderCondition","*orderCondition"], 
     "MD5": ["orderCondition","*orderCondition"], 
     "SHA1": ["orderCondition","*orderCondition"], 
     "SHA256": ["orderCondition","*orderCondition"], 
     "SHA384": ["orderCondition","*orderCondition"], 
     "SHA512": ["orderCondition","*orderCondition"], 
     "COALESCE": ["orderCondition","*orderCondition"], 
     "IF": ["orderCondition","*orderCondition"], 
     "STRLANG": ["orderCondition","*orderCondition"], 
     "STRDT": ["orderCondition","*orderCondition"], 
     "SAMETERM": ["orderCondition","*orderCondition"], 
     "ISIRI": ["orderCondition","*orderCondition"], 
     "ISURI": ["orderCondition","*orderCondition"], 
     "ISBLANK": ["orderCondition","*orderCondition"], 
     "ISLITERAL": ["orderCondition","*orderCondition"], 
     "ISNUMERIC": ["orderCondition","*orderCondition"], 
     "SUBSTR": ["orderCondition","*orderCondition"], 
     "REPLACE": ["orderCondition","*orderCondition"], 
     "REGEX": ["orderCondition","*orderCondition"], 
     "EXISTS": ["orderCondition","*orderCondition"], 
     "NOT": ["orderCondition","*orderCondition"], 
     "IRI_REF": ["orderCondition","*orderCondition"], 
     "PNAME_LN": ["orderCondition","*orderCondition"], 
     "PNAME_NS": ["orderCondition","*orderCondition"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "$": [], 
     "}": []}, 
  "*prefixDecl" : {
     "PREFIX": ["prefixDecl","*prefixDecl"], 
     "CONSTRUCT": [], 
     "DESCRIBE": [], 
     "ASK": [], 
     "SELECT": []}, 
  "*var" : {
     "VAR1": ["var","*var"], 
     "VAR2": ["var","*var"], 
     ")": []}, 
  "*varOrIRIref" : {
     "VAR1": ["varOrIRIref","*varOrIRIref"], 
     "VAR2": ["varOrIRIref","*varOrIRIref"], 
     "IRI_REF": ["varOrIRIref","*varOrIRIref"], 
     "PNAME_LN": ["varOrIRIref","*varOrIRIref"], 
     "PNAME_NS": ["varOrIRIref","*varOrIRIref"], 
     "ORDER": [], 
     "HAVING": [], 
     "GROUP": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "WHERE": [], 
     "{": [], 
     "FROM": [], 
     "$": [], 
     "VALUES": []}, 
  "+graphNode" : {
     "(": ["graphNode","*graphNode"], 
     "[": ["graphNode","*graphNode"], 
     "VAR1": ["graphNode","*graphNode"], 
     "VAR2": ["graphNode","*graphNode"], 
     "NIL": ["graphNode","*graphNode"], 
     "IRI_REF": ["graphNode","*graphNode"], 
     "TRUE": ["graphNode","*graphNode"], 
     "FALSE": ["graphNode","*graphNode"], 
     "BLANK_NODE_LABEL": ["graphNode","*graphNode"], 
     "ANON": ["graphNode","*graphNode"], 
     "PNAME_LN": ["graphNode","*graphNode"], 
     "PNAME_NS": ["graphNode","*graphNode"], 
     "STRING_LITERAL1": ["graphNode","*graphNode"], 
     "STRING_LITERAL2": ["graphNode","*graphNode"], 
     "STRING_LITERAL_LONG1": ["graphNode","*graphNode"], 
     "STRING_LITERAL_LONG2": ["graphNode","*graphNode"], 
     "INTEGER": ["graphNode","*graphNode"], 
     "DECIMAL": ["graphNode","*graphNode"], 
     "DOUBLE": ["graphNode","*graphNode"], 
     "INTEGER_POSITIVE": ["graphNode","*graphNode"], 
     "DECIMAL_POSITIVE": ["graphNode","*graphNode"], 
     "DOUBLE_POSITIVE": ["graphNode","*graphNode"], 
     "INTEGER_NEGATIVE": ["graphNode","*graphNode"], 
     "DECIMAL_NEGATIVE": ["graphNode","*graphNode"], 
     "DOUBLE_NEGATIVE": ["graphNode","*graphNode"]}, 
  "+graphNodePath" : {
     "(": ["graphNodePath","*graphNodePath"], 
     "[": ["graphNodePath","*graphNodePath"], 
     "VAR1": ["graphNodePath","*graphNodePath"], 
     "VAR2": ["graphNodePath","*graphNodePath"], 
     "NIL": ["graphNodePath","*graphNodePath"], 
     "IRI_REF": ["graphNodePath","*graphNodePath"], 
     "TRUE": ["graphNodePath","*graphNodePath"], 
     "FALSE": ["graphNodePath","*graphNodePath"], 
     "BLANK_NODE_LABEL": ["graphNodePath","*graphNodePath"], 
     "ANON": ["graphNodePath","*graphNodePath"], 
     "PNAME_LN": ["graphNodePath","*graphNodePath"], 
     "PNAME_NS": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL1": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL2": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL_LONG1": ["graphNodePath","*graphNodePath"], 
     "STRING_LITERAL_LONG2": ["graphNodePath","*graphNodePath"], 
     "INTEGER": ["graphNodePath","*graphNodePath"], 
     "DECIMAL": ["graphNodePath","*graphNodePath"], 
     "DOUBLE": ["graphNodePath","*graphNodePath"], 
     "INTEGER_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "DECIMAL_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "DOUBLE_POSITIVE": ["graphNodePath","*graphNodePath"], 
     "INTEGER_NEGATIVE": ["graphNodePath","*graphNodePath"], 
     "DECIMAL_NEGATIVE": ["graphNodePath","*graphNodePath"], 
     "DOUBLE_NEGATIVE": ["graphNodePath","*graphNodePath"]}, 
  "+groupCondition" : {
     "(": ["groupCondition","*groupCondition"], 
     "STR": ["groupCondition","*groupCondition"], 
     "LANG": ["groupCondition","*groupCondition"], 
     "LANGMATCHES": ["groupCondition","*groupCondition"], 
     "DATATYPE": ["groupCondition","*groupCondition"], 
     "BOUND": ["groupCondition","*groupCondition"], 
     "IRI": ["groupCondition","*groupCondition"], 
     "URI": ["groupCondition","*groupCondition"], 
     "BNODE": ["groupCondition","*groupCondition"], 
     "RAND": ["groupCondition","*groupCondition"], 
     "ABS": ["groupCondition","*groupCondition"], 
     "CEIL": ["groupCondition","*groupCondition"], 
     "FLOOR": ["groupCondition","*groupCondition"], 
     "ROUND": ["groupCondition","*groupCondition"], 
     "CONCAT": ["groupCondition","*groupCondition"], 
     "STRLEN": ["groupCondition","*groupCondition"], 
     "UCASE": ["groupCondition","*groupCondition"], 
     "LCASE": ["groupCondition","*groupCondition"], 
     "ENCODE_FOR_URI": ["groupCondition","*groupCondition"], 
     "CONTAINS": ["groupCondition","*groupCondition"], 
     "STRSTARTS": ["groupCondition","*groupCondition"], 
     "STRENDS": ["groupCondition","*groupCondition"], 
     "STRBEFORE": ["groupCondition","*groupCondition"], 
     "STRAFTER": ["groupCondition","*groupCondition"], 
     "YEAR": ["groupCondition","*groupCondition"], 
     "MONTH": ["groupCondition","*groupCondition"], 
     "DAY": ["groupCondition","*groupCondition"], 
     "HOURS": ["groupCondition","*groupCondition"], 
     "MINUTES": ["groupCondition","*groupCondition"], 
     "SECONDS": ["groupCondition","*groupCondition"], 
     "TIMEZONE": ["groupCondition","*groupCondition"], 
     "TZ": ["groupCondition","*groupCondition"], 
     "NOW": ["groupCondition","*groupCondition"], 
     "UUID": ["groupCondition","*groupCondition"], 
     "STRUUID": ["groupCondition","*groupCondition"], 
     "MD5": ["groupCondition","*groupCondition"], 
     "SHA1": ["groupCondition","*groupCondition"], 
     "SHA256": ["groupCondition","*groupCondition"], 
     "SHA384": ["groupCondition","*groupCondition"], 
     "SHA512": ["groupCondition","*groupCondition"], 
     "COALESCE": ["groupCondition","*groupCondition"], 
     "IF": ["groupCondition","*groupCondition"], 
     "STRLANG": ["groupCondition","*groupCondition"], 
     "STRDT": ["groupCondition","*groupCondition"], 
     "SAMETERM": ["groupCondition","*groupCondition"], 
     "ISIRI": ["groupCondition","*groupCondition"], 
     "ISURI": ["groupCondition","*groupCondition"], 
     "ISBLANK": ["groupCondition","*groupCondition"], 
     "ISLITERAL": ["groupCondition","*groupCondition"], 
     "ISNUMERIC": ["groupCondition","*groupCondition"], 
     "VAR1": ["groupCondition","*groupCondition"], 
     "VAR2": ["groupCondition","*groupCondition"], 
     "SUBSTR": ["groupCondition","*groupCondition"], 
     "REPLACE": ["groupCondition","*groupCondition"], 
     "REGEX": ["groupCondition","*groupCondition"], 
     "EXISTS": ["groupCondition","*groupCondition"], 
     "NOT": ["groupCondition","*groupCondition"], 
     "IRI_REF": ["groupCondition","*groupCondition"], 
     "PNAME_LN": ["groupCondition","*groupCondition"], 
     "PNAME_NS": ["groupCondition","*groupCondition"]}, 
  "+havingCondition" : {
     "(": ["havingCondition","*havingCondition"], 
     "STR": ["havingCondition","*havingCondition"], 
     "LANG": ["havingCondition","*havingCondition"], 
     "LANGMATCHES": ["havingCondition","*havingCondition"], 
     "DATATYPE": ["havingCondition","*havingCondition"], 
     "BOUND": ["havingCondition","*havingCondition"], 
     "IRI": ["havingCondition","*havingCondition"], 
     "URI": ["havingCondition","*havingCondition"], 
     "BNODE": ["havingCondition","*havingCondition"], 
     "RAND": ["havingCondition","*havingCondition"], 
     "ABS": ["havingCondition","*havingCondition"], 
     "CEIL": ["havingCondition","*havingCondition"], 
     "FLOOR": ["havingCondition","*havingCondition"], 
     "ROUND": ["havingCondition","*havingCondition"], 
     "CONCAT": ["havingCondition","*havingCondition"], 
     "STRLEN": ["havingCondition","*havingCondition"], 
     "UCASE": ["havingCondition","*havingCondition"], 
     "LCASE": ["havingCondition","*havingCondition"], 
     "ENCODE_FOR_URI": ["havingCondition","*havingCondition"], 
     "CONTAINS": ["havingCondition","*havingCondition"], 
     "STRSTARTS": ["havingCondition","*havingCondition"], 
     "STRENDS": ["havingCondition","*havingCondition"], 
     "STRBEFORE": ["havingCondition","*havingCondition"], 
     "STRAFTER": ["havingCondition","*havingCondition"], 
     "YEAR": ["havingCondition","*havingCondition"], 
     "MONTH": ["havingCondition","*havingCondition"], 
     "DAY": ["havingCondition","*havingCondition"], 
     "HOURS": ["havingCondition","*havingCondition"], 
     "MINUTES": ["havingCondition","*havingCondition"], 
     "SECONDS": ["havingCondition","*havingCondition"], 
     "TIMEZONE": ["havingCondition","*havingCondition"], 
     "TZ": ["havingCondition","*havingCondition"], 
     "NOW": ["havingCondition","*havingCondition"], 
     "UUID": ["havingCondition","*havingCondition"], 
     "STRUUID": ["havingCondition","*havingCondition"], 
     "MD5": ["havingCondition","*havingCondition"], 
     "SHA1": ["havingCondition","*havingCondition"], 
     "SHA256": ["havingCondition","*havingCondition"], 
     "SHA384": ["havingCondition","*havingCondition"], 
     "SHA512": ["havingCondition","*havingCondition"], 
     "COALESCE": ["havingCondition","*havingCondition"], 
     "IF": ["havingCondition","*havingCondition"], 
     "STRLANG": ["havingCondition","*havingCondition"], 
     "STRDT": ["havingCondition","*havingCondition"], 
     "SAMETERM": ["havingCondition","*havingCondition"], 
     "ISIRI": ["havingCondition","*havingCondition"], 
     "ISURI": ["havingCondition","*havingCondition"], 
     "ISBLANK": ["havingCondition","*havingCondition"], 
     "ISLITERAL": ["havingCondition","*havingCondition"], 
     "ISNUMERIC": ["havingCondition","*havingCondition"], 
     "SUBSTR": ["havingCondition","*havingCondition"], 
     "REPLACE": ["havingCondition","*havingCondition"], 
     "REGEX": ["havingCondition","*havingCondition"], 
     "EXISTS": ["havingCondition","*havingCondition"], 
     "NOT": ["havingCondition","*havingCondition"], 
     "IRI_REF": ["havingCondition","*havingCondition"], 
     "PNAME_LN": ["havingCondition","*havingCondition"], 
     "PNAME_NS": ["havingCondition","*havingCondition"]}, 
  "+or([var, [ (, expression, AS, var, )]])" : {
     "(": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"], 
     "VAR1": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"], 
     "VAR2": ["or([var, [ (, expression, AS, var, )]])","*or([var, [ (, expression, AS, var, )]])"]}, 
  "+orderCondition" : {
     "ASC": ["orderCondition","*orderCondition"], 
     "DESC": ["orderCondition","*orderCondition"], 
     "VAR1": ["orderCondition","*orderCondition"], 
     "VAR2": ["orderCondition","*orderCondition"], 
     "(": ["orderCondition","*orderCondition"], 
     "STR": ["orderCondition","*orderCondition"], 
     "LANG": ["orderCondition","*orderCondition"], 
     "LANGMATCHES": ["orderCondition","*orderCondition"], 
     "DATATYPE": ["orderCondition","*orderCondition"], 
     "BOUND": ["orderCondition","*orderCondition"], 
     "IRI": ["orderCondition","*orderCondition"], 
     "URI": ["orderCondition","*orderCondition"], 
     "BNODE": ["orderCondition","*orderCondition"], 
     "RAND": ["orderCondition","*orderCondition"], 
     "ABS": ["orderCondition","*orderCondition"], 
     "CEIL": ["orderCondition","*orderCondition"], 
     "FLOOR": ["orderCondition","*orderCondition"], 
     "ROUND": ["orderCondition","*orderCondition"], 
     "CONCAT": ["orderCondition","*orderCondition"], 
     "STRLEN": ["orderCondition","*orderCondition"], 
     "UCASE": ["orderCondition","*orderCondition"], 
     "LCASE": ["orderCondition","*orderCondition"], 
     "ENCODE_FOR_URI": ["orderCondition","*orderCondition"], 
     "CONTAINS": ["orderCondition","*orderCondition"], 
     "STRSTARTS": ["orderCondition","*orderCondition"], 
     "STRENDS": ["orderCondition","*orderCondition"], 
     "STRBEFORE": ["orderCondition","*orderCondition"], 
     "STRAFTER": ["orderCondition","*orderCondition"], 
     "YEAR": ["orderCondition","*orderCondition"], 
     "MONTH": ["orderCondition","*orderCondition"], 
     "DAY": ["orderCondition","*orderCondition"], 
     "HOURS": ["orderCondition","*orderCondition"], 
     "MINUTES": ["orderCondition","*orderCondition"], 
     "SECONDS": ["orderCondition","*orderCondition"], 
     "TIMEZONE": ["orderCondition","*orderCondition"], 
     "TZ": ["orderCondition","*orderCondition"], 
     "NOW": ["orderCondition","*orderCondition"], 
     "UUID": ["orderCondition","*orderCondition"], 
     "STRUUID": ["orderCondition","*orderCondition"], 
     "MD5": ["orderCondition","*orderCondition"], 
     "SHA1": ["orderCondition","*orderCondition"], 
     "SHA256": ["orderCondition","*orderCondition"], 
     "SHA384": ["orderCondition","*orderCondition"], 
     "SHA512": ["orderCondition","*orderCondition"], 
     "COALESCE": ["orderCondition","*orderCondition"], 
     "IF": ["orderCondition","*orderCondition"], 
     "STRLANG": ["orderCondition","*orderCondition"], 
     "STRDT": ["orderCondition","*orderCondition"], 
     "SAMETERM": ["orderCondition","*orderCondition"], 
     "ISIRI": ["orderCondition","*orderCondition"], 
     "ISURI": ["orderCondition","*orderCondition"], 
     "ISBLANK": ["orderCondition","*orderCondition"], 
     "ISLITERAL": ["orderCondition","*orderCondition"], 
     "ISNUMERIC": ["orderCondition","*orderCondition"], 
     "SUBSTR": ["orderCondition","*orderCondition"], 
     "REPLACE": ["orderCondition","*orderCondition"], 
     "REGEX": ["orderCondition","*orderCondition"], 
     "EXISTS": ["orderCondition","*orderCondition"], 
     "NOT": ["orderCondition","*orderCondition"], 
     "IRI_REF": ["orderCondition","*orderCondition"], 
     "PNAME_LN": ["orderCondition","*orderCondition"], 
     "PNAME_NS": ["orderCondition","*orderCondition"]}, 
  "+varOrIRIref" : {
     "VAR1": ["varOrIRIref","*varOrIRIref"], 
     "VAR2": ["varOrIRIref","*varOrIRIref"], 
     "IRI_REF": ["varOrIRIref","*varOrIRIref"], 
     "PNAME_LN": ["varOrIRIref","*varOrIRIref"], 
     "PNAME_NS": ["varOrIRIref","*varOrIRIref"]}, 
  "?." : {
     ".": ["."], 
     "VAR1": [], 
     "VAR2": [], 
     "NIL": [], 
     "(": [], 
     "[": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "?DISTINCT" : {
     "DISTINCT": ["DISTINCT"], 
     "!": [], 
     "+": [], 
     "-": [], 
     "VAR1": [], 
     "VAR2": [], 
     "(": [], 
     "STR": [], 
     "LANG": [], 
     "LANGMATCHES": [], 
     "DATATYPE": [], 
     "BOUND": [], 
     "IRI": [], 
     "URI": [], 
     "BNODE": [], 
     "RAND": [], 
     "ABS": [], 
     "CEIL": [], 
     "FLOOR": [], 
     "ROUND": [], 
     "CONCAT": [], 
     "STRLEN": [], 
     "UCASE": [], 
     "LCASE": [], 
     "ENCODE_FOR_URI": [], 
     "CONTAINS": [], 
     "STRSTARTS": [], 
     "STRENDS": [], 
     "STRBEFORE": [], 
     "STRAFTER": [], 
     "YEAR": [], 
     "MONTH": [], 
     "DAY": [], 
     "HOURS": [], 
     "MINUTES": [], 
     "SECONDS": [], 
     "TIMEZONE": [], 
     "TZ": [], 
     "NOW": [], 
     "UUID": [], 
     "STRUUID": [], 
     "MD5": [], 
     "SHA1": [], 
     "SHA256": [], 
     "SHA384": [], 
     "SHA512": [], 
     "COALESCE": [], 
     "IF": [], 
     "STRLANG": [], 
     "STRDT": [], 
     "SAMETERM": [], 
     "ISIRI": [], 
     "ISURI": [], 
     "ISBLANK": [], 
     "ISLITERAL": [], 
     "ISNUMERIC": [], 
     "TRUE": [], 
     "FALSE": [], 
     "COUNT": [], 
     "SUM": [], 
     "MIN": [], 
     "MAX": [], 
     "AVG": [], 
     "SAMPLE": [], 
     "GROUP_CONCAT": [], 
     "SUBSTR": [], 
     "REPLACE": [], 
     "REGEX": [], 
     "EXISTS": [], 
     "NOT": [], 
     "IRI_REF": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "*": []}, 
  "?SILENT" : {
     "SILENT": ["SILENT"], 
     "VAR1": [], 
     "VAR2": [], 
     "IRI_REF": [], 
     "PNAME_LN": [], 
     "PNAME_NS": []}, 
  "?WHERE" : {
     "WHERE": ["WHERE"], 
     "{": []}, 
  "?[ (,), expression]" : {
     ",": ["[ (,), expression]"], 
     ")": []}, 
  "?[ (;), SEPARATOR, =, string]" : {
     ";": ["[ (;), SEPARATOR, =, string]"], 
     ")": []}, 
  "?[., ?constructTriples]" : {
     ".": ["[., ?constructTriples]"], 
     "}": []}, 
  "?[., ?triplesBlock]" : {
     ".": ["[., ?triplesBlock]"], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "?[., ?triplesTemplate]" : {
     ".": ["[., ?triplesTemplate]"], 
     "}": []}, 
  "?[AS, var]" : {
     "AS": ["[AS, var]"], 
     ")": []}, 
  "?[or([verbPath, verbSimple]), objectList]" : {
     "VAR1": ["[or([verbPath, verbSimple]), objectList]"], 
     "VAR2": ["[or([verbPath, verbSimple]), objectList]"], 
     "^": ["[or([verbPath, verbSimple]), objectList]"], 
     "a": ["[or([verbPath, verbSimple]), objectList]"], 
     "!": ["[or([verbPath, verbSimple]), objectList]"], 
     "(": ["[or([verbPath, verbSimple]), objectList]"], 
     "IRI_REF": ["[or([verbPath, verbSimple]), objectList]"], 
     "PNAME_LN": ["[or([verbPath, verbSimple]), objectList]"], 
     "PNAME_NS": ["[or([verbPath, verbSimple]), objectList]"], 
     ";": [], 
     ".": [], 
     "]": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "?[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]" : {
     "a": ["[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]"], 
     "^": ["[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]"], 
     "IRI_REF": ["[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]"], 
     "PNAME_LN": ["[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]"], 
     "PNAME_NS": ["[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]"], 
     ")": []}, 
  "?[verb, objectList]" : {
     "a": ["[verb, objectList]"], 
     "VAR1": ["[verb, objectList]"], 
     "VAR2": ["[verb, objectList]"], 
     "IRI_REF": ["[verb, objectList]"], 
     "PNAME_LN": ["[verb, objectList]"], 
     "PNAME_NS": ["[verb, objectList]"], 
     ";": [], 
     ".": [], 
     "]": [], 
     "}": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": []}, 
  "?argList" : {
     "NIL": ["argList"], 
     "(": ["argList"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     "&&": [], 
     "=": [], 
     "!=": [], 
     "<": [], 
     ">": [], 
     "<=": [], 
     ">=": [], 
     "IN": [], 
     "NOT": [], 
     "+": [], 
     "-": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     "*": [], 
     "/": [], 
     ";": []}, 
  "?baseDecl" : {
     "BASE": ["baseDecl"], 
     "CONSTRUCT": [], 
     "DESCRIBE": [], 
     "ASK": [], 
     "SELECT": [], 
     "PREFIX": []}, 
  "?constructTriples" : {
     "VAR1": ["constructTriples"], 
     "VAR2": ["constructTriples"], 
     "NIL": ["constructTriples"], 
     "(": ["constructTriples"], 
     "[": ["constructTriples"], 
     "IRI_REF": ["constructTriples"], 
     "TRUE": ["constructTriples"], 
     "FALSE": ["constructTriples"], 
     "BLANK_NODE_LABEL": ["constructTriples"], 
     "ANON": ["constructTriples"], 
     "PNAME_LN": ["constructTriples"], 
     "PNAME_NS": ["constructTriples"], 
     "STRING_LITERAL1": ["constructTriples"], 
     "STRING_LITERAL2": ["constructTriples"], 
     "STRING_LITERAL_LONG1": ["constructTriples"], 
     "STRING_LITERAL_LONG2": ["constructTriples"], 
     "INTEGER": ["constructTriples"], 
     "DECIMAL": ["constructTriples"], 
     "DOUBLE": ["constructTriples"], 
     "INTEGER_POSITIVE": ["constructTriples"], 
     "DECIMAL_POSITIVE": ["constructTriples"], 
     "DOUBLE_POSITIVE": ["constructTriples"], 
     "INTEGER_NEGATIVE": ["constructTriples"], 
     "DECIMAL_NEGATIVE": ["constructTriples"], 
     "DOUBLE_NEGATIVE": ["constructTriples"], 
     "}": []}, 
  "?groupClause" : {
     "GROUP": ["groupClause"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "ORDER": [], 
     "HAVING": [], 
     "$": [], 
     "}": []}, 
  "?havingClause" : {
     "HAVING": ["havingClause"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "ORDER": [], 
     "$": [], 
     "}": []}, 
  "?limitClause" : {
     "LIMIT": ["limitClause"], 
     "VALUES": [], 
     "$": [], 
     "}": []}, 
  "?limitOffsetClauses" : {
     "LIMIT": ["limitOffsetClauses"], 
     "OFFSET": ["limitOffsetClauses"], 
     "VALUES": [], 
     "$": [], 
     "}": []}, 
  "?offsetClause" : {
     "OFFSET": ["offsetClause"], 
     "VALUES": [], 
     "$": [], 
     "}": []}, 
  "?or([DISTINCT, REDUCED])" : {
     "DISTINCT": ["or([DISTINCT, REDUCED])"], 
     "REDUCED": ["or([DISTINCT, REDUCED])"], 
     "*": [], 
     "(": [], 
     "VAR1": [], 
     "VAR2": []}, 
  "?or([LANGTAG, [^^, iriRef]])" : {
     "LANGTAG": ["or([LANGTAG, [^^, iriRef]])"], 
     "^^": ["or([LANGTAG, [^^, iriRef]])"], 
     "UNDEF": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     "a": [], 
     "VAR1": [], 
     "VAR2": [], 
     "^": [], 
     "!": [], 
     "(": [], 
     ".": [], 
     ";": [], 
     ",": [], 
     "AS": [], 
     ")": [], 
     "||": [], 
     "&&": [], 
     "=": [], 
     "!=": [], 
     "<": [], 
     ">": [], 
     "<=": [], 
     ">=": [], 
     "IN": [], 
     "NOT": [], 
     "+": [], 
     "-": [], 
     "*": [], 
     "/": [], 
     "}": [], 
     "[": [], 
     "NIL": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "]": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": []}, 
  "?or([[*, unaryExpression], [/, unaryExpression]])" : {
     "*": ["or([[*, unaryExpression], [/, unaryExpression]])"], 
     "/": ["or([[*, unaryExpression], [/, unaryExpression]])"], 
     "+": [], 
     "-": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": [], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     "&&": [], 
     "=": [], 
     "!=": [], 
     "<": [], 
     ">": [], 
     "<=": [], 
     ">=": [], 
     "IN": [], 
     "NOT": [], 
     ";": []}, 
  "?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])" : {
     "=": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "!=": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "<": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     ">": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "<=": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     ">=": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "IN": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "NOT": ["or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "AS": [], 
     ")": [], 
     ",": [], 
     "||": [], 
     "&&": [], 
     ";": []}, 
  "?orderClause" : {
     "ORDER": ["orderClause"], 
     "VALUES": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "$": [], 
     "}": []}, 
  "?pathMod" : {
     "*": ["pathMod"], 
     "?": ["pathMod"], 
     "+": ["pathMod"], 
     "{": ["pathMod"], 
     "|": [], 
     "/": [], 
     ")": [], 
     "(": [], 
     "[": [], 
     "VAR1": [], 
     "VAR2": [], 
     "NIL": [], 
     "IRI_REF": [], 
     "TRUE": [], 
     "FALSE": [], 
     "BLANK_NODE_LABEL": [], 
     "ANON": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "STRING_LITERAL1": [], 
     "STRING_LITERAL2": [], 
     "STRING_LITERAL_LONG1": [], 
     "STRING_LITERAL_LONG2": [], 
     "INTEGER": [], 
     "DECIMAL": [], 
     "DOUBLE": [], 
     "INTEGER_POSITIVE": [], 
     "DECIMAL_POSITIVE": [], 
     "DOUBLE_POSITIVE": [], 
     "INTEGER_NEGATIVE": [], 
     "DECIMAL_NEGATIVE": [], 
     "DOUBLE_NEGATIVE": []}, 
  "?triplesBlock" : {
     "VAR1": ["triplesBlock"], 
     "VAR2": ["triplesBlock"], 
     "NIL": ["triplesBlock"], 
     "(": ["triplesBlock"], 
     "[": ["triplesBlock"], 
     "IRI_REF": ["triplesBlock"], 
     "TRUE": ["triplesBlock"], 
     "FALSE": ["triplesBlock"], 
     "BLANK_NODE_LABEL": ["triplesBlock"], 
     "ANON": ["triplesBlock"], 
     "PNAME_LN": ["triplesBlock"], 
     "PNAME_NS": ["triplesBlock"], 
     "STRING_LITERAL1": ["triplesBlock"], 
     "STRING_LITERAL2": ["triplesBlock"], 
     "STRING_LITERAL_LONG1": ["triplesBlock"], 
     "STRING_LITERAL_LONG2": ["triplesBlock"], 
     "INTEGER": ["triplesBlock"], 
     "DECIMAL": ["triplesBlock"], 
     "DOUBLE": ["triplesBlock"], 
     "INTEGER_POSITIVE": ["triplesBlock"], 
     "DECIMAL_POSITIVE": ["triplesBlock"], 
     "DOUBLE_POSITIVE": ["triplesBlock"], 
     "INTEGER_NEGATIVE": ["triplesBlock"], 
     "DECIMAL_NEGATIVE": ["triplesBlock"], 
     "DOUBLE_NEGATIVE": ["triplesBlock"], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "?triplesTemplate" : {
     "VAR1": ["triplesTemplate"], 
     "VAR2": ["triplesTemplate"], 
     "NIL": ["triplesTemplate"], 
     "(": ["triplesTemplate"], 
     "[": ["triplesTemplate"], 
     "IRI_REF": ["triplesTemplate"], 
     "TRUE": ["triplesTemplate"], 
     "FALSE": ["triplesTemplate"], 
     "BLANK_NODE_LABEL": ["triplesTemplate"], 
     "ANON": ["triplesTemplate"], 
     "PNAME_LN": ["triplesTemplate"], 
     "PNAME_NS": ["triplesTemplate"], 
     "STRING_LITERAL1": ["triplesTemplate"], 
     "STRING_LITERAL2": ["triplesTemplate"], 
     "STRING_LITERAL_LONG1": ["triplesTemplate"], 
     "STRING_LITERAL_LONG2": ["triplesTemplate"], 
     "INTEGER": ["triplesTemplate"], 
     "DECIMAL": ["triplesTemplate"], 
     "DOUBLE": ["triplesTemplate"], 
     "INTEGER_POSITIVE": ["triplesTemplate"], 
     "DECIMAL_POSITIVE": ["triplesTemplate"], 
     "DOUBLE_POSITIVE": ["triplesTemplate"], 
     "INTEGER_NEGATIVE": ["triplesTemplate"], 
     "DECIMAL_NEGATIVE": ["triplesTemplate"], 
     "DOUBLE_NEGATIVE": ["triplesTemplate"], 
     "}": []}, 
  "?whereClause" : {
     "WHERE": ["whereClause"], 
     "{": ["whereClause"], 
     "ORDER": [], 
     "HAVING": [], 
     "GROUP": [], 
     "LIMIT": [], 
     "OFFSET": [], 
     "$": [], 
     "VALUES": []}, 
  "[ (, *dataBlockValue, )]" : {
     "(": ["(","*dataBlockValue",")"]}, 
  "[ (, *var, )]" : {
     "(": ["(","*var",")"]}, 
  "[ (, expression, )]" : {
     "(": ["(","expression",")"]}, 
  "[ (, expression, AS, var, )]" : {
     "(": ["(","expression","AS","var",")"]}, 
  "[ (,), expression]" : {
     ",": [",","expression"]}, 
  "[ (,), integer, }]" : {
     ",": [",","integer","}"]}, 
  "[ (,), objectPath]" : {
     ",": [",","objectPath"]}, 
  "[ (,), object]" : {
     ",": [",","object"]}, 
  "[ (,), or([}, [integer, }]])]" : {
     ",": [",","or([}, [integer, }]])"]}, 
  "[ (;), ?[or([verbPath, verbSimple]), objectList]]" : {
     ";": [";","?[or([verbPath, verbSimple]), objectList]"]}, 
  "[ (;), ?[verb, objectList]]" : {
     ";": [";","?[verb, objectList]"]}, 
  "[ (;), SEPARATOR, =, string]" : {
     ";": [";","SEPARATOR","=","string"]}, 
  "[ (|), pathOneInPropertySet]" : {
     "|": ["|","pathOneInPropertySet"]}, 
  "[ (|), pathSequence]" : {
     "|": ["|","pathSequence"]}, 
  "[!=, numericExpression]" : {
     "!=": ["!=","numericExpression"]}, 
  "[&&, valueLogical]" : {
     "&&": ["&&","valueLogical"]}, 
  "[*, unaryExpression]" : {
     "*": ["*","unaryExpression"]}, 
  "[*datasetClause, WHERE, {, ?triplesTemplate, }, solutionModifier]" : {
     "WHERE": ["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"], 
     "FROM": ["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"]}, 
  "[+, multiplicativeExpression]" : {
     "+": ["+","multiplicativeExpression"]}, 
  "[-, multiplicativeExpression]" : {
     "-": ["-","multiplicativeExpression"]}, 
  "[., ?constructTriples]" : {
     ".": [".","?constructTriples"]}, 
  "[., ?triplesBlock]" : {
     ".": [".","?triplesBlock"]}, 
  "[., ?triplesTemplate]" : {
     ".": [".","?triplesTemplate"]}, 
  "[/, pathEltOrInverse]" : {
     "/": ["/","pathEltOrInverse"]}, 
  "[/, unaryExpression]" : {
     "/": ["/","unaryExpression"]}, 
  "[<, numericExpression]" : {
     "<": ["<","numericExpression"]}, 
  "[<=, numericExpression]" : {
     "<=": ["<=","numericExpression"]}, 
  "[=, numericExpression]" : {
     "=": ["=","numericExpression"]}, 
  "[>, numericExpression]" : {
     ">": [">","numericExpression"]}, 
  "[>=, numericExpression]" : {
     ">=": [">=","numericExpression"]}, 
  "[AS, var]" : {
     "AS": ["AS","var"]}, 
  "[IN, expressionList]" : {
     "IN": ["IN","expressionList"]}, 
  "[NOT, IN, expressionList]" : {
     "NOT": ["NOT","IN","expressionList"]}, 
  "[UNION, groupGraphPattern]" : {
     "UNION": ["UNION","groupGraphPattern"]}, 
  "[^^, iriRef]" : {
     "^^": ["^^","iriRef"]}, 
  "[constructTemplate, *datasetClause, whereClause, solutionModifier]" : {
     "{": ["constructTemplate","*datasetClause","whereClause","solutionModifier"]}, 
  "[graphPatternNotTriples, ?., ?triplesBlock]" : {
     "{": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "OPTIONAL": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "MINUS": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "GRAPH": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "SERVICE": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "FILTER": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "BIND": ["graphPatternNotTriples","?.","?triplesBlock"], 
     "VALUES": ["graphPatternNotTriples","?.","?triplesBlock"]}, 
  "[integer, or([[ (,), or([}, [integer, }]])], }])]" : {
     "INTEGER": ["integer","or([[ (,), or([}, [integer, }]])], }])"]}, 
  "[integer, }]" : {
     "INTEGER": ["integer","}"]}, 
  "[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]" : {
     "INTEGER_POSITIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DECIMAL_POSITIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DOUBLE_POSITIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"], 
     "INTEGER_NEGATIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DECIMAL_NEGATIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DOUBLE_NEGATIVE": ["or([numericLiteralPositive, numericLiteralNegative])","?or([[*, unaryExpression], [/, unaryExpression]])"]}, 
  "[or([verbPath, verbSimple]), objectList]" : {
     "VAR1": ["or([verbPath, verbSimple])","objectList"], 
     "VAR2": ["or([verbPath, verbSimple])","objectList"], 
     "^": ["or([verbPath, verbSimple])","objectList"], 
     "a": ["or([verbPath, verbSimple])","objectList"], 
     "!": ["or([verbPath, verbSimple])","objectList"], 
     "(": ["or([verbPath, verbSimple])","objectList"], 
     "IRI_REF": ["or([verbPath, verbSimple])","objectList"], 
     "PNAME_LN": ["or([verbPath, verbSimple])","objectList"], 
     "PNAME_NS": ["or([verbPath, verbSimple])","objectList"]}, 
  "[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]" : {
     "a": ["pathOneInPropertySet","*[ (|), pathOneInPropertySet]"], 
     "^": ["pathOneInPropertySet","*[ (|), pathOneInPropertySet]"], 
     "IRI_REF": ["pathOneInPropertySet","*[ (|), pathOneInPropertySet]"], 
     "PNAME_LN": ["pathOneInPropertySet","*[ (|), pathOneInPropertySet]"], 
     "PNAME_NS": ["pathOneInPropertySet","*[ (|), pathOneInPropertySet]"]}, 
  "[verb, objectList]" : {
     "a": ["verb","objectList"], 
     "VAR1": ["verb","objectList"], 
     "VAR2": ["verb","objectList"], 
     "IRI_REF": ["verb","objectList"], 
     "PNAME_LN": ["verb","objectList"], 
     "PNAME_NS": ["verb","objectList"]}, 
  "[||, conditionalAndExpression]" : {
     "||": ["||","conditionalAndExpression"]}, 
  "additiveExpression" : {
     "!": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "+": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "-": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "VAR1": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "VAR2": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "(": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STR": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "LANG": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "LANGMATCHES": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DATATYPE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "BOUND": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "IRI": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "URI": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "BNODE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "RAND": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ABS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "CEIL": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "FLOOR": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ROUND": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "CONCAT": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRLEN": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "UCASE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "LCASE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ENCODE_FOR_URI": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "CONTAINS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRSTARTS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRENDS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRBEFORE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRAFTER": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "YEAR": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "MONTH": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DAY": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "HOURS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "MINUTES": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SECONDS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "TIMEZONE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "TZ": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "NOW": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "UUID": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRUUID": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "MD5": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SHA1": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SHA256": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SHA384": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SHA512": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "COALESCE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "IF": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRLANG": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRDT": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SAMETERM": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ISIRI": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ISURI": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ISBLANK": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ISLITERAL": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "ISNUMERIC": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "TRUE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "FALSE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "COUNT": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SUM": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "MIN": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "MAX": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "AVG": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SAMPLE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "GROUP_CONCAT": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "SUBSTR": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "REPLACE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "REGEX": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "EXISTS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "NOT": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "IRI_REF": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRING_LITERAL1": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRING_LITERAL2": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRING_LITERAL_LONG1": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "STRING_LITERAL_LONG2": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "INTEGER": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DECIMAL": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DOUBLE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "INTEGER_POSITIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DECIMAL_POSITIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DOUBLE_POSITIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "INTEGER_NEGATIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DECIMAL_NEGATIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "DOUBLE_NEGATIVE": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "PNAME_LN": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"], 
     "PNAME_NS": ["multiplicativeExpression","*or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])"]}, 
  "aggregate" : {
     "COUNT": ["COUNT","(","?DISTINCT","or([*, expression])",")"], 
     "SUM": ["SUM","(","?DISTINCT","expression",")"], 
     "MIN": ["MIN","(","?DISTINCT","expression",")"], 
     "MAX": ["MAX","(","?DISTINCT","expression",")"], 
     "AVG": ["AVG","(","?DISTINCT","expression",")"], 
     "SAMPLE": ["SAMPLE","(","?DISTINCT","expression",")"], 
     "GROUP_CONCAT": ["GROUP_CONCAT","(","?DISTINCT","expression","?[ (;), SEPARATOR, =, string]",")"]}, 
  "argList" : {
     "NIL": ["NIL"], 
     "(": ["(","?DISTINCT","expression","*[ (,), expression]",")"]}, 
  "askQuery" : {
     "ASK": ["ASK","*datasetClause","whereClause","solutionModifier"]}, 
  "baseDecl" : {
     "BASE": ["BASE","IRI_REF"]}, 
  "bind" : {
     "BIND": ["BIND","(","expression","AS","var",")"]}, 
  "blankNode" : {
     "BLANK_NODE_LABEL": ["BLANK_NODE_LABEL"], 
     "ANON": ["ANON"]}, 
  "blankNodePropertyList" : {
     "[": ["[","propertyListNotEmpty","]"]}, 
  "blankNodePropertyListPath" : {
     "[": ["[","propertyListPathNotEmpty","]"]}, 
  "booleanLiteral" : {
     "TRUE": ["TRUE"], 
     "FALSE": ["FALSE"]}, 
  "brackettedExpression" : {
     "(": ["(","expression",")"]}, 
  "builtInCall" : {
     "STR": ["STR","(","expression",")"], 
     "LANG": ["LANG","(","expression",")"], 
     "LANGMATCHES": ["LANGMATCHES","(","expression",",","expression",")"], 
     "DATATYPE": ["DATATYPE","(","expression",")"], 
     "BOUND": ["BOUND","(","var",")"], 
     "IRI": ["IRI","(","expression",")"], 
     "URI": ["URI","(","expression",")"], 
     "BNODE": ["BNODE","or([[ (, expression, )], NIL])"], 
     "RAND": ["RAND","NIL"], 
     "ABS": ["ABS","(","expression",")"], 
     "CEIL": ["CEIL","(","expression",")"], 
     "FLOOR": ["FLOOR","(","expression",")"], 
     "ROUND": ["ROUND","(","expression",")"], 
     "CONCAT": ["CONCAT","expressionList"], 
     "SUBSTR": ["substringExpression"], 
     "STRLEN": ["STRLEN","(","expression",")"], 
     "REPLACE": ["strReplaceExpression"], 
     "UCASE": ["UCASE","(","expression",")"], 
     "LCASE": ["LCASE","(","expression",")"], 
     "ENCODE_FOR_URI": ["ENCODE_FOR_URI","(","expression",")"], 
     "CONTAINS": ["CONTAINS","(","expression",",","expression",")"], 
     "STRSTARTS": ["STRSTARTS","(","expression",",","expression",")"], 
     "STRENDS": ["STRENDS","(","expression",",","expression",")"], 
     "STRBEFORE": ["STRBEFORE","(","expression",",","expression",")"], 
     "STRAFTER": ["STRAFTER","(","expression",",","expression",")"], 
     "YEAR": ["YEAR","(","expression",")"], 
     "MONTH": ["MONTH","(","expression",")"], 
     "DAY": ["DAY","(","expression",")"], 
     "HOURS": ["HOURS","(","expression",")"], 
     "MINUTES": ["MINUTES","(","expression",")"], 
     "SECONDS": ["SECONDS","(","expression",")"], 
     "TIMEZONE": ["TIMEZONE","(","expression",")"], 
     "TZ": ["TZ","(","expression",")"], 
     "NOW": ["NOW","NIL"], 
     "UUID": ["UUID","NIL"], 
     "STRUUID": ["STRUUID","NIL"], 
     "MD5": ["MD5","(","expression",")"], 
     "SHA1": ["SHA1","(","expression",")"], 
     "SHA256": ["SHA256","(","expression",")"], 
     "SHA384": ["SHA384","(","expression",")"], 
     "SHA512": ["SHA512","(","expression",")"], 
     "COALESCE": ["COALESCE","expressionList"], 
     "IF": ["IF","(","expression",",","expression",",","expression",")"], 
     "STRLANG": ["STRLANG","(","expression",",","expression",")"], 
     "STRDT": ["STRDT","(","expression",",","expression",")"], 
     "SAMETERM": ["SAMETERM","(","expression",",","expression",")"], 
     "ISIRI": ["ISIRI","(","expression",")"], 
     "ISURI": ["ISURI","(","expression",")"], 
     "ISBLANK": ["ISBLANK","(","expression",")"], 
     "ISLITERAL": ["ISLITERAL","(","expression",")"], 
     "ISNUMERIC": ["ISNUMERIC","(","expression",")"], 
     "REGEX": ["regexExpression"], 
     "EXISTS": ["existsFunc"], 
     "NOT": ["notExistsFunc"]}, 
  "collection" : {
     "(": ["(","+graphNode",")"]}, 
  "collectionPath" : {
     "(": ["(","+graphNodePath",")"]}, 
  "conditionalAndExpression" : {
     "!": ["valueLogical","*[&&, valueLogical]"], 
     "+": ["valueLogical","*[&&, valueLogical]"], 
     "-": ["valueLogical","*[&&, valueLogical]"], 
     "VAR1": ["valueLogical","*[&&, valueLogical]"], 
     "VAR2": ["valueLogical","*[&&, valueLogical]"], 
     "(": ["valueLogical","*[&&, valueLogical]"], 
     "STR": ["valueLogical","*[&&, valueLogical]"], 
     "LANG": ["valueLogical","*[&&, valueLogical]"], 
     "LANGMATCHES": ["valueLogical","*[&&, valueLogical]"], 
     "DATATYPE": ["valueLogical","*[&&, valueLogical]"], 
     "BOUND": ["valueLogical","*[&&, valueLogical]"], 
     "IRI": ["valueLogical","*[&&, valueLogical]"], 
     "URI": ["valueLogical","*[&&, valueLogical]"], 
     "BNODE": ["valueLogical","*[&&, valueLogical]"], 
     "RAND": ["valueLogical","*[&&, valueLogical]"], 
     "ABS": ["valueLogical","*[&&, valueLogical]"], 
     "CEIL": ["valueLogical","*[&&, valueLogical]"], 
     "FLOOR": ["valueLogical","*[&&, valueLogical]"], 
     "ROUND": ["valueLogical","*[&&, valueLogical]"], 
     "CONCAT": ["valueLogical","*[&&, valueLogical]"], 
     "STRLEN": ["valueLogical","*[&&, valueLogical]"], 
     "UCASE": ["valueLogical","*[&&, valueLogical]"], 
     "LCASE": ["valueLogical","*[&&, valueLogical]"], 
     "ENCODE_FOR_URI": ["valueLogical","*[&&, valueLogical]"], 
     "CONTAINS": ["valueLogical","*[&&, valueLogical]"], 
     "STRSTARTS": ["valueLogical","*[&&, valueLogical]"], 
     "STRENDS": ["valueLogical","*[&&, valueLogical]"], 
     "STRBEFORE": ["valueLogical","*[&&, valueLogical]"], 
     "STRAFTER": ["valueLogical","*[&&, valueLogical]"], 
     "YEAR": ["valueLogical","*[&&, valueLogical]"], 
     "MONTH": ["valueLogical","*[&&, valueLogical]"], 
     "DAY": ["valueLogical","*[&&, valueLogical]"], 
     "HOURS": ["valueLogical","*[&&, valueLogical]"], 
     "MINUTES": ["valueLogical","*[&&, valueLogical]"], 
     "SECONDS": ["valueLogical","*[&&, valueLogical]"], 
     "TIMEZONE": ["valueLogical","*[&&, valueLogical]"], 
     "TZ": ["valueLogical","*[&&, valueLogical]"], 
     "NOW": ["valueLogical","*[&&, valueLogical]"], 
     "UUID": ["valueLogical","*[&&, valueLogical]"], 
     "STRUUID": ["valueLogical","*[&&, valueLogical]"], 
     "MD5": ["valueLogical","*[&&, valueLogical]"], 
     "SHA1": ["valueLogical","*[&&, valueLogical]"], 
     "SHA256": ["valueLogical","*[&&, valueLogical]"], 
     "SHA384": ["valueLogical","*[&&, valueLogical]"], 
     "SHA512": ["valueLogical","*[&&, valueLogical]"], 
     "COALESCE": ["valueLogical","*[&&, valueLogical]"], 
     "IF": ["valueLogical","*[&&, valueLogical]"], 
     "STRLANG": ["valueLogical","*[&&, valueLogical]"], 
     "STRDT": ["valueLogical","*[&&, valueLogical]"], 
     "SAMETERM": ["valueLogical","*[&&, valueLogical]"], 
     "ISIRI": ["valueLogical","*[&&, valueLogical]"], 
     "ISURI": ["valueLogical","*[&&, valueLogical]"], 
     "ISBLANK": ["valueLogical","*[&&, valueLogical]"], 
     "ISLITERAL": ["valueLogical","*[&&, valueLogical]"], 
     "ISNUMERIC": ["valueLogical","*[&&, valueLogical]"], 
     "TRUE": ["valueLogical","*[&&, valueLogical]"], 
     "FALSE": ["valueLogical","*[&&, valueLogical]"], 
     "COUNT": ["valueLogical","*[&&, valueLogical]"], 
     "SUM": ["valueLogical","*[&&, valueLogical]"], 
     "MIN": ["valueLogical","*[&&, valueLogical]"], 
     "MAX": ["valueLogical","*[&&, valueLogical]"], 
     "AVG": ["valueLogical","*[&&, valueLogical]"], 
     "SAMPLE": ["valueLogical","*[&&, valueLogical]"], 
     "GROUP_CONCAT": ["valueLogical","*[&&, valueLogical]"], 
     "SUBSTR": ["valueLogical","*[&&, valueLogical]"], 
     "REPLACE": ["valueLogical","*[&&, valueLogical]"], 
     "REGEX": ["valueLogical","*[&&, valueLogical]"], 
     "EXISTS": ["valueLogical","*[&&, valueLogical]"], 
     "NOT": ["valueLogical","*[&&, valueLogical]"], 
     "IRI_REF": ["valueLogical","*[&&, valueLogical]"], 
     "STRING_LITERAL1": ["valueLogical","*[&&, valueLogical]"], 
     "STRING_LITERAL2": ["valueLogical","*[&&, valueLogical]"], 
     "STRING_LITERAL_LONG1": ["valueLogical","*[&&, valueLogical]"], 
     "STRING_LITERAL_LONG2": ["valueLogical","*[&&, valueLogical]"], 
     "INTEGER": ["valueLogical","*[&&, valueLogical]"], 
     "DECIMAL": ["valueLogical","*[&&, valueLogical]"], 
     "DOUBLE": ["valueLogical","*[&&, valueLogical]"], 
     "INTEGER_POSITIVE": ["valueLogical","*[&&, valueLogical]"], 
     "DECIMAL_POSITIVE": ["valueLogical","*[&&, valueLogical]"], 
     "DOUBLE_POSITIVE": ["valueLogical","*[&&, valueLogical]"], 
     "INTEGER_NEGATIVE": ["valueLogical","*[&&, valueLogical]"], 
     "DECIMAL_NEGATIVE": ["valueLogical","*[&&, valueLogical]"], 
     "DOUBLE_NEGATIVE": ["valueLogical","*[&&, valueLogical]"], 
     "PNAME_LN": ["valueLogical","*[&&, valueLogical]"], 
     "PNAME_NS": ["valueLogical","*[&&, valueLogical]"]}, 
  "conditionalOrExpression" : {
     "!": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "+": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "-": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "VAR1": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "VAR2": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "(": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STR": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "LANG": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "LANGMATCHES": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DATATYPE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "BOUND": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "IRI": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "URI": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "BNODE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "RAND": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ABS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "CEIL": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "FLOOR": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ROUND": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "CONCAT": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRLEN": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "UCASE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "LCASE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ENCODE_FOR_URI": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "CONTAINS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRSTARTS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRENDS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRBEFORE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRAFTER": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "YEAR": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "MONTH": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DAY": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "HOURS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "MINUTES": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SECONDS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "TIMEZONE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "TZ": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "NOW": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "UUID": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRUUID": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "MD5": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SHA1": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SHA256": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SHA384": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SHA512": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "COALESCE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "IF": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRLANG": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRDT": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SAMETERM": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ISIRI": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ISURI": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ISBLANK": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ISLITERAL": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "ISNUMERIC": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "TRUE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "FALSE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "COUNT": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SUM": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "MIN": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "MAX": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "AVG": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SAMPLE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "GROUP_CONCAT": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "SUBSTR": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "REPLACE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "REGEX": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "EXISTS": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "NOT": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "IRI_REF": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRING_LITERAL1": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRING_LITERAL2": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRING_LITERAL_LONG1": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "STRING_LITERAL_LONG2": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "INTEGER": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DECIMAL": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DOUBLE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "INTEGER_POSITIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DECIMAL_POSITIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DOUBLE_POSITIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "INTEGER_NEGATIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DECIMAL_NEGATIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "DOUBLE_NEGATIVE": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "PNAME_LN": ["conditionalAndExpression","*[||, conditionalAndExpression]"], 
     "PNAME_NS": ["conditionalAndExpression","*[||, conditionalAndExpression]"]}, 
  "constraint" : {
     "(": ["brackettedExpression"], 
     "STR": ["builtInCall"], 
     "LANG": ["builtInCall"], 
     "LANGMATCHES": ["builtInCall"], 
     "DATATYPE": ["builtInCall"], 
     "BOUND": ["builtInCall"], 
     "IRI": ["builtInCall"], 
     "URI": ["builtInCall"], 
     "BNODE": ["builtInCall"], 
     "RAND": ["builtInCall"], 
     "ABS": ["builtInCall"], 
     "CEIL": ["builtInCall"], 
     "FLOOR": ["builtInCall"], 
     "ROUND": ["builtInCall"], 
     "CONCAT": ["builtInCall"], 
     "STRLEN": ["builtInCall"], 
     "UCASE": ["builtInCall"], 
     "LCASE": ["builtInCall"], 
     "ENCODE_FOR_URI": ["builtInCall"], 
     "CONTAINS": ["builtInCall"], 
     "STRSTARTS": ["builtInCall"], 
     "STRENDS": ["builtInCall"], 
     "STRBEFORE": ["builtInCall"], 
     "STRAFTER": ["builtInCall"], 
     "YEAR": ["builtInCall"], 
     "MONTH": ["builtInCall"], 
     "DAY": ["builtInCall"], 
     "HOURS": ["builtInCall"], 
     "MINUTES": ["builtInCall"], 
     "SECONDS": ["builtInCall"], 
     "TIMEZONE": ["builtInCall"], 
     "TZ": ["builtInCall"], 
     "NOW": ["builtInCall"], 
     "UUID": ["builtInCall"], 
     "STRUUID": ["builtInCall"], 
     "MD5": ["builtInCall"], 
     "SHA1": ["builtInCall"], 
     "SHA256": ["builtInCall"], 
     "SHA384": ["builtInCall"], 
     "SHA512": ["builtInCall"], 
     "COALESCE": ["builtInCall"], 
     "IF": ["builtInCall"], 
     "STRLANG": ["builtInCall"], 
     "STRDT": ["builtInCall"], 
     "SAMETERM": ["builtInCall"], 
     "ISIRI": ["builtInCall"], 
     "ISURI": ["builtInCall"], 
     "ISBLANK": ["builtInCall"], 
     "ISLITERAL": ["builtInCall"], 
     "ISNUMERIC": ["builtInCall"], 
     "SUBSTR": ["builtInCall"], 
     "REPLACE": ["builtInCall"], 
     "REGEX": ["builtInCall"], 
     "EXISTS": ["builtInCall"], 
     "NOT": ["builtInCall"], 
     "IRI_REF": ["functionCall"], 
     "PNAME_LN": ["functionCall"], 
     "PNAME_NS": ["functionCall"]}, 
  "constructQuery" : {
     "CONSTRUCT": ["CONSTRUCT","or([[constructTemplate, *datasetClause, whereClause, solutionModifier], [*datasetClause, WHERE, {, ?triplesTemplate, }, solutionModifier]])"]}, 
  "constructTemplate" : {
     "{": ["{","?constructTriples","}"]}, 
  "constructTriples" : {
     "VAR1": ["triplesSameSubject","?[., ?constructTriples]"], 
     "VAR2": ["triplesSameSubject","?[., ?constructTriples]"], 
     "NIL": ["triplesSameSubject","?[., ?constructTriples]"], 
     "(": ["triplesSameSubject","?[., ?constructTriples]"], 
     "[": ["triplesSameSubject","?[., ?constructTriples]"], 
     "IRI_REF": ["triplesSameSubject","?[., ?constructTriples]"], 
     "TRUE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "FALSE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "BLANK_NODE_LABEL": ["triplesSameSubject","?[., ?constructTriples]"], 
     "ANON": ["triplesSameSubject","?[., ?constructTriples]"], 
     "PNAME_LN": ["triplesSameSubject","?[., ?constructTriples]"], 
     "PNAME_NS": ["triplesSameSubject","?[., ?constructTriples]"], 
     "STRING_LITERAL1": ["triplesSameSubject","?[., ?constructTriples]"], 
     "STRING_LITERAL2": ["triplesSameSubject","?[., ?constructTriples]"], 
     "STRING_LITERAL_LONG1": ["triplesSameSubject","?[., ?constructTriples]"], 
     "STRING_LITERAL_LONG2": ["triplesSameSubject","?[., ?constructTriples]"], 
     "INTEGER": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DECIMAL": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DOUBLE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "INTEGER_POSITIVE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DECIMAL_POSITIVE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DOUBLE_POSITIVE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "INTEGER_NEGATIVE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DECIMAL_NEGATIVE": ["triplesSameSubject","?[., ?constructTriples]"], 
     "DOUBLE_NEGATIVE": ["triplesSameSubject","?[., ?constructTriples]"]}, 
  "dataBlock" : {
     "NIL": ["or([inlineDataOneVar, inlineDataFull])"], 
     "(": ["or([inlineDataOneVar, inlineDataFull])"], 
     "VAR1": ["or([inlineDataOneVar, inlineDataFull])"], 
     "VAR2": ["or([inlineDataOneVar, inlineDataFull])"]}, 
  "dataBlockValue" : {
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"], 
     "STRING_LITERAL1": ["rdfLiteral"], 
     "STRING_LITERAL2": ["rdfLiteral"], 
     "STRING_LITERAL_LONG1": ["rdfLiteral"], 
     "STRING_LITERAL_LONG2": ["rdfLiteral"], 
     "INTEGER": ["numericLiteral"], 
     "DECIMAL": ["numericLiteral"], 
     "DOUBLE": ["numericLiteral"], 
     "INTEGER_POSITIVE": ["numericLiteral"], 
     "DECIMAL_POSITIVE": ["numericLiteral"], 
     "DOUBLE_POSITIVE": ["numericLiteral"], 
     "INTEGER_NEGATIVE": ["numericLiteral"], 
     "DECIMAL_NEGATIVE": ["numericLiteral"], 
     "DOUBLE_NEGATIVE": ["numericLiteral"], 
     "TRUE": ["booleanLiteral"], 
     "FALSE": ["booleanLiteral"], 
     "UNDEF": ["UNDEF"]}, 
  "datasetClause" : {
     "FROM": ["FROM","or([defaultGraphClause, namedGraphClause])"]}, 
  "defaultGraphClause" : {
     "IRI_REF": ["sourceSelector"], 
     "PNAME_LN": ["sourceSelector"], 
     "PNAME_NS": ["sourceSelector"]}, 
  "describeDatasetClause" : {
     "FROM": ["FROM","or([defaultGraphClause, namedGraphClause])"]}, 
  "describeQuery" : {
     "DESCRIBE": ["DESCRIBE","or([+varOrIRIref, *])","*describeDatasetClause","?whereClause","solutionModifier"]}, 
  "existsFunc" : {
     "EXISTS": ["EXISTS","groupGraphPattern"]}, 
  "expression" : {
     "!": ["conditionalOrExpression"], 
     "+": ["conditionalOrExpression"], 
     "-": ["conditionalOrExpression"], 
     "VAR1": ["conditionalOrExpression"], 
     "VAR2": ["conditionalOrExpression"], 
     "(": ["conditionalOrExpression"], 
     "STR": ["conditionalOrExpression"], 
     "LANG": ["conditionalOrExpression"], 
     "LANGMATCHES": ["conditionalOrExpression"], 
     "DATATYPE": ["conditionalOrExpression"], 
     "BOUND": ["conditionalOrExpression"], 
     "IRI": ["conditionalOrExpression"], 
     "URI": ["conditionalOrExpression"], 
     "BNODE": ["conditionalOrExpression"], 
     "RAND": ["conditionalOrExpression"], 
     "ABS": ["conditionalOrExpression"], 
     "CEIL": ["conditionalOrExpression"], 
     "FLOOR": ["conditionalOrExpression"], 
     "ROUND": ["conditionalOrExpression"], 
     "CONCAT": ["conditionalOrExpression"], 
     "STRLEN": ["conditionalOrExpression"], 
     "UCASE": ["conditionalOrExpression"], 
     "LCASE": ["conditionalOrExpression"], 
     "ENCODE_FOR_URI": ["conditionalOrExpression"], 
     "CONTAINS": ["conditionalOrExpression"], 
     "STRSTARTS": ["conditionalOrExpression"], 
     "STRENDS": ["conditionalOrExpression"], 
     "STRBEFORE": ["conditionalOrExpression"], 
     "STRAFTER": ["conditionalOrExpression"], 
     "YEAR": ["conditionalOrExpression"], 
     "MONTH": ["conditionalOrExpression"], 
     "DAY": ["conditionalOrExpression"], 
     "HOURS": ["conditionalOrExpression"], 
     "MINUTES": ["conditionalOrExpression"], 
     "SECONDS": ["conditionalOrExpression"], 
     "TIMEZONE": ["conditionalOrExpression"], 
     "TZ": ["conditionalOrExpression"], 
     "NOW": ["conditionalOrExpression"], 
     "UUID": ["conditionalOrExpression"], 
     "STRUUID": ["conditionalOrExpression"], 
     "MD5": ["conditionalOrExpression"], 
     "SHA1": ["conditionalOrExpression"], 
     "SHA256": ["conditionalOrExpression"], 
     "SHA384": ["conditionalOrExpression"], 
     "SHA512": ["conditionalOrExpression"], 
     "COALESCE": ["conditionalOrExpression"], 
     "IF": ["conditionalOrExpression"], 
     "STRLANG": ["conditionalOrExpression"], 
     "STRDT": ["conditionalOrExpression"], 
     "SAMETERM": ["conditionalOrExpression"], 
     "ISIRI": ["conditionalOrExpression"], 
     "ISURI": ["conditionalOrExpression"], 
     "ISBLANK": ["conditionalOrExpression"], 
     "ISLITERAL": ["conditionalOrExpression"], 
     "ISNUMERIC": ["conditionalOrExpression"], 
     "TRUE": ["conditionalOrExpression"], 
     "FALSE": ["conditionalOrExpression"], 
     "COUNT": ["conditionalOrExpression"], 
     "SUM": ["conditionalOrExpression"], 
     "MIN": ["conditionalOrExpression"], 
     "MAX": ["conditionalOrExpression"], 
     "AVG": ["conditionalOrExpression"], 
     "SAMPLE": ["conditionalOrExpression"], 
     "GROUP_CONCAT": ["conditionalOrExpression"], 
     "SUBSTR": ["conditionalOrExpression"], 
     "REPLACE": ["conditionalOrExpression"], 
     "REGEX": ["conditionalOrExpression"], 
     "EXISTS": ["conditionalOrExpression"], 
     "NOT": ["conditionalOrExpression"], 
     "IRI_REF": ["conditionalOrExpression"], 
     "STRING_LITERAL1": ["conditionalOrExpression"], 
     "STRING_LITERAL2": ["conditionalOrExpression"], 
     "STRING_LITERAL_LONG1": ["conditionalOrExpression"], 
     "STRING_LITERAL_LONG2": ["conditionalOrExpression"], 
     "INTEGER": ["conditionalOrExpression"], 
     "DECIMAL": ["conditionalOrExpression"], 
     "DOUBLE": ["conditionalOrExpression"], 
     "INTEGER_POSITIVE": ["conditionalOrExpression"], 
     "DECIMAL_POSITIVE": ["conditionalOrExpression"], 
     "DOUBLE_POSITIVE": ["conditionalOrExpression"], 
     "INTEGER_NEGATIVE": ["conditionalOrExpression"], 
     "DECIMAL_NEGATIVE": ["conditionalOrExpression"], 
     "DOUBLE_NEGATIVE": ["conditionalOrExpression"], 
     "PNAME_LN": ["conditionalOrExpression"], 
     "PNAME_NS": ["conditionalOrExpression"]}, 
  "expressionList" : {
     "NIL": ["NIL"], 
     "(": ["(","expression","*[ (,), expression]",")"]}, 
  "filter" : {
     "FILTER": ["FILTER","constraint"]}, 
  "functionCall" : {
     "IRI_REF": ["iriRef","argList"], 
     "PNAME_LN": ["iriRef","argList"], 
     "PNAME_NS": ["iriRef","argList"]}, 
  "graphGraphPattern" : {
     "GRAPH": ["GRAPH","varOrIRIref","groupGraphPattern"]}, 
  "graphNode" : {
     "VAR1": ["varOrTerm"], 
     "VAR2": ["varOrTerm"], 
     "NIL": ["varOrTerm"], 
     "IRI_REF": ["varOrTerm"], 
     "TRUE": ["varOrTerm"], 
     "FALSE": ["varOrTerm"], 
     "BLANK_NODE_LABEL": ["varOrTerm"], 
     "ANON": ["varOrTerm"], 
     "PNAME_LN": ["varOrTerm"], 
     "PNAME_NS": ["varOrTerm"], 
     "STRING_LITERAL1": ["varOrTerm"], 
     "STRING_LITERAL2": ["varOrTerm"], 
     "STRING_LITERAL_LONG1": ["varOrTerm"], 
     "STRING_LITERAL_LONG2": ["varOrTerm"], 
     "INTEGER": ["varOrTerm"], 
     "DECIMAL": ["varOrTerm"], 
     "DOUBLE": ["varOrTerm"], 
     "INTEGER_POSITIVE": ["varOrTerm"], 
     "DECIMAL_POSITIVE": ["varOrTerm"], 
     "DOUBLE_POSITIVE": ["varOrTerm"], 
     "INTEGER_NEGATIVE": ["varOrTerm"], 
     "DECIMAL_NEGATIVE": ["varOrTerm"], 
     "DOUBLE_NEGATIVE": ["varOrTerm"], 
     "(": ["triplesNode"], 
     "[": ["triplesNode"]}, 
  "graphNodePath" : {
     "VAR1": ["varOrTerm"], 
     "VAR2": ["varOrTerm"], 
     "NIL": ["varOrTerm"], 
     "IRI_REF": ["varOrTerm"], 
     "TRUE": ["varOrTerm"], 
     "FALSE": ["varOrTerm"], 
     "BLANK_NODE_LABEL": ["varOrTerm"], 
     "ANON": ["varOrTerm"], 
     "PNAME_LN": ["varOrTerm"], 
     "PNAME_NS": ["varOrTerm"], 
     "STRING_LITERAL1": ["varOrTerm"], 
     "STRING_LITERAL2": ["varOrTerm"], 
     "STRING_LITERAL_LONG1": ["varOrTerm"], 
     "STRING_LITERAL_LONG2": ["varOrTerm"], 
     "INTEGER": ["varOrTerm"], 
     "DECIMAL": ["varOrTerm"], 
     "DOUBLE": ["varOrTerm"], 
     "INTEGER_POSITIVE": ["varOrTerm"], 
     "DECIMAL_POSITIVE": ["varOrTerm"], 
     "DOUBLE_POSITIVE": ["varOrTerm"], 
     "INTEGER_NEGATIVE": ["varOrTerm"], 
     "DECIMAL_NEGATIVE": ["varOrTerm"], 
     "DOUBLE_NEGATIVE": ["varOrTerm"], 
     "(": ["triplesNodePath"], 
     "[": ["triplesNodePath"]}, 
  "graphPatternNotTriples" : {
     "{": ["groupOrUnionGraphPattern"], 
     "OPTIONAL": ["optionalGraphPattern"], 
     "MINUS": ["minusGraphPattern"], 
     "GRAPH": ["graphGraphPattern"], 
     "SERVICE": ["serviceGraphPattern"], 
     "FILTER": ["filter"], 
     "BIND": ["bind"], 
     "VALUES": ["inlineData"]}, 
  "graphTerm" : {
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"], 
     "STRING_LITERAL1": ["rdfLiteral"], 
     "STRING_LITERAL2": ["rdfLiteral"], 
     "STRING_LITERAL_LONG1": ["rdfLiteral"], 
     "STRING_LITERAL_LONG2": ["rdfLiteral"], 
     "INTEGER": ["numericLiteral"], 
     "DECIMAL": ["numericLiteral"], 
     "DOUBLE": ["numericLiteral"], 
     "INTEGER_POSITIVE": ["numericLiteral"], 
     "DECIMAL_POSITIVE": ["numericLiteral"], 
     "DOUBLE_POSITIVE": ["numericLiteral"], 
     "INTEGER_NEGATIVE": ["numericLiteral"], 
     "DECIMAL_NEGATIVE": ["numericLiteral"], 
     "DOUBLE_NEGATIVE": ["numericLiteral"], 
     "TRUE": ["booleanLiteral"], 
     "FALSE": ["booleanLiteral"], 
     "BLANK_NODE_LABEL": ["blankNode"], 
     "ANON": ["blankNode"], 
     "NIL": ["NIL"]}, 
  "groupClause" : {
     "GROUP": ["GROUP","BY","+groupCondition"]}, 
  "groupCondition" : {
     "STR": ["builtInCall"], 
     "LANG": ["builtInCall"], 
     "LANGMATCHES": ["builtInCall"], 
     "DATATYPE": ["builtInCall"], 
     "BOUND": ["builtInCall"], 
     "IRI": ["builtInCall"], 
     "URI": ["builtInCall"], 
     "BNODE": ["builtInCall"], 
     "RAND": ["builtInCall"], 
     "ABS": ["builtInCall"], 
     "CEIL": ["builtInCall"], 
     "FLOOR": ["builtInCall"], 
     "ROUND": ["builtInCall"], 
     "CONCAT": ["builtInCall"], 
     "STRLEN": ["builtInCall"], 
     "UCASE": ["builtInCall"], 
     "LCASE": ["builtInCall"], 
     "ENCODE_FOR_URI": ["builtInCall"], 
     "CONTAINS": ["builtInCall"], 
     "STRSTARTS": ["builtInCall"], 
     "STRENDS": ["builtInCall"], 
     "STRBEFORE": ["builtInCall"], 
     "STRAFTER": ["builtInCall"], 
     "YEAR": ["builtInCall"], 
     "MONTH": ["builtInCall"], 
     "DAY": ["builtInCall"], 
     "HOURS": ["builtInCall"], 
     "MINUTES": ["builtInCall"], 
     "SECONDS": ["builtInCall"], 
     "TIMEZONE": ["builtInCall"], 
     "TZ": ["builtInCall"], 
     "NOW": ["builtInCall"], 
     "UUID": ["builtInCall"], 
     "STRUUID": ["builtInCall"], 
     "MD5": ["builtInCall"], 
     "SHA1": ["builtInCall"], 
     "SHA256": ["builtInCall"], 
     "SHA384": ["builtInCall"], 
     "SHA512": ["builtInCall"], 
     "COALESCE": ["builtInCall"], 
     "IF": ["builtInCall"], 
     "STRLANG": ["builtInCall"], 
     "STRDT": ["builtInCall"], 
     "SAMETERM": ["builtInCall"], 
     "ISIRI": ["builtInCall"], 
     "ISURI": ["builtInCall"], 
     "ISBLANK": ["builtInCall"], 
     "ISLITERAL": ["builtInCall"], 
     "ISNUMERIC": ["builtInCall"], 
     "SUBSTR": ["builtInCall"], 
     "REPLACE": ["builtInCall"], 
     "REGEX": ["builtInCall"], 
     "EXISTS": ["builtInCall"], 
     "NOT": ["builtInCall"], 
     "IRI_REF": ["functionCall"], 
     "PNAME_LN": ["functionCall"], 
     "PNAME_NS": ["functionCall"], 
     "(": ["(","expression","?[AS, var]",")"], 
     "VAR1": ["var"], 
     "VAR2": ["var"]}, 
  "groupGraphPattern" : {
     "{": ["{","or([subSelect, groupGraphPatternSub])","}"]}, 
  "groupGraphPatternSub" : {
     "{": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "OPTIONAL": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "MINUS": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "GRAPH": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "SERVICE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "FILTER": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "BIND": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "VALUES": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "VAR1": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "VAR2": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "NIL": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "(": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "[": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "IRI_REF": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "TRUE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "FALSE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "BLANK_NODE_LABEL": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "ANON": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "PNAME_LN": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "PNAME_NS": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "STRING_LITERAL1": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "STRING_LITERAL2": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "STRING_LITERAL_LONG1": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "STRING_LITERAL_LONG2": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "INTEGER": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DECIMAL": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DOUBLE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "INTEGER_POSITIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DECIMAL_POSITIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DOUBLE_POSITIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "INTEGER_NEGATIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DECIMAL_NEGATIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "DOUBLE_NEGATIVE": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"], 
     "}": ["?triplesBlock","*[graphPatternNotTriples, ?., ?triplesBlock]"]}, 
  "groupOrUnionGraphPattern" : {
     "{": ["groupGraphPattern","*[UNION, groupGraphPattern]"]}, 
  "havingClause" : {
     "HAVING": ["HAVING","+havingCondition"]}, 
  "havingCondition" : {
     "(": ["constraint"], 
     "STR": ["constraint"], 
     "LANG": ["constraint"], 
     "LANGMATCHES": ["constraint"], 
     "DATATYPE": ["constraint"], 
     "BOUND": ["constraint"], 
     "IRI": ["constraint"], 
     "URI": ["constraint"], 
     "BNODE": ["constraint"], 
     "RAND": ["constraint"], 
     "ABS": ["constraint"], 
     "CEIL": ["constraint"], 
     "FLOOR": ["constraint"], 
     "ROUND": ["constraint"], 
     "CONCAT": ["constraint"], 
     "STRLEN": ["constraint"], 
     "UCASE": ["constraint"], 
     "LCASE": ["constraint"], 
     "ENCODE_FOR_URI": ["constraint"], 
     "CONTAINS": ["constraint"], 
     "STRSTARTS": ["constraint"], 
     "STRENDS": ["constraint"], 
     "STRBEFORE": ["constraint"], 
     "STRAFTER": ["constraint"], 
     "YEAR": ["constraint"], 
     "MONTH": ["constraint"], 
     "DAY": ["constraint"], 
     "HOURS": ["constraint"], 
     "MINUTES": ["constraint"], 
     "SECONDS": ["constraint"], 
     "TIMEZONE": ["constraint"], 
     "TZ": ["constraint"], 
     "NOW": ["constraint"], 
     "UUID": ["constraint"], 
     "STRUUID": ["constraint"], 
     "MD5": ["constraint"], 
     "SHA1": ["constraint"], 
     "SHA256": ["constraint"], 
     "SHA384": ["constraint"], 
     "SHA512": ["constraint"], 
     "COALESCE": ["constraint"], 
     "IF": ["constraint"], 
     "STRLANG": ["constraint"], 
     "STRDT": ["constraint"], 
     "SAMETERM": ["constraint"], 
     "ISIRI": ["constraint"], 
     "ISURI": ["constraint"], 
     "ISBLANK": ["constraint"], 
     "ISLITERAL": ["constraint"], 
     "ISNUMERIC": ["constraint"], 
     "SUBSTR": ["constraint"], 
     "REPLACE": ["constraint"], 
     "REGEX": ["constraint"], 
     "EXISTS": ["constraint"], 
     "NOT": ["constraint"], 
     "IRI_REF": ["constraint"], 
     "PNAME_LN": ["constraint"], 
     "PNAME_NS": ["constraint"]}, 
  "inlineData" : {
     "VALUES": ["VALUES","dataBlock"]}, 
  "inlineDataFull" : {
     "NIL": ["or([NIL, [ (, *var, )]])","{","*or([[ (, *dataBlockValue, )], NIL])","}"], 
     "(": ["or([NIL, [ (, *var, )]])","{","*or([[ (, *dataBlockValue, )], NIL])","}"]}, 
  "inlineDataOneVar" : {
     "VAR1": ["var","{","*dataBlockValue","}"], 
     "VAR2": ["var","{","*dataBlockValue","}"]}, 
  "integer" : {
     "INTEGER": ["INTEGER"]}, 
  "iriRef" : {
     "IRI_REF": ["IRI_REF"], 
     "PNAME_LN": ["prefixedName"], 
     "PNAME_NS": ["prefixedName"]}, 
  "iriRefOrFunction" : {
     "IRI_REF": ["iriRef","?argList"], 
     "PNAME_LN": ["iriRef","?argList"], 
     "PNAME_NS": ["iriRef","?argList"]}, 
  "limitClause" : {
     "LIMIT": ["LIMIT","INTEGER"]}, 
  "limitOffsetClauses" : {
     "LIMIT": ["limitClause","?offsetClause"], 
     "OFFSET": ["offsetClause","?limitClause"]}, 
  "minusGraphPattern" : {
     "MINUS": ["MINUS","groupGraphPattern"]}, 
  "multiplicativeExpression" : {
     "!": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "+": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "-": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "VAR1": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "VAR2": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "(": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STR": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "LANG": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "LANGMATCHES": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DATATYPE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "BOUND": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "IRI": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "URI": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "BNODE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "RAND": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ABS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "CEIL": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "FLOOR": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ROUND": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "CONCAT": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRLEN": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "UCASE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "LCASE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ENCODE_FOR_URI": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "CONTAINS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRSTARTS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRENDS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRBEFORE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRAFTER": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "YEAR": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "MONTH": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DAY": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "HOURS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "MINUTES": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SECONDS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "TIMEZONE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "TZ": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "NOW": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "UUID": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRUUID": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "MD5": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SHA1": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SHA256": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SHA384": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SHA512": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "COALESCE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "IF": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRLANG": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRDT": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SAMETERM": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ISIRI": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ISURI": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ISBLANK": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ISLITERAL": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "ISNUMERIC": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "TRUE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "FALSE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "COUNT": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SUM": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "MIN": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "MAX": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "AVG": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SAMPLE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "GROUP_CONCAT": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "SUBSTR": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "REPLACE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "REGEX": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "EXISTS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "NOT": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "IRI_REF": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRING_LITERAL1": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRING_LITERAL2": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRING_LITERAL_LONG1": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "STRING_LITERAL_LONG2": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "INTEGER": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DECIMAL": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DOUBLE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "INTEGER_POSITIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DECIMAL_POSITIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DOUBLE_POSITIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "INTEGER_NEGATIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DECIMAL_NEGATIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "DOUBLE_NEGATIVE": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "PNAME_LN": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"], 
     "PNAME_NS": ["unaryExpression","*or([[*, unaryExpression], [/, unaryExpression]])"]}, 
  "namedGraphClause" : {
     "NAMED": ["NAMED","sourceSelector"]}, 
  "notExistsFunc" : {
     "NOT": ["NOT","EXISTS","groupGraphPattern"]}, 
  "numericExpression" : {
     "!": ["additiveExpression"], 
     "+": ["additiveExpression"], 
     "-": ["additiveExpression"], 
     "VAR1": ["additiveExpression"], 
     "VAR2": ["additiveExpression"], 
     "(": ["additiveExpression"], 
     "STR": ["additiveExpression"], 
     "LANG": ["additiveExpression"], 
     "LANGMATCHES": ["additiveExpression"], 
     "DATATYPE": ["additiveExpression"], 
     "BOUND": ["additiveExpression"], 
     "IRI": ["additiveExpression"], 
     "URI": ["additiveExpression"], 
     "BNODE": ["additiveExpression"], 
     "RAND": ["additiveExpression"], 
     "ABS": ["additiveExpression"], 
     "CEIL": ["additiveExpression"], 
     "FLOOR": ["additiveExpression"], 
     "ROUND": ["additiveExpression"], 
     "CONCAT": ["additiveExpression"], 
     "STRLEN": ["additiveExpression"], 
     "UCASE": ["additiveExpression"], 
     "LCASE": ["additiveExpression"], 
     "ENCODE_FOR_URI": ["additiveExpression"], 
     "CONTAINS": ["additiveExpression"], 
     "STRSTARTS": ["additiveExpression"], 
     "STRENDS": ["additiveExpression"], 
     "STRBEFORE": ["additiveExpression"], 
     "STRAFTER": ["additiveExpression"], 
     "YEAR": ["additiveExpression"], 
     "MONTH": ["additiveExpression"], 
     "DAY": ["additiveExpression"], 
     "HOURS": ["additiveExpression"], 
     "MINUTES": ["additiveExpression"], 
     "SECONDS": ["additiveExpression"], 
     "TIMEZONE": ["additiveExpression"], 
     "TZ": ["additiveExpression"], 
     "NOW": ["additiveExpression"], 
     "UUID": ["additiveExpression"], 
     "STRUUID": ["additiveExpression"], 
     "MD5": ["additiveExpression"], 
     "SHA1": ["additiveExpression"], 
     "SHA256": ["additiveExpression"], 
     "SHA384": ["additiveExpression"], 
     "SHA512": ["additiveExpression"], 
     "COALESCE": ["additiveExpression"], 
     "IF": ["additiveExpression"], 
     "STRLANG": ["additiveExpression"], 
     "STRDT": ["additiveExpression"], 
     "SAMETERM": ["additiveExpression"], 
     "ISIRI": ["additiveExpression"], 
     "ISURI": ["additiveExpression"], 
     "ISBLANK": ["additiveExpression"], 
     "ISLITERAL": ["additiveExpression"], 
     "ISNUMERIC": ["additiveExpression"], 
     "TRUE": ["additiveExpression"], 
     "FALSE": ["additiveExpression"], 
     "COUNT": ["additiveExpression"], 
     "SUM": ["additiveExpression"], 
     "MIN": ["additiveExpression"], 
     "MAX": ["additiveExpression"], 
     "AVG": ["additiveExpression"], 
     "SAMPLE": ["additiveExpression"], 
     "GROUP_CONCAT": ["additiveExpression"], 
     "SUBSTR": ["additiveExpression"], 
     "REPLACE": ["additiveExpression"], 
     "REGEX": ["additiveExpression"], 
     "EXISTS": ["additiveExpression"], 
     "NOT": ["additiveExpression"], 
     "IRI_REF": ["additiveExpression"], 
     "STRING_LITERAL1": ["additiveExpression"], 
     "STRING_LITERAL2": ["additiveExpression"], 
     "STRING_LITERAL_LONG1": ["additiveExpression"], 
     "STRING_LITERAL_LONG2": ["additiveExpression"], 
     "INTEGER": ["additiveExpression"], 
     "DECIMAL": ["additiveExpression"], 
     "DOUBLE": ["additiveExpression"], 
     "INTEGER_POSITIVE": ["additiveExpression"], 
     "DECIMAL_POSITIVE": ["additiveExpression"], 
     "DOUBLE_POSITIVE": ["additiveExpression"], 
     "INTEGER_NEGATIVE": ["additiveExpression"], 
     "DECIMAL_NEGATIVE": ["additiveExpression"], 
     "DOUBLE_NEGATIVE": ["additiveExpression"], 
     "PNAME_LN": ["additiveExpression"], 
     "PNAME_NS": ["additiveExpression"]}, 
  "numericLiteral" : {
     "INTEGER": ["numericLiteralUnsigned"], 
     "DECIMAL": ["numericLiteralUnsigned"], 
     "DOUBLE": ["numericLiteralUnsigned"], 
     "INTEGER_POSITIVE": ["numericLiteralPositive"], 
     "DECIMAL_POSITIVE": ["numericLiteralPositive"], 
     "DOUBLE_POSITIVE": ["numericLiteralPositive"], 
     "INTEGER_NEGATIVE": ["numericLiteralNegative"], 
     "DECIMAL_NEGATIVE": ["numericLiteralNegative"], 
     "DOUBLE_NEGATIVE": ["numericLiteralNegative"]}, 
  "numericLiteralNegative" : {
     "INTEGER_NEGATIVE": ["INTEGER_NEGATIVE"], 
     "DECIMAL_NEGATIVE": ["DECIMAL_NEGATIVE"], 
     "DOUBLE_NEGATIVE": ["DOUBLE_NEGATIVE"]}, 
  "numericLiteralPositive" : {
     "INTEGER_POSITIVE": ["INTEGER_POSITIVE"], 
     "DECIMAL_POSITIVE": ["DECIMAL_POSITIVE"], 
     "DOUBLE_POSITIVE": ["DOUBLE_POSITIVE"]}, 
  "numericLiteralUnsigned" : {
     "INTEGER": ["INTEGER"], 
     "DECIMAL": ["DECIMAL"], 
     "DOUBLE": ["DOUBLE"]}, 
  "object" : {
     "(": ["graphNode"], 
     "[": ["graphNode"], 
     "VAR1": ["graphNode"], 
     "VAR2": ["graphNode"], 
     "NIL": ["graphNode"], 
     "IRI_REF": ["graphNode"], 
     "TRUE": ["graphNode"], 
     "FALSE": ["graphNode"], 
     "BLANK_NODE_LABEL": ["graphNode"], 
     "ANON": ["graphNode"], 
     "PNAME_LN": ["graphNode"], 
     "PNAME_NS": ["graphNode"], 
     "STRING_LITERAL1": ["graphNode"], 
     "STRING_LITERAL2": ["graphNode"], 
     "STRING_LITERAL_LONG1": ["graphNode"], 
     "STRING_LITERAL_LONG2": ["graphNode"], 
     "INTEGER": ["graphNode"], 
     "DECIMAL": ["graphNode"], 
     "DOUBLE": ["graphNode"], 
     "INTEGER_POSITIVE": ["graphNode"], 
     "DECIMAL_POSITIVE": ["graphNode"], 
     "DOUBLE_POSITIVE": ["graphNode"], 
     "INTEGER_NEGATIVE": ["graphNode"], 
     "DECIMAL_NEGATIVE": ["graphNode"], 
     "DOUBLE_NEGATIVE": ["graphNode"]}, 
  "objectList" : {
     "(": ["object","*[ (,), object]"], 
     "[": ["object","*[ (,), object]"], 
     "VAR1": ["object","*[ (,), object]"], 
     "VAR2": ["object","*[ (,), object]"], 
     "NIL": ["object","*[ (,), object]"], 
     "IRI_REF": ["object","*[ (,), object]"], 
     "TRUE": ["object","*[ (,), object]"], 
     "FALSE": ["object","*[ (,), object]"], 
     "BLANK_NODE_LABEL": ["object","*[ (,), object]"], 
     "ANON": ["object","*[ (,), object]"], 
     "PNAME_LN": ["object","*[ (,), object]"], 
     "PNAME_NS": ["object","*[ (,), object]"], 
     "STRING_LITERAL1": ["object","*[ (,), object]"], 
     "STRING_LITERAL2": ["object","*[ (,), object]"], 
     "STRING_LITERAL_LONG1": ["object","*[ (,), object]"], 
     "STRING_LITERAL_LONG2": ["object","*[ (,), object]"], 
     "INTEGER": ["object","*[ (,), object]"], 
     "DECIMAL": ["object","*[ (,), object]"], 
     "DOUBLE": ["object","*[ (,), object]"], 
     "INTEGER_POSITIVE": ["object","*[ (,), object]"], 
     "DECIMAL_POSITIVE": ["object","*[ (,), object]"], 
     "DOUBLE_POSITIVE": ["object","*[ (,), object]"], 
     "INTEGER_NEGATIVE": ["object","*[ (,), object]"], 
     "DECIMAL_NEGATIVE": ["object","*[ (,), object]"], 
     "DOUBLE_NEGATIVE": ["object","*[ (,), object]"]}, 
  "objectListPath" : {
     "(": ["objectPath","*[ (,), objectPath]"], 
     "[": ["objectPath","*[ (,), objectPath]"], 
     "VAR1": ["objectPath","*[ (,), objectPath]"], 
     "VAR2": ["objectPath","*[ (,), objectPath]"], 
     "NIL": ["objectPath","*[ (,), objectPath]"], 
     "IRI_REF": ["objectPath","*[ (,), objectPath]"], 
     "TRUE": ["objectPath","*[ (,), objectPath]"], 
     "FALSE": ["objectPath","*[ (,), objectPath]"], 
     "BLANK_NODE_LABEL": ["objectPath","*[ (,), objectPath]"], 
     "ANON": ["objectPath","*[ (,), objectPath]"], 
     "PNAME_LN": ["objectPath","*[ (,), objectPath]"], 
     "PNAME_NS": ["objectPath","*[ (,), objectPath]"], 
     "STRING_LITERAL1": ["objectPath","*[ (,), objectPath]"], 
     "STRING_LITERAL2": ["objectPath","*[ (,), objectPath]"], 
     "STRING_LITERAL_LONG1": ["objectPath","*[ (,), objectPath]"], 
     "STRING_LITERAL_LONG2": ["objectPath","*[ (,), objectPath]"], 
     "INTEGER": ["objectPath","*[ (,), objectPath]"], 
     "DECIMAL": ["objectPath","*[ (,), objectPath]"], 
     "DOUBLE": ["objectPath","*[ (,), objectPath]"], 
     "INTEGER_POSITIVE": ["objectPath","*[ (,), objectPath]"], 
     "DECIMAL_POSITIVE": ["objectPath","*[ (,), objectPath]"], 
     "DOUBLE_POSITIVE": ["objectPath","*[ (,), objectPath]"], 
     "INTEGER_NEGATIVE": ["objectPath","*[ (,), objectPath]"], 
     "DECIMAL_NEGATIVE": ["objectPath","*[ (,), objectPath]"], 
     "DOUBLE_NEGATIVE": ["objectPath","*[ (,), objectPath]"]}, 
  "objectPath" : {
     "(": ["graphNodePath"], 
     "[": ["graphNodePath"], 
     "VAR1": ["graphNodePath"], 
     "VAR2": ["graphNodePath"], 
     "NIL": ["graphNodePath"], 
     "IRI_REF": ["graphNodePath"], 
     "TRUE": ["graphNodePath"], 
     "FALSE": ["graphNodePath"], 
     "BLANK_NODE_LABEL": ["graphNodePath"], 
     "ANON": ["graphNodePath"], 
     "PNAME_LN": ["graphNodePath"], 
     "PNAME_NS": ["graphNodePath"], 
     "STRING_LITERAL1": ["graphNodePath"], 
     "STRING_LITERAL2": ["graphNodePath"], 
     "STRING_LITERAL_LONG1": ["graphNodePath"], 
     "STRING_LITERAL_LONG2": ["graphNodePath"], 
     "INTEGER": ["graphNodePath"], 
     "DECIMAL": ["graphNodePath"], 
     "DOUBLE": ["graphNodePath"], 
     "INTEGER_POSITIVE": ["graphNodePath"], 
     "DECIMAL_POSITIVE": ["graphNodePath"], 
     "DOUBLE_POSITIVE": ["graphNodePath"], 
     "INTEGER_NEGATIVE": ["graphNodePath"], 
     "DECIMAL_NEGATIVE": ["graphNodePath"], 
     "DOUBLE_NEGATIVE": ["graphNodePath"]}, 
  "offsetClause" : {
     "OFFSET": ["OFFSET","INTEGER"]}, 
  "optionalGraphPattern" : {
     "OPTIONAL": ["OPTIONAL","groupGraphPattern"]}, 
  "or([*, expression])" : {
     "*": ["*"], 
     "!": ["expression"], 
     "+": ["expression"], 
     "-": ["expression"], 
     "VAR1": ["expression"], 
     "VAR2": ["expression"], 
     "(": ["expression"], 
     "STR": ["expression"], 
     "LANG": ["expression"], 
     "LANGMATCHES": ["expression"], 
     "DATATYPE": ["expression"], 
     "BOUND": ["expression"], 
     "IRI": ["expression"], 
     "URI": ["expression"], 
     "BNODE": ["expression"], 
     "RAND": ["expression"], 
     "ABS": ["expression"], 
     "CEIL": ["expression"], 
     "FLOOR": ["expression"], 
     "ROUND": ["expression"], 
     "CONCAT": ["expression"], 
     "STRLEN": ["expression"], 
     "UCASE": ["expression"], 
     "LCASE": ["expression"], 
     "ENCODE_FOR_URI": ["expression"], 
     "CONTAINS": ["expression"], 
     "STRSTARTS": ["expression"], 
     "STRENDS": ["expression"], 
     "STRBEFORE": ["expression"], 
     "STRAFTER": ["expression"], 
     "YEAR": ["expression"], 
     "MONTH": ["expression"], 
     "DAY": ["expression"], 
     "HOURS": ["expression"], 
     "MINUTES": ["expression"], 
     "SECONDS": ["expression"], 
     "TIMEZONE": ["expression"], 
     "TZ": ["expression"], 
     "NOW": ["expression"], 
     "UUID": ["expression"], 
     "STRUUID": ["expression"], 
     "MD5": ["expression"], 
     "SHA1": ["expression"], 
     "SHA256": ["expression"], 
     "SHA384": ["expression"], 
     "SHA512": ["expression"], 
     "COALESCE": ["expression"], 
     "IF": ["expression"], 
     "STRLANG": ["expression"], 
     "STRDT": ["expression"], 
     "SAMETERM": ["expression"], 
     "ISIRI": ["expression"], 
     "ISURI": ["expression"], 
     "ISBLANK": ["expression"], 
     "ISLITERAL": ["expression"], 
     "ISNUMERIC": ["expression"], 
     "TRUE": ["expression"], 
     "FALSE": ["expression"], 
     "COUNT": ["expression"], 
     "SUM": ["expression"], 
     "MIN": ["expression"], 
     "MAX": ["expression"], 
     "AVG": ["expression"], 
     "SAMPLE": ["expression"], 
     "GROUP_CONCAT": ["expression"], 
     "SUBSTR": ["expression"], 
     "REPLACE": ["expression"], 
     "REGEX": ["expression"], 
     "EXISTS": ["expression"], 
     "NOT": ["expression"], 
     "IRI_REF": ["expression"], 
     "STRING_LITERAL1": ["expression"], 
     "STRING_LITERAL2": ["expression"], 
     "STRING_LITERAL_LONG1": ["expression"], 
     "STRING_LITERAL_LONG2": ["expression"], 
     "INTEGER": ["expression"], 
     "DECIMAL": ["expression"], 
     "DOUBLE": ["expression"], 
     "INTEGER_POSITIVE": ["expression"], 
     "DECIMAL_POSITIVE": ["expression"], 
     "DOUBLE_POSITIVE": ["expression"], 
     "INTEGER_NEGATIVE": ["expression"], 
     "DECIMAL_NEGATIVE": ["expression"], 
     "DOUBLE_NEGATIVE": ["expression"], 
     "PNAME_LN": ["expression"], 
     "PNAME_NS": ["expression"]}, 
  "or([+or([var, [ (, expression, AS, var, )]]), *])" : {
     "(": ["+or([var, [ (, expression, AS, var, )]])"], 
     "VAR1": ["+or([var, [ (, expression, AS, var, )]])"], 
     "VAR2": ["+or([var, [ (, expression, AS, var, )]])"], 
     "*": ["*"]}, 
  "or([+varOrIRIref, *])" : {
     "VAR1": ["+varOrIRIref"], 
     "VAR2": ["+varOrIRIref"], 
     "IRI_REF": ["+varOrIRIref"], 
     "PNAME_LN": ["+varOrIRIref"], 
     "PNAME_NS": ["+varOrIRIref"], 
     "*": ["*"]}, 
  "or([ASC, DESC])" : {
     "ASC": ["ASC"], 
     "DESC": ["DESC"]}, 
  "or([DISTINCT, REDUCED])" : {
     "DISTINCT": ["DISTINCT"], 
     "REDUCED": ["REDUCED"]}, 
  "or([LANGTAG, [^^, iriRef]])" : {
     "LANGTAG": ["LANGTAG"], 
     "^^": ["[^^, iriRef]"]}, 
  "or([NIL, [ (, *var, )]])" : {
     "NIL": ["NIL"], 
     "(": ["[ (, *var, )]"]}, 
  "or([[ (, *dataBlockValue, )], NIL])" : {
     "(": ["[ (, *dataBlockValue, )]"], 
     "NIL": ["NIL"]}, 
  "or([[ (, expression, )], NIL])" : {
     "(": ["[ (, expression, )]"], 
     "NIL": ["NIL"]}, 
  "or([[ (,), or([}, [integer, }]])], }])" : {
     ",": ["[ (,), or([}, [integer, }]])]"], 
     "}": ["}"]}, 
  "or([[*, unaryExpression], [/, unaryExpression]])" : {
     "*": ["[*, unaryExpression]"], 
     "/": ["[/, unaryExpression]"]}, 
  "or([[+, multiplicativeExpression], [-, multiplicativeExpression], [or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]])" : {
     "+": ["[+, multiplicativeExpression]"], 
     "-": ["[-, multiplicativeExpression]"], 
     "INTEGER_POSITIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"], 
     "DECIMAL_POSITIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"], 
     "DOUBLE_POSITIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"], 
     "INTEGER_NEGATIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"], 
     "DECIMAL_NEGATIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"], 
     "DOUBLE_NEGATIVE": ["[or([numericLiteralPositive, numericLiteralNegative]), ?or([[*, unaryExpression], [/, unaryExpression]])]"]}, 
  "or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])" : {
     "=": ["[=, numericExpression]"], 
     "!=": ["[!=, numericExpression]"], 
     "<": ["[<, numericExpression]"], 
     ">": ["[>, numericExpression]"], 
     "<=": ["[<=, numericExpression]"], 
     ">=": ["[>=, numericExpression]"], 
     "IN": ["[IN, expressionList]"], 
     "NOT": ["[NOT, IN, expressionList]"]}, 
  "or([[constructTemplate, *datasetClause, whereClause, solutionModifier], [*datasetClause, WHERE, {, ?triplesTemplate, }, solutionModifier]])" : {
     "{": ["[constructTemplate, *datasetClause, whereClause, solutionModifier]"], 
     "WHERE": ["[*datasetClause, WHERE, {, ?triplesTemplate, }, solutionModifier]"], 
     "FROM": ["[*datasetClause, WHERE, {, ?triplesTemplate, }, solutionModifier]"]}, 
  "or([[integer, or([[ (,), or([}, [integer, }]])], }])], [ (,), integer, }]])" : {
     "INTEGER": ["[integer, or([[ (,), or([}, [integer, }]])], }])]"], 
     ",": ["[ (,), integer, }]"]}, 
  "or([defaultGraphClause, namedGraphClause])" : {
     "IRI_REF": ["defaultGraphClause"], 
     "PNAME_LN": ["defaultGraphClause"], 
     "PNAME_NS": ["defaultGraphClause"], 
     "NAMED": ["namedGraphClause"]}, 
  "or([inlineDataOneVar, inlineDataFull])" : {
     "VAR1": ["inlineDataOneVar"], 
     "VAR2": ["inlineDataOneVar"], 
     "NIL": ["inlineDataFull"], 
     "(": ["inlineDataFull"]}, 
  "or([iriRef, a])" : {
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"], 
     "a": ["a"]}, 
  "or([numericLiteralPositive, numericLiteralNegative])" : {
     "INTEGER_POSITIVE": ["numericLiteralPositive"], 
     "DECIMAL_POSITIVE": ["numericLiteralPositive"], 
     "DOUBLE_POSITIVE": ["numericLiteralPositive"], 
     "INTEGER_NEGATIVE": ["numericLiteralNegative"], 
     "DECIMAL_NEGATIVE": ["numericLiteralNegative"], 
     "DOUBLE_NEGATIVE": ["numericLiteralNegative"]}, 
  "or([selectQuery, constructQuery, describeQuery, askQuery])" : {
     "SELECT": ["selectQuery"], 
     "CONSTRUCT": ["constructQuery"], 
     "DESCRIBE": ["describeQuery"], 
     "ASK": ["askQuery"]}, 
  "or([subSelect, groupGraphPatternSub])" : {
     "SELECT": ["subSelect"], 
     "{": ["groupGraphPatternSub"], 
     "OPTIONAL": ["groupGraphPatternSub"], 
     "MINUS": ["groupGraphPatternSub"], 
     "GRAPH": ["groupGraphPatternSub"], 
     "SERVICE": ["groupGraphPatternSub"], 
     "FILTER": ["groupGraphPatternSub"], 
     "BIND": ["groupGraphPatternSub"], 
     "VALUES": ["groupGraphPatternSub"], 
     "VAR1": ["groupGraphPatternSub"], 
     "VAR2": ["groupGraphPatternSub"], 
     "NIL": ["groupGraphPatternSub"], 
     "(": ["groupGraphPatternSub"], 
     "[": ["groupGraphPatternSub"], 
     "IRI_REF": ["groupGraphPatternSub"], 
     "TRUE": ["groupGraphPatternSub"], 
     "FALSE": ["groupGraphPatternSub"], 
     "BLANK_NODE_LABEL": ["groupGraphPatternSub"], 
     "ANON": ["groupGraphPatternSub"], 
     "PNAME_LN": ["groupGraphPatternSub"], 
     "PNAME_NS": ["groupGraphPatternSub"], 
     "STRING_LITERAL1": ["groupGraphPatternSub"], 
     "STRING_LITERAL2": ["groupGraphPatternSub"], 
     "STRING_LITERAL_LONG1": ["groupGraphPatternSub"], 
     "STRING_LITERAL_LONG2": ["groupGraphPatternSub"], 
     "INTEGER": ["groupGraphPatternSub"], 
     "DECIMAL": ["groupGraphPatternSub"], 
     "DOUBLE": ["groupGraphPatternSub"], 
     "INTEGER_POSITIVE": ["groupGraphPatternSub"], 
     "DECIMAL_POSITIVE": ["groupGraphPatternSub"], 
     "DOUBLE_POSITIVE": ["groupGraphPatternSub"], 
     "INTEGER_NEGATIVE": ["groupGraphPatternSub"], 
     "DECIMAL_NEGATIVE": ["groupGraphPatternSub"], 
     "DOUBLE_NEGATIVE": ["groupGraphPatternSub"], 
     "}": ["groupGraphPatternSub"]}, 
  "or([var, [ (, expression, AS, var, )]])" : {
     "VAR1": ["var"], 
     "VAR2": ["var"], 
     "(": ["[ (, expression, AS, var, )]"]}, 
  "or([verbPath, verbSimple])" : {
     "^": ["verbPath"], 
     "a": ["verbPath"], 
     "!": ["verbPath"], 
     "(": ["verbPath"], 
     "IRI_REF": ["verbPath"], 
     "PNAME_LN": ["verbPath"], 
     "PNAME_NS": ["verbPath"], 
     "VAR1": ["verbSimple"], 
     "VAR2": ["verbSimple"]}, 
  "or([}, [integer, }]])" : {
     "}": ["}"], 
     "INTEGER": ["[integer, }]"]}, 
  "orderClause" : {
     "ORDER": ["ORDER","BY","+orderCondition"]}, 
  "orderCondition" : {
     "ASC": ["or([ASC, DESC])","brackettedExpression"], 
     "DESC": ["or([ASC, DESC])","brackettedExpression"], 
     "(": ["constraint"], 
     "STR": ["constraint"], 
     "LANG": ["constraint"], 
     "LANGMATCHES": ["constraint"], 
     "DATATYPE": ["constraint"], 
     "BOUND": ["constraint"], 
     "IRI": ["constraint"], 
     "URI": ["constraint"], 
     "BNODE": ["constraint"], 
     "RAND": ["constraint"], 
     "ABS": ["constraint"], 
     "CEIL": ["constraint"], 
     "FLOOR": ["constraint"], 
     "ROUND": ["constraint"], 
     "CONCAT": ["constraint"], 
     "STRLEN": ["constraint"], 
     "UCASE": ["constraint"], 
     "LCASE": ["constraint"], 
     "ENCODE_FOR_URI": ["constraint"], 
     "CONTAINS": ["constraint"], 
     "STRSTARTS": ["constraint"], 
     "STRENDS": ["constraint"], 
     "STRBEFORE": ["constraint"], 
     "STRAFTER": ["constraint"], 
     "YEAR": ["constraint"], 
     "MONTH": ["constraint"], 
     "DAY": ["constraint"], 
     "HOURS": ["constraint"], 
     "MINUTES": ["constraint"], 
     "SECONDS": ["constraint"], 
     "TIMEZONE": ["constraint"], 
     "TZ": ["constraint"], 
     "NOW": ["constraint"], 
     "UUID": ["constraint"], 
     "STRUUID": ["constraint"], 
     "MD5": ["constraint"], 
     "SHA1": ["constraint"], 
     "SHA256": ["constraint"], 
     "SHA384": ["constraint"], 
     "SHA512": ["constraint"], 
     "COALESCE": ["constraint"], 
     "IF": ["constraint"], 
     "STRLANG": ["constraint"], 
     "STRDT": ["constraint"], 
     "SAMETERM": ["constraint"], 
     "ISIRI": ["constraint"], 
     "ISURI": ["constraint"], 
     "ISBLANK": ["constraint"], 
     "ISLITERAL": ["constraint"], 
     "ISNUMERIC": ["constraint"], 
     "SUBSTR": ["constraint"], 
     "REPLACE": ["constraint"], 
     "REGEX": ["constraint"], 
     "EXISTS": ["constraint"], 
     "NOT": ["constraint"], 
     "IRI_REF": ["constraint"], 
     "PNAME_LN": ["constraint"], 
     "PNAME_NS": ["constraint"], 
     "VAR1": ["var"], 
     "VAR2": ["var"]}, 
  "path" : {
     "^": ["pathAlternative"], 
     "a": ["pathAlternative"], 
     "!": ["pathAlternative"], 
     "(": ["pathAlternative"], 
     "IRI_REF": ["pathAlternative"], 
     "PNAME_LN": ["pathAlternative"], 
     "PNAME_NS": ["pathAlternative"]}, 
  "pathAlternative" : {
     "^": ["pathSequence","*[ (|), pathSequence]"], 
     "a": ["pathSequence","*[ (|), pathSequence]"], 
     "!": ["pathSequence","*[ (|), pathSequence]"], 
     "(": ["pathSequence","*[ (|), pathSequence]"], 
     "IRI_REF": ["pathSequence","*[ (|), pathSequence]"], 
     "PNAME_LN": ["pathSequence","*[ (|), pathSequence]"], 
     "PNAME_NS": ["pathSequence","*[ (|), pathSequence]"]}, 
  "pathElt" : {
     "a": ["pathPrimary","?pathMod"], 
     "!": ["pathPrimary","?pathMod"], 
     "(": ["pathPrimary","?pathMod"], 
     "IRI_REF": ["pathPrimary","?pathMod"], 
     "PNAME_LN": ["pathPrimary","?pathMod"], 
     "PNAME_NS": ["pathPrimary","?pathMod"]}, 
  "pathEltOrInverse" : {
     "a": ["pathElt"], 
     "!": ["pathElt"], 
     "(": ["pathElt"], 
     "IRI_REF": ["pathElt"], 
     "PNAME_LN": ["pathElt"], 
     "PNAME_NS": ["pathElt"], 
     "^": ["^","pathElt"]}, 
  "pathMod" : {
     "*": ["*"], 
     "?": ["?"], 
     "+": ["+"], 
     "{": ["{","or([[integer, or([[ (,), or([}, [integer, }]])], }])], [ (,), integer, }]])"]}, 
  "pathNegatedPropertySet" : {
     "a": ["pathOneInPropertySet"], 
     "^": ["pathOneInPropertySet"], 
     "IRI_REF": ["pathOneInPropertySet"], 
     "PNAME_LN": ["pathOneInPropertySet"], 
     "PNAME_NS": ["pathOneInPropertySet"], 
     "(": ["(","?[pathOneInPropertySet, *[ (|), pathOneInPropertySet]]",")"]}, 
  "pathOneInPropertySet" : {
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"], 
     "a": ["a"], 
     "^": ["^","or([iriRef, a])"]}, 
  "pathPrimary" : {
     "IRI_REF": ["storeProperty","iriRef"], 
     "PNAME_LN": ["storeProperty","iriRef"], 
     "PNAME_NS": ["storeProperty","iriRef"], 
     "a": ["storeProperty","a"], 
     "!": ["!","pathNegatedPropertySet"], 
     "(": ["(","path",")"]}, 
  "pathSequence" : {
     "^": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "a": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "!": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "(": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "IRI_REF": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "PNAME_LN": ["pathEltOrInverse","*[/, pathEltOrInverse]"], 
     "PNAME_NS": ["pathEltOrInverse","*[/, pathEltOrInverse]"]}, 
  "prefixDecl" : {
     "PREFIX": ["PREFIX","PNAME_NS","IRI_REF"]}, 
  "prefixedName" : {
     "PNAME_LN": ["PNAME_LN"], 
     "PNAME_NS": ["PNAME_NS"]}, 
  "primaryExpression" : {
     "(": ["brackettedExpression"], 
     "STR": ["builtInCall"], 
     "LANG": ["builtInCall"], 
     "LANGMATCHES": ["builtInCall"], 
     "DATATYPE": ["builtInCall"], 
     "BOUND": ["builtInCall"], 
     "IRI": ["builtInCall"], 
     "URI": ["builtInCall"], 
     "BNODE": ["builtInCall"], 
     "RAND": ["builtInCall"], 
     "ABS": ["builtInCall"], 
     "CEIL": ["builtInCall"], 
     "FLOOR": ["builtInCall"], 
     "ROUND": ["builtInCall"], 
     "CONCAT": ["builtInCall"], 
     "STRLEN": ["builtInCall"], 
     "UCASE": ["builtInCall"], 
     "LCASE": ["builtInCall"], 
     "ENCODE_FOR_URI": ["builtInCall"], 
     "CONTAINS": ["builtInCall"], 
     "STRSTARTS": ["builtInCall"], 
     "STRENDS": ["builtInCall"], 
     "STRBEFORE": ["builtInCall"], 
     "STRAFTER": ["builtInCall"], 
     "YEAR": ["builtInCall"], 
     "MONTH": ["builtInCall"], 
     "DAY": ["builtInCall"], 
     "HOURS": ["builtInCall"], 
     "MINUTES": ["builtInCall"], 
     "SECONDS": ["builtInCall"], 
     "TIMEZONE": ["builtInCall"], 
     "TZ": ["builtInCall"], 
     "NOW": ["builtInCall"], 
     "UUID": ["builtInCall"], 
     "STRUUID": ["builtInCall"], 
     "MD5": ["builtInCall"], 
     "SHA1": ["builtInCall"], 
     "SHA256": ["builtInCall"], 
     "SHA384": ["builtInCall"], 
     "SHA512": ["builtInCall"], 
     "COALESCE": ["builtInCall"], 
     "IF": ["builtInCall"], 
     "STRLANG": ["builtInCall"], 
     "STRDT": ["builtInCall"], 
     "SAMETERM": ["builtInCall"], 
     "ISIRI": ["builtInCall"], 
     "ISURI": ["builtInCall"], 
     "ISBLANK": ["builtInCall"], 
     "ISLITERAL": ["builtInCall"], 
     "ISNUMERIC": ["builtInCall"], 
     "SUBSTR": ["builtInCall"], 
     "REPLACE": ["builtInCall"], 
     "REGEX": ["builtInCall"], 
     "EXISTS": ["builtInCall"], 
     "NOT": ["builtInCall"], 
     "IRI_REF": ["iriRefOrFunction"], 
     "PNAME_LN": ["iriRefOrFunction"], 
     "PNAME_NS": ["iriRefOrFunction"], 
     "STRING_LITERAL1": ["rdfLiteral"], 
     "STRING_LITERAL2": ["rdfLiteral"], 
     "STRING_LITERAL_LONG1": ["rdfLiteral"], 
     "STRING_LITERAL_LONG2": ["rdfLiteral"], 
     "INTEGER": ["numericLiteral"], 
     "DECIMAL": ["numericLiteral"], 
     "DOUBLE": ["numericLiteral"], 
     "INTEGER_POSITIVE": ["numericLiteral"], 
     "DECIMAL_POSITIVE": ["numericLiteral"], 
     "DOUBLE_POSITIVE": ["numericLiteral"], 
     "INTEGER_NEGATIVE": ["numericLiteral"], 
     "DECIMAL_NEGATIVE": ["numericLiteral"], 
     "DOUBLE_NEGATIVE": ["numericLiteral"], 
     "TRUE": ["booleanLiteral"], 
     "FALSE": ["booleanLiteral"], 
     "VAR1": ["var"], 
     "VAR2": ["var"], 
     "COUNT": ["aggregate"], 
     "SUM": ["aggregate"], 
     "MIN": ["aggregate"], 
     "MAX": ["aggregate"], 
     "AVG": ["aggregate"], 
     "SAMPLE": ["aggregate"], 
     "GROUP_CONCAT": ["aggregate"]}, 
  "prologue" : {
     "PREFIX": ["?baseDecl","*prefixDecl"], 
     "BASE": ["?baseDecl","*prefixDecl"], 
     "CONSTRUCT": ["?baseDecl","*prefixDecl"], 
     "DESCRIBE": ["?baseDecl","*prefixDecl"], 
     "ASK": ["?baseDecl","*prefixDecl"], 
     "SELECT": ["?baseDecl","*prefixDecl"]}, 
  "propertyList" : {
     "a": ["propertyListNotEmpty"], 
     "VAR1": ["propertyListNotEmpty"], 
     "VAR2": ["propertyListNotEmpty"], 
     "IRI_REF": ["propertyListNotEmpty"], 
     "PNAME_LN": ["propertyListNotEmpty"], 
     "PNAME_NS": ["propertyListNotEmpty"], 
     ".": [], 
     "}": []}, 
  "propertyListNotEmpty" : {
     "a": ["verb","objectList","*[ (;), ?[verb, objectList]]"], 
     "VAR1": ["verb","objectList","*[ (;), ?[verb, objectList]]"], 
     "VAR2": ["verb","objectList","*[ (;), ?[verb, objectList]]"], 
     "IRI_REF": ["verb","objectList","*[ (;), ?[verb, objectList]]"], 
     "PNAME_LN": ["verb","objectList","*[ (;), ?[verb, objectList]]"], 
     "PNAME_NS": ["verb","objectList","*[ (;), ?[verb, objectList]]"]}, 
  "propertyListPath" : {
     "a": ["propertyListNotEmpty"], 
     "VAR1": ["propertyListNotEmpty"], 
     "VAR2": ["propertyListNotEmpty"], 
     "IRI_REF": ["propertyListNotEmpty"], 
     "PNAME_LN": ["propertyListNotEmpty"], 
     "PNAME_NS": ["propertyListNotEmpty"], 
     ".": [], 
     "{": [], 
     "OPTIONAL": [], 
     "MINUS": [], 
     "GRAPH": [], 
     "SERVICE": [], 
     "FILTER": [], 
     "BIND": [], 
     "VALUES": [], 
     "}": []}, 
  "propertyListPathNotEmpty" : {
     "VAR1": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "VAR2": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "^": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "a": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "!": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "(": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "IRI_REF": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "PNAME_LN": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"], 
     "PNAME_NS": ["or([verbPath, verbSimple])","objectListPath","*[ (;), ?[or([verbPath, verbSimple]), objectList]]"]}, 
  "query" : {
     "CONSTRUCT": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"], 
     "DESCRIBE": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"], 
     "ASK": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"], 
     "SELECT": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"], 
     "PREFIX": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"], 
     "BASE": ["prologue","or([selectQuery, constructQuery, describeQuery, askQuery])","valuesClause"]}, 
  "queryUnit" : {
     "CONSTRUCT": ["query","$"], 
     "DESCRIBE": ["query","$"], 
     "ASK": ["query","$"], 
     "SELECT": ["query","$"], 
     "PREFIX": ["query","$"], 
     "BASE": ["query","$"]}, 
  "rdfLiteral" : {
     "STRING_LITERAL1": ["string","?or([LANGTAG, [^^, iriRef]])"], 
     "STRING_LITERAL2": ["string","?or([LANGTAG, [^^, iriRef]])"], 
     "STRING_LITERAL_LONG1": ["string","?or([LANGTAG, [^^, iriRef]])"], 
     "STRING_LITERAL_LONG2": ["string","?or([LANGTAG, [^^, iriRef]])"]}, 
  "regexExpression" : {
     "REGEX": ["REGEX","(","expression",",","expression","?[ (,), expression]",")"]}, 
  "relationalExpression" : {
     "!": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "+": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "-": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "VAR1": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "VAR2": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "(": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STR": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "LANG": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "LANGMATCHES": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DATATYPE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "BOUND": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "IRI": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "URI": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "BNODE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "RAND": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ABS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "CEIL": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "FLOOR": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ROUND": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "CONCAT": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRLEN": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "UCASE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "LCASE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ENCODE_FOR_URI": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "CONTAINS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRSTARTS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRENDS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRBEFORE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRAFTER": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "YEAR": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "MONTH": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DAY": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "HOURS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "MINUTES": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SECONDS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "TIMEZONE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "TZ": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "NOW": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "UUID": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRUUID": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "MD5": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SHA1": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SHA256": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SHA384": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SHA512": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "COALESCE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "IF": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRLANG": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRDT": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SAMETERM": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ISIRI": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ISURI": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ISBLANK": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ISLITERAL": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "ISNUMERIC": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "TRUE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "FALSE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "COUNT": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SUM": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "MIN": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "MAX": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "AVG": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SAMPLE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "GROUP_CONCAT": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "SUBSTR": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "REPLACE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "REGEX": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "EXISTS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "NOT": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "IRI_REF": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRING_LITERAL1": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRING_LITERAL2": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRING_LITERAL_LONG1": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "STRING_LITERAL_LONG2": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "INTEGER": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DECIMAL": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DOUBLE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "INTEGER_POSITIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DECIMAL_POSITIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DOUBLE_POSITIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "INTEGER_NEGATIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DECIMAL_NEGATIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "DOUBLE_NEGATIVE": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "PNAME_LN": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"], 
     "PNAME_NS": ["numericExpression","?or([[=, numericExpression], [!=, numericExpression], [<, numericExpression], [>, numericExpression], [<=, numericExpression], [>=, numericExpression], [IN, expressionList], [NOT, IN, expressionList]])"]}, 
  "selectClause" : {
     "SELECT": ["SELECT","?or([DISTINCT, REDUCED])","or([+or([var, [ (, expression, AS, var, )]]), *])"]}, 
  "selectQuery" : {
     "SELECT": ["selectClause","*datasetClause","whereClause","solutionModifier"]}, 
  "serviceGraphPattern" : {
     "SERVICE": ["SERVICE","?SILENT","varOrIRIref","groupGraphPattern"]}, 
  "solutionModifier" : {
     "LIMIT": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "OFFSET": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "ORDER": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "HAVING": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "GROUP": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "VALUES": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "$": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"], 
     "}": ["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"]}, 
  "sourceSelector" : {
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"]}, 
  "storeProperty" : {
     "VAR1": [], 
     "VAR2": [], 
     "IRI_REF": [], 
     "PNAME_LN": [], 
     "PNAME_NS": [], 
     "a": []}, 
  "strReplaceExpression" : {
     "REPLACE": ["REPLACE","(","expression",",","expression",",","expression","?[ (,), expression]",")"]}, 
  "string" : {
     "STRING_LITERAL1": ["STRING_LITERAL1"], 
     "STRING_LITERAL2": ["STRING_LITERAL2"], 
     "STRING_LITERAL_LONG1": ["STRING_LITERAL_LONG1"], 
     "STRING_LITERAL_LONG2": ["STRING_LITERAL_LONG2"]}, 
  "subSelect" : {
     "SELECT": ["selectClause","whereClause","solutionModifier","valuesClause"]}, 
  "substringExpression" : {
     "SUBSTR": ["SUBSTR","(","expression",",","expression","?[ (,), expression]",")"]}, 
  "triplesBlock" : {
     "VAR1": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "VAR2": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "NIL": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "(": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "[": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "IRI_REF": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "TRUE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "FALSE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "BLANK_NODE_LABEL": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "ANON": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "PNAME_LN": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "PNAME_NS": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "STRING_LITERAL1": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "STRING_LITERAL2": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "STRING_LITERAL_LONG1": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "STRING_LITERAL_LONG2": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "INTEGER": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DECIMAL": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DOUBLE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "INTEGER_POSITIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DECIMAL_POSITIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DOUBLE_POSITIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "INTEGER_NEGATIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DECIMAL_NEGATIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"], 
     "DOUBLE_NEGATIVE": ["triplesSameSubjectPath","?[., ?triplesBlock]"]}, 
  "triplesNode" : {
     "(": ["collection"], 
     "[": ["blankNodePropertyList"]}, 
  "triplesNodePath" : {
     "(": ["collectionPath"], 
     "[": ["blankNodePropertyListPath"]}, 
  "triplesSameSubject" : {
     "VAR1": ["varOrTerm","propertyListNotEmpty"], 
     "VAR2": ["varOrTerm","propertyListNotEmpty"], 
     "NIL": ["varOrTerm","propertyListNotEmpty"], 
     "IRI_REF": ["varOrTerm","propertyListNotEmpty"], 
     "TRUE": ["varOrTerm","propertyListNotEmpty"], 
     "FALSE": ["varOrTerm","propertyListNotEmpty"], 
     "BLANK_NODE_LABEL": ["varOrTerm","propertyListNotEmpty"], 
     "ANON": ["varOrTerm","propertyListNotEmpty"], 
     "PNAME_LN": ["varOrTerm","propertyListNotEmpty"], 
     "PNAME_NS": ["varOrTerm","propertyListNotEmpty"], 
     "STRING_LITERAL1": ["varOrTerm","propertyListNotEmpty"], 
     "STRING_LITERAL2": ["varOrTerm","propertyListNotEmpty"], 
     "STRING_LITERAL_LONG1": ["varOrTerm","propertyListNotEmpty"], 
     "STRING_LITERAL_LONG2": ["varOrTerm","propertyListNotEmpty"], 
     "INTEGER": ["varOrTerm","propertyListNotEmpty"], 
     "DECIMAL": ["varOrTerm","propertyListNotEmpty"], 
     "DOUBLE": ["varOrTerm","propertyListNotEmpty"], 
     "INTEGER_POSITIVE": ["varOrTerm","propertyListNotEmpty"], 
     "DECIMAL_POSITIVE": ["varOrTerm","propertyListNotEmpty"], 
     "DOUBLE_POSITIVE": ["varOrTerm","propertyListNotEmpty"], 
     "INTEGER_NEGATIVE": ["varOrTerm","propertyListNotEmpty"], 
     "DECIMAL_NEGATIVE": ["varOrTerm","propertyListNotEmpty"], 
     "DOUBLE_NEGATIVE": ["varOrTerm","propertyListNotEmpty"], 
     "(": ["triplesNode","propertyList"], 
     "[": ["triplesNode","propertyList"]}, 
  "triplesSameSubjectPath" : {
     "VAR1": ["varOrTerm","propertyListPathNotEmpty"], 
     "VAR2": ["varOrTerm","propertyListPathNotEmpty"], 
     "NIL": ["varOrTerm","propertyListPathNotEmpty"], 
     "IRI_REF": ["varOrTerm","propertyListPathNotEmpty"], 
     "TRUE": ["varOrTerm","propertyListPathNotEmpty"], 
     "FALSE": ["varOrTerm","propertyListPathNotEmpty"], 
     "BLANK_NODE_LABEL": ["varOrTerm","propertyListPathNotEmpty"], 
     "ANON": ["varOrTerm","propertyListPathNotEmpty"], 
     "PNAME_LN": ["varOrTerm","propertyListPathNotEmpty"], 
     "PNAME_NS": ["varOrTerm","propertyListPathNotEmpty"], 
     "STRING_LITERAL1": ["varOrTerm","propertyListPathNotEmpty"], 
     "STRING_LITERAL2": ["varOrTerm","propertyListPathNotEmpty"], 
     "STRING_LITERAL_LONG1": ["varOrTerm","propertyListPathNotEmpty"], 
     "STRING_LITERAL_LONG2": ["varOrTerm","propertyListPathNotEmpty"], 
     "INTEGER": ["varOrTerm","propertyListPathNotEmpty"], 
     "DECIMAL": ["varOrTerm","propertyListPathNotEmpty"], 
     "DOUBLE": ["varOrTerm","propertyListPathNotEmpty"], 
     "INTEGER_POSITIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "DECIMAL_POSITIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "DOUBLE_POSITIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "INTEGER_NEGATIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "DECIMAL_NEGATIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "DOUBLE_NEGATIVE": ["varOrTerm","propertyListPathNotEmpty"], 
     "(": ["triplesNodePath","propertyListPath"], 
     "[": ["triplesNodePath","propertyListPath"]}, 
  "triplesTemplate" : {
     "VAR1": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "VAR2": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "NIL": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "(": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "[": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "IRI_REF": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "TRUE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "FALSE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "BLANK_NODE_LABEL": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "ANON": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "PNAME_LN": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "PNAME_NS": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "STRING_LITERAL1": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "STRING_LITERAL2": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "STRING_LITERAL_LONG1": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "STRING_LITERAL_LONG2": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "INTEGER": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DECIMAL": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DOUBLE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "INTEGER_POSITIVE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DECIMAL_POSITIVE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DOUBLE_POSITIVE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "INTEGER_NEGATIVE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DECIMAL_NEGATIVE": ["triplesSameSubject","?[., ?triplesTemplate]"], 
     "DOUBLE_NEGATIVE": ["triplesSameSubject","?[., ?triplesTemplate]"]}, 
  "unaryExpression" : {
     "!": ["!","primaryExpression"], 
     "+": ["+","primaryExpression"], 
     "-": ["-","primaryExpression"], 
     "VAR1": ["primaryExpression"], 
     "VAR2": ["primaryExpression"], 
     "(": ["primaryExpression"], 
     "STR": ["primaryExpression"], 
     "LANG": ["primaryExpression"], 
     "LANGMATCHES": ["primaryExpression"], 
     "DATATYPE": ["primaryExpression"], 
     "BOUND": ["primaryExpression"], 
     "IRI": ["primaryExpression"], 
     "URI": ["primaryExpression"], 
     "BNODE": ["primaryExpression"], 
     "RAND": ["primaryExpression"], 
     "ABS": ["primaryExpression"], 
     "CEIL": ["primaryExpression"], 
     "FLOOR": ["primaryExpression"], 
     "ROUND": ["primaryExpression"], 
     "CONCAT": ["primaryExpression"], 
     "STRLEN": ["primaryExpression"], 
     "UCASE": ["primaryExpression"], 
     "LCASE": ["primaryExpression"], 
     "ENCODE_FOR_URI": ["primaryExpression"], 
     "CONTAINS": ["primaryExpression"], 
     "STRSTARTS": ["primaryExpression"], 
     "STRENDS": ["primaryExpression"], 
     "STRBEFORE": ["primaryExpression"], 
     "STRAFTER": ["primaryExpression"], 
     "YEAR": ["primaryExpression"], 
     "MONTH": ["primaryExpression"], 
     "DAY": ["primaryExpression"], 
     "HOURS": ["primaryExpression"], 
     "MINUTES": ["primaryExpression"], 
     "SECONDS": ["primaryExpression"], 
     "TIMEZONE": ["primaryExpression"], 
     "TZ": ["primaryExpression"], 
     "NOW": ["primaryExpression"], 
     "UUID": ["primaryExpression"], 
     "STRUUID": ["primaryExpression"], 
     "MD5": ["primaryExpression"], 
     "SHA1": ["primaryExpression"], 
     "SHA256": ["primaryExpression"], 
     "SHA384": ["primaryExpression"], 
     "SHA512": ["primaryExpression"], 
     "COALESCE": ["primaryExpression"], 
     "IF": ["primaryExpression"], 
     "STRLANG": ["primaryExpression"], 
     "STRDT": ["primaryExpression"], 
     "SAMETERM": ["primaryExpression"], 
     "ISIRI": ["primaryExpression"], 
     "ISURI": ["primaryExpression"], 
     "ISBLANK": ["primaryExpression"], 
     "ISLITERAL": ["primaryExpression"], 
     "ISNUMERIC": ["primaryExpression"], 
     "TRUE": ["primaryExpression"], 
     "FALSE": ["primaryExpression"], 
     "COUNT": ["primaryExpression"], 
     "SUM": ["primaryExpression"], 
     "MIN": ["primaryExpression"], 
     "MAX": ["primaryExpression"], 
     "AVG": ["primaryExpression"], 
     "SAMPLE": ["primaryExpression"], 
     "GROUP_CONCAT": ["primaryExpression"], 
     "SUBSTR": ["primaryExpression"], 
     "REPLACE": ["primaryExpression"], 
     "REGEX": ["primaryExpression"], 
     "EXISTS": ["primaryExpression"], 
     "NOT": ["primaryExpression"], 
     "IRI_REF": ["primaryExpression"], 
     "STRING_LITERAL1": ["primaryExpression"], 
     "STRING_LITERAL2": ["primaryExpression"], 
     "STRING_LITERAL_LONG1": ["primaryExpression"], 
     "STRING_LITERAL_LONG2": ["primaryExpression"], 
     "INTEGER": ["primaryExpression"], 
     "DECIMAL": ["primaryExpression"], 
     "DOUBLE": ["primaryExpression"], 
     "INTEGER_POSITIVE": ["primaryExpression"], 
     "DECIMAL_POSITIVE": ["primaryExpression"], 
     "DOUBLE_POSITIVE": ["primaryExpression"], 
     "INTEGER_NEGATIVE": ["primaryExpression"], 
     "DECIMAL_NEGATIVE": ["primaryExpression"], 
     "DOUBLE_NEGATIVE": ["primaryExpression"], 
     "PNAME_LN": ["primaryExpression"], 
     "PNAME_NS": ["primaryExpression"]}, 
  "valueLogical" : {
     "!": ["relationalExpression"], 
     "+": ["relationalExpression"], 
     "-": ["relationalExpression"], 
     "VAR1": ["relationalExpression"], 
     "VAR2": ["relationalExpression"], 
     "(": ["relationalExpression"], 
     "STR": ["relationalExpression"], 
     "LANG": ["relationalExpression"], 
     "LANGMATCHES": ["relationalExpression"], 
     "DATATYPE": ["relationalExpression"], 
     "BOUND": ["relationalExpression"], 
     "IRI": ["relationalExpression"], 
     "URI": ["relationalExpression"], 
     "BNODE": ["relationalExpression"], 
     "RAND": ["relationalExpression"], 
     "ABS": ["relationalExpression"], 
     "CEIL": ["relationalExpression"], 
     "FLOOR": ["relationalExpression"], 
     "ROUND": ["relationalExpression"], 
     "CONCAT": ["relationalExpression"], 
     "STRLEN": ["relationalExpression"], 
     "UCASE": ["relationalExpression"], 
     "LCASE": ["relationalExpression"], 
     "ENCODE_FOR_URI": ["relationalExpression"], 
     "CONTAINS": ["relationalExpression"], 
     "STRSTARTS": ["relationalExpression"], 
     "STRENDS": ["relationalExpression"], 
     "STRBEFORE": ["relationalExpression"], 
     "STRAFTER": ["relationalExpression"], 
     "YEAR": ["relationalExpression"], 
     "MONTH": ["relationalExpression"], 
     "DAY": ["relationalExpression"], 
     "HOURS": ["relationalExpression"], 
     "MINUTES": ["relationalExpression"], 
     "SECONDS": ["relationalExpression"], 
     "TIMEZONE": ["relationalExpression"], 
     "TZ": ["relationalExpression"], 
     "NOW": ["relationalExpression"], 
     "UUID": ["relationalExpression"], 
     "STRUUID": ["relationalExpression"], 
     "MD5": ["relationalExpression"], 
     "SHA1": ["relationalExpression"], 
     "SHA256": ["relationalExpression"], 
     "SHA384": ["relationalExpression"], 
     "SHA512": ["relationalExpression"], 
     "COALESCE": ["relationalExpression"], 
     "IF": ["relationalExpression"], 
     "STRLANG": ["relationalExpression"], 
     "STRDT": ["relationalExpression"], 
     "SAMETERM": ["relationalExpression"], 
     "ISIRI": ["relationalExpression"], 
     "ISURI": ["relationalExpression"], 
     "ISBLANK": ["relationalExpression"], 
     "ISLITERAL": ["relationalExpression"], 
     "ISNUMERIC": ["relationalExpression"], 
     "TRUE": ["relationalExpression"], 
     "FALSE": ["relationalExpression"], 
     "COUNT": ["relationalExpression"], 
     "SUM": ["relationalExpression"], 
     "MIN": ["relationalExpression"], 
     "MAX": ["relationalExpression"], 
     "AVG": ["relationalExpression"], 
     "SAMPLE": ["relationalExpression"], 
     "GROUP_CONCAT": ["relationalExpression"], 
     "SUBSTR": ["relationalExpression"], 
     "REPLACE": ["relationalExpression"], 
     "REGEX": ["relationalExpression"], 
     "EXISTS": ["relationalExpression"], 
     "NOT": ["relationalExpression"], 
     "IRI_REF": ["relationalExpression"], 
     "STRING_LITERAL1": ["relationalExpression"], 
     "STRING_LITERAL2": ["relationalExpression"], 
     "STRING_LITERAL_LONG1": ["relationalExpression"], 
     "STRING_LITERAL_LONG2": ["relationalExpression"], 
     "INTEGER": ["relationalExpression"], 
     "DECIMAL": ["relationalExpression"], 
     "DOUBLE": ["relationalExpression"], 
     "INTEGER_POSITIVE": ["relationalExpression"], 
     "DECIMAL_POSITIVE": ["relationalExpression"], 
     "DOUBLE_POSITIVE": ["relationalExpression"], 
     "INTEGER_NEGATIVE": ["relationalExpression"], 
     "DECIMAL_NEGATIVE": ["relationalExpression"], 
     "DOUBLE_NEGATIVE": ["relationalExpression"], 
     "PNAME_LN": ["relationalExpression"], 
     "PNAME_NS": ["relationalExpression"]}, 
  "valuesClause" : {
     "VALUES": ["VALUES","dataBlock"], 
     "$": [], 
     "}": []}, 
  "var" : {
     "VAR1": ["VAR1"], 
     "VAR2": ["VAR2"]}, 
  "varOrIRIref" : {
     "VAR1": ["var"], 
     "VAR2": ["var"], 
     "IRI_REF": ["iriRef"], 
     "PNAME_LN": ["iriRef"], 
     "PNAME_NS": ["iriRef"]}, 
  "varOrTerm" : {
     "VAR1": ["var"], 
     "VAR2": ["var"], 
     "NIL": ["graphTerm"], 
     "IRI_REF": ["graphTerm"], 
     "TRUE": ["graphTerm"], 
     "FALSE": ["graphTerm"], 
     "BLANK_NODE_LABEL": ["graphTerm"], 
     "ANON": ["graphTerm"], 
     "PNAME_LN": ["graphTerm"], 
     "PNAME_NS": ["graphTerm"], 
     "STRING_LITERAL1": ["graphTerm"], 
     "STRING_LITERAL2": ["graphTerm"], 
     "STRING_LITERAL_LONG1": ["graphTerm"], 
     "STRING_LITERAL_LONG2": ["graphTerm"], 
     "INTEGER": ["graphTerm"], 
     "DECIMAL": ["graphTerm"], 
     "DOUBLE": ["graphTerm"], 
     "INTEGER_POSITIVE": ["graphTerm"], 
     "DECIMAL_POSITIVE": ["graphTerm"], 
     "DOUBLE_POSITIVE": ["graphTerm"], 
     "INTEGER_NEGATIVE": ["graphTerm"], 
     "DECIMAL_NEGATIVE": ["graphTerm"], 
     "DOUBLE_NEGATIVE": ["graphTerm"]}, 
  "verb" : {
     "VAR1": ["storeProperty","varOrIRIref"], 
     "VAR2": ["storeProperty","varOrIRIref"], 
     "IRI_REF": ["storeProperty","varOrIRIref"], 
     "PNAME_LN": ["storeProperty","varOrIRIref"], 
     "PNAME_NS": ["storeProperty","varOrIRIref"], 
     "a": ["storeProperty","a"]}, 
  "verbPath" : {
     "^": ["path"], 
     "a": ["path"], 
     "!": ["path"], 
     "(": ["path"], 
     "IRI_REF": ["path"], 
     "PNAME_LN": ["path"], 
     "PNAME_NS": ["path"]}, 
  "verbSimple" : {
     "VAR1": ["var"], 
     "VAR2": ["var"]}, 
  "whereClause" : {
     "{": ["?WHERE","groupGraphPattern"], 
     "WHERE": ["?WHERE","groupGraphPattern"]}
};

var keywords=/^(GROUP_CONCAT|DATATYPE|BASE|PREFIX|SELECT|CONSTRUCT|DESCRIBE|ASK|FROM|NAMED|ORDER|BY|LIMIT|ASC|DESC|OFFSET|DISTINCT|REDUCED|WHERE|GRAPH|OPTIONAL|UNION|FILTER|GROUP|HAVING|AS|VALUES|LOAD|CLEAR|DROP|CREATE|MOVE|COPY|SILENT|INSERT|DELETE|DATA|WITH|TO|USING|NAMED|MINUS|BIND|LANGMATCHES|LANG|BOUND|SAMETERM|ISIRI|ISURI|ISBLANK|ISLITERAL|REGEX|TRUE|FALSE|UNDEF|ADD|DEFAULT|ALL|SERVICE|INTO|IN|NOT|IRI|URI|BNODE|RAND|ABS|CEIL|FLOOR|ROUND|CONCAT|STRLEN|UCASE|LCASE|ENCODE_FOR_URI|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|NOW|UUID|STRUUID|MD5|SHA1|SHA256|SHA384|SHA512|COALESCE|IF|STRLANG|STRDT|ISNUMERIC|SUBSTR|REPLACE|EXISTS|COUNT|SUM|MIN|MAX|AVG|SAMPLE|SEPARATOR|STR)/i ;

var punct=/^(\*|a|\.|\{|\}|,|\(|\)|;|\[|\]|\|\||&&|=|!=|!|<=|>=|<|>|\+|-|\/|\^\^|\?|\||\^)/ ;

var defaultQueryType=null;
var lexVersion="sparql11";
var startSymbol="query";
var acceptEmpty=false;

	function getTerminals()
	{
		var IRI_REF = '<[^<>\"\'\|\{\}\^\\\x00-\x20]*>';
		/*
		 * PN_CHARS_BASE =
		 * '[A-Z]|[a-z]|[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|[\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u10000-\\uEFFFF]';
		 */

		var PN_CHARS_BASE =
			'[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]';
		var PN_CHARS_U = PN_CHARS_BASE+'|_';

		var PN_CHARS= '('+PN_CHARS_U+'|-|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])';
		var VARNAME = '('+PN_CHARS_U+'|[0-9])'+
			'('+PN_CHARS_U+'|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*';
		var VAR1 = '\\?'+VARNAME;
		var VAR2 = '\\$'+VARNAME;

		var PN_PREFIX= '('+PN_CHARS_BASE+')((('+PN_CHARS+')|\\.)*('+PN_CHARS+'))?';

		var HEX= '[0-9A-Fa-f]';
		var PERCENT='(%'+HEX+HEX+')';
		var PN_LOCAL_ESC='(\\\\[_~\\.\\-!\\$&\'\\(\\)\\*\\+,;=/\\?#@%])';
		var PLX= '('+PERCENT+'|'+PN_LOCAL_ESC+')';
		var PN_LOCAL;
		var BLANK_NODE_LABEL;
		if (lexVersion=="sparql11") {
			PN_LOCAL= '('+PN_CHARS_U+'|:|[0-9]|'+PLX+')(('+PN_CHARS+'|\\.|:|'+PLX+')*('+PN_CHARS+'|:|'+PLX+'))?';
			BLANK_NODE_LABEL = '_:('+PN_CHARS_U+'|[0-9])(('+PN_CHARS+'|\\.)*'+PN_CHARS+')?';
		} else {
			PN_LOCAL= '('+PN_CHARS_U+'|[0-9])((('+PN_CHARS+')|\\.)*('+PN_CHARS+'))?';
			BLANK_NODE_LABEL = '_:'+PN_LOCAL;
		}
		var PNAME_NS = '('+PN_PREFIX+')?:';
		var PNAME_LN = PNAME_NS+PN_LOCAL;
		var LANGTAG = '@[a-zA-Z]+(-[a-zA-Z0-9]+)*';

		var EXPONENT = '[eE][\\+-]?[0-9]+';
		var INTEGER = '[0-9]+';
		var DECIMAL = '(([0-9]+\\.[0-9]*)|(\\.[0-9]+))';
		var DOUBLE =
			'(([0-9]+\\.[0-9]*'+EXPONENT+')|'+
			'(\\.[0-9]+'+EXPONENT+')|'+
			'([0-9]+'+EXPONENT+'))';

		var INTEGER_POSITIVE = '\\+' + INTEGER;
		var DECIMAL_POSITIVE = '\\+' + DECIMAL;
		var DOUBLE_POSITIVE  = '\\+' + DOUBLE;
		var INTEGER_NEGATIVE = '-' + INTEGER;
		var DECIMAL_NEGATIVE = '-' + DECIMAL;
		var DOUBLE_NEGATIVE  = '-' + DOUBLE;

		// var ECHAR = '\\\\[tbnrf\\"\\\']';
		var ECHAR = '\\\\[tbnrf\\\\"\']';

		var STRING_LITERAL1 = "'(([^\\x27\\x5C\\x0A\\x0D])|"+ECHAR+")*'";
		var STRING_LITERAL2 = '"(([^\\x22\\x5C\\x0A\\x0D])|'+ECHAR+')*"';

		var STRING_LITERAL_LONG1 = "'''(('|'')?([^'\\\\]|"+ECHAR+"))*'''";
		var STRING_LITERAL_LONG2 = '"""(("|"")?([^"\\\\]|'+ECHAR+'))*"""';

		var WS    =        '[\\x20\\x09\\x0D\\x0A]';
		// Careful! Code mirror feeds one line at a time with no \n
		// ... but otherwise comment is terminated by \n
		var COMMENT = '#([^\\n\\r]*[\\n\\r]|[^\\n\\r]*$)';
		var WS_OR_COMMENT_STAR = '('+WS+'|('+COMMENT+'))*';
		var NIL   = '\\('+WS_OR_COMMENT_STAR+'\\)';
		var ANON  = '\\['+WS_OR_COMMENT_STAR+'\\]';

		var terminals=
			{
				terminal: [

					{ name: "WS",
						regex:new RegExp("^"+WS+"+"),
						style:"sp-ws" },

					{ name: "COMMENT",
						regex:new RegExp("^"+COMMENT),
						style:"sp-comment" },

					{ name: "IRI_REF",
						regex:new RegExp("^"+IRI_REF),
						style:"sp-uri" },

					{ name: "VAR1",
						regex:new RegExp("^"+VAR1),
						style:"sp-var"},

					{ name: "VAR2",
						regex:new RegExp("^"+VAR2),
						style:"sp-var"},

					{ name: "LANGTAG",
						regex:new RegExp("^"+LANGTAG),
						style:"sp-punc"},

					{ name: "DOUBLE",
						regex:new RegExp("^"+DOUBLE),
						style:"sp-number" },

					{ name: "DECIMAL",
						regex:new RegExp("^"+DECIMAL),
						style:"sp-number" },

					{ name: "INTEGER",
						regex:new RegExp("^"+INTEGER),
						style:"sp-number" },

					{ name: "DOUBLE_POSITIVE",
						regex:new RegExp("^"+DOUBLE_POSITIVE),
						style:"sp-number" },

					{ name: "DECIMAL_POSITIVE",
						regex:new RegExp("^"+DECIMAL_POSITIVE),
						style:"sp-number" },

					{ name: "INTEGER_POSITIVE",
						regex:new RegExp("^"+INTEGER_POSITIVE),
						style:"sp-number" },

					{ name: "DOUBLE_NEGATIVE",
						regex:new RegExp("^"+DOUBLE_NEGATIVE),
						style:"sp-number" },

					{ name: "DECIMAL_NEGATIVE",
						regex:new RegExp("^"+DECIMAL_NEGATIVE),
						style:"sp-number" },

					{ name: "INTEGER_NEGATIVE",
						regex:new RegExp("^"+INTEGER_NEGATIVE),
						style:"sp-number" },

					{ name: "STRING_LITERAL_LONG1",
						regex:new RegExp("^"+STRING_LITERAL_LONG1),
						style:"sp-literal" },

					{ name: "STRING_LITERAL_LONG2",
						regex:new RegExp("^"+STRING_LITERAL_LONG2),
						style:"sp-literal" },

					{ name: "STRING_LITERAL1",
						regex:new RegExp("^"+STRING_LITERAL1),
						style:"sp-literal" },

					{ name: "STRING_LITERAL2",
						regex:new RegExp("^"+STRING_LITERAL2),
						style:"sp-literal" },

					// Enclosed comments won't be highlighted
					{ name: "NIL",
						regex:new RegExp("^"+NIL),
						style:"sp-punc" },

					// Enclosed comments won't be highlighted
					{ name: "ANON",
						regex:new RegExp("^"+ANON),
						style:"sp-punc" },

					{ name: "PNAME_LN",
						regex:new RegExp("^"+PNAME_LN),
						style:"sp-prefixed" },

					{ name: "PNAME_NS",
						regex:new RegExp("^"+PNAME_NS),
						style:"sp-prefixed" },

					{ name: "BLANK_NODE_LABEL",
						regex:new RegExp("^"+BLANK_NODE_LABEL),
						style:"sp-prefixed" }
				],

			}
		return terminals;
	}

	function getPossibles(symbol)
	{
		var possibles=[], possiblesOb=ll1_table[symbol];
		if (possiblesOb!=undefined)
			for (var property in possiblesOb)
				possibles.push(property.toString());
		else
			possibles.push(symbol);
		return possibles;
	}

	var tms= getTerminals();
	var terminal=tms.terminal;

	function tokenBase(stream, state) {

		function nextToken() {

			var consumed=null;
			// Tokens defined by individual regular expressions
			for (var i=0; i",
							 style: "sp-invalid",
							 text: consumed[0]
						 };
		}

		function recordFailurePos() {
			// tokenOb.style= "sp-invalid";
			var col= stream.column();
			state.errorStartPos= col;
			state.errorEndPos= col+tokenOb.text.length;
		};

		function setQueryType(s) {
			if (state.queryType==null) {
				if (s=="SELECT" || s=="CONSTRUCT" || s=="ASK" || s=="DESCRIBE")
					state.queryType=s;
			}
		}

		// Some fake non-terminals are just there to have side-effect on state
		// - i.e. allow or disallow variables and bnodes in certain non-nesting
		// contexts
		function setSideConditions(topSymbol) {
			if (topSymbol=="disallowVars") state.allowVars=false;
			else if (topSymbol=="allowVars") state.allowVars=true;
			else if (topSymbol=="disallowBnodes") state.allowBnodes=false;
			else if (topSymbol=="allowBnodes") state.allowBnodes=true;
			else if (topSymbol=="storeProperty") state.storeProperty=true;
		}

		function checkSideConditions(topSymbol) {
			return(
				(state.allowVars || topSymbol!="var") &&
					(state.allowBnodes ||
					 (topSymbol!="blankNode" &&
						topSymbol!="blankNodePropertyList" &&
						topSymbol!="blankNodePropertyListPath")))
		}

		// CodeMirror works with one line at a time,
		// but newline should behave like whitespace
		// - i.e. a definite break between tokens (for autocompleter)
		if (stream.pos==0)
			state.possibleCurrent= state.possibleNext;

		var tokenOb= nextToken();


		if (tokenOb.cat=="") {
			// set error state, and
			if (state.OK==true) {
				state.OK=false;
				recordFailurePos();
			}
			state.complete=false;
			// alert("Invalid:"+tokenOb.text);
			return tokenOb.style;
		}

		if (tokenOb.cat == "WS" ||
				tokenOb.cat == "COMMENT") {
			state.possibleCurrent= state.possibleNext;
			return(tokenOb.style)
		}
		// Otherwise, run the parser until the token is digested
		// or failure
		var finished= false;
		var topSymbol;
		var token= tokenOb.cat;

		// Incremental LL1 parse
		while(state.stack.length>0 && token && state.OK && !finished ) {
			topSymbol= state.stack.pop();

			if (!ll1_table[topSymbol]) {
				// Top symbol is a terminal
				if (topSymbol==token) {
					// Matching terminals
					// - consume token from input stream
					finished=true;
					setQueryType(topSymbol);
					// Check whether $ (end of input token) is poss next
					// for everything on stack
					var allNillable=true;
					for(var sp=state.stack.length;sp>0;--sp) {
						var item=ll1_table[state.stack[sp-1]];
						if (!item || !item["$"])
							allNillable=false;
					}
					state.complete= allNillable;
					if (state.storeProperty && token.cat!="sp-punc") {
							state.lastProperty= tokenOb.text;
							state.storeProperty= false;
						}
				} else {
					state.OK=false;
					state.complete=false;
					recordFailurePos();
				}
			} else {
				// topSymbol is nonterminal
				// - see if there is an entry for topSymbol
				// and nextToken in table
				var nextSymbols= ll1_table[topSymbol][token];
				if (nextSymbols!=undefined
						&& checkSideConditions(topSymbol)
					 )
				{
					// Match - copy RHS of rule to stack
					for (var i=nextSymbols.length-1; i>=0; --i)
						state.stack.push(nextSymbols[i]);
					// Peform any non-grammatical side-effects
					setSideConditions(topSymbol);
				} else {
					// No match in table - fail
					state.OK=false;
					state.complete=false;
					recordFailurePos();
					state.stack.push(topSymbol);  // Shove topSymbol back on stack
				}
			}
		}
		if (!finished && state.OK) { 
			state.OK=false; state.complete=false; recordFailurePos(); 
    }

		state.possibleCurrent= state.possibleNext;
		state.possibleNext= getPossibles(state.stack[state.stack.length-1]);

		// alert(token+"="+tokenOb.style+'\n'+state.stack);
		return tokenOb.style;
	}

	var indentTop={
		"*[,, object]": 3,
		"*[ (,), object]": 3,
		"*[ (,), objectPath]": 3,
		"*[/, pathEltOrInverse]": 2,
		"object": 2,
		"objectPath": 2,
		"objectList": 2,
		"objectListPath": 2,
		"storeProperty": 2,
		"pathMod": 2,
		"?pathMod": 2,
		"propertyListNotEmpty": 1,
		"propertyList": 1,
		"propertyListPath": 1,
		"propertyListPathNotEmpty": 1,
		"?[verb, objectList]": 1,
		"?[or([verbPath, verbSimple]), objectList]": 1
	};

	var indentTable={
		"}":1,
		"]":0,
		")":1,
		"{":-1,
		"(":-1
	};

	function indent(state, textAfter) {
		var n = 0; // indent level
		var i=state.stack.length-1;

		if (/^[\}\]\)]/.test(textAfter)) {
			// Skip stack items until after matching bracket
			var closeBracket=textAfter.substr(0,1);
			for( ;i>=0;--i)
			{
				if (state.stack[i]==closeBracket)
				{--i; break};
			}
		} else {
			// Consider nullable non-terminals if at top of stack
			var dn=indentTop[state.stack[i]];
			if (dn) { n+=dn; --i}
		}
		for( ;i>=0;--i)
		{
			var dn=indentTable[state.stack[i]];
			if (dn) n+=dn;
		}
		return n * config.indentUnit;
	};

	return {
		token: tokenBase,
		startState: function(base) {
			return {
				tokenize: tokenBase,
				OK: true,
				complete: acceptEmpty,
				errorStartPos: null,
				errorEndPos: null,
				queryType: defaultQueryType,
				possibleCurrent: getPossibles(startSymbol),
				possibleNext: getPossibles(startSymbol),
				allowVars : true,
				allowBnodes : true,
				storeProperty : false,
				lastProperty : "",
				stack: [startSymbol] }; },
		indent: indent,
		electricChars: "}])"
	};
});





© 2015 - 2025 Weber Informatics LLC | Privacy Policy