@traqula/rules-sparql-1-1 0.0.1-alpha.10

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 (115) hide show
  1. package/LICENSE.txt +22 -0
  2. package/README.md +17 -0
  3. package/lib/RoundTripTypes.d.ts +379 -0
  4. package/lib/RoundTripTypes.js +2 -0
  5. package/lib/RoundTripTypes.js.map +1 -0
  6. package/lib/Sparql11types.d.ts +68 -0
  7. package/lib/Sparql11types.js +2 -0
  8. package/lib/Sparql11types.js.map +1 -0
  9. package/lib/SparqlParser.d.ts +23 -0
  10. package/lib/SparqlParser.js +32 -0
  11. package/lib/SparqlParser.js.map +1 -0
  12. package/lib/expressionHelpers.d.ts +45 -0
  13. package/lib/expressionHelpers.js +161 -0
  14. package/lib/expressionHelpers.js.map +1 -0
  15. package/lib/factory.d.ts +447 -0
  16. package/lib/factory.js +105 -0
  17. package/lib/factory.js.map +1 -0
  18. package/lib/factoryMixins/ContextFactory.d.ts +38 -0
  19. package/lib/factoryMixins/ContextFactory.js +30 -0
  20. package/lib/factoryMixins/ContextFactory.js.map +1 -0
  21. package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
  22. package/lib/factoryMixins/ExpressionFactory.js +83 -0
  23. package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  24. package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
  25. package/lib/factoryMixins/GraphRefFactory.js +51 -0
  26. package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  27. package/lib/factoryMixins/PathFactory.d.ts +51 -0
  28. package/lib/factoryMixins/PathFactory.js +68 -0
  29. package/lib/factoryMixins/PathFactory.js.map +1 -0
  30. package/lib/factoryMixins/Patternfactory.d.ts +55 -0
  31. package/lib/factoryMixins/Patternfactory.js +98 -0
  32. package/lib/factoryMixins/Patternfactory.js.map +1 -0
  33. package/lib/factoryMixins/QueryFactory.d.ts +41 -0
  34. package/lib/factoryMixins/QueryFactory.js +43 -0
  35. package/lib/factoryMixins/QueryFactory.js.map +1 -0
  36. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
  37. package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
  38. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  39. package/lib/factoryMixins/TermFactory.d.ts +76 -0
  40. package/lib/factoryMixins/TermFactory.js +84 -0
  41. package/lib/factoryMixins/TermFactory.js.map +1 -0
  42. package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
  43. package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
  44. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  45. package/lib/factoryMixins/mixins.d.ts +14 -0
  46. package/lib/factoryMixins/mixins.js +20 -0
  47. package/lib/factoryMixins/mixins.js.map +1 -0
  48. package/lib/grammar/builtIn.d.ts +89 -0
  49. package/lib/grammar/builtIn.js +247 -0
  50. package/lib/grammar/builtIn.js.map +1 -0
  51. package/lib/grammar/dataSetClause.d.ts +34 -0
  52. package/lib/grammar/dataSetClause.js +81 -0
  53. package/lib/grammar/dataSetClause.js.map +1 -0
  54. package/lib/grammar/expression.d.ts +63 -0
  55. package/lib/grammar/expression.js +383 -0
  56. package/lib/grammar/expression.js.map +1 -0
  57. package/lib/grammar/general.d.ts +36 -0
  58. package/lib/grammar/general.js +145 -0
  59. package/lib/grammar/general.js.map +1 -0
  60. package/lib/grammar/index.d.ts +12 -0
  61. package/lib/grammar/index.js +13 -0
  62. package/lib/grammar/index.js.map +1 -0
  63. package/lib/grammar/literals.d.ts +55 -0
  64. package/lib/grammar/literals.js +258 -0
  65. package/lib/grammar/literals.js.map +1 -0
  66. package/lib/grammar/propertyPaths.d.ts +43 -0
  67. package/lib/grammar/propertyPaths.js +182 -0
  68. package/lib/grammar/propertyPaths.js.map +1 -0
  69. package/lib/grammar/queryUnit/queryUnit.d.ts +48 -0
  70. package/lib/grammar/queryUnit/queryUnit.js +366 -0
  71. package/lib/grammar/queryUnit/queryUnit.js.map +1 -0
  72. package/lib/grammar/solutionModifier.d.ts +44 -0
  73. package/lib/grammar/solutionModifier.js +253 -0
  74. package/lib/grammar/solutionModifier.js.map +1 -0
  75. package/lib/grammar/tripleBlock.d.ts +36 -0
  76. package/lib/grammar/tripleBlock.js +357 -0
  77. package/lib/grammar/tripleBlock.js.map +1 -0
  78. package/lib/grammar/updateUnit/updateUnit.d.ts +95 -0
  79. package/lib/grammar/updateUnit/updateUnit.js +493 -0
  80. package/lib/grammar/updateUnit/updateUnit.js.map +1 -0
  81. package/lib/grammar/whereClause.d.ts +76 -0
  82. package/lib/grammar/whereClause.js +441 -0
  83. package/lib/grammar/whereClause.js.map +1 -0
  84. package/lib/grammar-helpers/utils.d.ts +12 -0
  85. package/lib/grammar-helpers/utils.js +16 -0
  86. package/lib/grammar-helpers/utils.js.map +1 -0
  87. package/lib/index.cjs +14565 -0
  88. package/lib/index.d.ts +10 -0
  89. package/lib/index.js +11 -0
  90. package/lib/index.js.map +1 -0
  91. package/lib/lexer/BuildinCalls.d.ts +126 -0
  92. package/lib/lexer/BuildinCalls.js +188 -0
  93. package/lib/lexer/BuildinCalls.js.map +1 -0
  94. package/lib/lexer/graph.d.ts +6 -0
  95. package/lib/lexer/graph.js +8 -0
  96. package/lib/lexer/graph.js.map +1 -0
  97. package/lib/lexer/index.d.ts +5 -0
  98. package/lib/lexer/index.js +6 -0
  99. package/lib/lexer/index.js.map +1 -0
  100. package/lib/lexer/lexer.d.ts +54 -0
  101. package/lib/lexer/lexer.js +70 -0
  102. package/lib/lexer/lexer.js.map +1 -0
  103. package/lib/lexer/symbols.d.ts +28 -0
  104. package/lib/lexer/symbols.js +29 -0
  105. package/lib/lexer/symbols.js.map +1 -0
  106. package/lib/lexer/terminals.d.ts +26 -0
  107. package/lib/lexer/terminals.js +63 -0
  108. package/lib/lexer/terminals.js.map +1 -0
  109. package/lib/utils.d.ts +5 -0
  110. package/lib/utils.js +24 -0
  111. package/lib/utils.js.map +1 -0
  112. package/lib/validation/validators.d.ts +14 -0
  113. package/lib/validation/validators.js +235 -0
  114. package/lib/validation/validators.js.map +1 -0
  115. package/package.json +48 -0
