@traqula/rules-sparql-1-1 0.0.1-alpha.176 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/lib/RoundTripTypes.d.ts +379 -0
  2. package/lib/RoundTripTypes.js +2 -0
  3. package/lib/RoundTripTypes.js.map +1 -0
  4. package/lib/Sparql11types.d.ts +18 -245
  5. package/lib/Sparql11types.js.map +1 -1
  6. package/lib/SparqlParser.d.ts +13 -4
  7. package/lib/SparqlParser.js +7 -4
  8. package/lib/SparqlParser.js.map +1 -1
  9. package/lib/expressionHelpers.d.ts +8 -19
  10. package/lib/expressionHelpers.js +40 -103
  11. package/lib/expressionHelpers.js.map +1 -1
  12. package/lib/factory.d.ts +447 -0
  13. package/lib/factory.js +105 -0
  14. package/lib/factory.js.map +1 -0
  15. package/lib/factoryMixins/ContextFactory.d.ts +38 -0
  16. package/lib/factoryMixins/ContextFactory.js +30 -0
  17. package/lib/factoryMixins/ContextFactory.js.map +1 -0
  18. package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
  19. package/lib/factoryMixins/ExpressionFactory.js +83 -0
  20. package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  21. package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
  22. package/lib/factoryMixins/GraphRefFactory.js +51 -0
  23. package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  24. package/lib/factoryMixins/PathFactory.d.ts +51 -0
  25. package/lib/factoryMixins/PathFactory.js +68 -0
  26. package/lib/factoryMixins/PathFactory.js.map +1 -0
  27. package/lib/factoryMixins/Patternfactory.d.ts +55 -0
  28. package/lib/factoryMixins/Patternfactory.js +98 -0
  29. package/lib/factoryMixins/Patternfactory.js.map +1 -0
  30. package/lib/factoryMixins/QueryFactory.d.ts +41 -0
  31. package/lib/factoryMixins/QueryFactory.js +43 -0
  32. package/lib/factoryMixins/QueryFactory.js.map +1 -0
  33. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
  34. package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
  35. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  36. package/lib/factoryMixins/TermFactory.d.ts +76 -0
  37. package/lib/factoryMixins/TermFactory.js +84 -0
  38. package/lib/factoryMixins/TermFactory.js.map +1 -0
  39. package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
  40. package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
  41. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  42. package/lib/factoryMixins/mixins.d.ts +14 -0
  43. package/lib/factoryMixins/mixins.js +20 -0
  44. package/lib/factoryMixins/mixins.js.map +1 -0
  45. package/lib/grammar/builtIn.d.ts +59 -59
  46. package/lib/grammar/builtIn.js +50 -57
  47. package/lib/grammar/builtIn.js.map +1 -1
  48. package/lib/grammar/dataSetClause.d.ts +22 -9
  49. package/lib/grammar/dataSetClause.js +57 -14
  50. package/lib/grammar/dataSetClause.js.map +1 -1
  51. package/lib/grammar/expression.d.ts +12 -16
  52. package/lib/grammar/expression.js +224 -296
  53. package/lib/grammar/expression.js.map +1 -1
  54. package/lib/grammar/general.d.ts +8 -8
  55. package/lib/grammar/general.js +59 -94
  56. package/lib/grammar/general.js.map +1 -1
  57. package/lib/grammar/literals.d.ts +16 -13
  58. package/lib/grammar/literals.js +161 -144
  59. package/lib/grammar/literals.js.map +1 -1
  60. package/lib/grammar/propertyPaths.d.ts +16 -12
  61. package/lib/grammar/propertyPaths.js +100 -129
  62. package/lib/grammar/propertyPaths.js.map +1 -1
  63. package/lib/grammar/queryUnit/queryUnit.d.ts +13 -17
  64. package/lib/grammar/queryUnit/queryUnit.js +195 -329
  65. package/lib/grammar/queryUnit/queryUnit.js.map +1 -1
  66. package/lib/grammar/solutionModifier.d.ts +12 -11
  67. package/lib/grammar/solutionModifier.js +125 -109
  68. package/lib/grammar/solutionModifier.js.map +1 -1
  69. package/lib/grammar/tripleBlock.d.ts +24 -33
  70. package/lib/grammar/tripleBlock.js +172 -126
  71. package/lib/grammar/tripleBlock.js.map +1 -1
  72. package/lib/grammar/updateUnit/updateUnit.d.ts +28 -33
  73. package/lib/grammar/updateUnit/updateUnit.js +282 -367
  74. package/lib/grammar/updateUnit/updateUnit.js.map +1 -1
  75. package/lib/grammar/whereClause.d.ts +20 -19
  76. package/lib/grammar/whereClause.js +232 -245
  77. package/lib/grammar/whereClause.js.map +1 -1
  78. package/lib/grammar-helpers/utils.d.ts +0 -4
  79. package/lib/grammar-helpers/utils.js +0 -37
  80. package/lib/grammar-helpers/utils.js.map +1 -1
  81. package/lib/index.cjs +3061 -2438
  82. package/lib/index.d.ts +4 -2
  83. package/lib/index.js +4 -2
  84. package/lib/index.js.map +1 -1
  85. package/lib/lexer/lexer.d.ts +4 -3
  86. package/lib/lexer/lexer.js +11 -7
  87. package/lib/lexer/lexer.js.map +1 -1
  88. package/lib/lexer/terminals.d.ts +0 -34
  89. package/lib/lexer/terminals.js +35 -37
  90. package/lib/lexer/terminals.js.map +1 -1
  91. package/lib/utils.d.ts +0 -3
  92. package/lib/utils.js +0 -6
  93. package/lib/utils.js.map +1 -1
  94. package/lib/validation/validators.d.ts +14 -0
  95. package/lib/validation/validators.js +235 -0
  96. package/lib/validation/validators.js.map +1 -0
  97. package/package.json +6 -8
  98. package/lib/Wildcard.d.ts +0 -9
  99. package/lib/Wildcard.js +0 -19
  100. package/lib/Wildcard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"solutionModifier.js","sourceRoot":"","sources":["solutionModifier.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../lexer';\nimport type { Expression, Grouping, Ordering, SelectQuery, SparqlGrammarRule, SparqlRule } from '../Sparql11types';\nimport { builtInCall } from './builtIn';\nimport { brackettedExpression, expression } from './expression';\nimport { var_ } from './general';\nimport { constraint, functionCall } from './whereClause';\n\n/**\n * [[18]](https://www.w3.org/TR/sparql11-query/#rSolutionModifier)\n */\nexport type ISolutionModifier = Pick<SelectQuery, 'group' | 'having' | 'order' | 'limit' | 'offset'>;\nexport const solutionModifier: SparqlRule<'solutionModifier', ISolutionModifier> = <const> {\n name: 'solutionModifier',\n impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {\n const group = OPTION1(() => SUBRULE(groupClause, undefined));\n const having = OPTION2(() => SUBRULE(havingClause, undefined));\n const order = OPTION3(() => SUBRULE(orderClause, undefined));\n const limitAndOffset = OPTION4(() => SUBRULE(limitOffsetClauses, undefined));\n\n return ACTION(() => ({\n ...limitAndOffset,\n ...(group && { group }),\n ...(having && { having }),\n ...(order && { order }),\n }));\n },\n gImpl: ({ SUBRULE }) => (ast) => {\n const group = ast.group ? SUBRULE(groupClause, ast.group, undefined) : '';\n const having = ast.having ? SUBRULE(havingClause, ast.having, undefined) : '';\n const order = ast.order ? SUBRULE(orderClause, ast.order, undefined) : '';\n const limit = SUBRULE(limitOffsetClauses, ast, undefined);\n\n return [ group, having, order, limit ].filter(Boolean).join(' ');\n },\n};\n\n/**\n * [[19]](https://www.w3.org/TR/sparql11-query/#rGroupClause)\n */\nexport const groupClause: SparqlRule<'groupClause', Grouping[]> = <const> {\n name: 'groupClause',\n impl: ({ AT_LEAST_ONE, SUBRULE, CONSUME }) => () => {\n const groupings: Grouping[] = [];\n CONSUME(l.groupBy);\n AT_LEAST_ONE(() => {\n groupings.push(SUBRULE(groupCondition, undefined));\n });\n\n return groupings;\n },\n gImpl: ({ SUBRULE }) => ast =>\n `GROUP BY ${ast.map(group => SUBRULE(groupCondition, group, undefined)).join(' ')}`,\n};\n\n/**\n * [[20]](https://www.w3.org/TR/sparql11-query/#rGroupCondition)\n */\nexport const groupCondition: SparqlRule<'groupCondition', Grouping> = <const> {\n name: 'groupCondition',\n impl: ({ SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => () => OR<Grouping>([\n { ALT: () => {\n const expression = SUBRULE(builtInCall, undefined);\n return {\n expression,\n };\n } },\n { ALT: () => {\n const expression = SUBRULE(functionCall, undefined);\n return {\n expression,\n };\n } },\n {\n ALT: () => {\n CONSUME(l.symbols.LParen);\n const expressionValue = SUBRULE(expression, undefined);\n const variable = OPTION(() => {\n CONSUME(l.as);\n return SUBRULE1(var_, undefined);\n });\n CONSUME(l.symbols.RParen);\n\n return {\n expression: expressionValue,\n variable,\n };\n },\n },\n { ALT: () => {\n const expression = SUBRULE2(var_, undefined);\n return {\n expression,\n };\n } },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n if (ast.variable) {\n return `(${SUBRULE(expression, ast.expression, undefined)} AS ${SUBRULE(var_, ast.variable, undefined)})`;\n }\n return SUBRULE(expression, ast.expression, undefined);\n },\n};\n\n/**\n * [[21]](https://www.w3.org/TR/sparql11-query/#rHavingClause)\n */\nexport const havingClause: SparqlRule<'havingClause', Expression[]> = <const> {\n name: 'havingClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n const expressions: Expression[] = [];\n\n CONSUME(l.having);\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n expressions.push(SUBRULE(havingCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return expressions;\n },\n gImpl: ({ SUBRULE }) => ast =>\n `HAVING ${ast.map(having => `( ${SUBRULE(expression, having, undefined)} )`).join(' ')}`,\n};\n\n/**\n * [[22]](https://www.w3.org/TR/sparql11-query/#rHavingCondition)\n */\nexport const havingCondition: SparqlGrammarRule<'havingCondition', Expression> = <const> {\n name: 'havingCondition',\n impl: ({ SUBRULE }) => () => SUBRULE(constraint, undefined),\n};\n\n/**\n * [[23]](https://www.w3.org/TR/sparql11-query/#rOrderClause)\n */\nexport const orderClause: SparqlRule<'orderClause', Ordering[]> = <const> {\n name: 'orderClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n const orderings: Ordering[] = [];\n\n CONSUME(l.order);\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n orderings.push(SUBRULE(orderCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return orderings;\n },\n gImpl: ({ SUBRULE }) => ast =>\n `ORDER BY ${ast.map(order => SUBRULE(orderCondition, order, undefined)).join(' ')}`,\n};\n\n/**\n * [[24]](https://www.w3.org/TR/sparql11-query/#rOrderCondition)\n */\nexport const orderCondition: SparqlRule<'orderCondition', Ordering> = <const> {\n name: 'orderCondition',\n impl: ({ SUBRULE, CONSUME, OR1, OR2 }) => () => OR1([\n {\n ALT: () => {\n const descending = OR2([\n { ALT: () => {\n CONSUME(l.orderAsc);\n return false;\n } },\n { ALT: () => {\n CONSUME(l.orderDesc);\n return true;\n } },\n ]);\n const expr = SUBRULE(brackettedExpression, undefined);\n\n return {\n expression: expr,\n descending,\n };\n },\n },\n { ALT: () => {\n const expr = SUBRULE(constraint, undefined);\n return {\n expression: expr,\n };\n } },\n { ALT: () => {\n const expr = SUBRULE(var_, undefined);\n return {\n expression: expr,\n };\n } },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n const builder: string[] = [];\n if (ast.descending) {\n builder.push('DESC');\n }\n builder.push('(', SUBRULE(expression, ast.expression, undefined), ')');\n return builder.join(' ');\n },\n};\n\n/**\n * Parses limit and or offset in any order.\n * [[25]](https://www.w3.org/TR/sparql11-query/#rLimitOffsetClauses)\n */\nexport const limitOffsetClauses: SparqlRule<'limitOffsetClauses', Pick<SelectQuery, 'limit' | 'offset'>> = <const> {\n name: 'limitOffsetClauses',\n impl: ({ SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => () => OR<Pick<SelectQuery, 'limit' | 'offset'>>([\n {\n ALT: () => {\n const limit = SUBRULE1(limitClause, undefined);\n const offset = OPTION1(() => SUBRULE1(offsetClause, undefined));\n return {\n limit,\n offset,\n };\n },\n },\n {\n ALT: () => {\n const offset = SUBRULE2(offsetClause, undefined);\n const limit = OPTION2(() => SUBRULE2(limitClause, undefined));\n return {\n limit,\n offset,\n };\n },\n },\n ]),\n gImpl: () => (ast) => {\n const builder: string[] = [];\n if (ast.limit) {\n builder.push(`LIMIT ${String(ast.limit)}`);\n }\n if (ast.offset) {\n builder.push(`OFFSET ${String(ast.offset)}`);\n }\n return builder.join(' ');\n },\n};\n\n/**\n * [[26]](https://www.w3.org/TR/sparql11-query/#rLimitClause)\n */\nexport const limitClause: SparqlGrammarRule<'limitClause', number> = <const> {\n name: 'limitClause',\n impl: ({ CONSUME }) => () => {\n CONSUME(l.limit);\n return Number.parseInt(CONSUME(l.terminals.integer).image, 10);\n },\n};\n\n/**\n * [[27]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const offsetClause: SparqlGrammarRule<'offsetClause', number> = <const> {\n name: <const> 'offsetClause',\n impl: ({ CONSUME }) => () => {\n CONSUME(l.offset);\n return Number.parseInt(CONSUME(l.terminals.integer).image, 10);\n },\n};\n"]}
