@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.
- package/LICENSE.txt +22 -0
- package/README.md +17 -0
- package/lib/RoundTripTypes.d.ts +379 -0
- package/lib/RoundTripTypes.js +2 -0
- package/lib/RoundTripTypes.js.map +1 -0
- package/lib/Sparql11types.d.ts +68 -0
- package/lib/Sparql11types.js +2 -0
- package/lib/Sparql11types.js.map +1 -0
- package/lib/SparqlParser.d.ts +23 -0
- package/lib/SparqlParser.js +32 -0
- package/lib/SparqlParser.js.map +1 -0
- package/lib/expressionHelpers.d.ts +45 -0
- package/lib/expressionHelpers.js +161 -0
- package/lib/expressionHelpers.js.map +1 -0
- package/lib/factory.d.ts +447 -0
- package/lib/factory.js +105 -0
- package/lib/factory.js.map +1 -0
- package/lib/factoryMixins/ContextFactory.d.ts +38 -0
- package/lib/factoryMixins/ContextFactory.js +30 -0
- package/lib/factoryMixins/ContextFactory.js.map +1 -0
- package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
- package/lib/factoryMixins/ExpressionFactory.js +83 -0
- package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
- package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
- package/lib/factoryMixins/GraphRefFactory.js +51 -0
- package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
- package/lib/factoryMixins/PathFactory.d.ts +51 -0
- package/lib/factoryMixins/PathFactory.js +68 -0
- package/lib/factoryMixins/PathFactory.js.map +1 -0
- package/lib/factoryMixins/Patternfactory.d.ts +55 -0
- package/lib/factoryMixins/Patternfactory.js +98 -0
- package/lib/factoryMixins/Patternfactory.js.map +1 -0
- package/lib/factoryMixins/QueryFactory.d.ts +41 -0
- package/lib/factoryMixins/QueryFactory.js +43 -0
- package/lib/factoryMixins/QueryFactory.js.map +1 -0
- package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
- package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
- package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
- package/lib/factoryMixins/TermFactory.d.ts +76 -0
- package/lib/factoryMixins/TermFactory.js +84 -0
- package/lib/factoryMixins/TermFactory.js.map +1 -0
- package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
- package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
- package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
- package/lib/factoryMixins/mixins.d.ts +14 -0
- package/lib/factoryMixins/mixins.js +20 -0
- package/lib/factoryMixins/mixins.js.map +1 -0
- package/lib/grammar/builtIn.d.ts +89 -0
- package/lib/grammar/builtIn.js +247 -0
- package/lib/grammar/builtIn.js.map +1 -0
- package/lib/grammar/dataSetClause.d.ts +34 -0
- package/lib/grammar/dataSetClause.js +81 -0
- package/lib/grammar/dataSetClause.js.map +1 -0
- package/lib/grammar/expression.d.ts +63 -0
- package/lib/grammar/expression.js +383 -0
- package/lib/grammar/expression.js.map +1 -0
- package/lib/grammar/general.d.ts +36 -0
- package/lib/grammar/general.js +145 -0
- package/lib/grammar/general.js.map +1 -0
- package/lib/grammar/index.d.ts +12 -0
- package/lib/grammar/index.js +13 -0
- package/lib/grammar/index.js.map +1 -0
- package/lib/grammar/literals.d.ts +55 -0
- package/lib/grammar/literals.js +258 -0
- package/lib/grammar/literals.js.map +1 -0
- package/lib/grammar/propertyPaths.d.ts +43 -0
- package/lib/grammar/propertyPaths.js +182 -0
- package/lib/grammar/propertyPaths.js.map +1 -0
- package/lib/grammar/queryUnit/queryUnit.d.ts +48 -0
- package/lib/grammar/queryUnit/queryUnit.js +366 -0
- package/lib/grammar/queryUnit/queryUnit.js.map +1 -0
- package/lib/grammar/solutionModifier.d.ts +44 -0
- package/lib/grammar/solutionModifier.js +253 -0
- package/lib/grammar/solutionModifier.js.map +1 -0
- package/lib/grammar/tripleBlock.d.ts +36 -0
- package/lib/grammar/tripleBlock.js +357 -0
- package/lib/grammar/tripleBlock.js.map +1 -0
- package/lib/grammar/updateUnit/updateUnit.d.ts +95 -0
- package/lib/grammar/updateUnit/updateUnit.js +493 -0
- package/lib/grammar/updateUnit/updateUnit.js.map +1 -0
- package/lib/grammar/whereClause.d.ts +76 -0
- package/lib/grammar/whereClause.js +441 -0
- package/lib/grammar/whereClause.js.map +1 -0
- package/lib/grammar-helpers/utils.d.ts +12 -0
- package/lib/grammar-helpers/utils.js +16 -0
- package/lib/grammar-helpers/utils.js.map +1 -0
- package/lib/index.cjs +14565 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/lib/lexer/BuildinCalls.d.ts +126 -0
- package/lib/lexer/BuildinCalls.js +188 -0
- package/lib/lexer/BuildinCalls.js.map +1 -0
- package/lib/lexer/graph.d.ts +6 -0
- package/lib/lexer/graph.js +8 -0
- package/lib/lexer/graph.js.map +1 -0
- package/lib/lexer/index.d.ts +5 -0
- package/lib/lexer/index.js +6 -0
- package/lib/lexer/index.js.map +1 -0
- package/lib/lexer/lexer.d.ts +54 -0
- package/lib/lexer/lexer.js +70 -0
- package/lib/lexer/lexer.js.map +1 -0
- package/lib/lexer/symbols.d.ts +28 -0
- package/lib/lexer/symbols.js +29 -0
- package/lib/lexer/symbols.js.map +1 -0
- package/lib/lexer/terminals.d.ts +26 -0
- package/lib/lexer/terminals.js +63 -0
- package/lib/lexer/terminals.js.map +1 -0
- package/lib/utils.d.ts +5 -0
- package/lib/utils.js +24 -0
- package/lib/utils.js.map +1 -0
- package/lib/validation/validators.d.ts +14 -0
- package/lib/validation/validators.js +235 -0
- package/lib/validation/validators.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["lexer.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable require-unicode-regexp */\nimport { LexerBuilder, createToken } from '@traqula/core';\nimport { allBuiltInCalls, avg, datatype, groupConcat } from './BuildinCalls';\nimport { allGraphTokens, graphAll } from './graph';\nimport { allSymbols } from './symbols';\nimport { allTerminals } from './terminals';\n\nexport const baseDecl = createToken({ name: 'BaseDecl', pattern: /base/i, label: 'BASE' });\nexport const prefixDecl = createToken({ name: 'PrefixDecl', pattern: /prefix/i, label: 'PREFIX' });\nexport const select = createToken({ name: 'Select', pattern: /select/i, label: 'SELECT' });\nexport const distinct = createToken({ name: 'Distinct', pattern: /distinct/i, label: 'DISTINCT' });\nexport const reduced = createToken({ name: 'Reduced', pattern: /reduced/i, label: 'REDUCED' });\nexport const as = createToken({ name: 'As', pattern: /as/i, label: 'AS' });\nexport const construct = createToken({ name: 'Construct', pattern: /construct/i, label: 'CONSTRUCT' });\nexport const describe = createToken({ name: 'Describe', pattern: /describe/i, label: 'DESCRIBE' });\nexport const ask = createToken({ name: 'Ask', pattern: /ask/i, label: 'ASK' });\nexport const from = createToken({ name: 'From', pattern: /from/i, label: 'FROM' });\nexport const where = createToken({ name: 'Where', pattern: /where/i, label: 'WHERE' });\nexport const groupByGroup = createToken({ name: 'GroupByGroup', pattern: /group/i, label: '_GROUP_ BY' });\nexport const by = createToken({ name: 'By', pattern: /by/i, label: 'BY' });\nexport const having = createToken({ name: 'Having', pattern: /having/i, label: 'HAVING' });\nexport const order = createToken({ name: 'Order', pattern: /order/i, label: '_ORDER_ BY' });\nexport const orderAsc = createToken({ name: 'OrderAsc', pattern: /asc/i, label: 'ASC' });\nexport const orderDesc = createToken({ name: 'OrderDesc', pattern: /desc/i, label: 'DESC' });\nexport const limit = createToken({ name: 'Limit', pattern: /limit/i, label: 'LIMIT' });\nexport const offset = createToken({ name: 'Offset', pattern: /offset/i, label: 'OFFSET' });\nexport const values = createToken({ name: 'Values', pattern: /values/i, label: 'VALUES' });\nexport const load = createToken({ name: 'Load', pattern: /load/i, label: 'LOAD' });\nexport const silent = createToken({ name: 'Silent', pattern: /silent/i, label: 'SILENT' });\nexport const loadInto = createToken({ name: 'LoadInto', pattern: /into/i, label: 'INTO' });\nexport const clear = createToken({ name: 'Clear', pattern: /clear/i, label: 'CLEAR' });\nexport const drop = createToken({ name: 'Drop', pattern: /drop/i, label: 'DROP' });\nexport const create = createToken({ name: 'Create', pattern: /create/i, label: 'CREATE' });\nexport const add = createToken({ name: 'Add', pattern: /add/i, label: 'ADD' });\nexport const to = createToken({ name: 'To', pattern: /to/i, label: 'TO' });\nexport const move = createToken({ name: 'Move', pattern: /move/i, label: 'MOVE' });\nexport const copy = createToken({ name: 'Copy', pattern: /copy/i, label: 'COPY' });\nexport const modifyWith = createToken({ name: 'ModifyWith', pattern: /with/i, label: 'WITH' });\nexport const deleteClause = createToken({ name: 'DeleteClause', pattern: /delete/i, label: 'DELETE' });\nexport const insertClause = createToken({ name: 'InsertClause', pattern: /insert/i, label: 'INSERT' });\nexport const dataClause = createToken({ name: 'DataClause', pattern: /data/i, label: 'DATA', longer_alt: datatype });\nexport const usingClause = createToken({ name: 'UsingClause', pattern: /using/i, label: 'USING' });\nexport const optional = createToken({ name: 'Optional', pattern: /optional/i, label: 'OPTIONAL' });\nexport const service = createToken({ name: 'Service', pattern: /service/i, label: 'SERVICE' });\nexport const bind = createToken({ name: 'Bind', pattern: /bind/i, label: 'BIND' });\nexport const undef = createToken({ name: 'Undef', pattern: /undef/i, label: 'UNDEF' });\nexport const minus = createToken({ name: 'Minus', pattern: /minus/i, label: 'MINUS' });\nexport const union = createToken({ name: 'Union', pattern: /union/i, label: 'UNION' });\nexport const filter = createToken({ name: 'Filter', pattern: /filter/i, label: 'FILTER' });\nexport const a = createToken({ name: 'a', pattern: 'a', label: 'type declaration \\'a\\'' });\nexport const true_ = createToken({ name: 'True', pattern: /true/i, label: 'true' });\nexport const false_ = createToken({ name: 'False', pattern: /false/i, label: 'false' });\nexport const in_ = createToken({ name: 'In', pattern: /in/i, label: 'IN' });\n// eslint-disable-next-line unicorn/better-regex,no-control-regex\nexport const notIn = createToken({ name: 'NotIn', pattern: /not[\\u0020\\u0009\\u000D\\u000A]+in/i, label: 'NOT IN' });\nexport const separator = createToken({ name: 'Separator', pattern: /separator/i, label: 'SEPARATOR' });\n\nexport const allBaseTokens = LexerBuilder.create().add(\n baseDecl,\n prefixDecl,\n select,\n distinct,\n reduced,\n construct,\n describe,\n ask,\n from,\n where,\n having,\n groupByGroup,\n by,\n order,\n orderAsc,\n orderDesc,\n limit,\n offset,\n values,\n load,\n silent,\n loadInto,\n clear,\n drop,\n create,\n add,\n to,\n move,\n copy,\n modifyWith,\n deleteClause,\n insertClause,\n dataClause,\n usingClause,\n optional,\n service,\n bind,\n undef,\n minus,\n union,\n filter,\n as,\n a,\n true_,\n false_,\n in_,\n notIn,\n separator,\n);\n\n/**\n * [!!!ORDER MATTERS!!!](https://chevrotain.io/docs/tutorial/step1_lexing.html#creating-the-lexer)\n */\nexport const sparql11Tokens = LexerBuilder\n .create(allTerminals)\n .merge(allBaseTokens)\n .merge(allBuiltInCalls)\n .merge(allGraphTokens)\n .merge(allSymbols)\n .moveBefore(datatype, dataClause)\n .moveAfter(avg, a)\n .moveBefore(a, graphAll)\n .moveAfter(groupConcat, groupByGroup);\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LexerBuilder } from '@traqula/core';
|
|
2
|
+
export declare const LCurly: import("@traqula/core").NamedToken<"LCurly">;
|
|
3
|
+
export declare const RCurly: import("@traqula/core").NamedToken<"RCurly">;
|
|
4
|
+
export declare const dot: import("@traqula/core").NamedToken<"Dot">;
|
|
5
|
+
export declare const comma: import("@traqula/core").NamedToken<"Comma">;
|
|
6
|
+
export declare const semi: import("@traqula/core").NamedToken<"Semi">;
|
|
7
|
+
export declare const LParen: import("@traqula/core").NamedToken<"LParen">;
|
|
8
|
+
export declare const RParen: import("@traqula/core").NamedToken<"RParen">;
|
|
9
|
+
export declare const LSquare: import("@traqula/core").NamedToken<"LSquare">;
|
|
10
|
+
export declare const RSquare: import("@traqula/core").NamedToken<"RSquare">;
|
|
11
|
+
export declare const pipe: import("@traqula/core").NamedToken<"Pipe">;
|
|
12
|
+
export declare const slash: import("@traqula/core").NamedToken<"Slash">;
|
|
13
|
+
export declare const hat: import("@traqula/core").NamedToken<"Hat">;
|
|
14
|
+
export declare const question: import("@traqula/core").NamedToken<"Question">;
|
|
15
|
+
export declare const star: import("@traqula/core").NamedToken<"Star">;
|
|
16
|
+
export declare const opPlus: import("@traqula/core").NamedToken<"OpPlus">;
|
|
17
|
+
export declare const opMinus: import("@traqula/core").NamedToken<"OpMinus">;
|
|
18
|
+
export declare const exclamation: import("@traqula/core").NamedToken<"Exclamation">;
|
|
19
|
+
export declare const logicAnd: import("@traqula/core").NamedToken<"LogicAnd">;
|
|
20
|
+
export declare const logicOr: import("@traqula/core").NamedToken<"LogicOr">;
|
|
21
|
+
export declare const equal: import("@traqula/core").NamedToken<"Equal">;
|
|
22
|
+
export declare const notEqual: import("@traqula/core").NamedToken<"NotEqual">;
|
|
23
|
+
export declare const lessThan: import("@traqula/core").NamedToken<"LessThan">;
|
|
24
|
+
export declare const greaterThan: import("@traqula/core").NamedToken<"GreaterThan">;
|
|
25
|
+
export declare const lessThanEqual: import("@traqula/core").NamedToken<"LessThanEqual">;
|
|
26
|
+
export declare const greaterThanEqual: import("@traqula/core").NamedToken<"GreaterThanEqual">;
|
|
27
|
+
export declare const hathat: import("@traqula/core").NamedToken<"Hathat">;
|
|
28
|
+
export declare const allSymbols: LexerBuilder<"LCurly" | "RCurly" | "Dot" | "Comma" | "Semi" | "LParen" | "RParen" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "Star" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat">;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { LexerBuilder, createToken } from '@traqula/core';
|
|
2
|
+
export const LCurly = createToken({ name: 'LCurly', pattern: '{', label: '{' });
|
|
3
|
+
export const RCurly = createToken({ name: 'RCurly', pattern: '}', label: '}' });
|
|
4
|
+
export const dot = createToken({ name: 'Dot', pattern: '.', label: '.' });
|
|
5
|
+
export const comma = createToken({ name: 'Comma', pattern: ',', label: ',' });
|
|
6
|
+
export const semi = createToken({ name: 'Semi', pattern: ';', label: ';' });
|
|
7
|
+
export const LParen = createToken({ name: 'LParen', pattern: '(', label: '(' });
|
|
8
|
+
export const RParen = createToken({ name: 'RParen', pattern: ')', label: ')' });
|
|
9
|
+
export const LSquare = createToken({ name: 'LSquare', pattern: '[', label: '[' });
|
|
10
|
+
export const RSquare = createToken({ name: 'RSquare', pattern: ']', label: ']' });
|
|
11
|
+
export const pipe = createToken({ name: 'Pipe', pattern: '|', label: '|' });
|
|
12
|
+
export const slash = createToken({ name: 'Slash', pattern: '/', label: '/' });
|
|
13
|
+
export const hat = createToken({ name: 'Hat', pattern: '^', label: '^' });
|
|
14
|
+
export const question = createToken({ name: 'Question', pattern: '?', label: '?' });
|
|
15
|
+
export const star = createToken({ name: 'Star', pattern: '*', label: '*' });
|
|
16
|
+
export const opPlus = createToken({ name: 'OpPlus', pattern: '+', label: '+' });
|
|
17
|
+
export const opMinus = createToken({ name: 'OpMinus', pattern: '-', label: '-' });
|
|
18
|
+
export const exclamation = createToken({ name: 'Exclamation', pattern: '!', label: '!' });
|
|
19
|
+
export const logicAnd = createToken({ name: 'LogicAnd', pattern: '&&', label: '&&' });
|
|
20
|
+
export const logicOr = createToken({ name: 'LogicOr', pattern: '||', label: '||' });
|
|
21
|
+
export const equal = createToken({ name: 'Equal', pattern: '=', label: '=' });
|
|
22
|
+
export const notEqual = createToken({ name: 'NotEqual', pattern: '!=', label: '!=' });
|
|
23
|
+
export const lessThan = createToken({ name: 'LessThan', pattern: '<', label: '<' });
|
|
24
|
+
export const greaterThan = createToken({ name: 'GreaterThan', pattern: '>', label: '>' });
|
|
25
|
+
export const lessThanEqual = createToken({ name: 'LessThanEqual', pattern: '<=', label: '<=' });
|
|
26
|
+
export const greaterThanEqual = createToken({ name: 'GreaterThanEqual', pattern: '>=', label: '>=' });
|
|
27
|
+
export const hathat = createToken({ name: 'Hathat', pattern: '^^', label: '^^' });
|
|
28
|
+
export const allSymbols = LexerBuilder.create().add(logicAnd, logicOr, notEqual, lessThanEqual, greaterThanEqual, LCurly, RCurly, dot, comma, semi, LParen, RParen, LSquare, RSquare, pipe, slash, hathat, hat, question, star, opPlus, opMinus, exclamation, equal, lessThan, greaterThan);
|
|
29
|
+
//# sourceMappingURL=symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["symbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAElF,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CACjD,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,MAAM,EACN,MAAM,EACN,GAAG,EACH,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,KAAK,EACL,MAAM,EACN,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,QAAQ,EACR,WAAW,CACZ,CAAC","sourcesContent":["import { LexerBuilder, createToken } from '@traqula/core';\n\nexport const LCurly = createToken({ name: 'LCurly', pattern: '{', label: '{' });\nexport const RCurly = createToken({ name: 'RCurly', pattern: '}', label: '}' });\nexport const dot = createToken({ name: 'Dot', pattern: '.', label: '.' });\nexport const comma = createToken({ name: 'Comma', pattern: ',', label: ',' });\nexport const semi = createToken({ name: 'Semi', pattern: ';', label: ';' });\nexport const LParen = createToken({ name: 'LParen', pattern: '(', label: '(' });\nexport const RParen = createToken({ name: 'RParen', pattern: ')', label: ')' });\nexport const LSquare = createToken({ name: 'LSquare', pattern: '[', label: '[' });\nexport const RSquare = createToken({ name: 'RSquare', pattern: ']', label: ']' });\nexport const pipe = createToken({ name: 'Pipe', pattern: '|', label: '|' });\nexport const slash = createToken({ name: 'Slash', pattern: '/', label: '/' });\nexport const hat = createToken({ name: 'Hat', pattern: '^', label: '^' });\nexport const question = createToken({ name: 'Question', pattern: '?', label: '?' });\nexport const star = createToken({ name: 'Star', pattern: '*', label: '*' });\nexport const opPlus = createToken({ name: 'OpPlus', pattern: '+', label: '+' });\nexport const opMinus = createToken({ name: 'OpMinus', pattern: '-', label: '-' });\nexport const exclamation = createToken({ name: 'Exclamation', pattern: '!', label: '!' });\nexport const logicAnd = createToken({ name: 'LogicAnd', pattern: '&&', label: '&&' });\nexport const logicOr = createToken({ name: 'LogicOr', pattern: '||', label: '||' });\nexport const equal = createToken({ name: 'Equal', pattern: '=', label: '=' });\nexport const notEqual = createToken({ name: 'NotEqual', pattern: '!=', label: '!=' });\nexport const lessThan = createToken({ name: 'LessThan', pattern: '<', label: '<' });\nexport const greaterThan = createToken({ name: 'GreaterThan', pattern: '>', label: '>' });\nexport const lessThanEqual = createToken({ name: 'LessThanEqual', pattern: '<=', label: '<=' });\nexport const greaterThanEqual = createToken({ name: 'GreaterThanEqual', pattern: '>=', label: '>=' });\nexport const hathat = createToken({ name: 'Hathat', pattern: '^^', label: '^^' });\n\nexport const allSymbols = LexerBuilder.create().add(\n logicAnd,\n logicOr,\n notEqual,\n lessThanEqual,\n greaterThanEqual,\n LCurly,\n RCurly,\n dot,\n comma,\n semi,\n LParen,\n RParen,\n LSquare,\n RSquare,\n pipe,\n slash,\n hathat,\n hat,\n question,\n star,\n opPlus,\n opMinus,\n exclamation,\n equal,\n lessThan,\n greaterThan,\n);\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LexerBuilder } from '@traqula/core';
|
|
2
|
+
export declare const iriRef: import("@traqula/core").NamedToken<"IriRef">;
|
|
3
|
+
export declare const pNameLn: import("@traqula/core").NamedToken<"PNameLn">;
|
|
4
|
+
export declare const pNameNs: import("@traqula/core").NamedToken<"PNameNs">;
|
|
5
|
+
export declare const blankNodeLabel: import("@traqula/core").NamedToken<"BlankNodeLabel">;
|
|
6
|
+
export declare const var1: import("@traqula/core").NamedToken<"Var1">;
|
|
7
|
+
export declare const var2: import("@traqula/core").NamedToken<"Var2">;
|
|
8
|
+
export declare const langTag: import("@traqula/core").NamedToken<"LangTag">;
|
|
9
|
+
export declare const integer: import("@traqula/core").NamedToken<"Integer">;
|
|
10
|
+
export declare const decimal: import("@traqula/core").NamedToken<"Decimal">;
|
|
11
|
+
export declare const double: import("@traqula/core").NamedToken<"Double">;
|
|
12
|
+
export declare const integerPositive: import("@traqula/core").NamedToken<"InterferePositive">;
|
|
13
|
+
export declare const decimalPositive: import("@traqula/core").NamedToken<"DecimalPositive">;
|
|
14
|
+
export declare const doublePositive: import("@traqula/core").NamedToken<"DoublePositive">;
|
|
15
|
+
export declare const integerNegative: import("@traqula/core").NamedToken<"IntegerNegative">;
|
|
16
|
+
export declare const decimalNegative: import("@traqula/core").NamedToken<"DecimalNegative">;
|
|
17
|
+
export declare const doubleNegative: import("@traqula/core").NamedToken<"DoubleNegative">;
|
|
18
|
+
export declare const stringLiteral1: import("@traqula/core").NamedToken<"StringLiteral1">;
|
|
19
|
+
export declare const stringLiteral2: import("@traqula/core").NamedToken<"StringLiteral2">;
|
|
20
|
+
export declare const stringLiteralLong1: import("@traqula/core").NamedToken<"StringLiteralLong1">;
|
|
21
|
+
export declare const stringLiteralLong2: import("@traqula/core").NamedToken<"StringLiteralLong2">;
|
|
22
|
+
export declare const ws: import("@traqula/core").NamedToken<"Ws">;
|
|
23
|
+
export declare const comment: import("@traqula/core").NamedToken<"Comment">;
|
|
24
|
+
export declare const nil: import("@traqula/core").NamedToken<"Nil">;
|
|
25
|
+
export declare const anon: import("@traqula/core").NamedToken<"Anon">;
|
|
26
|
+
export declare const allTerminals: LexerBuilder<"IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "LangTag" | "Integer" | "Decimal" | "Double" | "InterferePositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Nil" | "Anon">;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable require-unicode-regexp,no-misleading-character-class,max-len,no-control-regex */
|
|
2
|
+
import { LexerBuilder, createToken } from '@traqula/core';
|
|
3
|
+
import { Lexer } from 'chevrotain';
|
|
4
|
+
const pnCharsBasePattern = /[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF]/;
|
|
5
|
+
const pnCharsUPattern = new RegExp(`${pnCharsBasePattern.source}|_`);
|
|
6
|
+
const varNamePattern = new RegExp(`((${pnCharsUPattern.source})|[0-9])((${pnCharsUPattern.source})|[0-9]|[\u00B7\u0300-\u036F\u203F-\u2040])*`);
|
|
7
|
+
const iriRefPattern = /<([^\u0000-\u0020"<>\\^`{|}])*>/;
|
|
8
|
+
const pnCharsPattern = new RegExp(`(${pnCharsUPattern.source})|[\\-0-9\u00B7\u0300-\u036F\u203F-\u2040]`);
|
|
9
|
+
const pnPrefixPattern = new RegExp(`(${pnCharsBasePattern.source})(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
|
|
10
|
+
const pNameNsPattern = new RegExp(`(${pnPrefixPattern.source})?:`);
|
|
11
|
+
const percentPattern = /%[\dA-Fa-f]{2}/;
|
|
12
|
+
const pnLocalEscPattern = /\\[!#$%&'()*+,./;=?@\\_~-]/;
|
|
13
|
+
const plxPattern = new RegExp(`(${percentPattern.source})|(${pnLocalEscPattern.source})`);
|
|
14
|
+
const pnLocalPattern = new RegExp(`((${pnCharsUPattern.source})|:|[0-9]|(${plxPattern.source}))(((${pnCharsPattern.source})|\\.|:|(${plxPattern.source}))*((${pnCharsPattern.source})|:|(${plxPattern.source})))?`);
|
|
15
|
+
const pNameLnPattern = new RegExp(`(${pNameNsPattern.source})(${pnLocalPattern.source})`);
|
|
16
|
+
const blankNodeLabelPattern = new RegExp(`_:((${pnCharsUPattern.source})|[0-9])(((${pnCharsPattern.source})|\\.)*(${pnCharsPattern.source}))?`);
|
|
17
|
+
const var1Pattern = new RegExp(`\\?(${varNamePattern.source})`);
|
|
18
|
+
const var2Pattern = new RegExp(`\\$(${varNamePattern.source})`);
|
|
19
|
+
const langTagPattern = /@[A-Za-z]+(-[\dA-Za-z]+)*/;
|
|
20
|
+
const integerPattern = /\d+/;
|
|
21
|
+
const decimalPattern = /\d+\.\d+/;
|
|
22
|
+
const exponentPattern = /[Ee][+-]?\d+/;
|
|
23
|
+
const doublePattern = new RegExp(`([0-9]+\\.[0-9]*(${exponentPattern.source}))|(\\.[0-9]+(${exponentPattern.source}))|([0-9]+(${exponentPattern.source}))`);
|
|
24
|
+
const interferePositivePattern = new RegExp(`\\+${integerPattern.source}`);
|
|
25
|
+
const decimalPositivePattern = new RegExp(`\\+${decimalPattern.source}`);
|
|
26
|
+
const doublePositivePattern = new RegExp(`\\+${doublePattern.source}`);
|
|
27
|
+
const integerNegativePattern = new RegExp(`-${integerPattern.source}`);
|
|
28
|
+
const decimalNegativePattern = new RegExp(`-${decimalPattern.source}`);
|
|
29
|
+
const doubleNegativePattern = new RegExp(`-${doublePattern.source}`);
|
|
30
|
+
const echarPattern = /\\[\\"'bfnrt]/u;
|
|
31
|
+
const stringLiteral1Pattern = new RegExp(`'(([^\\u0027\\u005C\\u000A\u000D])|(${echarPattern.source}))*'`);
|
|
32
|
+
const stringLiteral2Pattern = new RegExp(`"(([^\\u0022\\u005C\\u000A\\u000D])|(${echarPattern.source}))*"`);
|
|
33
|
+
const stringLiteralLong1Pattern = new RegExp(`'''(('|(''))?([^'\\\\]|(${echarPattern.source})))*'''`);
|
|
34
|
+
const stringLiteralLong2Pattern = new RegExp(`"""(("|(""))?([^"\\\\]|(${echarPattern.source})))*"""`);
|
|
35
|
+
const wsPattern = /[\u0009\u000A\u000D ]/;
|
|
36
|
+
const nilPattern = new RegExp(`\\((${wsPattern.source})*\\)`);
|
|
37
|
+
const anonPattern = new RegExp(`\\[(${wsPattern.source})*\\]`);
|
|
38
|
+
export const iriRef = createToken({ name: 'IriRef', pattern: iriRefPattern });
|
|
39
|
+
export const pNameLn = createToken({ name: 'PNameLn', pattern: pNameLnPattern });
|
|
40
|
+
export const pNameNs = createToken({ name: 'PNameNs', pattern: pNameNsPattern, longer_alt: [pNameLn] });
|
|
41
|
+
export const blankNodeLabel = createToken({ name: 'BlankNodeLabel', pattern: blankNodeLabelPattern });
|
|
42
|
+
export const var1 = createToken({ name: 'Var1', pattern: var1Pattern });
|
|
43
|
+
export const var2 = createToken({ name: 'Var2', pattern: var2Pattern });
|
|
44
|
+
export const langTag = createToken({ name: 'LangTag', pattern: langTagPattern });
|
|
45
|
+
export const integer = createToken({ name: 'Integer', pattern: integerPattern });
|
|
46
|
+
export const decimal = createToken({ name: 'Decimal', pattern: decimalPattern });
|
|
47
|
+
export const double = createToken({ name: 'Double', pattern: doublePattern });
|
|
48
|
+
export const integerPositive = createToken({ name: 'InterferePositive', pattern: interferePositivePattern });
|
|
49
|
+
export const decimalPositive = createToken({ name: 'DecimalPositive', pattern: decimalPositivePattern });
|
|
50
|
+
export const doublePositive = createToken({ name: 'DoublePositive', pattern: doublePositivePattern });
|
|
51
|
+
export const integerNegative = createToken({ name: 'IntegerNegative', pattern: integerNegativePattern });
|
|
52
|
+
export const decimalNegative = createToken({ name: 'DecimalNegative', pattern: decimalNegativePattern });
|
|
53
|
+
export const doubleNegative = createToken({ name: 'DoubleNegative', pattern: doubleNegativePattern });
|
|
54
|
+
export const stringLiteral1 = createToken({ name: 'StringLiteral1', pattern: stringLiteral1Pattern });
|
|
55
|
+
export const stringLiteral2 = createToken({ name: 'StringLiteral2', pattern: stringLiteral2Pattern });
|
|
56
|
+
export const stringLiteralLong1 = createToken({ name: 'StringLiteralLong1', pattern: stringLiteralLong1Pattern });
|
|
57
|
+
export const stringLiteralLong2 = createToken({ name: 'StringLiteralLong2', pattern: stringLiteralLong2Pattern });
|
|
58
|
+
export const ws = createToken({ name: 'Ws', pattern: wsPattern, group: Lexer.SKIPPED });
|
|
59
|
+
export const comment = createToken({ name: 'Comment', pattern: /#[^\n]*/, group: Lexer.SKIPPED });
|
|
60
|
+
export const nil = createToken({ name: 'Nil', pattern: nilPattern });
|
|
61
|
+
export const anon = createToken({ name: 'Anon', pattern: anonPattern });
|
|
62
|
+
export const allTerminals = LexerBuilder.create().add(iriRef, pNameNs, pNameLn, blankNodeLabel, var1, var2, langTag, double, decimal, integer, integerPositive, decimalPositive, doublePositive, integerNegative, decimalNegative, doubleNegative, stringLiteralLong1, stringLiteralLong2, stringLiteral1, stringLiteral2, ws, comment, nil, anon);
|
|
63
|
+
//# sourceMappingURL=terminals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminals.js","sourceRoot":"","sources":["terminals.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable require-unicode-regexp,no-misleading-character-class,max-len,no-control-regex */\nimport { LexerBuilder, createToken } from '@traqula/core';\nimport { Lexer } from 'chevrotain';\n\nconst pnCharsBasePattern = /[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/;\nconst pnCharsUPattern = new RegExp(`${pnCharsBasePattern.source}|_`);\nconst varNamePattern = new RegExp(`((${pnCharsUPattern.source})|[0-9])((${pnCharsUPattern.source})|[0-9]|[\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*`);\nconst iriRefPattern = /<([^\\u0000-\\u0020\"<>\\\\^`{|}])*>/;\nconst pnCharsPattern = new RegExp(`(${pnCharsUPattern.source})|[\\\\-0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]`);\nconst pnPrefixPattern = new RegExp(`(${pnCharsBasePattern.source})(((${pnCharsPattern.source})|\\\\.)*(${pnCharsPattern.source}))?`);\nconst pNameNsPattern = new RegExp(`(${pnPrefixPattern.source})?:`);\nconst percentPattern = /%[\\dA-Fa-f]{2}/;\nconst pnLocalEscPattern = /\\\\[!#$%&'()*+,./;=?@\\\\_~-]/;\nconst plxPattern = new RegExp(`(${percentPattern.source})|(${pnLocalEscPattern.source})`);\nconst pnLocalPattern = new RegExp(`((${pnCharsUPattern.source})|:|[0-9]|(${plxPattern.source}))(((${pnCharsPattern.source})|\\\\.|:|(${plxPattern.source}))*((${pnCharsPattern.source})|:|(${plxPattern.source})))?`);\nconst pNameLnPattern = new RegExp(`(${pNameNsPattern.source})(${pnLocalPattern.source})`);\nconst blankNodeLabelPattern = new RegExp(`_:((${pnCharsUPattern.source})|[0-9])(((${pnCharsPattern.source})|\\\\.)*(${pnCharsPattern.source}))?`);\nconst var1Pattern = new RegExp(`\\\\?(${varNamePattern.source})`);\nconst var2Pattern = new RegExp(`\\\\$(${varNamePattern.source})`);\nconst langTagPattern = /@[A-Za-z]+(-[\\dA-Za-z]+)*/;\nconst integerPattern = /\\d+/;\nconst decimalPattern = /\\d+\\.\\d+/;\nconst exponentPattern = /[Ee][+-]?\\d+/;\nconst doublePattern = new RegExp(`([0-9]+\\\\.[0-9]*(${exponentPattern.source}))|(\\\\.[0-9]+(${exponentPattern.source}))|([0-9]+(${exponentPattern.source}))`);\nconst interferePositivePattern = new RegExp(`\\\\+${integerPattern.source}`);\nconst decimalPositivePattern = new RegExp(`\\\\+${decimalPattern.source}`);\nconst doublePositivePattern = new RegExp(`\\\\+${doublePattern.source}`);\nconst integerNegativePattern = new RegExp(`-${integerPattern.source}`);\nconst decimalNegativePattern = new RegExp(`-${decimalPattern.source}`);\nconst doubleNegativePattern = new RegExp(`-${doublePattern.source}`);\nconst echarPattern = /\\\\[\\\\\"'bfnrt]/u;\nconst stringLiteral1Pattern = new RegExp(`'(([^\\\\u0027\\\\u005C\\\\u000A\\u000D])|(${echarPattern.source}))*'`);\nconst stringLiteral2Pattern = new RegExp(`\"(([^\\\\u0022\\\\u005C\\\\u000A\\\\u000D])|(${echarPattern.source}))*\"`);\nconst stringLiteralLong1Pattern = new RegExp(`'''(('|(''))?([^'\\\\\\\\]|(${echarPattern.source})))*'''`);\nconst stringLiteralLong2Pattern = new RegExp(`\"\"\"((\"|(\"\"))?([^\"\\\\\\\\]|(${echarPattern.source})))*\"\"\"`);\nconst wsPattern = /[\\u0009\\u000A\\u000D ]/;\nconst nilPattern = new RegExp(`\\\\((${wsPattern.source})*\\\\)`);\nconst anonPattern = new RegExp(`\\\\[(${wsPattern.source})*\\\\]`);\n\nexport const iriRef = createToken({ name: 'IriRef', pattern: iriRefPattern });\nexport const pNameLn = createToken({ name: 'PNameLn', pattern: pNameLnPattern });\nexport const pNameNs = createToken({ name: 'PNameNs', pattern: pNameNsPattern, longer_alt: [ pNameLn ]});\nexport const blankNodeLabel = createToken({ name: 'BlankNodeLabel', pattern: blankNodeLabelPattern });\nexport const var1 = createToken({ name: 'Var1', pattern: var1Pattern });\nexport const var2 = createToken({ name: 'Var2', pattern: var2Pattern });\nexport const langTag = createToken({ name: 'LangTag', pattern: langTagPattern });\nexport const integer = createToken({ name: 'Integer', pattern: integerPattern });\nexport const decimal = createToken({ name: 'Decimal', pattern: decimalPattern });\nexport const double = createToken({ name: 'Double', pattern: doublePattern });\nexport const integerPositive = createToken({ name: 'InterferePositive', pattern: interferePositivePattern });\nexport const decimalPositive = createToken({ name: 'DecimalPositive', pattern: decimalPositivePattern });\nexport const doublePositive = createToken({ name: 'DoublePositive', pattern: doublePositivePattern });\nexport const integerNegative = createToken({ name: 'IntegerNegative', pattern: integerNegativePattern });\nexport const decimalNegative = createToken({ name: 'DecimalNegative', pattern: decimalNegativePattern });\nexport const doubleNegative = createToken({ name: 'DoubleNegative', pattern: doubleNegativePattern });\nexport const stringLiteral1 = createToken({ name: 'StringLiteral1', pattern: stringLiteral1Pattern });\nexport const stringLiteral2 = createToken({ name: 'StringLiteral2', pattern: stringLiteral2Pattern });\nexport const stringLiteralLong1 = createToken({ name: 'StringLiteralLong1', pattern: stringLiteralLong1Pattern });\nexport const stringLiteralLong2 = createToken({ name: 'StringLiteralLong2', pattern: stringLiteralLong2Pattern });\nexport const ws = createToken({ name: 'Ws', pattern: wsPattern, group: Lexer.SKIPPED });\nexport const comment = createToken({ name: 'Comment', pattern: /#[^\\n]*/, group: Lexer.SKIPPED });\nexport const nil = createToken({ name: 'Nil', pattern: nilPattern });\nexport const anon = createToken({ name: 'Anon', pattern: anonPattern });\n\nexport const allTerminals = LexerBuilder.create().add(\n iriRef,\n pNameNs,\n pNameLn,\n blankNodeLabel,\n var1,\n var2,\n langTag,\n double,\n decimal,\n integer,\n integerPositive,\n decimalPositive,\n doublePositive,\n integerNegative,\n decimalNegative,\n doubleNegative,\n stringLiteralLong1,\n stringLiteralLong2,\n stringLiteral1,\n stringLiteral2,\n ws,\n comment,\n nil,\n anon,\n);\n"]}
|
package/lib/utils.d.ts
ADDED
package/lib/utils.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transform input in accordance to [19.2](https://www.w3.org/TR/sparql11-query/#codepointEscape)
|
|
3
|
+
* and validate unicode codepoints.
|
|
4
|
+
*/
|
|
5
|
+
export function sparqlCodepointEscape(input) {
|
|
6
|
+
const sanitizedInput = input.replaceAll(/\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu, (_, unicode4, unicode8) => {
|
|
7
|
+
if (unicode4) {
|
|
8
|
+
const charCode = Number.parseInt(unicode4, 16);
|
|
9
|
+
return String.fromCodePoint(charCode);
|
|
10
|
+
}
|
|
11
|
+
const charCode = Number.parseInt(unicode8, 16);
|
|
12
|
+
if (charCode < 0xFFFF) {
|
|
13
|
+
return String.fromCodePoint(charCode);
|
|
14
|
+
}
|
|
15
|
+
const substractedCharCode = charCode - 0x10000;
|
|
16
|
+
return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));
|
|
17
|
+
});
|
|
18
|
+
// Test for invalid unicode surrogate pairs
|
|
19
|
+
if (/[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)/u.test(sanitizedInput)) {
|
|
20
|
+
throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);
|
|
21
|
+
}
|
|
22
|
+
return sanitizedInput;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,2CAA2C,EAC3C,CAAC,CAAC,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC,CACF,CAAC;IACF,2CAA2C;IAC3C,IAAI,wCAAwC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["/**\n * Transform input in accordance to [19.2](https://www.w3.org/TR/sparql11-query/#codepointEscape)\n * and validate unicode codepoints.\n */\nexport function sparqlCodepointEscape(input: string): string {\n const sanitizedInput = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF](?:[^\\uDC00-\\uDFFF]|$)/u.test(sanitizedInput)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n return sanitizedInput;\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Wildcard, Pattern, QuerySelect, Update, TripleCollection, Path, TripleNesting, Term, SparqlQuery } from '../RoundTripTypes';
|
|
2
|
+
export declare function queryIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void;
|
|
3
|
+
export declare function findPatternBoundedVars(iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard, boundedVars: Set<string>): void;
|
|
4
|
+
/**
|
|
5
|
+
* NOTE 13 and https://www.w3.org/TR/sparql11-query/#variableScope
|
|
6
|
+
* > In BIND (expr AS v) requires that the variable v is not in-scope from the preceeding elements in the
|
|
7
|
+
* group graph pattern in which it is used.
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkNote13(patterns: Pattern[]): void;
|
|
10
|
+
/**
|
|
11
|
+
* https://www.w3.org/TR/sparql11-query/#grammarBNodes
|
|
12
|
+
* > two INSERT DATA operations within a single SPARQL Update request
|
|
13
|
+
*/
|
|
14
|
+
export declare function updateNoReuseBlankNodeLabels(updateQuery: Update): void;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { Transformer } from '@traqula/core';
|
|
2
|
+
import { Factory } from '../factory';
|
|
3
|
+
const F = new Factory();
|
|
4
|
+
const transformer = new Transformer();
|
|
5
|
+
/**
|
|
6
|
+
* Get all 'aggregate' rules from an expression
|
|
7
|
+
*/
|
|
8
|
+
function getAggregatesOfExpression(expression) {
|
|
9
|
+
if (F.isExpressionAggregate(expression)) {
|
|
10
|
+
return [expression];
|
|
11
|
+
}
|
|
12
|
+
if (F.isExpressionOperator(expression)) {
|
|
13
|
+
const aggregates = [];
|
|
14
|
+
for (const arg of expression.args) {
|
|
15
|
+
aggregates.push(...getAggregatesOfExpression(arg));
|
|
16
|
+
}
|
|
17
|
+
return aggregates;
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Return the variable value id of an expression if bounded
|
|
23
|
+
*/
|
|
24
|
+
function getExpressionId(expression) {
|
|
25
|
+
// Check if grouping
|
|
26
|
+
if (F.isTerm(expression) && F.isTermVariable(expression)) {
|
|
27
|
+
return expression.value;
|
|
28
|
+
}
|
|
29
|
+
if (F.isExpression(expression)) {
|
|
30
|
+
if (F.isExpressionAggregate(expression) && F.isTermVariable(expression.expression[0])) {
|
|
31
|
+
return expression.expression[0].value;
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
return expression.variable.value;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get all variables used in an expression
|
|
39
|
+
*/
|
|
40
|
+
function getVariablesFromExpression(expression, variables) {
|
|
41
|
+
if (F.isExpressionOperator(expression)) {
|
|
42
|
+
for (const expr of expression.args) {
|
|
43
|
+
getVariablesFromExpression(expr, variables);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (F.isTerm(expression) && F.isTermVariable(expression)) {
|
|
47
|
+
variables.add(expression.value);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function queryIsGood(query) {
|
|
51
|
+
// NoGroupByOnWildcardSelect
|
|
52
|
+
if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {
|
|
53
|
+
if (query.solutionModifiers.group !== undefined) {
|
|
54
|
+
throw new Error('GROUP BY not allowed with wildcard');
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// CannotProjectUngroupedVars - can be skipped if `SELECT *`
|
|
59
|
+
// Check for projection of ungrouped variable
|
|
60
|
+
// Check can be skipped in case of wildcard select.
|
|
61
|
+
const variables = query.variables;
|
|
62
|
+
const hasCountAggregate = variables.flatMap(varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(varVal.expression)).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));
|
|
63
|
+
const groupBy = query.solutionModifiers.group;
|
|
64
|
+
if (hasCountAggregate || groupBy) {
|
|
65
|
+
// We have to check whether
|
|
66
|
+
// 1. Variables used in projection are usable given the group by clause
|
|
67
|
+
// 2. A selectCount will create an implicit group by clause.
|
|
68
|
+
for (const selectVar of variables) {
|
|
69
|
+
if (F.isTerm(selectVar)) {
|
|
70
|
+
if (!groupBy || !groupBy.groupings.map(groupvar => getExpressionId(groupvar))
|
|
71
|
+
.includes((getExpressionId(selectVar)))) {
|
|
72
|
+
throw new Error('Variable not allowed in projection');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (getAggregatesOfExpression(selectVar.expression).length === 0) {
|
|
76
|
+
// Current value binding does not use aggregates
|
|
77
|
+
const usedvars = new Set();
|
|
78
|
+
getVariablesFromExpression(selectVar.expression, usedvars);
|
|
79
|
+
for (const usedvar of usedvars) {
|
|
80
|
+
if (!groupBy || !groupBy.groupings.map(groupVar => getExpressionId(groupVar))
|
|
81
|
+
.includes(usedvar)) {
|
|
82
|
+
throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// NOTE 12: Check if id of each AS-selected column is not yet bound by subquery
|
|
89
|
+
const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');
|
|
90
|
+
if (subqueries.length > 0) {
|
|
91
|
+
const selectBoundedVars = new Set();
|
|
92
|
+
for (const variable of variables) {
|
|
93
|
+
if ('variable' in variable) {
|
|
94
|
+
selectBoundedVars.add(variable.variable.value);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Look at in scope variables
|
|
98
|
+
const vars = subqueries.flatMap(sub => sub.variables)
|
|
99
|
+
.map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));
|
|
100
|
+
const subqueryIds = new Set(vars);
|
|
101
|
+
for (const selectedVarId of selectBoundedVars) {
|
|
102
|
+
if (subqueryIds.has(selectedVarId)) {
|
|
103
|
+
throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export function findPatternBoundedVars(iter, boundedVars) {
|
|
109
|
+
if (F.isQuery(iter) || F.isUpdate(iter)) {
|
|
110
|
+
if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {
|
|
111
|
+
if (iter.where && iter.variables.some(x => F.isWildcard(x))) {
|
|
112
|
+
findPatternBoundedVars(iter.where, boundedVars);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
for (const v of iter.variables) {
|
|
116
|
+
findPatternBoundedVars(v, boundedVars);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (iter.solutionModifiers.group) {
|
|
120
|
+
const grouping = iter.solutionModifiers.group;
|
|
121
|
+
for (const g of grouping.groupings) {
|
|
122
|
+
if ('variable' in g) {
|
|
123
|
+
findPatternBoundedVars(g.variable, boundedVars);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (iter.values?.values && iter.values.values.length > 0) {
|
|
128
|
+
const values = iter.values.values;
|
|
129
|
+
for (const v of Object.keys(values[0])) {
|
|
130
|
+
boundedVars.add(v);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (F.isTerm(iter)) {
|
|
136
|
+
if (F.isTermVariable(iter)) {
|
|
137
|
+
boundedVars.add(iter.value);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (F.isTriple(iter)) {
|
|
141
|
+
findPatternBoundedVars(iter.subject, boundedVars);
|
|
142
|
+
findPatternBoundedVars(iter.predicate, boundedVars);
|
|
143
|
+
findPatternBoundedVars(iter.object, boundedVars);
|
|
144
|
+
}
|
|
145
|
+
else if (F.isPath(iter)) {
|
|
146
|
+
if (!F.isTerm(iter)) {
|
|
147
|
+
for (const item of iter.items) {
|
|
148
|
+
findPatternBoundedVars(item, boundedVars);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {
|
|
153
|
+
for (const triple of iter.triples) {
|
|
154
|
+
findPatternBoundedVars(triple, boundedVars);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {
|
|
158
|
+
for (const pattern of iter.patterns) {
|
|
159
|
+
findPatternBoundedVars(pattern, boundedVars);
|
|
160
|
+
}
|
|
161
|
+
if (F.isPatternService(iter)) {
|
|
162
|
+
findPatternBoundedVars(iter.name, boundedVars);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else if (F.isPatternBind(iter)) {
|
|
166
|
+
findPatternBoundedVars(iter.variable, boundedVars);
|
|
167
|
+
}
|
|
168
|
+
else if (F.isPatternValues(iter)) {
|
|
169
|
+
for (const variable of Object.keys(iter.values.at(0) ?? {})) {
|
|
170
|
+
boundedVars.add(variable);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else if (F.isPatternGraph(iter)) {
|
|
174
|
+
findPatternBoundedVars(iter.name, boundedVars);
|
|
175
|
+
for (const pattern of iter.patterns) {
|
|
176
|
+
findPatternBoundedVars(pattern, boundedVars);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* NOTE 13 and https://www.w3.org/TR/sparql11-query/#variableScope
|
|
182
|
+
* > In BIND (expr AS v) requires that the variable v is not in-scope from the preceeding elements in the
|
|
183
|
+
* group graph pattern in which it is used.
|
|
184
|
+
*/
|
|
185
|
+
export function checkNote13(patterns) {
|
|
186
|
+
for (const [index, pattern] of patterns.entries()) {
|
|
187
|
+
if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {
|
|
188
|
+
const bgp = patterns[index - 1];
|
|
189
|
+
// Find variables used.
|
|
190
|
+
const variables = [];
|
|
191
|
+
transformer.visitNodeSpecific(bgp, 'term', 'variable', var_ => variables.push(var_));
|
|
192
|
+
if (variables.some(var_ => var_.value === pattern.variable.value)) {
|
|
193
|
+
throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const boundedVars = new Set();
|
|
198
|
+
for (const pattern of patterns) {
|
|
199
|
+
// Element can be bind, in that case, check note 13. If it is not, buildup set of bounded variables.
|
|
200
|
+
if (F.isPatternBind(pattern)) {
|
|
201
|
+
if (boundedVars.has(pattern.variable.value)) {
|
|
202
|
+
throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
findPatternBoundedVars(pattern, boundedVars);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* https://www.w3.org/TR/sparql11-query/#grammarBNodes
|
|
212
|
+
* > two INSERT DATA operations within a single SPARQL Update request
|
|
213
|
+
*/
|
|
214
|
+
export function updateNoReuseBlankNodeLabels(updateQuery) {
|
|
215
|
+
const blankLabelsUsedInInsertData = new Set();
|
|
216
|
+
for (const update of updateQuery.updates) {
|
|
217
|
+
if (!update.operation) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
const operation = update.operation;
|
|
221
|
+
if (operation.subType === 'insertdata') {
|
|
222
|
+
const blankNodesHere = new Set();
|
|
223
|
+
transformer.visitNodeSpecific(operation, 'term', 'blankNode', (blankNode) => {
|
|
224
|
+
blankNodesHere.add(blankNode.label);
|
|
225
|
+
if (blankLabelsUsedInInsertData.has(blankNode.label)) {
|
|
226
|
+
throw new Error('Detected reuse blank node across different INSERT DATA clauses');
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
for (const blankNode of blankNodesHere) {
|
|
230
|
+
blankLabelsUsedInInsertData.add(blankNode);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transformer } from '@traqula/core';\nimport { Factory } from '../factory';\nimport type {\n Wildcard,\n Expression,\n ExpressionAggregate,\n Pattern,\n QuerySelect,\n TermVariable,\n SolutionModifierGroupBind,\n PatternBgp,\n Sparql11Nodes,\n Update,\n PatternBind,\n TripleCollection,\n Path,\n TripleNesting,\n Term,\n SparqlQuery,\n} from '../RoundTripTypes';\n\nconst F = new Factory();\nconst transformer = new Transformer<Sparql11Nodes>();\n\n/**\n * Get all 'aggregate' rules from an expression\n */\nfunction getAggregatesOfExpression(expression: Expression): ExpressionAggregate[] {\n if (F.isExpressionAggregate(expression)) {\n return [ expression ];\n }\n if (F.isExpressionOperator(expression)) {\n const aggregates: ExpressionAggregate[] = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n}\n\n/**\n * Return the variable value id of an expression if bounded\n */\nfunction getExpressionId(expression: SolutionModifierGroupBind | Expression | TermVariable): string | undefined {\n // Check if grouping\n if (F.isTerm(expression) && F.isTermVariable(expression)) {\n return expression.value;\n }\n if (F.isExpression(expression)) {\n if (F.isExpressionAggregate(expression) && F.isTermVariable(expression.expression[0])) {\n return expression.expression[0].value;\n }\n return undefined;\n }\n return expression.variable.value;\n}\n\n/**\n * Get all variables used in an expression\n */\nfunction getVariablesFromExpression(expression: Expression, variables: Set<string>): void {\n if (F.isExpressionOperator(expression)) {\n for (const expr of expression.args) {\n getVariablesFromExpression(expr, variables);\n }\n } else if (F.isTerm(expression) && F.isTermVariable(expression)) {\n variables.add(expression.value);\n }\n}\n\nexport function queryIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void {\n // NoGroupByOnWildcardSelect\n if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {\n if (query.solutionModifiers.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n\n // CannotProjectUngroupedVars - can be skipped if `SELECT *`\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n const variables = <Exclude<typeof query.variables, [Wildcard]>> query.variables;\n const hasCountAggregate = variables.flatMap(\n varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));\n const groupBy = query.solutionModifiers.group;\n if (hasCountAggregate || groupBy) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n for (const selectVar of variables) {\n if (F.isTerm(selectVar)) {\n if (!groupBy || !groupBy.groupings.map(groupvar => getExpressionId(groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n // Current value binding does not use aggregates\n const usedvars = new Set<string>();\n getVariablesFromExpression(selectVar.expression, usedvars);\n for (const usedvar of usedvars) {\n if (!groupBy || !groupBy.groupings.map(groupVar => getExpressionId(groupVar))\n .includes(usedvar)) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);\n }\n }\n }\n }\n }\n\n // NOTE 12: Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectBoundedVars = new Set<string>();\n for (const variable of variables) {\n if ('variable' in variable) {\n selectBoundedVars.add(variable.variable.value);\n }\n }\n\n // Look at in scope variables\n const vars = subqueries.flatMap<TermVariable | PatternBind | Wildcard>(sub => sub.variables)\n .map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectBoundedVars) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard,\n boundedVars: Set<string>,\n): void {\n if (F.isQuery(iter) || F.isUpdate(iter)) {\n if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {\n if (iter.where && iter.variables.some(x => F.isWildcard(x))) {\n findPatternBoundedVars(iter.where, boundedVars);\n } else {\n for (const v of iter.variables) {\n findPatternBoundedVars(v, boundedVars);\n }\n }\n if (iter.solutionModifiers.group) {\n const grouping = iter.solutionModifiers.group;\n for (const g of grouping.groupings) {\n if ('variable' in g) {\n findPatternBoundedVars(g.variable, boundedVars);\n }\n }\n }\n if (iter.values?.values && iter.values.values.length > 0) {\n const values = iter.values.values;\n for (const v of Object.keys(values[0])) {\n boundedVars.add(v);\n }\n }\n }\n } else if (F.isTerm(iter)) {\n if (F.isTermVariable(iter)) {\n boundedVars.add(iter.value);\n }\n } else if (F.isTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n } else if (F.isPath(iter)) {\n if (!F.isTerm(iter)) {\n for (const item of iter.items) {\n findPatternBoundedVars(item, boundedVars);\n }\n }\n } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {\n for (const triple of iter.triples) {\n findPatternBoundedVars(triple, boundedVars);\n }\n } else if (\n F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n if (F.isPatternService(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n }\n } else if (F.isPatternBind(iter)) {\n findPatternBoundedVars(iter.variable, boundedVars);\n } else if (F.isPatternValues(iter)) {\n for (const variable of Object.keys(iter.values.at(0) ?? {})) {\n boundedVars.add(variable);\n }\n } else if (F.isPatternGraph(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * NOTE 13 and https://www.w3.org/TR/sparql11-query/#variableScope\n * > In BIND (expr AS v) requires that the variable v is not in-scope from the preceeding elements in the\n * group graph pattern in which it is used.\n */\nexport function checkNote13(patterns: Pattern[]): void {\n for (const [ index, pattern ] of patterns.entries()) {\n if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {\n const bgp = <PatternBgp> patterns[index - 1];\n // Find variables used.\n const variables: TermVariable[] = [];\n transformer.visitNodeSpecific(bgp, 'term', 'variable', var_ => variables.push(var_));\n if (variables.some(var_ => var_.value === pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n }\n }\n\n const boundedVars = new Set<string>();\n for (const pattern of patterns) {\n // Element can be bind, in that case, check note 13. If it is not, buildup set of bounded variables.\n if (F.isPatternBind(pattern)) {\n if (boundedVars.has(pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n } else {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#grammarBNodes\n * > two INSERT DATA operations within a single SPARQL Update request\n */\nexport function updateNoReuseBlankNodeLabels(updateQuery: Update): void {\n const blankLabelsUsedInInsertData = new Set<string>();\n for (const update of updateQuery.updates) {\n if (!update.operation) {\n continue;\n }\n const operation = update.operation;\n if (operation.subType === 'insertdata') {\n const blankNodesHere = new Set<string>();\n transformer.visitNodeSpecific(operation, 'term', 'blankNode', (blankNode) => {\n blankNodesHere.add(blankNode.label);\n if (blankLabelsUsedInInsertData.has(blankNode.label)) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n });\n for (const blankNode of blankNodesHere) {\n blankLabelsUsedInInsertData.add(blankNode);\n }\n }\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@traqula/rules-sparql-1-1",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.1-alpha.10+6cb01a3",
|
|
5
|
+
"description": "TRAQULA Lexer and Grammar Rules for sparql 1.1",
|
|
6
|
+
"lsd:module": true,
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/comunica/traqula.git",
|
|
11
|
+
"directory": "packages/rules-sparql-1-1"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/comunica/traqula/issues"
|
|
15
|
+
},
|
|
16
|
+
"sideEffects": false,
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"exports": {
|
|
21
|
+
"import": "./lib/index.js",
|
|
22
|
+
"require": "./lib/index.cjs"
|
|
23
|
+
},
|
|
24
|
+
"main": "lib/index.js",
|
|
25
|
+
"files": [
|
|
26
|
+
"lib/**/*.cjs",
|
|
27
|
+
"lib/**/*.d.ts",
|
|
28
|
+
"lib/**/*.js",
|
|
29
|
+
"lib/**/*.js.map"
|
|
30
|
+
],
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18.0"
|
|
33
|
+
},
|
|
34
|
+
"typings": "lib/index",
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "yarn build:ts && yarn build:transpile",
|
|
37
|
+
"build:ts": "node \"../../node_modules/typescript/bin/tsc\"",
|
|
38
|
+
"build:transpile": " node \"../../node_modules/esbuild/bin/esbuild\" --format=cjs --bundle --log-level=error --outfile=lib/index.cjs lib/index.ts"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@traqula/core": "^0.0.1-alpha.10+6cb01a3",
|
|
42
|
+
"chevrotain": "^11.0.3"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@chevrotain/types": "^11.0.3"
|
|
46
|
+
},
|
|
47
|
+
"gitHead": "6cb01a3af7ea01e7bcd5aaba638cf74fb45db76b"
|
|
48
|
+
}
|