@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.
- package/lib/RoundTripTypes.d.ts +379 -0
- package/lib/RoundTripTypes.js +2 -0
- package/lib/RoundTripTypes.js.map +1 -0
- package/lib/Sparql11types.d.ts +18 -245
- package/lib/Sparql11types.js.map +1 -1
- package/lib/SparqlParser.d.ts +13 -4
- package/lib/SparqlParser.js +7 -4
- package/lib/SparqlParser.js.map +1 -1
- package/lib/expressionHelpers.d.ts +8 -19
- package/lib/expressionHelpers.js +40 -103
- package/lib/expressionHelpers.js.map +1 -1
- package/lib/factory.d.ts +447 -0
- package/lib/factory.js +105 -0
- package/lib/factory.js.map +1 -0
- package/lib/factoryMixins/ContextFactory.d.ts +38 -0
- package/lib/factoryMixins/ContextFactory.js +30 -0
- package/lib/factoryMixins/ContextFactory.js.map +1 -0
- package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
- package/lib/factoryMixins/ExpressionFactory.js +83 -0
- package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
- package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
- package/lib/factoryMixins/GraphRefFactory.js +51 -0
- package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
- package/lib/factoryMixins/PathFactory.d.ts +51 -0
- package/lib/factoryMixins/PathFactory.js +68 -0
- package/lib/factoryMixins/PathFactory.js.map +1 -0
- package/lib/factoryMixins/Patternfactory.d.ts +55 -0
- package/lib/factoryMixins/Patternfactory.js +98 -0
- package/lib/factoryMixins/Patternfactory.js.map +1 -0
- package/lib/factoryMixins/QueryFactory.d.ts +41 -0
- package/lib/factoryMixins/QueryFactory.js +43 -0
- package/lib/factoryMixins/QueryFactory.js.map +1 -0
- package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
- package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
- package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
- package/lib/factoryMixins/TermFactory.d.ts +76 -0
- package/lib/factoryMixins/TermFactory.js +84 -0
- package/lib/factoryMixins/TermFactory.js.map +1 -0
- package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
- package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
- package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
- package/lib/factoryMixins/mixins.d.ts +14 -0
- package/lib/factoryMixins/mixins.js +20 -0
- package/lib/factoryMixins/mixins.js.map +1 -0
- package/lib/grammar/builtIn.d.ts +59 -59
- package/lib/grammar/builtIn.js +50 -57
- package/lib/grammar/builtIn.js.map +1 -1
- package/lib/grammar/dataSetClause.d.ts +22 -9
- package/lib/grammar/dataSetClause.js +57 -14
- package/lib/grammar/dataSetClause.js.map +1 -1
- package/lib/grammar/expression.d.ts +12 -16
- package/lib/grammar/expression.js +224 -296
- package/lib/grammar/expression.js.map +1 -1
- package/lib/grammar/general.d.ts +8 -8
- package/lib/grammar/general.js +59 -94
- package/lib/grammar/general.js.map +1 -1
- package/lib/grammar/literals.d.ts +16 -13
- package/lib/grammar/literals.js +161 -144
- package/lib/grammar/literals.js.map +1 -1
- package/lib/grammar/propertyPaths.d.ts +16 -12
- package/lib/grammar/propertyPaths.js +100 -129
- package/lib/grammar/propertyPaths.js.map +1 -1
- package/lib/grammar/queryUnit/queryUnit.d.ts +13 -17
- package/lib/grammar/queryUnit/queryUnit.js +195 -329
- package/lib/grammar/queryUnit/queryUnit.js.map +1 -1
- package/lib/grammar/solutionModifier.d.ts +12 -11
- package/lib/grammar/solutionModifier.js +125 -109
- package/lib/grammar/solutionModifier.js.map +1 -1
- package/lib/grammar/tripleBlock.d.ts +24 -33
- package/lib/grammar/tripleBlock.js +172 -126
- package/lib/grammar/tripleBlock.js.map +1 -1
- package/lib/grammar/updateUnit/updateUnit.d.ts +28 -33
- package/lib/grammar/updateUnit/updateUnit.js +282 -367
- package/lib/grammar/updateUnit/updateUnit.js.map +1 -1
- package/lib/grammar/whereClause.d.ts +20 -19
- package/lib/grammar/whereClause.js +232 -245
- package/lib/grammar/whereClause.js.map +1 -1
- package/lib/grammar-helpers/utils.d.ts +0 -4
- package/lib/grammar-helpers/utils.js +0 -37
- package/lib/grammar-helpers/utils.js.map +1 -1
- package/lib/index.cjs +3061 -2438
- package/lib/index.d.ts +4 -2
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/lexer/lexer.d.ts +4 -3
- package/lib/lexer/lexer.js +11 -7
- package/lib/lexer/lexer.js.map +1 -1
- package/lib/lexer/terminals.d.ts +0 -34
- package/lib/lexer/terminals.js +35 -37
- package/lib/lexer/terminals.js.map +1 -1
- package/lib/utils.d.ts +0 -3
- package/lib/utils.js +0 -6
- package/lib/utils.js.map +1 -1
- package/lib/validation/validators.d.ts +14 -0
- package/lib/validation/validators.js +235 -0
- package/lib/validation/validators.js.map +1 -0
- package/package.json +6 -8
- package/lib/Wildcard.d.ts +0 -9
- package/lib/Wildcard.js +0 -19
- 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":"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","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 {
|
|
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',
|
|
6
|
-
export declare const triplesSameSubject: SparqlGrammarRule<"triplesSameSubject",
|
|
7
|
-
export declare const triplesSameSubjectPath: SparqlGrammarRule<"triplesSameSubjectPath",
|
|
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',
|
|
12
|
-
export declare const propertyList: SparqlGrammarRule<"propertyList",
|
|
13
|
-
export declare const propertyListPath: SparqlGrammarRule<"propertyListPath",
|
|
14
|
-
export declare const propertyListNotEmpty: SparqlGrammarRule<"propertyListNotEmpty",
|
|
15
|
-
export declare const propertyListPathNotEmpty: SparqlGrammarRule<"propertyListPathNotEmpty",
|
|
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',
|
|
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',
|
|
24
|
-
export declare const objectList: SparqlGrammarRule<"objectList",
|
|
25
|
-
export declare const objectListPath: SparqlGrammarRule<"objectListPath",
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export declare const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
export declare const
|
|
34
|
-
|
|
35
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 }) =>
|
|
53
|
-
{
|
|
54
|
-
ALT: () => {
|
|
79
|
+
impl: ({ ACTION, SUBRULE, OR }) => C => OR([
|
|
80
|
+
{ ALT: () => {
|
|
55
81
|
const subject = SUBRULE(varOrTerm, undefined);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
63
|
-
return ACTION(() =>
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
155
|
-
ACTION(() =>
|
|
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
|
-
|
|
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
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
223
|
-
export const
|
|
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
|
-
|
|
243
|
-
const
|
|
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
|
|
249
|
-
|
|
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 (
|
|
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 =
|
|
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(
|
|
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);
|