1
+ {"version":3,"file":"solutionModifier.js","sourceRoot":"","sources":["solutionModifier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAY9B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA8D;IACzF,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QACtE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACnB,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6D;IACnF,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3D,MAAM,SAAS,GAA+C,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,YAAY,CAAC,GAAG,EAAE;YAChB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACnB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO;YAChB,SAAS;YACT,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC,CAAC,CAAC;IACN,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC3D,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC5C,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuF;IAChH,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAC1E,EAAE,CAAyC;QACzC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;QAC9C,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE;QAC/C,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;QACxC;YACE,GAAG,EAAE,GAAG,EAAE;gBACR,6CAA6C;gBAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE;oBAC3B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACd,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,MAAM,CAAC,GAAG,EAAE;oBACjB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,OAAO;4BACL,QAAQ;4BACR,KAAK,EAAE,eAAe;4BACtB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;yBACP,CAAC;oBACxC,CAAC;oBACD,OAAO,eAAe,CAAC;gBACzB,CAAC,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA+D;IACtF,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE,CAChC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACjF,YAAY,CAAC,GAAG,EAAE;YAChB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAExE,OAAO,MAAM,CAAC,GAAG,EAAE,CACjB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1D,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA6D;IACvF,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6D;IACnF,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE,CAChC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACjF,YAAY,CAAC,GAAG,EAAE;YAChB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAExE,OAAO,MAAM,CAAC,GAAG,EAAE,CACjB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC3D,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA0D;IACnF,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAW;QACnE,EAAE,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,UAAU,GAAG,GAAG,CAAoB;oBACxC,EAAE,GAAG,EAAE,GAAG,EAAE;4BACV,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BAClC,OAAc,CAAE,KAAK,EAAE,KAAK,CAAE,CAAC;wBACjC,CAAC,EAAE;oBACH,EAAE,GAAG,EAAE,GAAG,EAAE;4BACV,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BACnC,OAAe,CAAE,IAAI,EAAE,KAAK,CAAE,CAAC;wBACjC,CAAC,EAAE;iBACJ,CAAC,CAAC;gBAEH,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;gBAEtD,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;oBACnB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;oBACzB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;iBACnD,CAAC,CAAC,CAAC;YACN,CAAC,EAAE;QACH,EAAE,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC5C,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC,EAAE;QACH,EAAE,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACtC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC,EAAE;KACJ,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA0E;IACvG,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,EAAE,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;gBAChE,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CACvD,KAAK,CAAC,GAAG,EACT,MAAM,EAAE,GAAG,EACX,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/D,CAAC,CAAC;YACL,CAAC,EAAE;QACH,EAAE,GAAG,EAAE,GAAG,EAAE;gBACV,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CACvD,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,GAAG,EACV,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CACxC,CAAC,CAAC;YACL,CAAC,EAAE;KACJ,CAAC;IACF,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAClD,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;YACtB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2D;IACjF,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA4D;IACnF,IAAI,EAAU,cAAc;IAC5B,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;CACF,CAAC","sourcesContent":["import type { IToken } from '@chevrotain/types';\nimport type { Wrap } from '@traqula/core';\nimport * as l from '../lexer';\nimport type {\n Expression,\n SolutionModifierGroup,\n SolutionModifierGroupBind,\n SolutionModifierHaving,\n SolutionModifierOrder,\n Ordering,\n SolutionModifierLimitOffset,\n SolutionModifiers,\n} from '../RoundTripTypes';\nimport type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';\nimport { builtInCall } from './builtIn';\nimport { brackettedExpression, expression } from './expression';\nimport { var_ } from './general';\nimport { constraint, functionCall } from './whereClause';\n\n/**\n * [[18]](https://www.w3.org/TR/sparql11-query/#rSolutionModifier)\n */\nexport const solutionModifier: SparqlRule<'solutionModifier', SolutionModifiers> = <const> {\n name: 'solutionModifier',\n impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {\n const group = OPTION1(() => SUBRULE(groupClause, undefined));\n const having = OPTION2(() => SUBRULE(havingClause, undefined));\n const order = OPTION3(() => SUBRULE(orderClause, undefined));\n const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, undefined));\n return ACTION(() => ({\n ...(limitOffset && { limitOffset }),\n ...(group && { group }),\n ...(having && { having }),\n ...(order && { order }),\n }));\n },\n gImpl: ({ SUBRULE }) => (ast) => {\n if (ast.group) {\n SUBRULE(groupClause, ast.group, undefined);\n }\n if (ast.having) {\n SUBRULE(havingClause, ast.having, undefined);\n }\n if (ast.order) {\n SUBRULE(orderClause, ast.order, undefined);\n }\n if (ast.limitOffset) {\n SUBRULE(limitOffsetClauses, ast.limitOffset, undefined);\n }\n },\n};\n\n/**\n * [[19]](https://www.w3.org/TR/sparql11-query/#rGroupClause)\n */\nexport const groupClause: SparqlRule<'groupClause', SolutionModifierGroup> = <const> {\n name: 'groupClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const groupings: (Expression | SolutionModifierGroupBind)[] = [];\n const start = CONSUME(l.groupByGroup);\n CONSUME(l.by);\n AT_LEAST_ONE(() => {\n groupings.push(SUBRULE1(groupCondition, undefined));\n });\n\n return ACTION(() => ({\n type: 'solutionModifier',\n subType: 'group',\n groupings,\n loc: C.factory.sourceLocation(start, groupings.at(-1)),\n }));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('GROUP', 'BY'));\n for (const grouping of ast.groupings) {\n if (F.isExpression(grouping)) {\n SUBRULE(expression, grouping, undefined);\n } else {\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, grouping.value, undefined);\n F.printFilter(ast, () => PRINT_WORDS('AS'));\n SUBRULE(var_, grouping.variable, undefined);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n }\n },\n};\n\n/**\n * [[20]](https://www.w3.org/TR/sparql11-query/#rGroupCondition)\n */\nexport const groupCondition: SparqlGrammarRule<'groupCondition', Expression | SolutionModifierGroupBind> = <const>{\n name: 'groupCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => C =>\n OR<Expression | SolutionModifierGroupBind>([\n { ALT: () => SUBRULE(builtInCall, undefined) },\n { ALT: () => SUBRULE(functionCall, undefined) },\n { ALT: () => SUBRULE2(var_, undefined) },\n {\n ALT: () => {\n // Creates a bracketted expression or a Bind.\n const open = CONSUME(l.symbols.LParen);\n const expressionValue = SUBRULE(expression, undefined);\n const variable = OPTION(() => {\n CONSUME(l.as);\n return SUBRULE1(var_, undefined);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => {\n if (variable !== undefined) {\n return {\n variable,\n value: expressionValue,\n loc: C.factory.sourceLocation(open, close),\n } satisfies SolutionModifierGroupBind;\n }\n return expressionValue;\n });\n },\n },\n ]),\n};\n\n/**\n * [[21]](https://www.w3.org/TR/sparql11-query/#rHavingClause)\n */\nexport const havingClause: SparqlRule<'havingClause', SolutionModifierHaving> = <const> {\n name: 'havingClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n const having = CONSUME(l.having);\n const expressions: Expression[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n expressions.push(SUBRULE(havingCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having, expressions.at(-1))));\n },\n gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('HAVING'));\n for (const having of ast.having) {\n SUBRULE(expression, having, undefined);\n }\n },\n};\n\n/**\n * [[22]](https://www.w3.org/TR/sparql11-query/#rHavingCondition)\n */\nexport const havingCondition: SparqlGrammarRule<'havingCondition', Expression> = <const> {\n name: 'havingCondition',\n impl: ({ SUBRULE }) => () => SUBRULE(constraint, undefined),\n};\n\n/**\n * [[23]](https://www.w3.org/TR/sparql11-query/#rOrderClause)\n */\nexport const orderClause: SparqlRule<'orderClause', SolutionModifierOrder> = <const> {\n name: 'orderClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME }) => (C) => {\n const order = CONSUME(l.order);\n CONSUME(l.by);\n const orderings: Ordering[] = [];\n\n const couldParseAgg = ACTION(() =>\n C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));\n AT_LEAST_ONE(() => {\n orderings.push(SUBRULE1(orderCondition, undefined));\n });\n ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));\n\n return ACTION(() =>\n C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order, orderings.at(-1))));\n },\n gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORDS('ORDER', 'BY'));\n for (const ordering of ast.orderDefs) {\n if (ordering.descending) {\n F.printFilter(ast, () => PRINT_WORDS('DESC'));\n } else {\n F.printFilter(ast, () => PRINT_WORDS('ASC'));\n }\n F.printFilter(ast, () => PRINT_WORDS('('));\n SUBRULE(expression, ordering.expression, undefined);\n F.printFilter(ast, () => PRINT_WORDS(')'));\n }\n },\n};\n\n/**\n * [[24]](https://www.w3.org/TR/sparql11-query/#rOrderCondition)\n */\nexport const orderCondition: SparqlGrammarRule<'orderCondition', Ordering> = <const> {\n name: 'orderCondition',\n impl: ({ ACTION, SUBRULE, CONSUME, OR1, OR2 }) => C => OR1<Ordering>([\n { ALT: () => {\n const descending = OR2<[boolean, IToken]>([\n { ALT: () => {\n const token = CONSUME(l.orderAsc);\n return <const>[ false, token ];\n } },\n { ALT: () => {\n const token = CONSUME(l.orderDesc);\n return <const> [ true, token ];\n } },\n ]);\n\n const expr = SUBRULE(brackettedExpression, undefined);\n\n return ACTION(() => ({\n expression: expr,\n descending: descending[0],\n loc: C.factory.sourceLocation(descending[1], expr),\n }));\n } },\n { ALT: () => {\n const expr = SUBRULE(constraint, undefined);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n { ALT: () => {\n const expr = SUBRULE(var_, undefined);\n return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));\n } },\n ]),\n};\n\n/**\n * Parses limit and or offset in any order.\n * [[25]](https://www.w3.org/TR/sparql11-query/#rLimitOffsetClauses)\n */\nexport const limitOffsetClauses: SparqlRule<'limitOffsetClauses', SolutionModifierLimitOffset> = <const> {\n name: 'limitOffsetClauses',\n impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => C => OR([\n { ALT: () => {\n const limit = SUBRULE1(limitClause, undefined);\n const offset = OPTION1(() => SUBRULE1(offsetClause, undefined));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit.val,\n offset?.val,\n C.factory.sourceLocation(limit, ...(offset ? [ offset ] : [])),\n ));\n } },\n { ALT: () => {\n const offset = SUBRULE2(offsetClause, undefined);\n const limit = OPTION2(() => SUBRULE2(limitClause, undefined));\n return ACTION(() => C.factory.solutionModifierLimitOffset(\n limit?.val,\n offset.val,\n C.factory.sourceLocation(offset, limit),\n ));\n } },\n ]),\n gImpl: ({ PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n if (ast.limit) {\n PRINT_WORDS('LIMIT', String(ast.limit));\n }\n if (ast.offset) {\n PRINT_WORDS('OFFSET', String(ast.offset));\n }\n });\n },\n};\n\n/**\n * [[26]](https://www.w3.org/TR/sparql11-query/#rLimitClause)\n */\nexport const limitClause: SparqlGrammarRule<'limitClause', Wrap<number>> = <const> {\n name: 'limitClause',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const offset = CONSUME(l.limit);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n\n/**\n * [[27]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const offsetClause: SparqlGrammarRule<'offsetClause', Wrap<number>> = <const> {\n name: <const> 'offsetClause',\n impl: ({ CONSUME, ACTION }) => (C) => {\n const offset = CONSUME(l.offset);\n const value = CONSUME(l.terminals.integer);\n const val = Number.parseInt(value.image, 10);\n return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset, value)));\n },\n};\n"]}
@@ -1,45 +1,36 @@
1
- import type { BgpPattern, IGraphNode, IriTerm, ITriplesNode, PropertyPath, SparqlGrammarRule, SparqlRule, Triple, VariableTerm } from '../Sparql11types';
1
+ import type { BasicGraphPattern, Path, PatternBgp, Term, TermVariable, TripleCollection, TripleCollectionBlankNodeProperties, TripleCollectionList, TripleNesting } from '../RoundTripTypes';
2
+ import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
2
3
  /**
3
4
  * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)
4
5
  */
5
- export declare const triplesBlock: SparqlRule<'triplesBlock', BgpPattern>;
6
- export declare const triplesSameSubject: SparqlGrammarRule<"triplesSameSubject", Triple[]>;
7
- export declare const triplesSameSubjectPath: SparqlGrammarRule<"triplesSameSubjectPath", Triple[]>;
6
+ export declare const triplesBlock: SparqlRule<'triplesBlock', PatternBgp>;
7
+ export declare const triplesSameSubject: SparqlGrammarRule<"triplesSameSubject", BasicGraphPattern>;
8
+ export declare const triplesSameSubjectPath: SparqlGrammarRule<"triplesSameSubjectPath", BasicGraphPattern>;
8
9
  /**
9
10
  * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)
10
11
  */
11
- export declare const triplesTemplate: SparqlGrammarRule<'triplesTemplate', Triple[]>;
12
- export declare const propertyList: SparqlGrammarRule<"propertyList", Triple[], Pick<Triple, "subject">>;
13
- export declare const propertyListPath: SparqlGrammarRule<"propertyListPath", Triple[], Pick<Triple, "subject">>;
14
- export declare const propertyListNotEmpty: SparqlGrammarRule<"propertyListNotEmpty", Triple[], Pick<Triple, "subject">>;
15
- export declare const propertyListPathNotEmpty: SparqlGrammarRule<"propertyListPathNotEmpty", Triple[], Pick<Triple, "subject">>;
12
+ export declare const triplesTemplate: SparqlGrammarRule<'triplesTemplate', PatternBgp>;
13
+ export declare const propertyList: SparqlGrammarRule<"propertyList", TripleNesting[], Pick<TripleNesting, "subject">>;
14
+ export declare const propertyListPath: SparqlGrammarRule<"propertyListPath", TripleNesting[], Pick<TripleNesting, "subject">>;
15
+ export declare const propertyListNotEmpty: SparqlGrammarRule<"propertyListNotEmpty", TripleNesting[], Pick<TripleNesting, "subject">>;
16
+ export declare const propertyListPathNotEmpty: SparqlGrammarRule<"propertyListPathNotEmpty", TripleNesting[], Pick<TripleNesting, "subject">>;
16
17
  /**
17
18
  * [[84]](https://www.w3.org/TR/sparql11-query/#rVerbPath)
18
19
  */
19
- export declare const verbPath: SparqlGrammarRule<'verbPath', PropertyPath | IriTerm>;
20
+ export declare const verbPath: SparqlGrammarRule<'verbPath', Path>;
20
21
  /**
21
22
  * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)
22
23
  */
23
- export declare const verbSimple: SparqlGrammarRule<'verbSimple', VariableTerm>;
24
- export declare const objectList: SparqlGrammarRule<"objectList", Triple[], Pick<Triple, "subject" | "predicate">>;
25
- export declare const objectListPath: SparqlGrammarRule<"objectListPath", Triple[], Pick<Triple, "subject" | "predicate">>;
26
- /**
27
- * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)
28
- */
29
- export declare const object: SparqlGrammarRule<"object", Triple[], Pick<Triple, "subject" | "predicate">>;
30
- /**
31
- * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)
32
- */
33
- export declare const objectPath: SparqlGrammarRule<"objectPath", Triple[], Pick<Triple, "subject" | "predicate">>;
34
- /**
35
- * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)
36
- * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)
37
- */
38
- export declare const triplesNode: SparqlGrammarRule<'triplesNode', ITriplesNode>;
39
- export declare const triplesNodePath: SparqlGrammarRule<'triplesNodePath', ITriplesNode>;
40
- export declare const blankNodePropertyList: SparqlGrammarRule<"blankNodePropertyList", ITriplesNode>;
41
- export declare const blankNodePropertyListPath: SparqlGrammarRule<"blankNodePropertyListPath", ITriplesNode>;
42
- export declare const collection: SparqlGrammarRule<"collection", ITriplesNode>;
43
- export declare const collectionPath: SparqlGrammarRule<"collectionPath", ITriplesNode>;
44
- export declare const graphNode: SparqlGrammarRule<"graphNode", IGraphNode>;
45
- export declare const graphNodePath: SparqlGrammarRule<"graphNodePath", IGraphNode>;
24
+ export declare const verbSimple: SparqlGrammarRule<'verbSimple', TermVariable>;
25
+ export declare const objectList: SparqlGrammarRule<"objectList", TripleNesting[], Pick<TripleNesting, "subject" | "predicate">>;
26
+ export declare const objectListPath: SparqlGrammarRule<"objectListPath", TripleNesting[], Pick<TripleNesting, "subject" | "predicate">>;
27
+ export declare const object: SparqlGrammarRule<"object", TripleNesting, Pick<TripleNesting, "subject" | "predicate">>;
28
+ export declare const objectPath: SparqlGrammarRule<"objectPath", TripleNesting, Pick<TripleNesting, "subject" | "predicate">>;
29
+ export declare const collection: SparqlRule<"collection", TripleCollectionList>;
30
+ export declare const collectionPath: SparqlRule<"collectionPath", TripleCollectionList>;
31
+ export declare const triplesNode: SparqlRule<"triplesNode", TripleCollection>;
32
+ export declare const triplesNodePath: SparqlRule<"triplesNodePath", TripleCollection>;
33
+ export declare const blankNodePropertyList: SparqlRule<"blankNodePropertyList", TripleCollectionBlankNodeProperties>;
34
+ export declare const blankNodePropertyListPath: SparqlRule<"blankNodePropertyListPath", TripleCollectionBlankNodeProperties>;
35
+ export declare const graphNode: SparqlRule<"graphNode", TripleCollection | Term>;
36
+ export declare const graphNodePath: SparqlRule<"graphNodePath", TripleCollection | Term>;
@@ -1,26 +1,27 @@
1
1
  import { CommonIRIs } from '../grammar-helpers/utils';
2
2
  import * as l from '../lexer';
3
3
  import { var_, varOrTerm, verb } from './general';
4
- import { path } from './propertyPaths';
5
- function triplesDotSeperated(subRule) {
6
- return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => () => {
4
+ import { path, pathGenerator } from './propertyPaths';
5
+ function triplesDotSeperated(triplesSameSubjectSubrule) {
6
+ return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
7
7
  const triples = [];
8
8
  let parsedDot = true;
9
+ let dotToken;
9
10
  AT_LEAST_ONE({
10
11
  GATE: () => parsedDot,
11
12
  DEF: () => {
12
13
  parsedDot = false;
13
- const template = SUBRULE(subRule, undefined);
14
+ const template = SUBRULE(triplesSameSubjectSubrule, undefined);
14
15
  ACTION(() => {
15
16
  triples.push(...template);
16
17
  });
17
18
  OPTION(() => {
18
- CONSUME(l.symbols.dot);
19
+ dotToken = CONSUME(l.symbols.dot);
19
20
  parsedDot = true;
20
21
  });
21
22
  },
22
23
  });
23
- return triples;
24
+ return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
24
25
  };
25
26
  }
26
27
  /**
@@ -28,44 +29,78 @@ function triplesDotSeperated(subRule) {
28
29
  */
29
30
  export const triplesBlock = {
30
31
  name: 'triplesBlock',
31
- impl: implArgs => C => ({
32
- type: 'bgp',
33
- triples: triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, undefined),
34
- }),
35
- gImpl: ({ SUBRULE }) => ast => ast.triples.map((triple) => {
36
- const { subject, predicate, object } = triple;
37
- return [subject, predicate, object].map((part) => {
38
- if ('type' in part) {
39
- return SUBRULE(path, part, undefined);
40
- }
41
- return SUBRULE(varOrTerm, part, undefined);
42
- }).join(' ');
43
- }).join(' .\n'),
32
+ impl: implArgs => C => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, undefined),
33
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {
34
+ for (const [index, triple] of ast.triples.entries()) {
35
+ HANDLE_LOC(triple, () => {
36
+ const nextTriple = ast.triples.at(index);
37
+ if (F.isTripleCollection(triple)) {
38
+ SUBRULE(graphNodePath, triple, undefined);
39
+ // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.
40
+ F.printFilter(triple, () => PRINT_WORD('.'));
41
+ }
42
+ else {
43
+ // Subject
44
+ SUBRULE(graphNodePath, triple.subject, undefined);
45
+ // Predicate
46
+ if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {
47
+ SUBRULE(varOrTerm, triple.predicate, undefined);
48
+ }
49
+ else {
50
+ SUBRULE(pathGenerator, triple.predicate, undefined);
51
+ }
52
+ // Object
53
+ SUBRULE(graphNodePath, triple.object, undefined);
54
+ // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT
55
+ if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||
56
+ !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
57
+ F.printFilter(ast, () => PRINT_WORD('.'));
58
+ }
59
+ else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
60
+ F.printFilter(ast, () => PRINT_WORD(','));
61
+ }
62
+ else {
63
+ F.printFilter(ast, () => PRINT_WORD(';'));
64
+ }
65
+ }
66
+ });
67
+ }
68
+ },
44
69
  };