@@ -0,0 +1,126 @@
1
+ const nodeType = 'updateOperation';
2
+ // eslint-disable-next-line ts/explicit-function-return-type
3
+ export function UpdateOperationFactoryMixin(Base) {
4
+ return class UpdateOperationFactory extends Base {
5
+ isUpdateOperation(obj) {
6
+ return this.isOfType(obj, nodeType);
7
+ }
8
+ updateOperationLoad(loc, source, silent, destination) {
9
+ return {
10
+ type: nodeType,
11
+ subType: 'load',
12
+ silent,
13
+ source,
14
+ ...(destination && { destination }),
15
+ loc,
16
+ };
17
+ }
18
+ isUpdateOperationLoad(obj) {
19
+ return this.isOfSubType(obj, nodeType, 'load');
20
+ }
21
+ updateOperationClearDrop(subType, silent, destination, loc) {
22
+ return {
23
+ type: 'updateOperation',
24
+ subType,
25
+ silent,
26
+ destination,
27
+ loc,
28
+ };
29
+ }
30
+ updateOperationClear(destination, silent, loc) {
31
+ return this.updateOperationClearDrop('clear', silent, destination, loc);
32
+ }
33
+ ;
34
+ isUpdateOperationClear(obj) {
35
+ return this.isOfSubType(obj, nodeType, 'clear');
36
+ }
37
+ updateOperationDrop(destination, silent, loc) {
38
+ return this.updateOperationClearDrop('drop', silent, destination, loc);
39
+ }
40
+ isUpdateOperationDrop(obj) {
41
+ return this.isOfSubType(obj, nodeType, 'drop');
42
+ }
43
+ updateOperationCreate(destination, silent, loc) {
44
+ return {
45
+ type: 'updateOperation',
46
+ subType: 'create',
47
+ silent,
48
+ destination,
49
+ loc,
50
+ };
51
+ }
52
+ isUpdateOperationCreate(obj) {
53
+ return this.isOfSubType(obj, nodeType, 'create');
54
+ }
55
+ updateOperationAddMoveCopy(subType, source, destination, silent, loc) {
56
+ return {
57
+ type: 'updateOperation',
58
+ subType,
59
+ silent,
60
+ source,
61
+ destination,
62
+ loc,
63
+ };
64
+ }
65
+ updateOperationAdd(source, destination, silent, loc) {
66
+ return this.updateOperationAddMoveCopy('add', source, destination, silent, loc);
67
+ }
68
+ isUpdateOperationAdd(obj) {
69
+ return this.isOfSubType(obj, nodeType, 'add');
70
+ }
71
+ updateOperationMove(source, destination, silent, loc) {
72
+ return this.updateOperationAddMoveCopy('move', source, destination, silent, loc);
73
+ }
74
+ isUpdateOperationMove(obj) {
75
+ return this.isOfSubType(obj, nodeType, 'move');
76
+ }
77
+ updateOperationCopy(source, destination, silent, loc) {
78
+ return this.updateOperationAddMoveCopy('copy', source, destination, silent, loc);
79
+ }
80
+ isUpdateOperationCopy(obj) {
81
+ return this.isOfSubType(obj, nodeType, 'copy');
82
+ }
83
+ updateOperationInsDelDataWhere(subType, data, loc) {
84
+ return {
85
+ type: 'updateOperation',
86
+ subType,
87
+ data,
88
+ loc,
89
+ };
90
+ }
91
+ updateOperationInsertData(data, loc) {
92
+ return this.updateOperationInsDelDataWhere('insertdata', data, loc);
93
+ }
94
+ isUpdateOperationInsertData(obj) {
95
+ return this.isOfSubType(obj, nodeType, 'insertdata');
96
+ }
97
+ updateOperationDeleteData(data, loc) {
98
+ return this.updateOperationInsDelDataWhere('deletedata', data, loc);
99
+ }
100
+ isUpdateOperationDeleteData(obj) {
101
+ return this.isOfSubType(obj, nodeType, 'deletedata');
102
+ }
103
+ updateOperationDeleteWhere(data, loc) {
104
+ return this.updateOperationInsDelDataWhere('deletewhere', data, loc);
105
+ }
106
+ isUpdateOperationDeleteWhere(obj) {
107
+ return this.isOfSubType(obj, nodeType, 'deletewhere');
108
+ }
109
+ updateOperationModify(loc, insert, del, where, from, graph) {
110
+ return {
111
+ type: 'updateOperation',
112
+ subType: 'modify',
113
+ insert: insert ?? [],
114
+ delete: del ?? [],
115
+ graph,
116
+ where,
117
+ from,
118
+ loc,
119
+ };
120
+ }
121
+ isUpdateOperationModify(obj) {
122
+ return this.isOfSubType(obj, nodeType, 'modify');
123
+ }
124
+ };
125
+ }
126
+ //# sourceMappingURL=UpdateOperationFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateOperationFactory.js","sourceRoot":"","sources":["UpdateOperationFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CoreFactory, SourceLocation, SubTyped, Typed } from '@traqula/core';\nimport type {\n DatasetClauses,\n GraphRef,\n GraphRefDefault,\n GraphRefSpecific,\n PatternGroup,\n Quads,\n TermIri,\n UpdateOperationAdd,\n UpdateOperationClear,\n UpdateOperationCopy,\n UpdateOperationCreate,\n UpdateOperationDeleteData,\n UpdateOperationDeleteWhere,\n UpdateOperationDrop,\n UpdateOperationInsertData,\n UpdateOperationLoad,\n UpdateOperationModify,\n UpdateOperationMove,\n} from '../RoundTripTypes';\nimport type { Constructor } from './mixins';\n\ntype NodeType = 'updateOperation';\nconst nodeType: NodeType = 'updateOperation';\n\n// eslint-disable-next-line ts/explicit-function-return-type\nexport function UpdateOperationFactoryMixin<TBase extends Constructor<CoreFactory>>(Base: TBase) {\n return class UpdateOperationFactory extends Base {\n public isUpdateOperation(obj: object): obj is Typed<NodeType> {\n return this.isOfType(obj, nodeType);\n }\n\n public updateOperationLoad(\n loc: SourceLocation,\n source: TermIri,\n silent: boolean,\n destination?: GraphRefSpecific | undefined,\n ): UpdateOperationLoad {\n return {\n type: nodeType,\n subType: 'load',\n silent,\n source,\n ...(destination && { destination }),\n loc,\n };\n }\n\n public isUpdateOperationLoad(obj: object): obj is SubTyped<NodeType, 'load'> {\n return this.isOfSubType(obj, nodeType, 'load');\n }\n\n public updateOperationClearDrop(subType: 'clear', silent: boolean, destination: GraphRef, loc: SourceLocation):\n UpdateOperationClear;\n public updateOperationClearDrop(subType: 'drop', silent: boolean, destination: GraphRef, loc: SourceLocation):\n UpdateOperationDrop;\n public updateOperationClearDrop(\n subType: 'clear' | 'drop',\n silent: boolean,\n destination: GraphRef,\n loc: SourceLocation\n ): UpdateOperationClear | UpdateOperationDrop;\n public updateOperationClearDrop(\n subType: 'clear' | 'drop',\n silent: boolean,\n destination: GraphRef,\n loc: SourceLocation,\n ): UpdateOperationClear | UpdateOperationDrop {\n return {\n type: 'updateOperation',\n subType,\n silent,\n destination,\n loc,\n };\n }\n\n public updateOperationClear(\n destination: GraphRef,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationClear {\n return this.updateOperationClearDrop('clear', silent, destination, loc);\n };\n\n public isUpdateOperationClear(obj: object): obj is SubTyped<NodeType, 'clear'> {\n return this.isOfSubType(obj, nodeType, 'clear');\n }\n\n public updateOperationDrop(\n destination: GraphRef,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationDrop {\n return this.updateOperationClearDrop('drop', silent, destination, loc);\n }\n\n public isUpdateOperationDrop(obj: object): obj is SubTyped<NodeType, 'drop'> {\n return this.isOfSubType(obj, nodeType, 'drop');\n }\n\n public updateOperationCreate(\n destination: GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationCreate {\n return {\n type: 'updateOperation',\n subType: 'create',\n silent,\n destination,\n loc,\n };\n }\n\n public isUpdateOperationCreate(obj: object): obj is SubTyped<NodeType, 'create'> {\n return this.isOfSubType(obj, nodeType, 'create');\n }\n\n public updateOperationAddMoveCopy(\n subType: 'add',\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationAdd;\n public updateOperationAddMoveCopy(\n subType: 'move',\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationMove ;\n public updateOperationAddMoveCopy(\n subType: 'copy',\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationCopy;\n public updateOperationAddMoveCopy(\n subType: 'add' | 'move' | 'copy',\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationAdd | UpdateOperationMove | UpdateOperationCopy;\n public updateOperationAddMoveCopy(\n subType: 'add' | 'move' | 'copy',\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationAdd | UpdateOperationMove | UpdateOperationCopy {\n return {\n type: 'updateOperation',\n subType,\n silent,\n source,\n destination,\n loc,\n };\n }\n\n public updateOperationAdd(\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationAdd {\n return this.updateOperationAddMoveCopy('add', source, destination, silent, loc);\n }\n\n public isUpdateOperationAdd(obj: object): obj is SubTyped<NodeType, 'add'> {\n return this.isOfSubType(obj, nodeType, 'add');\n }\n\n public updateOperationMove(\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationMove {\n return this.updateOperationAddMoveCopy('move', source, destination, silent, loc);\n }\n\n public isUpdateOperationMove(obj: object): obj is SubTyped<NodeType, 'move'> {\n return this.isOfSubType(obj, nodeType, 'move');\n }\n\n public updateOperationCopy(\n source: GraphRefDefault | GraphRefSpecific,\n destination: GraphRefDefault | GraphRefSpecific,\n silent: boolean,\n loc: SourceLocation,\n ): UpdateOperationCopy {\n return this.updateOperationAddMoveCopy('copy', source, destination, silent, loc);\n }\n\n public isUpdateOperationCopy(obj: object): obj is SubTyped<NodeType, 'copy'> {\n return this.isOfSubType(obj, nodeType, 'copy');\n }\n\n public updateOperationInsDelDataWhere(subType: 'insertdata', data: Quads[], loc: SourceLocation):\n UpdateOperationInsertData;\n public updateOperationInsDelDataWhere(subType: 'deletedata', data: Quads[], loc: SourceLocation):\n UpdateOperationDeleteData;\n public updateOperationInsDelDataWhere(subType: 'deletewhere', data: Quads[], loc: SourceLocation):\n UpdateOperationDeleteWhere;\n public updateOperationInsDelDataWhere(\n subType: 'insertdata' | 'deletedata' | 'deletewhere',\n data: Quads[],\n loc: SourceLocation,\n ): UpdateOperationInsertData | UpdateOperationDeleteData | UpdateOperationDeleteWhere;\n public updateOperationInsDelDataWhere(\n subType: 'insertdata' | 'deletedata' | 'deletewhere',\n data: Quads[],\n loc: SourceLocation,\n ): UpdateOperationInsertData | UpdateOperationDeleteData | UpdateOperationDeleteWhere {\n return {\n type: 'updateOperation',\n subType,\n data,\n loc,\n };\n }\n\n public updateOperationInsertData(data: Quads[], loc: SourceLocation): UpdateOperationInsertData {\n return this.updateOperationInsDelDataWhere('insertdata', data, loc);\n }\n\n public isUpdateOperationInsertData(obj: object): obj is SubTyped<NodeType, 'insertdata'> {\n return this.isOfSubType(obj, nodeType, 'insertdata');\n }\n\n public updateOperationDeleteData(data: Quads[], loc: SourceLocation): UpdateOperationDeleteData {\n return this.updateOperationInsDelDataWhere('deletedata', data, loc);\n }\n\n public isUpdateOperationDeleteData(obj: object): obj is SubTyped<NodeType, 'deletedata'> {\n return this.isOfSubType(obj, nodeType, 'deletedata');\n }\n\n public updateOperationDeleteWhere(data: Quads[], loc: SourceLocation): UpdateOperationDeleteWhere {\n return this.updateOperationInsDelDataWhere('deletewhere', data, loc);\n }\n\n public isUpdateOperationDeleteWhere(obj: object): obj is SubTyped<NodeType, 'deletewhere'> {\n return this.isOfSubType(obj, nodeType, 'deletewhere');\n }\n\n public updateOperationModify(\n loc: SourceLocation,\n insert: Quads[] | undefined,\n del: Quads[] | undefined,\n where: PatternGroup,\n from: DatasetClauses,\n graph?: TermIri | undefined,\n ): UpdateOperationModify {\n return {\n type: 'updateOperation',\n subType: 'modify',\n insert: insert ?? [],\n delete: del ?? [],\n graph,\n where,\n from,\n loc,\n };\n }\n\n public isUpdateOperationModify(obj: object): obj is SubTyped<NodeType, 'modify'> {\n return this.isOfSubType(obj, nodeType, 'modify');\n }\n };\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * We use mixins as explained by the official TypeScript documentation:
3
+ * https://www.typescriptlang.org/docs/handbook/mixins.html
4
+ */
5
+ export type Constructor<T = object> = new (...args: any[]) => T;
6
+ export type Mixin<Base = object, U extends Base = Base> = (superclass: Constructor<Base>) => Constructor<U>;
7
+ export declare function asArg<T>(arg: T): FlatCall<T>;
8
+ declare class FlatCall<Input> {
9
+ private input;
10
+ constructor(input: Input);
11
+ call<Out>(func: (input: Input) => Out): FlatCall<Out>;
12
+ returns(): Input;
13
+ }
14
+ export {};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * We use mixins as explained by the official TypeScript documentation:
3
+ * https://www.typescriptlang.org/docs/handbook/mixins.html
4
+ */
5
+ export function asArg(arg) {
6
+ return new FlatCall(arg);
7
+ }
8
+ class FlatCall {
9
+ constructor(input) {
10
+ this.input = input;
11
+ }
12
+ call(func) {
13
+ this.input = func(this.input);
14
+ return this;
15
+ }
16
+ returns() {
17
+ return this.input;
18
+ }
19
+ }
20
+ //# sourceMappingURL=mixins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixins.js","sourceRoot":"","sources":["mixins.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,KAAK,CAAI,GAAM;IAC7B,OAAO,IAAI,QAAQ,CAAI,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,QAAQ;IACZ,YAA2B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IACpC,IAAI,CAAM,IAA2B;QAC1C,IAAI,CAAC,KAAK,GAAqB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,OAAiC,IAAI,CAAC;IACxC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","sourcesContent":["/**\n * We use mixins as explained by the official TypeScript documentation:\n * https://www.typescriptlang.org/docs/handbook/mixins.html\n */\n\nexport type Constructor<T = object> = new (...args: any[]) => T;\n\nexport type Mixin<Base = object, U extends Base = Base> = (superclass: Constructor<Base>) => Constructor<U>;\n\nexport function asArg<T>(arg: T): FlatCall<T> {\n return new FlatCall<T>(arg);\n}\n\nclass FlatCall<Input> {\n public constructor(private input: Input) {}\n public call<Out>(func: (input: Input) => Out): FlatCall<Out> {\n this.input = <Input> <unknown> func(this.input);\n return <FlatCall<Out>> <unknown> this;\n }\n\n public returns(): Input {\n return this.input;\n }\n}\n"]}
@@ -0,0 +1,89 @@
1
+ import type { IOrAlt } from '@chevrotain/types';
2
+ import type { ImplArgs } from '@traqula/core';
3
+ import type { Expression, ExpressionAggregate, ExpressionAggregateDefault, ExpressionAggregateOnWildcard, ExpressionAggregateSeparator } from '../RoundTripTypes';
4
+ import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
5
+ export declare const builtInStr: import(".").RuleDefExpressionFunctionX<"builtInStr", [Expression]>;
6
+ export declare const builtInLang: import(".").RuleDefExpressionFunctionX<"builtInLang", [Expression]>;
7
+ export declare const builtInLangmatches: import(".").RuleDefExpressionFunctionX<"builtInLangmatches", [Expression, Expression]>;
8
+ export declare const builtInDatatype: import(".").RuleDefExpressionFunctionX<"builtInDatatype", [Expression]>;
9
+ export declare const builtInBound: import(".").RuleDefExpressionFunctionX<"builtInBound", [import("..").TermVariable]>;
10
+ export declare const builtInIri: import(".").RuleDefExpressionFunctionX<"builtInIri", [Expression]>;
11
+ export declare const builtInUri: import(".").RuleDefExpressionFunctionX<"builtInUri", [Expression]>;
12
+ export declare const builtInBnodeSparqlJs: import(".").RuleDefExpressionFunctionX<"builtInBnode", [] | [Expression]>;
13
+ export declare const builtInRand: import(".").RuleDefExpressionFunctionX<"builtInRand", []>;
14
+ export declare const builtInAbs: import(".").RuleDefExpressionFunctionX<"builtInAbs", [Expression]>;
15
+ export declare const builtInCeil: import(".").RuleDefExpressionFunctionX<"builtInCeil", [Expression]>;
16
+ export declare const builtInFloor: import(".").RuleDefExpressionFunctionX<"builtInFloor", [Expression]>;
17
+ export declare const builtInRound: import(".").RuleDefExpressionFunctionX<"builtInRound", [Expression]>;
18
+ export declare const builtInConcat: import(".").RuleDefExpressionFunctionX<"builtInConcat", Expression[]>;
19
+ export declare const builtInStrlen: import(".").RuleDefExpressionFunctionX<"builtInStrlen", [Expression]>;
20
+ export declare const builtInUcase: import(".").RuleDefExpressionFunctionX<"builtInUcase", [Expression]>;
21
+ export declare const builtInLcase: import(".").RuleDefExpressionFunctionX<"builtInLcase", [Expression]>;
22
+ export declare const builtInEncode_for_uri: import(".").RuleDefExpressionFunctionX<"builtInEncode_for_uri", [Expression]>;
23
+ export declare const builtInContains: import(".").RuleDefExpressionFunctionX<"builtInContains", [Expression, Expression]>;
24
+ export declare const builtInStrstarts: import(".").RuleDefExpressionFunctionX<"builtInStrstarts", [Expression, Expression]>;
25
+ export declare const builtInStrends: import(".").RuleDefExpressionFunctionX<"builtInStrends", [Expression, Expression]>;
26
+ export declare const builtInStrbefore: import(".").RuleDefExpressionFunctionX<"builtInStrbefore", [Expression, Expression]>;
27
+ export declare const builtInStrafter: import(".").RuleDefExpressionFunctionX<"builtInStrafter", [Expression, Expression]>;
28
+ export declare const builtInYear: import(".").RuleDefExpressionFunctionX<"builtInYear", [Expression]>;
29
+ export declare const builtInMonth: import(".").RuleDefExpressionFunctionX<"builtInMonth", [Expression]>;
30
+ export declare const builtInDay: import(".").RuleDefExpressionFunctionX<"builtInDay", [Expression]>;
31
+ export declare const builtInHours: import(".").RuleDefExpressionFunctionX<"builtInHours", [Expression]>;
32
+ export declare const builtInMinutes: import(".").RuleDefExpressionFunctionX<"builtInMinutes", [Expression]>;
33
+ export declare const builtInSeconds: import(".").RuleDefExpressionFunctionX<"builtInSeconds", [Expression]>;
34
+ export declare const builtInTimezone: import(".").RuleDefExpressionFunctionX<"builtInTimezone", [Expression]>;
35
+ export declare const builtInTz: import(".").RuleDefExpressionFunctionX<"builtInTz", [Expression]>;
36
+ export declare const builtInNow: import(".").RuleDefExpressionFunctionX<"builtInNow", []>;
37
+ export declare const builtInUuid: import(".").RuleDefExpressionFunctionX<"builtInUuid", []>;
38
+ export declare const builtInStruuid: import(".").RuleDefExpressionFunctionX<"builtInStruuid", []>;
39
+ export declare const builtInMd5: import(".").RuleDefExpressionFunctionX<"builtInMd5", [Expression]>;
40
+ export declare const builtInSha1: import(".").RuleDefExpressionFunctionX<"builtInSha1", [Expression]>;
41
+ export declare const builtInSha256: import(".").RuleDefExpressionFunctionX<"builtInSha256", [Expression]>;
42
+ export declare const builtInSha384: import(".").RuleDefExpressionFunctionX<"builtInSha384", [Expression]>;
43
+ export declare const builtInSha512: import(".").RuleDefExpressionFunctionX<"builtInSha512", [Expression]>;
44
+ export declare const builtInCoalesce: import(".").RuleDefExpressionFunctionX<"builtInCoalesce", Expression[]>;
45
+ export declare const builtInIf: import(".").RuleDefExpressionFunctionX<"builtInIf", [Expression, Expression, Expression]>;
46
+ export declare const builtInStrlang: import(".").RuleDefExpressionFunctionX<"builtInStrlang", [Expression, Expression]>;
47
+ export declare const builtInStrdt: import(".").RuleDefExpressionFunctionX<"builtInStrdt", [Expression, Expression]>;
48
+ export declare const builtInSameterm: import(".").RuleDefExpressionFunctionX<"builtInSameterm", [Expression, Expression]>;
49
+ export declare const builtInIsiri: import(".").RuleDefExpressionFunctionX<"builtInIsiri", [Expression]>;
50
+ export declare const builtInIsuri: import(".").RuleDefExpressionFunctionX<"builtInIsuri", [Expression]>;
51
+ export declare const builtInIsblank: import(".").RuleDefExpressionFunctionX<"builtInIsblank", [Expression]>;
52
+ export declare const builtInIsliteral: import(".").RuleDefExpressionFunctionX<"builtInIsliteral", [Expression]>;
53
+ export declare const builtInIsnumeric: import(".").RuleDefExpressionFunctionX<"builtInIsnumeric", [Expression]>;
54
+ export declare function builtInCallList(SUBRULE: ImplArgs['SUBRULE']): IOrAlt<Expression>[];
55
+ /**
56
+ * [[121]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
57
+ */
58
+ export declare const builtInCall: SparqlGrammarRule<'builtInCall', Expression>;
59
+ /**
60
+ * [[122]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
61
+ */
62
+ export declare const regexExpression: import(".").RuleDefExpressionFunctionX<"builtInRegex", [Expression, Expression] | [Expression, Expression, Expression]>;
63
+ /**
64
+ * [[123]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
65
+ */
66
+ export declare const substringExpression: import(".").RuleDefExpressionFunctionX<"builtInSubstr", [Expression, Expression] | [Expression, Expression, Expression]>;
67
+ /**
68
+ * [[124]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
69
+ */
70
+ export declare const strReplaceExpression: import(".").RuleDefExpressionFunctionX<"builtInReplace", [Expression, Expression, Expression] | [Expression, Expression, Expression, Expression]>;
71
+ /**
72
+ * [[125]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
73
+ */
74
+ export declare const existsFunc: SparqlGrammarRule<"builtInExists", import("..").ExpressionPatternOperation>;
75
+ /**
76
+ * [[126]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
77
+ */
78
+ export declare const notExistsFunc: SparqlGrammarRule<"builtInNotexists", import("..").ExpressionPatternOperation>;
79
+ export declare const aggregateCount: SparqlGrammarRule<'builtInCount', ExpressionAggregateOnWildcard | ExpressionAggregateDefault>;
80
+ export declare const aggregateSum: import(".").RuleDefExpressionAggregatorX<"builtInSum">;
81
+ export declare const aggregateMin: import(".").RuleDefExpressionAggregatorX<"builtInMin">;
82
+ export declare const aggregateMax: import(".").RuleDefExpressionAggregatorX<"builtInMax">;
83
+ export declare const aggregateAvg: import(".").RuleDefExpressionAggregatorX<"builtInAvg">;
84
+ export declare const aggregateSample: import(".").RuleDefExpressionAggregatorX<"builtInSample">;
85
+ export declare const aggregateGroup_concat: SparqlGrammarRule<'builtInGroup_concat', ExpressionAggregateDefault | ExpressionAggregateSeparator>;
86
+ /**
87
+ * [[127]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
88
+ */
89
+ export declare const aggregate: SparqlRule<'aggregate', ExpressionAggregate>;
@@ -0,0 +1,247 @@
1
+ import { unCapitalize, } from '@traqula/core';
2
+ import { funcExprOrNil1, baseAggregateFunc, funcExpr1, funcExpr2, funcExpr2or3, funcExpr3, funcExpr3or4, funcExprList1, funcGroupGraphPattern, funcNil1, funcVar1, } from '../expressionHelpers';
3
+ import * as l from '../lexer';
4
+ import { expression } from './expression';
5
+ import { string, stringEscapedLexical } from './literals';
6
+ export const builtInStr = funcExpr1(l.builtIn.str);
7
+ export const builtInLang = funcExpr1(l.builtIn.lang);
8
+ export const builtInLangmatches = funcExpr2(l.builtIn.langmatches);
9
+ export const builtInDatatype = funcExpr1(l.builtIn.datatype);
10
+ export const builtInBound = funcVar1(l.builtIn.bound);
11
+ export const builtInIri = funcExpr1(l.builtIn.iri);
12
+ export const builtInUri = funcExpr1(l.builtIn.uri);
13
+ export const builtInBnodeSparqlJs = funcExprOrNil1(l.builtIn.bnode);
14
+ export const builtInRand = funcNil1(l.builtIn.rand);
15
+ export const builtInAbs = funcExpr1(l.builtIn.abs);
16
+ export const builtInCeil = funcExpr1(l.builtIn.ceil);
17
+ export const builtInFloor = funcExpr1(l.builtIn.floor);
18
+ export const builtInRound = funcExpr1(l.builtIn.round);
19
+ export const builtInConcat = funcExprList1(l.builtIn.concat);
20
+ export const builtInStrlen = funcExpr1(l.builtIn.strlen);
21
+ export const builtInUcase = funcExpr1(l.builtIn.ucase);
22
+ export const builtInLcase = funcExpr1(l.builtIn.lcase);
23
+ export const builtInEncode_for_uri = funcExpr1(l.builtIn.encode_for_uri);
24
+ export const builtInContains = funcExpr2(l.builtIn.contains);
25
+ export const builtInStrstarts = funcExpr2(l.builtIn.strstarts);
26
+ export const builtInStrends = funcExpr2(l.builtIn.strends);
27
+ export const builtInStrbefore = funcExpr2(l.builtIn.strbefore);
28
+ export const builtInStrafter = funcExpr2(l.builtIn.strafter);
29
+ export const builtInYear = funcExpr1(l.builtIn.year);
30
+ export const builtInMonth = funcExpr1(l.builtIn.month);
31
+ export const builtInDay = funcExpr1(l.builtIn.day);
32
+ export const builtInHours = funcExpr1(l.builtIn.hours);
33
+ export const builtInMinutes = funcExpr1(l.builtIn.minutes);
34
+ export const builtInSeconds = funcExpr1(l.builtIn.seconds);
35
+ export const builtInTimezone = funcExpr1(l.builtIn.timezone);
36
+ export const builtInTz = funcExpr1(l.builtIn.tz);
37
+ export const builtInNow = funcNil1(l.builtIn.now);
38
+ export const builtInUuid = funcNil1(l.builtIn.uuid);
39
+ export const builtInStruuid = funcNil1(l.builtIn.struuid);
40
+ export const builtInMd5 = funcExpr1(l.builtIn.md5);
41
+ export const builtInSha1 = funcExpr1(l.builtIn.sha1);
42
+ export const builtInSha256 = funcExpr1(l.builtIn.sha256);
43
+ export const builtInSha384 = funcExpr1(l.builtIn.sha384);
44
+ export const builtInSha512 = funcExpr1(l.builtIn.sha512);
45
+ export const builtInCoalesce = funcExprList1(l.builtIn.coalesce);
46
+ export const builtInIf = funcExpr3(l.builtIn.if_);
47
+ export const builtInStrlang = funcExpr2(l.builtIn.strlang);
48
+ export const builtInStrdt = funcExpr2(l.builtIn.strdt);
49
+ export const builtInSameterm = funcExpr2(l.builtIn.sameterm);
50
+ export const builtInIsiri = funcExpr1(l.builtIn.isiri);
51
+ export const builtInIsuri = funcExpr1(l.builtIn.isuri);
52
+ export const builtInIsblank = funcExpr1(l.builtIn.isblank);
53
+ export const builtInIsliteral = funcExpr1(l.builtIn.isliteral);
54
+ export const builtInIsnumeric = funcExpr1(l.builtIn.isnumeric);
55
+ export function builtInCallList(SUBRULE) {
56
+ return [
57
+ { ALT: () => SUBRULE(aggregate, undefined) },
58
+ { ALT: () => SUBRULE(builtInStr, undefined) },
59
+ { ALT: () => SUBRULE(builtInLang, undefined) },
60
+ { ALT: () => SUBRULE(builtInLangmatches, undefined) },
61
+ { ALT: () => SUBRULE(builtInDatatype, undefined) },
62
+ { ALT: () => SUBRULE(builtInBound, undefined) },
63
+ { ALT: () => SUBRULE(builtInIri, undefined) },
64
+ { ALT: () => SUBRULE(builtInUri, undefined) },
65
+ { ALT: () => SUBRULE(builtInBnodeSparqlJs, undefined) },
66
+ { ALT: () => SUBRULE(builtInRand, undefined) },
67
+ { ALT: () => SUBRULE(builtInAbs, undefined) },
68
+ { ALT: () => SUBRULE(builtInCeil, undefined) },
69
+ { ALT: () => SUBRULE(builtInFloor, undefined) },
70
+ { ALT: () => SUBRULE(builtInRound, undefined) },
71
+ { ALT: () => SUBRULE(builtInConcat, undefined) },
72
+ { ALT: () => SUBRULE(substringExpression, undefined) },
73
+ { ALT: () => SUBRULE(builtInStrlen, undefined) },
74
+ { ALT: () => SUBRULE(strReplaceExpression, undefined) },
75
+ { ALT: () => SUBRULE(builtInUcase, undefined) },
76
+ { ALT: () => SUBRULE(builtInLcase, undefined) },
77
+ { ALT: () => SUBRULE(builtInEncode_for_uri, undefined) },
78
+ { ALT: () => SUBRULE(builtInContains, undefined) },
79
+ { ALT: () => SUBRULE(builtInStrstarts, undefined) },
80
+ { ALT: () => SUBRULE(builtInStrends, undefined) },
81
+ { ALT: () => SUBRULE(builtInStrbefore, undefined) },
82
+ { ALT: () => SUBRULE(builtInStrafter, undefined) },
83
+ { ALT: () => SUBRULE(builtInYear, undefined) },
84
+ { ALT: () => SUBRULE(builtInMonth, undefined) },
85
+ { ALT: () => SUBRULE(builtInDay, undefined) },
86
+ { ALT: () => SUBRULE(builtInHours, undefined) },
87
+ { ALT: () => SUBRULE(builtInMinutes, undefined) },
88
+ { ALT: () => SUBRULE(builtInSeconds, undefined) },
89
+ { ALT: () => SUBRULE(builtInTimezone, undefined) },
90
+ { ALT: () => SUBRULE(builtInTz, undefined) },
91
+ { ALT: () => SUBRULE(builtInNow, undefined) },
92
+ { ALT: () => SUBRULE(builtInUuid, undefined) },
93
+ { ALT: () => SUBRULE(builtInStruuid, undefined) },
94
+ { ALT: () => SUBRULE(builtInMd5, undefined) },
95
+ { ALT: () => SUBRULE(builtInSha1, undefined) },
96
+ { ALT: () => SUBRULE(builtInSha256, undefined) },
97
+ { ALT: () => SUBRULE(builtInSha384, undefined) },
98
+ { ALT: () => SUBRULE(builtInSha512, undefined) },
99
+ { ALT: () => SUBRULE(builtInCoalesce, undefined) },
100
+ { ALT: () => SUBRULE(builtInIf, undefined) },
101
+ { ALT: () => SUBRULE(builtInStrlang, undefined) },
102
+ { ALT: () => SUBRULE(builtInStrdt, undefined) },
103
+ { ALT: () => SUBRULE(builtInSameterm, undefined) },
104
+ { ALT: () => SUBRULE(builtInIsiri, undefined) },
105
+ { ALT: () => SUBRULE(builtInIsuri, undefined) },
106
+ { ALT: () => SUBRULE(builtInIsblank, undefined) },
107
+ { ALT: () => SUBRULE(builtInIsliteral, undefined) },
108
+ { ALT: () => SUBRULE(builtInIsnumeric, undefined) },
109
+ { ALT: () => SUBRULE(regexExpression, undefined) },
110
+ { ALT: () => SUBRULE(existsFunc, undefined) },
111
+ { ALT: () => SUBRULE(notExistsFunc, undefined) },
112
+ ];
113
+ }
114
+ /**
115
+ * [[121]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
116
+ */
117
+ export const builtInCall = {
118
+ name: 'builtInCall',
119
+ impl: ({ OR, SUBRULE, cache }) => () => {
120
+ const cached = cache.get(builtInCall);
121
+ if (cached) {
122
+ return OR(cached);
123
+ }
124
+ const builtIns = builtInCallList(SUBRULE);
125
+ cache.set(builtInCall, builtIns);
126
+ return OR(builtIns);
127
+ },
128
+ };
129
+ /**
130
+ * [[122]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
131
+ */
132
+ export const regexExpression = funcExpr2or3(l.builtIn.regex);
133
+ /**
134
+ * [[123]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
135
+ */
136
+ export const substringExpression = funcExpr2or3(l.builtIn.substr);
137
+ /**
138
+ * [[124]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
139
+ */
140
+ export const strReplaceExpression = funcExpr3or4(l.builtIn.replace);
141
+ /**
142
+ * [[125]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
143
+ */
144
+ export const existsFunc = funcGroupGraphPattern(l.builtIn.exists);
145
+ /**
146
+ * [[126]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
147
+ */
148
+ export const notExistsFunc = funcGroupGraphPattern(l.builtIn.notexists);
149
+ export const aggregateCount = {
150
+ name: unCapitalize(l.builtIn.count.name),
151
+ impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
152
+ const operatorToken = CONSUME(l.builtIn.count);
153
+ CONSUME(l.symbols.LParen);
154
+ const distinctToken = OPTION(() => CONSUME(l.distinct));
155
+ const expressionVal = OR([
156
+ { ALT: () => {
157
+ const starToken = CONSUME(l.symbols.star);
158
+ return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
159
+ } },
160
+ { ALT: () => SUBRULE(expression, undefined) },
161
+ ]);
162
+ const closeToken = CONSUME(l.symbols.RParen);
163
+ return ACTION(() => {
164
+ const F = C.factory;
165
+ if (C.factory.isWildcard(expressionVal)) {
166
+ return F.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, undefined, C.factory.sourceLocation(operatorToken, closeToken));
167
+ }
168
+ return F.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, undefined, C.factory.sourceLocation(operatorToken, closeToken));
169
+ });
170
+ },
171
+ };
172
+ export const aggregateSum = baseAggregateFunc(l.builtIn.sum);
173
+ export const aggregateMin = baseAggregateFunc(l.builtIn.min);
174
+ export const aggregateMax = baseAggregateFunc(l.builtIn.max);
175
+ export const aggregateAvg = baseAggregateFunc(l.builtIn.avg);
176
+ export const aggregateSample = baseAggregateFunc(l.builtIn.sample);
177
+ export const aggregateGroup_concat = {
178
+ name: unCapitalize(l.builtIn.groupConcat.name),
179
+ impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
180
+ const operatorToken = CONSUME(l.builtIn.groupConcat);
181
+ CONSUME(l.symbols.LParen);
182
+ const distinctToken = OPTION1(() => CONSUME(l.distinct));
183
+ const expr = SUBRULE(expression, undefined);
184
+ const sep = OPTION2(() => {
185
+ CONSUME(l.symbols.semi);
186
+ CONSUME(l.separator);
187
+ CONSUME(l.symbols.equal);
188
+ return SUBRULE(string, undefined);
189
+ });
190
+ const closeToken = CONSUME(l.symbols.RParen);
191
+ return ACTION(() => {
192
+ const F = C.factory;
193
+ return F.aggregate(operatorToken.image, Boolean(distinctToken), expr, sep?.value ?? ' ', F.sourceLocation(operatorToken, closeToken));
194
+ });
195
+ },
196
+ };
197
+ /**
198
+ * [[127]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
199
+ */
200
+ export const aggregate = {
201
+ name: 'aggregate',
202
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => {
203
+ // https://www.w3.org/2013/sparql-errata#errata-query-5 - Or note 15 in SPARQL1.2 spec
204
+ // An aggregate function is not allowed within an aggregate function.
205
+ const wasInAggregate = ACTION(() => C.parseMode.has('inAggregate'));
206
+ ACTION(() => C.parseMode.add('inAggregate'));
207
+ const result = OR([
208
+ { ALT: () => SUBRULE(aggregateCount, undefined) },
209
+ { ALT: () => SUBRULE(aggregateSum, undefined) },
210
+ { ALT: () => SUBRULE(aggregateMin, undefined) },
211
+ { ALT: () => SUBRULE(aggregateMax, undefined) },
212
+ { ALT: () => SUBRULE(aggregateAvg, undefined) },
213
+ { ALT: () => SUBRULE(aggregateSample, undefined) },
214
+ { ALT: () => SUBRULE(aggregateGroup_concat, undefined) },
215
+ ]);
216
+ ACTION(() => !wasInAggregate && C.parseMode.delete('inAggregate'));
217
+ ACTION(() => {
218
+ if (!C.parseMode.has('canParseAggregate')) {
219
+ throw new Error('Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.');
220
+ }
221
+ if (C.parseMode.has('inAggregate')) {
222
+ throw new Error('An aggregate function is not allowed within an aggregate function.');
223
+ }
224
+ });
225
+ return result;
226
+ },
227
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
228
+ F.printFilter(ast, () => {
229
+ PRINT_WORD(ast.aggregation, '(');
230
+ if (ast.distinct) {
231
+ PRINT_WORD('DISTINCT');
232
+ }
233
+ });
234
+ const arg = ast.expression[0];
235
+ if (F.isWildcard(arg)) {
236
+ F.printFilter(ast, () => PRINT_WORD('*'));
237
+ }
238
+ else {
239
+ SUBRULE(expression, arg, undefined);
240
+ }
241
+ if (F.isExpressionAggregateSeparator(ast)) {
242
+ F.printFilter(ast, () => PRINT_WORD(';', 'SEPARATOR', '=', stringEscapedLexical(ast.separator)));
243
+ }
244
+ F.printFilter(ast, () => PRINT_WORD(')'));
245
+ },
246
+ };
247
+ //# sourceMappingURL=builtIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtIn.js","sourceRoot":"","sources":["builtIn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IOrAlt } from '@chevrotain/types';\nimport type { ImplArgs } from '@traqula/core';\nimport {\n unCapitalize,\n} from '@traqula/core';\nimport {\n funcExprOrNil1,\n baseAggregateFunc,\n funcExpr1,\n funcExpr2,\n funcExpr2or3,\n funcExpr3,\n funcExpr3or4,\n funcExprList1,\n funcGroupGraphPattern,\n funcNil1,\n funcVar1,\n} from '../expressionHelpers';\nimport * as l from '../lexer';\nimport type {\n Expression,\n ExpressionAggregate,\n ExpressionAggregateDefault,\n ExpressionAggregateOnWildcard,\n ExpressionAggregateSeparator,\n Wildcard,\n} from '../RoundTripTypes';\nimport type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';\nimport { expression } from './expression';\nimport { string, stringEscapedLexical } from './literals';\n\nexport const builtInStr = funcExpr1(l.builtIn.str);\nexport const builtInLang = funcExpr1(l.builtIn.lang);\nexport const builtInLangmatches = funcExpr2(l.builtIn.langmatches);\nexport const builtInDatatype = funcExpr1(l.builtIn.datatype);\nexport const builtInBound = funcVar1(l.builtIn.bound);\nexport const builtInIri = funcExpr1(l.builtIn.iri);\nexport const builtInUri = funcExpr1(l.builtIn.uri);\nexport const builtInBnodeSparqlJs = funcExprOrNil1(l.builtIn.bnode);\nexport const builtInRand = funcNil1(l.builtIn.rand);\nexport const builtInAbs = funcExpr1(l.builtIn.abs);\nexport const builtInCeil = funcExpr1(l.builtIn.ceil);\nexport const builtInFloor = funcExpr1(l.builtIn.floor);\nexport const builtInRound = funcExpr1(l.builtIn.round);\nexport const builtInConcat = funcExprList1(l.builtIn.concat);\nexport const builtInStrlen = funcExpr1(l.builtIn.strlen);\nexport const builtInUcase = funcExpr1(l.builtIn.ucase);\nexport const builtInLcase = funcExpr1(l.builtIn.lcase);\nexport const builtInEncode_for_uri = funcExpr1(l.builtIn.encode_for_uri);\nexport const builtInContains = funcExpr2(l.builtIn.contains);\nexport const builtInStrstarts = funcExpr2(l.builtIn.strstarts);\nexport const builtInStrends = funcExpr2(l.builtIn.strends);\nexport const builtInStrbefore = funcExpr2(l.builtIn.strbefore);\nexport const builtInStrafter = funcExpr2(l.builtIn.strafter);\nexport const builtInYear = funcExpr1(l.builtIn.year);\nexport const builtInMonth = funcExpr1(l.builtIn.month);\nexport const builtInDay = funcExpr1(l.builtIn.day);\nexport const builtInHours = funcExpr1(l.builtIn.hours);\nexport const builtInMinutes = funcExpr1(l.builtIn.minutes);\nexport const builtInSeconds = funcExpr1(l.builtIn.seconds);\nexport const builtInTimezone = funcExpr1(l.builtIn.timezone);\nexport const builtInTz = funcExpr1(l.builtIn.tz);\nexport const builtInNow = funcNil1(l.builtIn.now);\nexport const builtInUuid = funcNil1(l.builtIn.uuid);\nexport const builtInStruuid = funcNil1(l.builtIn.struuid);\nexport const builtInMd5 = funcExpr1(l.builtIn.md5);\nexport const builtInSha1 = funcExpr1(l.builtIn.sha1);\nexport const builtInSha256 = funcExpr1(l.builtIn.sha256);\nexport const builtInSha384 = funcExpr1(l.builtIn.sha384);\nexport const builtInSha512 = funcExpr1(l.builtIn.sha512);\nexport const builtInCoalesce = funcExprList1(l.builtIn.coalesce);\nexport const builtInIf = funcExpr3(l.builtIn.if_);\nexport const builtInStrlang = funcExpr2(l.builtIn.strlang);\nexport const builtInStrdt = funcExpr2(l.builtIn.strdt);\nexport const builtInSameterm = funcExpr2(l.builtIn.sameterm);\nexport const builtInIsiri = funcExpr1(l.builtIn.isiri);\nexport const builtInIsuri = funcExpr1(l.builtIn.isuri);\nexport const builtInIsblank = funcExpr1(l.builtIn.isblank);\nexport const builtInIsliteral = funcExpr1(l.builtIn.isliteral);\nexport const builtInIsnumeric = funcExpr1(l.builtIn.isnumeric);\n\nexport function builtInCallList(SUBRULE: ImplArgs['SUBRULE']): IOrAlt<Expression>[] {\n return [\n { ALT: () => SUBRULE(aggregate, undefined) },\n { ALT: () => SUBRULE(builtInStr, undefined) },\n { ALT: () => SUBRULE(builtInLang, undefined) },\n { ALT: () => SUBRULE(builtInLangmatches, undefined) },\n { ALT: () => SUBRULE(builtInDatatype, undefined) },\n { ALT: () => SUBRULE(builtInBound, undefined) },\n { ALT: () => SUBRULE(builtInIri, undefined) },\n { ALT: () => SUBRULE(builtInUri, undefined) },\n { ALT: () => SUBRULE(builtInBnodeSparqlJs, undefined) },\n { ALT: () => SUBRULE(builtInRand, undefined) },\n { ALT: () => SUBRULE(builtInAbs, undefined) },\n { ALT: () => SUBRULE(builtInCeil, undefined) },\n { ALT: () => SUBRULE(builtInFloor, undefined) },\n { ALT: () => SUBRULE(builtInRound, undefined) },\n { ALT: () => SUBRULE(builtInConcat, undefined) },\n { ALT: () => SUBRULE(substringExpression, undefined) },\n { ALT: () => SUBRULE(builtInStrlen, undefined) },\n { ALT: () => SUBRULE(strReplaceExpression, undefined) },\n { ALT: () => SUBRULE(builtInUcase, undefined) },\n { ALT: () => SUBRULE(builtInLcase, undefined) },\n { ALT: () => SUBRULE(builtInEncode_for_uri, undefined) },\n { ALT: () => SUBRULE(builtInContains, undefined) },\n { ALT: () => SUBRULE(builtInStrstarts, undefined) },\n { ALT: () => SUBRULE(builtInStrends, undefined) },\n { ALT: () => SUBRULE(builtInStrbefore, undefined) },\n { ALT: () => SUBRULE(builtInStrafter, undefined) },\n { ALT: () => SUBRULE(builtInYear, undefined) },\n { ALT: () => SUBRULE(builtInMonth, undefined) },\n { ALT: () => SUBRULE(builtInDay, undefined) },\n { ALT: () => SUBRULE(builtInHours, undefined) },\n { ALT: () => SUBRULE(builtInMinutes, undefined) },\n { ALT: () => SUBRULE(builtInSeconds, undefined) },\n { ALT: () => SUBRULE(builtInTimezone, undefined) },\n { ALT: () => SUBRULE(builtInTz, undefined) },\n { ALT: () => SUBRULE(builtInNow, undefined) },\n { ALT: () => SUBRULE(builtInUuid, undefined) },\n { ALT: () => SUBRULE(builtInStruuid, undefined) },\n { ALT: () => SUBRULE(builtInMd5, undefined) },\n { ALT: () => SUBRULE(builtInSha1, undefined) },\n { ALT: () => SUBRULE(builtInSha256, undefined) },\n { ALT: () => SUBRULE(builtInSha384, undefined) },\n { ALT: () => SUBRULE(builtInSha512, undefined) },\n { ALT: () => SUBRULE(builtInCoalesce, undefined) },\n { ALT: () => SUBRULE(builtInIf, undefined) },\n { ALT: () => SUBRULE(builtInStrlang, undefined) },\n { ALT: () => SUBRULE(builtInStrdt, undefined) },\n { ALT: () => SUBRULE(builtInSameterm, undefined) },\n { ALT: () => SUBRULE(builtInIsiri, undefined) },\n { ALT: () => SUBRULE(builtInIsuri, undefined) },\n { ALT: () => SUBRULE(builtInIsblank, undefined) },\n { ALT: () => SUBRULE(builtInIsliteral, undefined) },\n { ALT: () => SUBRULE(builtInIsnumeric, undefined) },\n { ALT: () => SUBRULE(regexExpression, undefined) },\n { ALT: () => SUBRULE(existsFunc, undefined) },\n { ALT: () => SUBRULE(notExistsFunc, undefined) },\n ];\n}\n\n/**\n * [[121]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const builtInCall: SparqlGrammarRule<'builtInCall', Expression> = <const>{\n name: 'builtInCall',\n impl: ({ OR, SUBRULE, cache }) => () => {\n const cached = <IOrAlt<Expression>[]>cache.get(builtInCall);\n if (cached) {\n return OR<Expression>(cached);\n }\n const builtIns = builtInCallList(SUBRULE);\n cache.set(builtInCall, builtIns);\n return OR<Expression>(builtIns);\n },\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const regexExpression = funcExpr2or3(l.builtIn.regex);\n\n/**\n * [[123]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const substringExpression = funcExpr2or3(l.builtIn.substr);\n\n/**\n * [[124]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const strReplaceExpression = funcExpr3or4(l.builtIn.replace);\n\n/**\n * [[125]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const existsFunc = funcGroupGraphPattern(l.builtIn.exists);\n\n/**\n * [[126]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const notExistsFunc = funcGroupGraphPattern(l.builtIn.notexists);\n\nexport const aggregateCount:\nSparqlGrammarRule<'builtInCount', ExpressionAggregateOnWildcard | ExpressionAggregateDefault> = {\n name: unCapitalize(l.builtIn.count.name),\n impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {\n const operatorToken = CONSUME(l.builtIn.count);\n CONSUME(l.symbols.LParen);\n const distinctToken = OPTION(() => CONSUME(l.distinct));\n\n const expressionVal = OR<Expression | Wildcard>([\n { ALT: () => {\n const starToken = CONSUME(l.symbols.star);\n return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));\n } },\n { ALT: () => SUBRULE(expression, undefined) },\n ]);\n const closeToken = CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const F = C.factory;\n if (C.factory.isWildcard(expressionVal)) {\n return F.aggregate(\n operatorToken.image,\n Boolean(distinctToken),\n expressionVal,\n undefined,\n C.factory.sourceLocation(operatorToken, closeToken),\n );\n }\n return F.aggregate(\n operatorToken.image,\n Boolean(distinctToken),\n expressionVal,\n undefined,\n C.factory.sourceLocation(operatorToken, closeToken),\n );\n });\n },\n};\nexport const aggregateSum = baseAggregateFunc(l.builtIn.sum);\nexport const aggregateMin = baseAggregateFunc(l.builtIn.min);\nexport const aggregateMax = baseAggregateFunc(l.builtIn.max);\nexport const aggregateAvg = baseAggregateFunc(l.builtIn.avg);\nexport const aggregateSample = baseAggregateFunc(l.builtIn.sample);\nexport const aggregateGroup_concat:\nSparqlGrammarRule<'builtInGroup_concat', ExpressionAggregateDefault | ExpressionAggregateSeparator> = <const>{\n name: unCapitalize(l.builtIn.groupConcat.name),\n impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) =>\n (C) => {\n const operatorToken = CONSUME(l.builtIn.groupConcat);\n CONSUME(l.symbols.LParen);\n const distinctToken = OPTION1(() => CONSUME(l.distinct));\n\n const expr = SUBRULE(expression, undefined);\n const sep = OPTION2(() => {\n CONSUME(l.symbols.semi);\n CONSUME(l.separator);\n CONSUME(l.symbols.equal);\n return SUBRULE(string, undefined);\n });\n const closeToken = CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const F = C.factory;\n return F.aggregate(\n operatorToken.image,\n Boolean(distinctToken),\n expr,\n sep?.value ?? ' ',\n F.sourceLocation(operatorToken, closeToken),\n );\n });\n },\n};\n\n/**\n * [[127]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)\n */\nexport const aggregate: SparqlRule<'aggregate', ExpressionAggregate> = <const>{\n name: 'aggregate',\n impl: ({ ACTION, SUBRULE, OR }) => (C) => {\n // https://www.w3.org/2013/sparql-errata#errata-query-5 - Or note 15 in SPARQL1.2 spec\n // An aggregate function is not allowed within an aggregate function.\n const wasInAggregate = ACTION(() => C.parseMode.has('inAggregate'));\n ACTION(() => C.parseMode.add('inAggregate'));\n const result = OR<ExpressionAggregate>([\n { ALT: () => SUBRULE(aggregateCount, undefined) },\n { ALT: () => SUBRULE(aggregateSum, undefined) },\n { ALT: () => SUBRULE(aggregateMin, undefined) },\n { ALT: () => SUBRULE(aggregateMax, undefined) },\n { ALT: () => SUBRULE(aggregateAvg, undefined) },\n { ALT: () => SUBRULE(aggregateSample, undefined) },\n { ALT: () => SUBRULE(aggregateGroup_concat, undefined) },\n ]);\n ACTION(() => !wasInAggregate && C.parseMode.delete('inAggregate'));\n\n ACTION(() => {\n if (!C.parseMode.has('canParseAggregate')) {\n throw new Error('Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.');\n }\n if (C.parseMode.has('inAggregate')) {\n throw new Error('An aggregate function is not allowed within an aggregate function.');\n }\n });\n\n return result;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD(ast.aggregation, '(');\n if (ast.distinct) {\n PRINT_WORD('DISTINCT');\n }\n });\n const arg = ast.expression[0];\n if (F.isWildcard(arg)) {\n F.printFilter(ast, () => PRINT_WORD('*'));\n } else {\n SUBRULE(expression, arg, undefined);\n }\n if (F.isExpressionAggregateSeparator(ast)) {\n F.printFilter(ast, () => PRINT_WORD(';', 'SEPARATOR', '=', stringEscapedLexical(ast.separator)));\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n },\n};\n"]}
@@ -0,0 +1,34 @@
1
+ import type { Wrap } from '@traqula/core';
2
+ import type { TokenType } from 'chevrotain';
3
+ import type { DatasetClauses, TermIri } from '../RoundTripTypes';
4
+ import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
5
+ export declare function datasetClauseUsing<RuleName extends 'usingClause' | 'datasetClause'>(name: RuleName, token: TokenType): SparqlGrammarRule<RuleName, Wrap<DatasetClauses['clauses'][0]>>;
6
+ /**
7
+ * [[13]](https://www.w3.org/TR/sparql11-query/#rDatasetClause)
8
+ */
9
+ export declare const datasetClause: SparqlGrammarRule<"datasetClause", Wrap<{
10
+ clauseType: "default" | "named";
11
+ value: TermIri;
12
+ }>>;
13
+ /**
14
+ * [[14]](https://www.w3.org/TR/sparql11-query/#rDefaultGraphClause)
15
+ */
16
+ export declare const defaultGraphClause: SparqlGrammarRule<'defaultGraphClause', TermIri>;
17
+ /**
18
+ * [[44]](https://www.w3.org/TR/sparql11-query/#rUsingClause)
19
+ */
20
+ export declare const usingClause: SparqlGrammarRule<"usingClause", Wrap<{
21
+ clauseType: "default" | "named";
22
+ value: TermIri;
23
+ }>>;
24
+ export declare function datasetClauseUsingStar<RuleName extends string>(name: RuleName, subRule: ReturnType<typeof datasetClauseUsing<any>>, fromUsing: 'FROM' | 'USING'): SparqlRule<RuleName, DatasetClauses>;
25
+ export declare const datasetClauseStar: SparqlRule<"datasetClauses", DatasetClauses>;
26
+ export declare const usingClauseStar: SparqlRule<"usingClauses", DatasetClauses>;
27
+ /**
28
+ * [[15]](https://www.w3.org/TR/sparql11-query/#rNamedGraphClause)
29
+ */
30
+ export declare const namedGraphClause: SparqlGrammarRule<'namedGraphClause', Wrap<TermIri>>;
31
+ /**
32
+ * [[16]](https://www.w3.org/TR/sparql11-query/#rSourceSelector)
33
+ */
34
+ export declare const sourceSelector: SparqlGrammarRule<'sourceSelector', TermIri>;