@traqula/rules-sparql-1-1 0.0.1-alpha.148 → 0.0.1-alpha.176
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/README.md +5 -3
- package/lib/Sparql11types.d.ts +48 -30
- package/lib/Sparql11types.js.map +1 -1
- package/lib/SparqlParser.d.ts +2 -2
- package/lib/SparqlParser.js +1 -1
- package/lib/SparqlParser.js.map +1 -1
- package/lib/Wildcard.d.ts +9 -0
- package/lib/Wildcard.js +19 -0
- package/lib/Wildcard.js.map +1 -0
- package/lib/expressionHelpers.d.ts +8 -6
- package/lib/expressionHelpers.js +3 -3
- package/lib/expressionHelpers.js.map +1 -1
- package/lib/grammar/builtIn.d.ts +6 -6
- package/lib/grammar/builtIn.js +19 -2
- package/lib/grammar/builtIn.js.map +1 -1
- package/lib/grammar/dataSetClause.d.ts +5 -5
- package/lib/grammar/dataSetClause.js +1 -0
- package/lib/grammar/dataSetClause.js.map +1 -1
- package/lib/grammar/expression.d.ts +16 -16
- package/lib/grammar/expression.js +60 -2
- package/lib/grammar/expression.js.map +1 -1
- package/lib/grammar/general.d.ts +10 -14
- package/lib/grammar/general.js +38 -30
- package/lib/grammar/general.js.map +1 -1
- package/lib/grammar/literals.d.ts +11 -11
- package/lib/grammar/literals.js +41 -6
- package/lib/grammar/literals.js.map +1 -1
- package/lib/grammar/propertyPaths.d.ts +11 -11
- package/lib/grammar/propertyPaths.js +27 -9
- package/lib/grammar/propertyPaths.js.map +1 -1
- package/lib/grammar/queryUnit/queryUnit.d.ts +13 -13
- package/lib/grammar/queryUnit/queryUnit.js +111 -15
- package/lib/grammar/queryUnit/queryUnit.js.map +1 -1
- package/lib/grammar/solutionModifier.d.ts +11 -11
- package/lib/grammar/solutionModifier.js +34 -0
- package/lib/grammar/solutionModifier.js.map +1 -1
- package/lib/grammar/tripleBlock.d.ts +26 -22
- package/lib/grammar/tripleBlock.js +48 -20
- package/lib/grammar/tripleBlock.js.map +1 -1
- package/lib/grammar/updateUnit/updateUnit.d.ts +25 -25
- package/lib/grammar/updateUnit/updateUnit.js +153 -17
- package/lib/grammar/updateUnit/updateUnit.js.map +1 -1
- package/lib/grammar/whereClause.d.ts +19 -19
- package/lib/grammar/whereClause.js +73 -2
- package/lib/grammar/whereClause.js.map +1 -1
- package/lib/grammar-helpers/utils.d.ts +16 -0
- package/lib/grammar-helpers/utils.js +53 -0
- package/lib/grammar-helpers/utils.js.map +1 -0
- package/lib/index.cjs +1002 -476
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/lexer/BuildinCalls.d.ts +62 -184
- package/lib/lexer/BuildinCalls.js +1 -2
- package/lib/lexer/BuildinCalls.js.map +1 -1
- package/lib/lexer/graph.d.ts +5 -13
- package/lib/lexer/graph.js +1 -2
- package/lib/lexer/graph.js.map +1 -1
- package/lib/lexer/lexer.d.ts +49 -143
- package/lib/lexer/lexer.js +1 -2
- package/lib/lexer/lexer.js.map +1 -1
- package/lib/lexer/symbols.d.ts +27 -79
- package/lib/lexer/symbols.js +1 -2
- package/lib/lexer/symbols.js.map +1 -1
- package/lib/lexer/terminals.d.ts +25 -73
- package/lib/lexer/terminals.js +14 -25
- package/lib/lexer/terminals.js.map +1 -1
- package/lib/utils.d.ts +6 -1
- package/lib/utils.js +23 -0
- package/lib/utils.js.map +1 -1
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Traqula Rules SPARQL 1.1
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**WARNING:** V2 will come shortly and will have lots of breaking changes.
|
|
4
|
+
|
|
5
|
+
Traqula rules SPARQL 1.1 contains rules required for creating a parser for SPARQL 1.1.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
@@ -12,4 +14,4 @@ or
|
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
16
|
yarn add @traqula/rules-sparql-1-1
|
|
15
|
-
```
|
|
17
|
+
```
|
package/lib/Sparql11types.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import type * as RdfJs from '@rdfjs/types';
|
|
2
1
|
import type * as RDF from '@rdfjs/types';
|
|
2
|
+
import type { ParserRule, GeneratorRule } from '@traqula/core';
|
|
3
3
|
import type { BlankNode, DataFactory } from 'rdf-data-factory';
|
|
4
|
-
import type { CommonIRIs
|
|
4
|
+
import type { CommonIRIs } from './grammar-helpers/utils';
|
|
5
|
+
import type { Wildcard } from './Wildcard';
|
|
6
|
+
type RdfJsTerm = Term | BaseQuadTerm;
|
|
7
|
+
export type BaseQuadTerm = RDF.BaseQuad & {
|
|
8
|
+
subject: RdfJsTerm;
|
|
9
|
+
predicate: RdfJsTerm;
|
|
10
|
+
object: RdfJsTerm;
|
|
11
|
+
};
|
|
5
12
|
export type GraphTerm = IriTerm | BlankTerm | LiteralTerm;
|
|
6
13
|
export type Term = GraphTerm | VariableTerm;
|
|
7
14
|
export type VerbA = IriTerm<CommonIRIs.TYPE>;
|
|
8
|
-
export interface Wildcard {
|
|
9
|
-
readonly termType: 'Wildcard';
|
|
10
|
-
readonly value: '*';
|
|
11
|
-
equals: (other: RdfJs.Term | null | undefined) => boolean;
|
|
12
|
-
}
|
|
13
15
|
export type Triple = {
|
|
14
16
|
subject: Term;
|
|
15
17
|
predicate: IriTerm | VariableTerm | PropertyPath;
|
|
@@ -42,10 +44,10 @@ export interface GraphQuads {
|
|
|
42
44
|
name: IriTerm | VariableTerm;
|
|
43
45
|
triples: Triple[];
|
|
44
46
|
}
|
|
45
|
-
export type VariableTerm =
|
|
46
|
-
export type IriTerm<IRI extends string = string> =
|
|
47
|
-
export type LiteralTerm =
|
|
48
|
-
export type BlankTerm =
|
|
47
|
+
export type VariableTerm = RDF.Variable;
|
|
48
|
+
export type IriTerm<IRI extends string = string> = RDF.NamedNode<IRI>;
|
|
49
|
+
export type LiteralTerm = RDF.Literal;
|
|
50
|
+
export type BlankTerm = RDF.BlankNode;
|
|
49
51
|
export type PropertyPath = NegatedPropertySet | {
|
|
50
52
|
type: 'path';
|
|
51
53
|
pathType: '|' | '/' | '^' | '+' | '*' | '?';
|
|
@@ -58,11 +60,6 @@ export interface SelectQuery extends BaseQuery {
|
|
|
58
60
|
variables: Variable[] | [Wildcard];
|
|
59
61
|
distinct?: true | undefined;
|
|
60
62
|
reduced?: true | undefined;
|
|
61
|
-
group?: Grouping[] | undefined;
|
|
62
|
-
having?: Expression[] | undefined;
|
|
63
|
-
order?: Ordering[] | undefined;
|
|
64
|
-
limit?: number | undefined;
|
|
65
|
-
offset?: number | undefined;
|
|
66
63
|
}
|
|
67
64
|
export interface Grouping {
|
|
68
65
|
expression: Expression;
|
|
@@ -90,29 +87,30 @@ export interface Update {
|
|
|
90
87
|
updates: UpdateOperation[];
|
|
91
88
|
}
|
|
92
89
|
export type UpdateOperation = InsertDeleteOperation | ManagementOperation;
|
|
93
|
-
export type InsertDeleteOperation =
|
|
90
|
+
export type InsertDeleteOperation = InsertOperation | DeleteOperation | ModifyOperation | DeleteWhereOperation;
|
|
91
|
+
export interface InsertOperation {
|
|
94
92
|
updateType: 'insert';
|
|
95
|
-
graph?: GraphOrDefault;
|
|
96
93
|
insert: Quads[];
|
|
97
|
-
}
|
|
94
|
+
}
|
|
95
|
+
export interface DeleteOperation {
|
|
98
96
|
updateType: 'delete';
|
|
99
|
-
graph?: GraphOrDefault;
|
|
100
97
|
delete: Quads[];
|
|
101
|
-
}
|
|
98
|
+
}
|
|
99
|
+
export interface ModifyOperation {
|
|
102
100
|
updateType: 'insertdelete';
|
|
103
|
-
graph?: IriTerm;
|
|
104
101
|
insert: Quads[];
|
|
105
102
|
delete: Quads[];
|
|
103
|
+
graph?: IriTerm;
|
|
106
104
|
using?: {
|
|
107
105
|
default: IriTerm[];
|
|
108
106
|
named: IriTerm[];
|
|
109
107
|
};
|
|
110
108
|
where: Pattern[];
|
|
111
|
-
}
|
|
109
|
+
}
|
|
110
|
+
export interface DeleteWhereOperation {
|
|
112
111
|
updateType: 'deletewhere';
|
|
113
|
-
graph?: GraphOrDefault;
|
|
114
112
|
delete: Quads[];
|
|
115
|
-
}
|
|
113
|
+
}
|
|
116
114
|
export type Quads = BgpPattern | GraphQuads;
|
|
117
115
|
export type ManagementOperation = CopyMoveAddOperation | LoadOperation | CreateOperation | ClearDropOperation;
|
|
118
116
|
export interface CopyMoveAddOperation {
|
|
@@ -165,6 +163,11 @@ export interface BaseQuery {
|
|
|
165
163
|
} | undefined;
|
|
166
164
|
where?: Pattern[] | undefined;
|
|
167
165
|
values?: ValuePatternRow[] | undefined;
|
|
166
|
+
having?: Expression[] | undefined;
|
|
167
|
+
group?: Grouping[] | undefined;
|
|
168
|
+
order?: Ordering[] | undefined;
|
|
169
|
+
limit?: number | undefined;
|
|
170
|
+
offset?: number | undefined;
|
|
168
171
|
}
|
|
169
172
|
export type IriTermOrElt = IriTerm | {
|
|
170
173
|
type: 'path';
|
|
@@ -174,7 +177,7 @@ export type IriTermOrElt = IriTerm | {
|
|
|
174
177
|
export interface NegatedPropertySet {
|
|
175
178
|
type: 'path';
|
|
176
179
|
pathType: '!';
|
|
177
|
-
items: IriTermOrElt
|
|
180
|
+
items: [IriTermOrElt] | [
|
|
178
181
|
{
|
|
179
182
|
type: 'path';
|
|
180
183
|
pathType: '|';
|
|
@@ -231,7 +234,7 @@ export interface BaseExpression {
|
|
|
231
234
|
export interface OperationExpression extends BaseExpression {
|
|
232
235
|
type: 'operation';
|
|
233
236
|
operator: string;
|
|
234
|
-
args: (Expression | Pattern
|
|
237
|
+
args: (Expression)[] | [Pattern];
|
|
235
238
|
}
|
|
236
239
|
export interface AggregateExpression extends BaseExpression {
|
|
237
240
|
type: 'aggregate';
|
|
@@ -239,7 +242,21 @@ export interface AggregateExpression extends BaseExpression {
|
|
|
239
242
|
aggregation: string;
|
|
240
243
|
separator?: string | undefined;
|
|
241
244
|
}
|
|
242
|
-
export type
|
|
245
|
+
export type SparqlRule<
|
|
246
|
+
/**
|
|
247
|
+
* Name of grammar rule, should be a strict subtype of string like 'myGrammarRule'.
|
|
248
|
+
*/
|
|
249
|
+
NameType extends string = string,
|
|
250
|
+
/**
|
|
251
|
+
* Type that will be returned after a correct parse of this rule.
|
|
252
|
+
* This type will be the return type of calling SUBRULE with this grammar rule.
|
|
253
|
+
*/
|
|
254
|
+
ReturnType = unknown,
|
|
255
|
+
/**
|
|
256
|
+
* Function arguments that can be given to convey the state of the current parse operation.
|
|
257
|
+
*/
|
|
258
|
+
ParamType = undefined> = ParserRule<SparqlContext, NameType, ReturnType, ParamType> & GeneratorRule<undefined, NameType, ReturnType, ParamType>;
|
|
259
|
+
export type SparqlGrammarRule<
|
|
243
260
|
/**
|
|
244
261
|
* Name of grammar rule, should be a strict subtype of string like 'myGrammarRule'.
|
|
245
262
|
*/
|
|
@@ -252,12 +269,12 @@ ReturnType = unknown,
|
|
|
252
269
|
/**
|
|
253
270
|
* Function arguments that can be given to convey the state of the current parse operation.
|
|
254
271
|
*/
|
|
255
|
-
ParamType = undefined> =
|
|
272
|
+
ParamType = undefined> = ParserRule<SparqlContext, NameType, ReturnType, ParamType>;
|
|
256
273
|
export interface SparqlContext {
|
|
257
274
|
/**
|
|
258
275
|
* Data-factory to be used when constructing rdf primitives.
|
|
259
276
|
*/
|
|
260
|
-
dataFactory: DataFactory<
|
|
277
|
+
dataFactory: DataFactory<BaseQuadTerm>;
|
|
261
278
|
/**
|
|
262
279
|
* Current scoped prefixes. Used for resolving prefixed names.
|
|
263
280
|
*/
|
|
@@ -275,3 +292,4 @@ export interface SparqlContext {
|
|
|
275
292
|
*/
|
|
276
293
|
parseMode: Set<'canParseVars' | 'canCreateBlankNodes' | 'inAggregate' | 'canParseAggregate' | string>;
|
|
277
294
|
}
|
|
295
|
+
export {};
|
package/lib/Sparql11types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparql11types.js","sourceRoot":"","sources":["Sparql11types.ts"],"names":[],"mappings":"","sourcesContent":["import type * as
|
|
1
|
+
{"version":3,"file":"Sparql11types.js","sourceRoot":"","sources":["Sparql11types.ts"],"names":[],"mappings":"","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport type { ParserRule, GeneratorRule } from '@traqula/core';\nimport type { BlankNode, DataFactory } from 'rdf-data-factory';\nimport type { CommonIRIs } from './grammar-helpers/utils';\nimport type { Wildcard } from './Wildcard';\n\n// Make sure there cannot be a DefaultGraph in subject and object position\ntype RdfJsTerm = Term | BaseQuadTerm;\nexport type BaseQuadTerm = RDF.BaseQuad & { subject: RdfJsTerm; predicate: RdfJsTerm; object: RdfJsTerm };\nexport type GraphTerm = IriTerm | BlankTerm | LiteralTerm;\nexport type Term = GraphTerm | VariableTerm;\nexport type VerbA = IriTerm<CommonIRIs.TYPE>;\n\nexport type Triple = {\n subject: Term;\n predicate: IriTerm | VariableTerm | PropertyPath;\n object: Term;\n};\n\nexport interface IGraphNode {\n node: ITriplesNode['node'] | Term;\n triples: Triple[];\n}\n\nexport interface ITriplesNode {\n node: IriTerm | BlankNode;\n triples: Triple[];\n}\n\nexport type Pattern =\n | BgpPattern\n | BlockPattern\n | FilterPattern\n | BindPattern\n | ValuesPattern\n | Omit<SelectQuery, 'prefixes'>;\n\nexport type Expression =\n | OperationExpression\n | FunctionCallExpression\n | AggregateExpression\n // Used in `IN` operator\n | Expression[]\n | IriTerm\n | VariableTerm\n | LiteralTerm;\n\nexport interface FunctionCallExpression extends BaseExpression {\n type: 'functionCall';\n function: IriTerm;\n args: Expression[];\n}\n\n/**\n * Basic Graph Pattern\n */\nexport interface BgpPattern {\n type: 'bgp';\n triples: Triple[];\n}\n\nexport interface GraphQuads {\n type: 'graph';\n name: IriTerm | VariableTerm;\n triples: Triple[];\n}\n\nexport type VariableTerm = RDF.Variable;\nexport type IriTerm<IRI extends string = string> = RDF.NamedNode<IRI>;\nexport type LiteralTerm = RDF.Literal;\nexport type BlankTerm = RDF.BlankNode;\n\nexport type PropertyPath = NegatedPropertySet | {\n type: 'path';\n pathType: '|' | '/' | '^' | '+' | '*' | '?';\n items: (IriTerm | PropertyPath)[];\n};\n\nexport type SparqlQuery = Query | Update | Pick<Update, 'base' | 'prefixes'>;\n\nexport type Query = SelectQuery | ConstructQuery | AskQuery | DescribeQuery;\n\nexport interface SelectQuery extends BaseQuery {\n queryType: 'SELECT';\n variables: Variable[] | [Wildcard];\n distinct?: true | undefined;\n reduced?: true | undefined;\n}\n\nexport interface Grouping {\n expression: Expression;\n variable?: VariableTerm;\n}\n\nexport interface Ordering {\n expression: Expression;\n descending?: true | undefined;\n}\n\nexport interface ConstructQuery extends BaseQuery {\n queryType: 'CONSTRUCT';\n template?: Triple[] | undefined;\n}\n\nexport interface AskQuery extends BaseQuery {\n queryType: 'ASK';\n}\n\nexport interface DescribeQuery extends BaseQuery {\n queryType: 'DESCRIBE';\n variables: (VariableTerm | IriTerm)[] | [Wildcard];\n}\n\nexport interface Update {\n type: 'update';\n base?: string | undefined;\n prefixes: Record<string, string>;\n updates: UpdateOperation[];\n}\n\nexport type UpdateOperation = InsertDeleteOperation | ManagementOperation;\n\nexport type InsertDeleteOperation = InsertOperation | DeleteOperation | ModifyOperation | DeleteWhereOperation;\nexport interface InsertOperation {\n updateType: 'insert';\n insert: Quads[];\n}\nexport interface DeleteOperation {\n updateType: 'delete';\n delete: Quads[];\n}\nexport interface ModifyOperation {\n updateType: 'insertdelete';\n insert: Quads[];\n delete: Quads[];\n graph?: IriTerm;\n using?: {\n default: IriTerm[];\n named: IriTerm[];\n };\n where: Pattern[];\n}\nexport interface DeleteWhereOperation {\n updateType: 'deletewhere';\n delete: Quads[];\n}\n\nexport type Quads = BgpPattern | GraphQuads;\n\nexport type ManagementOperation =\n | CopyMoveAddOperation\n | LoadOperation\n | CreateOperation\n | ClearDropOperation;\n\nexport interface CopyMoveAddOperation {\n type: 'copy' | 'move' | 'add';\n silent: boolean;\n source: GraphOrDefault;\n destination: GraphOrDefault;\n}\n\nexport interface LoadOperation {\n type: 'load';\n silent: boolean;\n source: IriTerm;\n destination?: IriTerm;\n}\n\nexport interface CreateOperation {\n type: 'create';\n silent: boolean;\n graph: GraphOrDefault;\n}\n\nexport interface ClearDropOperation {\n type: 'clear' | 'drop';\n silent: boolean;\n graph: GraphReference;\n}\n\nexport interface GraphOrDefault {\n type?: 'graph';\n name?: IriTerm | undefined;\n default?: true | undefined;\n}\n\nexport interface GraphReference extends GraphOrDefault {\n named?: true | undefined;\n all?: true | undefined;\n}\n\n/**\n * Examples: '?var', '*',\n * SELECT (?a as ?b) ... ==> { expression: '?a', variable: '?b' }\n */\nexport type Variable = VariableExpression | VariableTerm;\n\nexport interface VariableExpression {\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface BaseQuery {\n type: 'query';\n base?: string | undefined;\n prefixes: Record<string, string>;\n from?:\n | {\n default: IriTerm[];\n named: IriTerm[];\n }\n | undefined;\n where?: Pattern[] | undefined;\n values?: ValuePatternRow[] | undefined;\n having?: Expression[] | undefined;\n group?: Grouping[] | undefined;\n order?: Ordering[] | undefined;\n limit?: number | undefined;\n offset?: number | undefined;\n}\n\nexport type IriTermOrElt = IriTerm | {\n type: 'path';\n pathType: '^';\n items: [IriTerm];\n};\n\nexport interface NegatedPropertySet {\n type: 'path';\n pathType: '!';\n items: [IriTermOrElt] | [{\n type: 'path';\n pathType: '|';\n items: (IriTermOrElt)[];\n }];\n}\n\nexport interface GroupPattern {\n type: 'group';\n patterns: Pattern[];\n}\n\nexport interface GraphPattern {\n type: 'graph';\n name: IriTerm | VariableTerm;\n patterns: Pattern[];\n}\n\nexport interface MinusPattern {\n type: 'minus';\n patterns: Pattern[];\n}\n\nexport interface ServicePattern {\n type: 'service';\n name: IriTerm | VariableTerm;\n silent: boolean;\n patterns: Pattern[];\n}\n\nexport type BlockPattern =\n | OptionalPattern\n | UnionPattern\n | GroupPattern\n | GraphPattern\n | MinusPattern\n | ServicePattern;\n\nexport interface OptionalPattern {\n type: 'optional';\n patterns: Pattern[];\n}\n\nexport interface UnionPattern {\n type: 'union';\n patterns: Pattern[];\n}\n\nexport type ValuePatternRow = Record<string, IriTerm | BlankTerm | LiteralTerm | undefined>;\n\nexport interface FilterPattern {\n type: 'filter';\n expression: Expression;\n}\n\nexport interface BindPattern {\n type: 'bind';\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface ValuesPattern {\n type: 'values';\n values: ValuePatternRow[];\n}\n\nexport interface BaseExpression {\n type: string;\n distinct?: boolean | undefined;\n}\n\nexport interface OperationExpression extends BaseExpression {\n type: 'operation';\n operator: string;\n // Can be a pattern in case of exists and not exists\n args: (Expression)[] | [Pattern];\n}\n\nexport interface AggregateExpression extends BaseExpression {\n type: 'aggregate';\n expression: Expression | Wildcard;\n aggregation: string;\n separator?: string | undefined;\n}\n\nexport type SparqlRule<\n /**\n * Name of grammar rule, should be a strict subtype of string like 'myGrammarRule'.\n */\n NameType extends string = string,\n /**\n * Type that will be returned after a correct parse of this rule.\n * This type will be the return type of calling SUBRULE with this grammar rule.\n */\n ReturnType = unknown,\n /**\n * Function arguments that can be given to convey the state of the current parse operation.\n */\n ParamType = undefined,\n> = ParserRule<SparqlContext, NameType, ReturnType, ParamType>\n & GeneratorRule<undefined, NameType, ReturnType, ParamType>;\n\nexport type SparqlGrammarRule<\n /**\n * Name of grammar rule, should be a strict subtype of string like 'myGrammarRule'.\n */\n NameType extends string = string,\n /**\n * Type that will be returned after a correct parse of this rule.\n * This type will be the return type of calling SUBRULE with this grammar rule.\n */\n ReturnType = unknown,\n /**\n * Function arguments that can be given to convey the state of the current parse operation.\n */\n ParamType = undefined,\n> = ParserRule<SparqlContext, NameType, ReturnType, ParamType>;\n\nexport interface SparqlContext {\n /**\n * Data-factory to be used when constructing rdf primitives.\n */\n dataFactory: DataFactory<BaseQuadTerm>;\n /**\n * Current scoped prefixes. Used for resolving prefixed names.\n */\n prefixes: Record<string, string>;\n /**\n * The base IRI for the query. Used for resolving relative IRIs.\n */\n baseIRI: string | undefined;\n /**\n * Can be used to disable the validation that used variables in a select clause are in scope.\n */\n skipValidation: boolean;\n /**\n * Set of queryModes. Primarily used for note 8, 14.\n */\n parseMode: Set<'canParseVars' | 'canCreateBlankNodes' | 'inAggregate' | 'canParseAggregate' | string>;\n}\n"]}
|
package/lib/SparqlParser.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { IriTerm, PropertyPath, SparqlContext } from
|
|
1
|
+
import type { IriTerm, PropertyPath, SparqlContext } from './Sparql11types';
|
|
2
2
|
interface Parser<ParseRet> {
|
|
3
3
|
queryOrUpdate: (input: string, context: SparqlContext, arg: undefined) => ParseRet;
|
|
4
4
|
path: (input: string, context: SparqlContext, arg: undefined) => IriTerm | PropertyPath;
|
|
5
5
|
}
|
|
6
6
|
export declare class SparqlParser<ParseRet> {
|
|
7
|
-
private parser;
|
|
7
|
+
private readonly parser;
|
|
8
8
|
constructor(parser: Parser<ParseRet>);
|
|
9
9
|
parse(query: string, context?: Partial<SparqlContext>): ParseRet;
|
|
10
10
|
parsePath(query: string, context?: Partial<SparqlContext>): (PropertyPath & {
|
package/lib/SparqlParser.js
CHANGED
package/lib/SparqlParser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlParser.js","sourceRoot":"","sources":["SparqlParser.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SparqlParser.js","sourceRoot":"","sources":["SparqlParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,SAAS,oBAAoB,CAAC,OAA+B;IAC3D,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,WAAW,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC9E,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAE,cAAc,EAAE,qBAAqB,CAAE,CAAC;QAC9G,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,YAAY;IACvB,YAAoC,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEzD,KAAK,CAAC,KAAa,EAAE,UAAkC,EAAE;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;IAEM,SAAS,CAAC,KAAa,EAAE,UAAkC,EAAE;QAElE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACjF,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,OAAO;gBACL,GAAG,MAAM;gBACT,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import { DataFactory } from 'rdf-data-factory';\nimport type { IriTerm, PropertyPath, SparqlContext } from './Sparql11types';\n\ninterface Parser<ParseRet> {\n queryOrUpdate: (input: string, context: SparqlContext, arg: undefined) => ParseRet;\n path: (input: string, context: SparqlContext, arg: undefined) => IriTerm | PropertyPath;\n}\n\nfunction completeParseContext(context: Partial<SparqlContext>): SparqlContext {\n return {\n dataFactory: context.dataFactory ?? new DataFactory({ blankNodePrefix: 'g_' }),\n baseIRI: context.baseIRI,\n prefixes: { ...context.prefixes },\n parseMode: context.parseMode ? new Set(context.parseMode) : new Set([ 'canParseVars', 'canCreateBlankNodes' ]),\n skipValidation: context.skipValidation ?? false,\n };\n}\n\nexport class SparqlParser<ParseRet> {\n public constructor(private readonly parser: Parser<ParseRet>) {}\n\n public parse(query: string, context: Partial<SparqlContext> = {}): ParseRet {\n return this.parser.queryOrUpdate(query, completeParseContext(context), undefined);\n }\n\n public parsePath(query: string, context: Partial<SparqlContext> = {}):\n (PropertyPath & { prefixes: object }) | IriTerm {\n const result = this.parser.path(query, completeParseContext(context), undefined);\n if ('type' in result) {\n return {\n ...result,\n prefixes: {},\n };\n }\n return result;\n }\n}\n"]}
|
package/lib/Wildcard.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class Wildcard {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.value = '*';
|
|
4
|
+
this.termType = 'Wildcard';
|
|
5
|
+
// eslint-disable-next-line no-constructor-return
|
|
6
|
+
return WILDCARD ?? this;
|
|
7
|
+
}
|
|
8
|
+
equals(other) {
|
|
9
|
+
return Boolean(other && (this.termType === other.termType));
|
|
10
|
+
}
|
|
11
|
+
toJSON() {
|
|
12
|
+
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
13
|
+
const { value, ...rest } = this;
|
|
14
|
+
return rest;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let WILDCARD;
|
|
18
|
+
WILDCARD = new Wildcard();
|
|
19
|
+
//# sourceMappingURL=Wildcard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wildcard.js","sourceRoot":"","sources":["Wildcard.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IAGnB;QAFO,UAAK,GAAW,GAAG,CAAC;QACpB,aAAQ,GAAW,UAAU,CAAC;QAEnC,iDAAiD;QACjD,OAAO,QAAQ,IAAI,IAAI,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,KAA+C;QAC3D,OAAO,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM;QACX,yDAAyD;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,IAAI,QAA8B,CAAC;AACnC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC","sourcesContent":["export class Wildcard {\n public value = <const> '*';\n public termType = <const> 'Wildcard';\n public constructor() {\n // eslint-disable-next-line no-constructor-return\n return WILDCARD ?? this;\n }\n\n public equals(other: { termType: unknown } | undefined | null): boolean {\n return Boolean(other && (this.termType === other.termType));\n }\n\n public toJSON(): object {\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { value, ...rest } = this;\n return rest;\n }\n}\n\nlet WILDCARD: Wildcard | undefined;\nWILDCARD = new Wildcard();\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { TokenType } from 'chevrotain';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
export interface IExpressionFunctionX<U extends
|
|
2
|
+
import type { Expression, OperationExpression, Pattern, SparqlGrammarRule, VariableTerm } from './Sparql11types';
|
|
3
|
+
import { Wildcard } from './Wildcard';
|
|
4
|
+
export interface IExpressionFunctionX<U extends Expression[] | [Pattern]> extends OperationExpression {
|
|
5
5
|
type: 'operation';
|
|
6
6
|
operator: string;
|
|
7
7
|
args: U;
|
|
8
8
|
}
|
|
9
|
-
export type RuleDefExpressionFunctionX<T extends string, U extends
|
|
9
|
+
export type RuleDefExpressionFunctionX<T extends string, U extends Expression[] | [Pattern]> = SparqlGrammarRule<T, IExpressionFunctionX<U>>;
|
|
10
10
|
export declare function funcExpr1<T extends string>(func: TokenType & {
|
|
11
11
|
name: T;
|
|
12
12
|
}): RuleDefExpressionFunctionX<Uncapitalize<T>, [Expression]>;
|
|
@@ -40,7 +40,9 @@ export declare function funcExpr3or4<T extends string>(func: TokenType & {
|
|
|
40
40
|
] | [Expression, Expression, Expression, Expression]>;
|
|
41
41
|
export declare function funcGroupGraphPattern<T extends string>(func: TokenType & {
|
|
42
42
|
name: T;
|
|
43
|
-
}): RuleDefExpressionFunctionX<Uncapitalize<T>,
|
|
43
|
+
}): RuleDefExpressionFunctionX<Uncapitalize<T>, [
|
|
44
|
+
Pattern
|
|
45
|
+
]>;
|
|
44
46
|
export interface IExpressionAggregator {
|
|
45
47
|
type: 'aggregate';
|
|
46
48
|
distinct: boolean;
|
|
@@ -48,7 +50,7 @@ export interface IExpressionAggregator {
|
|
|
48
50
|
aggregation: string;
|
|
49
51
|
separator?: string;
|
|
50
52
|
}
|
|
51
|
-
export type RuleDefExpressionAggregatorX<T extends string> =
|
|
53
|
+
export type RuleDefExpressionAggregatorX<T extends string> = SparqlGrammarRule<T, IExpressionAggregator>;
|
|
52
54
|
export declare function baseAggregateFunc<T extends string>(func: TokenType & {
|
|
53
55
|
name: T;
|
|
54
56
|
}): RuleDefExpressionAggregatorX<Uncapitalize<T>>;
|
package/lib/expressionHelpers.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Wildcard } from '@traqula/core';
|
|
1
|
+
import { unCapitalize } from '@traqula/core';
|
|
3
2
|
import { expression, expressionList } from './grammar/expression';
|
|
4
3
|
import { var_ } from './grammar/general';
|
|
5
4
|
import { groupGraphPattern } from './grammar/whereClause';
|
|
6
|
-
import
|
|
5
|
+
import * as l from './lexer';
|
|
7
6
|
import { deGroupSingle } from './utils';
|
|
7
|
+
import { Wildcard } from './Wildcard';
|
|
8
8
|
function formatOperator(operator) {
|
|
9
9
|
return operator.toLowerCase().replaceAll(' ', '');
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressionHelpers.js","sourceRoot":"","sources":["expressionHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from 'chevrotain';\nimport * as l from './lexer';\nimport { Wildcard } from '@traqula/core';\nimport { expression, expressionList } from './grammar/expression';\nimport { var_ } from './grammar/general';\nimport type {Expression, Pattern, SparqlRuleDef, VariableTerm} from './Sparql11types';\nimport { groupGraphPattern } from './grammar/whereClause';\nimport { unCapitalize } from '@traqula/core';\nimport { deGroupSingle } from './utils';\n\nexport interface IExpressionFunctionX<U extends (Expression | Pattern)[]> {\n type: 'operation';\n operator: string;\n args: U;\n}\n\nexport type RuleDefExpressionFunctionX<T extends string, U extends (Expression | Pattern)[]>\n = SparqlRuleDef<T, IExpressionFunctionX<U>>;\n\nfunction formatOperator(operator: string): string {\n return operator.toLowerCase().replaceAll(' ', '');\n}\n\nexport function funcExpr1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg ],\n };\n },\n };\n}\n\nexport function funcExpr2<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE1, SUBRULE2, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg1, arg2 ],\n };\n },\n };\n}\n\nexport function funcExpr3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE1, SUBRULE2, SUBRULE3, CONSUME, CONSUME1, CONSUME2 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg1, arg2, arg3 ],\n };\n },\n };\n}\n\nexport function funcVar1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [VariableTerm]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(var_, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg ],\n };\n },\n };\n}\n\nexport function funcExprOrNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [] | [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, OR, SUBRULE }) => () => {\n const operator = CONSUME(func);\n const args = OR<[] | [Expression]>([\n {\n ALT: () => {\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression, undefined);\n CONSUME(l.symbols.RParen);\n return [ arg ];\n },\n },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return [];\n },\n },\n ]);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args,\n };\n },\n };\n}\n\nexport function funcNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, []> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.terminals.nil);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [],\n };\n },\n };\n}\n\nexport function funcExprList1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, Expression[]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE }) => () => {\n const operator = CONSUME(func);\n const args = SUBRULE(expressionList, undefined);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args,\n };\n },\n };\n}\n\nexport function funcExpr2or3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression] | [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n const arg3 = OPTION(() => {\n CONSUME2(l.symbols.comma);\n return SUBRULE3(expression, undefined);\n });\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: arg3 ? [ arg1, arg2, arg3 ] : [ arg1, arg2 ],\n };\n },\n };\n}\n\nexport function funcExpr3or4<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n [Expression, Expression, Expression] | [Expression, Expression, Expression, Expression]\n > {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2, SUBRULE4, CONSUME3 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression, undefined);\n const arg4 = OPTION(() => {\n CONSUME3(l.symbols.comma);\n return SUBRULE4(expression, undefined);\n });\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: arg4 ? [ arg1, arg2, arg3, arg4 ] : [ arg1, arg2, arg3 ],\n };\n },\n };\n}\n\nexport function funcGroupGraphPattern<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n Pattern[]\n > {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n const group = SUBRULE(groupGraphPattern, undefined);\n return ACTION(() => ({\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ deGroupSingle(group) ],\n }));\n },\n };\n}\n\nexport interface IExpressionAggregator {\n type: 'aggregate';\n distinct: boolean;\n expression: Expression | Wildcard;\n aggregation: string;\n separator?: string;\n}\n\nexport type RuleDefExpressionAggregatorX<T extends string> = SparqlRuleDef<T, IExpressionAggregator>;\n\nexport function baseAggregateFunc<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionAggregatorX<Uncapitalize<T>> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE, OPTION, OR }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => CONSUME(l.distinct));\n const expressionVal = OR<Expression | Wildcard>([\n {\n ALT: () => {\n CONSUME(l.symbols.star);\n return new Wildcard();\n },\n },\n { ALT: () => SUBRULE(expression, undefined) },\n ]);\n CONSUME(l.symbols.RParen);\n return {\n type: 'aggregate',\n aggregation: operator.image.toLowerCase(),\n expression: expressionVal,\n distinct: Boolean(distinct),\n };\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"expressionHelpers.js","sourceRoot":"","sources":["expressionHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { unCapitalize } from '@traqula/core';\nimport type { TokenType } from 'chevrotain';\nimport { expression, expressionList } from './grammar/expression';\nimport { var_ } from './grammar/general';\nimport { groupGraphPattern } from './grammar/whereClause';\nimport * as l from './lexer';\nimport type { Expression, OperationExpression, Pattern, SparqlGrammarRule, VariableTerm } from './Sparql11types';\nimport { deGroupSingle } from './utils';\nimport { Wildcard } from './Wildcard';\n\nexport interface IExpressionFunctionX<U extends Expression[] | [Pattern]> extends OperationExpression {\n type: 'operation';\n operator: string;\n args: U;\n}\n\nexport type RuleDefExpressionFunctionX<T extends string, U extends Expression[] | [Pattern]>\n = SparqlGrammarRule<T, IExpressionFunctionX<U>>;\n\nfunction formatOperator(operator: string): string {\n return operator.toLowerCase().replaceAll(' ', '');\n}\n\nexport function funcExpr1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg ],\n };\n },\n };\n}\n\nexport function funcExpr2<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE1, SUBRULE2, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg1, arg2 ],\n };\n },\n };\n}\n\nexport function funcExpr3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE1, SUBRULE2, SUBRULE3, CONSUME, CONSUME1, CONSUME2 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg1, arg2, arg3 ],\n };\n },\n };\n}\n\nexport function funcVar1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [VariableTerm]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(var_, undefined);\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ arg ],\n };\n },\n };\n}\n\nexport function funcExprOrNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [] | [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, OR, SUBRULE }) => () => {\n const operator = CONSUME(func);\n const args = OR<[] | [Expression]>([\n {\n ALT: () => {\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression, undefined);\n CONSUME(l.symbols.RParen);\n return [ arg ];\n },\n },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return [];\n },\n },\n ]);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args,\n };\n },\n };\n}\n\nexport function funcNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, []> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.terminals.nil);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [],\n };\n },\n };\n}\n\nexport function funcExprList1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, Expression[]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE }) => () => {\n const operator = CONSUME(func);\n const args = SUBRULE(expressionList, undefined);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args,\n };\n },\n };\n}\n\nexport function funcExpr2or3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression] | [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n const arg3 = OPTION(() => {\n CONSUME2(l.symbols.comma);\n return SUBRULE3(expression, undefined);\n });\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: arg3 ? [ arg1, arg2, arg3 ] : [ arg1, arg2 ],\n };\n },\n };\n}\n\nexport function funcExpr3or4<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n [Expression, Expression, Expression] | [Expression, Expression, Expression, Expression]\n> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2, SUBRULE4, CONSUME3 }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression, undefined);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression, undefined);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression, undefined);\n const arg4 = OPTION(() => {\n CONSUME3(l.symbols.comma);\n return SUBRULE4(expression, undefined);\n });\n CONSUME(l.symbols.RParen);\n return {\n type: 'operation',\n operator: formatOperator(operator.image),\n args: arg4 ? [ arg1, arg2, arg3, arg4 ] : [ arg1, arg2, arg3 ],\n };\n },\n };\n}\n\nexport function funcGroupGraphPattern<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n [ Pattern ]\n> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => () => {\n const operator = CONSUME(func);\n const group = SUBRULE(groupGraphPattern, undefined);\n return ACTION(() => ({\n type: 'operation',\n operator: formatOperator(operator.image),\n args: [ deGroupSingle(group) ],\n }));\n },\n };\n}\n\nexport interface IExpressionAggregator {\n type: 'aggregate';\n distinct: boolean;\n expression: Expression | Wildcard;\n aggregation: string;\n separator?: string;\n}\n\nexport type RuleDefExpressionAggregatorX<T extends string> = SparqlGrammarRule<T, IExpressionAggregator>;\n\nexport function baseAggregateFunc<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionAggregatorX<Uncapitalize<T>> {\n return {\n name: unCapitalize(func.name),\n impl: ({ CONSUME, SUBRULE, OPTION, OR }) => () => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => CONSUME(l.distinct));\n const expressionVal = OR<Expression | Wildcard>([\n {\n ALT: () => {\n CONSUME(l.symbols.star);\n return new Wildcard();\n },\n },\n { ALT: () => SUBRULE(expression, undefined) },\n ]);\n CONSUME(l.symbols.RParen);\n return {\n type: 'aggregate',\n aggregation: operator.image.toLowerCase(),\n expression: expressionVal,\n distinct: Boolean(distinct),\n };\n },\n };\n}\n"]}
|
package/lib/grammar/builtIn.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IOrAlt } from '@chevrotain/types';
|
|
2
2
|
import type { ImplArgs } from '@traqula/core';
|
|
3
3
|
import type { RuleDefExpressionFunctionX } from '../expressionHelpers';
|
|
4
|
-
import type { AggregateExpression, Expression,
|
|
4
|
+
import type { AggregateExpression, Expression, SparqlGrammarRule, SparqlRule } from '../Sparql11types';
|
|
5
5
|
export declare const builtInStr: RuleDefExpressionFunctionX<"builtInStr", [Expression]>;
|
|
6
6
|
export declare const builtInLang: RuleDefExpressionFunctionX<"builtInLang", [Expression]>;
|
|
7
7
|
export declare const builtInLangmatches: RuleDefExpressionFunctionX<"builtInLangmatches", [Expression, Expression]>;
|
|
@@ -55,7 +55,7 @@ export declare function builtInCallList(SUBRULE: ImplArgs['SUBRULE']): IOrAlt<Ex
|
|
|
55
55
|
/**
|
|
56
56
|
* [[121]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
|
|
57
57
|
*/
|
|
58
|
-
export declare const builtInCall:
|
|
58
|
+
export declare const builtInCall: SparqlGrammarRule<'builtInCall', Expression>;
|
|
59
59
|
/**
|
|
60
60
|
* [[122]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
|
|
61
61
|
*/
|
|
@@ -71,19 +71,19 @@ export declare const strReplaceExpression: RuleDefExpressionFunctionX<"builtInRe
|
|
|
71
71
|
/**
|
|
72
72
|
* [[125]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
|
|
73
73
|
*/
|
|
74
|
-
export declare const existsFunc: RuleDefExpressionFunctionX<"builtInExists", import("..").Pattern
|
|
74
|
+
export declare const existsFunc: RuleDefExpressionFunctionX<"builtInExists", [import("..").Pattern]>;
|
|
75
75
|
/**
|
|
76
76
|
* [[126]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
|
|
77
77
|
*/
|
|
78
|
-
export declare const notExistsFunc: RuleDefExpressionFunctionX<"builtInNotexists", import("..").Pattern
|
|
78
|
+
export declare const notExistsFunc: RuleDefExpressionFunctionX<"builtInNotexists", [import("..").Pattern]>;
|
|
79
79
|
export declare const aggregateCount: import(".").RuleDefExpressionAggregatorX<"builtInCount">;
|
|
80
80
|
export declare const aggregateSum: import(".").RuleDefExpressionAggregatorX<"builtInSum">;
|
|
81
81
|
export declare const aggregateMin: import(".").RuleDefExpressionAggregatorX<"builtInMin">;
|
|
82
82
|
export declare const aggregateMax: import(".").RuleDefExpressionAggregatorX<"builtInMax">;
|
|
83
83
|
export declare const aggregateAvg: import(".").RuleDefExpressionAggregatorX<"builtInAvg">;
|
|
84
84
|
export declare const aggregateSample: import(".").RuleDefExpressionAggregatorX<"builtInSample">;
|
|
85
|
-
export declare const aggregateGroup_concat:
|
|
85
|
+
export declare const aggregateGroup_concat: SparqlGrammarRule<'builtInGroup_concat', AggregateExpression>;
|
|
86
86
|
/**
|
|
87
87
|
* [[127]](https://www.w3.org/TR/sparql11-query/#rBuiltInCall)
|
|
88
88
|
*/
|
|
89
|
-
export declare const aggregate:
|
|
89
|
+
export declare const aggregate: SparqlRule<'aggregate', AggregateExpression>;
|
package/lib/grammar/builtIn.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as l from '../lexer';
|
|
2
|
-
import { baseAggregateFunc, funcExpr1, funcExpr2, funcExpr2or3, funcExpr3, funcExpr3or4, funcExprList1, funcGroupGraphPattern, funcNil1, funcVar1, } from '../expressionHelpers';
|
|
3
1
|
import { unCapitalize, } from '@traqula/core';
|
|
2
|
+
import { baseAggregateFunc, funcExpr1, funcExpr2, funcExpr2or3, funcExpr3, funcExpr3or4, funcExprList1, funcGroupGraphPattern, funcNil1, funcVar1, } from '../expressionHelpers';
|
|
3
|
+
import * as l from '../lexer';
|
|
4
4
|
import { expression } from './expression';
|
|
5
5
|
import { string } from './literals';
|
|
6
6
|
export const builtInStr = funcExpr1(l.builtIn.str);
|
|
@@ -233,5 +233,22 @@ export const aggregate = {
|
|
|
233
233
|
});
|
|
234
234
|
return result;
|
|
235
235
|
},
|
|
236
|
+
gImpl: ({ SUBRULE }) => (ast) => {
|
|
237
|
+
const builder = [ast.aggregation, '('];
|
|
238
|
+
if (ast.distinct) {
|
|
239
|
+
builder.push('DISTINCT');
|
|
240
|
+
}
|
|
241
|
+
if ('termType' in ast.expression && ast.expression.termType === 'Wildcard') {
|
|
242
|
+
builder.push('*');
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
builder.push(SUBRULE(expression, ast.expression, undefined));
|
|
246
|
+
}
|
|
247
|
+
if (ast.separator !== undefined && ast.separator !== ' ') {
|
|
248
|
+
builder.push(';', 'SEPARATOR', '=', SUBRULE(string, ast.separator, undefined));
|
|
249
|
+
}
|
|
250
|
+
builder.push(')');
|
|
251
|
+
return builder.join(' ');
|
|
252
|
+
},
|
|
236
253
|
};
|
|
237
254
|
//# sourceMappingURL=builtIn.js.map
|