45
70
  /**
46
71
  * [[75]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubject)
47
72
  * [[81]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubjectPath)
73
+ * CONTRACT: triples generated from the subject come first, then comes the main triple,
74
+ * and then come the triples from the object. Only the first occurrence of a term has `SourceLocationType = source`
48
75
  */
49
76
  function triplesSameSubjectImpl(name, allowPaths) {
50
77
  return {
51
78
  name,
52
- impl: ({ ACTION, SUBRULE, OR }) => () => OR([
53
- {
54
- ALT: () => {
79
+ impl: ({ ACTION, SUBRULE, OR }) => C => OR([
80
+ { ALT: () => {
55
81
  const subject = SUBRULE(varOrTerm, undefined);
56
- return SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, { subject });
57
- },
58
- },
59
- {
60
- ALT: () => {
82
+ const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, { subject: ACTION(() => C.factory.dematerialized(subject)) });
83
+ // Only the first occurrence of a subject is actually materialized.
84
+ return ACTION(() => {
85
+ if (res.length > 0) {
86
+ res[0].subject = subject;
87
+ res[0].loc = C.factory.sourceLocation(subject, res[0]);
88
+ }
89
+ return res;
90
+ });
91
+ } },
92
+ { ALT: () => {
61
93
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, undefined);
62
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, { subject: subjectNode.node });
63
- return ACTION(() => [
64
- ...restNode,
65
- ...subjectNode.triples,
66
- ]);
67
- },
68
- },
94
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) });
95
+ return ACTION(() => {
96
+ if (restNode.length === 0) {
97
+ return [subjectNode];
98
+ }
99
+ restNode[0].subject = subjectNode;
100
+ restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
101
+ return restNode;
102
+ });
103
+ } },
69
104
  ]),
70
105
  };
71
106
  }
@@ -113,11 +148,13 @@ function propertyListNotEmptyImplementation(name, allowPaths) {
113
148
  ]) :
114
149
  SUBRULE1(verb, undefined);
115
150
  const triples = SUBRULE1(allowPaths ? objectListPath : objectList, ACTION(() => ({ subject: arg.subject, predicate })));
116
- ACTION(() => result.push(...triples));
117
151
  MANY2(() => {
118
152
  CONSUME(l.symbols.semi);
119
153
  parsedSemi = true;
120
154
  });
155
+ ACTION(() => {
156
+ result.push(...triples);
157
+ });
121
158
  },
122
159
  });
123
160
  return result;
@@ -150,11 +187,13 @@ function objectListImpl(name, allowPaths) {
150
187
  impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {
151
188
  const objects = [];
152
189
  AT_LEAST_ONE_SEP({
190
+ SEP: l.symbols.comma,
153
191
  DEF: () => {
154
- const objectTriples = SUBRULE(allowPaths ? objectPath : object, arg);
155
- ACTION(() => objects.push(...objectTriples));
192
+ const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);
193
+ ACTION(() => {
194
+ objects.push(objectTriple);
195
+ });
156
196
  },
157
- SEP: l.symbols.comma,
158
197
  });
159
198
  return objects;
160
199
  },
@@ -162,65 +201,21 @@ function objectListImpl(name, allowPaths) {
162
201
  }
163
202
  export const objectList = objectListImpl('objectList', false);
164
203
  export const objectListPath = objectListImpl('objectListPath', true);
165
- function objectImpl(name, allowPaths) {
166
- return {
167
- name,
168
- impl: ({ ACTION, SUBRULE }) => (_, arg) => {
169
- const node = SUBRULE(allowPaths ? graphNodePath : graphNode, undefined);
170
- return ACTION(() => [
171
- { subject: arg.subject, predicate: arg.predicate, object: node.node },
172
- ...node.triples,
173
- ]);
174
- },
175
- };
176
- }
177
204
  /**
178
205
  * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)
179
- */
180
- export const object = objectImpl('object', false);
181
- /**
182
206
  * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)
183
207
  */
184
- export const objectPath = objectImpl('objectPath', true);
185
- /**
186
- * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)
187
- * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)
188
- */
189
- export const triplesNode = {
190
- name: 'triplesNode',
191
- impl: ({ SUBRULE, OR }) => () => OR([
192
- { ALT: () => SUBRULE(collection, undefined) },
193
- { ALT: () => SUBRULE(blankNodePropertyList, undefined) },
194
- ]),
195
- };
196
- export const triplesNodePath = {
197
- name: 'triplesNodePath',
198
- impl: ({ SUBRULE, OR }) => () => OR([
199
- { ALT: () => SUBRULE(collectionPath, undefined) },
200
- { ALT: () => SUBRULE(blankNodePropertyListPath, undefined) },
201
- ]),
202
- };
203
- /**
204
- * [[99]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyList)
205
- * [[101]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyListPath)
206
- */
207
- function blankNodePropertyListImpl(name, allowPaths) {
208
+ function objectImpl(name, allowPaths) {
208
209
  return {
209
210
  name,
210
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
211
- CONSUME(l.symbols.LSquare);
212
- let blankNode;
213
- const propList = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, { subject: ACTION(() => blankNode = C.dataFactory.blankNode()) });
214
- CONSUME(l.symbols.RSquare);
215
- return ACTION(() => ({
216
- node: blankNode,
217
- triples: propList,
218
- }));
211
+ impl: ({ ACTION, SUBRULE }) => (C, arg) => {
212
+ const node = SUBRULE(allowPaths ? graphNodePath : graphNode, undefined);
213
+ return ACTION(() => C.factory.triple(arg.subject, arg.predicate, node));
219
214
  },
220
215
  };
221
216
  }
222
- export const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);
223
- export const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', true);
217
+ export const object = objectImpl('object', false);
218
+ export const objectPath = objectImpl('objectPath', true);
224
219
  /**
225
220
  * [[102]](https://www.w3.org/TR/sparql11-query/#rCollection)
226
221
  * [[103]](https://www.w3.org/TR/sparql11-query/#rCollectionPath)
@@ -232,78 +227,129 @@ function collectionImpl(name, allowPaths) {
232
227
  // Construct a [cons list](https://en.wikipedia.org/wiki/Cons#Lists),
233
228
  // here called a [RDF collection](https://www.w3.org/TR/sparql11-query/#collections).
234
229
  const terms = [];
235
- CONSUME(l.symbols.LParen);
230
+ const startToken = CONSUME(l.symbols.LParen);
236
231
  AT_LEAST_ONE(() => {
237
232
  terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, undefined));
238
233
  });
239
- CONSUME(l.symbols.RParen);
234
+ const endToken = CONSUME(l.symbols.RParen);
240
235
  return ACTION(() => {
236
+ const F = C.factory;
241
237
  const triples = [];
242
- const appendTriples = [];
243
- const listHead = C.dataFactory.blankNode();
238
+ // The triples created in your recursion
239
+ const predFirst = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.FIRST, undefined);
240
+ const predRest = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.REST, undefined);
241
+ const predNil = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.NIL, undefined);
242
+ const listHead = F.blankNode(undefined, F.sourceLocationNoMaterialize());
244
243
  let iterHead = listHead;
245
- const predFirst = C.dataFactory.namedNode(CommonIRIs.FIRST);
246
- const predRest = C.dataFactory.namedNode(CommonIRIs.REST);
247
244
  for (const [index, term] of terms.entries()) {
248
- const headTriple = {
249
- subject: iterHead,
250
- predicate: predFirst,
251
- object: term.node,
252
- };
245
+ const lastInList = index === terms.length - 1;
246
+ const headTriple = F.triple(iterHead, predFirst, term);
253
247
  triples.push(headTriple);
254
- appendTriples.push(...term.triples);
255
248
  // If not the last, create new iterHead, otherwise, close list
256
- if (index === terms.length - 1) {
257
- const nilTriple = {
258
- subject: iterHead,
259
- predicate: predRest,
260
- object: C.dataFactory.namedNode(CommonIRIs.NIL),
261
- };
249
+ if (lastInList) {
250
+ const nilTriple = F.triple(iterHead, predRest, predNil);
262
251
  triples.push(nilTriple);
263
252
  }
264
253
  else {
265
- const tail = C.dataFactory.blankNode();
266
- const linkTriple = {
267
- subject: iterHead,
268
- predicate: predRest,
269
- object: tail,
270
- };
254
+ const tail = F.blankNode(undefined, F.sourceLocationNoMaterialize());
255
+ const linkTriple = F.triple(iterHead, predRest, tail);
271
256
  triples.push(linkTriple);
272
257
  iterHead = tail;
273
258
  }
274
259
  }
275
- return {
276
- node: listHead,
277
- triples: [...triples, ...appendTriples],
278
- };
260
+ return F.tripleCollectionList(listHead, triples, F.sourceLocation(startToken, endToken));
279
261
  });
280
262
  },
263
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
264
+ F.printFilter(ast, () => PRINT_WORD('('));
265
+ // Only every 2 triple is relevant. The odd triples are linking triples.
266
+ for (const [idx, triple] of ast.triples.entries()) {
267
+ if (idx % 2 === 0) {
268
+ SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, undefined);
269
+ }
270
+ }
271
+ F.printFilter(ast, () => PRINT_WORD(')'));
272
+ },
281
273
  };
282
274
  }
283
275
  export const collection = collectionImpl('collection', false);
284
276
  export const collectionPath = collectionImpl('collectionPath', true);
277
+ /**
278
+ * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)
279
+ * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)
280
+ */
281
+ function triplesNodeImpl(name, allowPaths) {
282
+ return {
283
+ name,
284
+ impl: ({ SUBRULE, OR }) => () => OR([
285
+ { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, undefined) },
286
+ { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, undefined) },
287
+ ]),
288
+ gImpl: ({ SUBRULE }) => ast => ast.subType === 'list' ?
289
+ SUBRULE(allowPaths ? collectionPath : collection, ast, undefined) :
290
+ SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, undefined),
291
+ };
292
+ }
293
+ export const triplesNode = triplesNodeImpl('triplesNode', false);
294
+ export const triplesNodePath = triplesNodeImpl('triplesNodePath', true);
295
+ /**
296
+ * [[99]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyList)
297
+ * [[101]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyListPath)
298
+ */
299
+ function blankNodePropertyListImpl(name, allowPaths) {
300
+ const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
301
+ return {
302
+ name,
303
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
304
+ const startToken = CONSUME(l.symbols.LSquare);
305
+ const blankNode = ACTION(() => C.factory.blankNode(undefined, C.factory.sourceLocationNoMaterialize()));
306
+ const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode });
307
+ const endToken = CONSUME(l.symbols.RSquare);
308
+ return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(blankNode, propList, C.factory.sourceLocation(startToken, endToken)));
309
+ },
310
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {
311
+ F.printFilter(ast, () => PRINT('['));
312
+ for (const triple of ast.triples) {
313
+ HANDLE_LOC(triple, () => {
314
+ if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {
315
+ SUBRULE(varOrTerm, triple.predicate, undefined);
316
+ }
317
+ else {
318
+ SUBRULE(pathGenerator, triple.predicate, undefined);
319
+ }
320
+ SUBRULE(graphNodePath, triple.object, undefined);
321
+ F.printFilter(ast, () => PRINT_WORD(';'));
322
+ });
323
+ }
324
+ F.printFilter(ast, () => PRINT(']'));
325
+ },
326
+ };
327
+ }
328
+ export const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);
329
+ export const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', true);
285
330
  /**
286
331
  * [[103]](https://www.w3.org/TR/sparql11-query/#rGraphNode)
287
332
  * [[105]](https://www.w3.org/TR/sparql11-query/#rGraphNodePath)
288
333
  */
289
334
  function graphNodeImpl(name, allowPaths) {
335
+ const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
290
336
  return {
291
337
  name,
292
338
  impl: ({ SUBRULE, OR }) => C => OR([
293
- {
294
- ALT: () => {
295
- const val = SUBRULE(varOrTerm, undefined);
296
- return {
297
- node: val,
298
- triples: [],
299
- };
300
- },
301
- },
339
+ { ALT: () => SUBRULE(varOrTerm, undefined) },
302
340
  {
303
341
  GATE: () => C.parseMode.has('canCreateBlankNodes'),
304
- ALT: () => SUBRULE(allowPaths ? triplesNodePath : triplesNode, undefined),
342
+ ALT: () => SUBRULE(triplesNodeRule, undefined),
305
343
  },
306
344
  ]),
345
+ gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
346
+ if (F.isTerm(ast)) {
347
+ SUBRULE(varOrTerm, ast, undefined);
348
+ }
349
+ else {
350
+ SUBRULE(triplesNodeRule, ast, undefined);
351
+ }
352
+ },
307
353
  };
308
354
  }
309
355
  export const graphNode = graphNodeImpl('graphNode', false);