@traqula/parser-sparql-1-2 0.0.22 → 0.0.24
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/dist/cjs/lib/Parser.js +49 -54
- package/dist/cjs/lib/Parser.js.map +1 -0
- package/dist/cjs/lib/index.js +16 -20
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/package.json +13 -12
- package/dist/cjs/spec/parser.js +0 -43
- package/dist/cjs/test/query.bench.js +0 -22
- package/dist/cjs/test/statics.test.js +0 -113
- package/dist/esm/spec/parser.d.ts +0 -4
- package/dist/esm/spec/parser.js +0 -13
- package/dist/esm/spec/parser.js.map +0 -1
- package/dist/esm/test/query.bench.d.ts +0 -1
- package/dist/esm/test/query.bench.js +0 -23
- package/dist/esm/test/query.bench.js.map +0 -1
- package/dist/esm/test/statics.test.d.ts +0 -1
- package/dist/esm/test/statics.test.js +0 -93
- package/dist/esm/test/statics.test.js.map +0 -1
package/dist/cjs/lib/Parser.js
CHANGED
|
@@ -1,58 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var import_rules_sparql_1_2 = require("@traqula/rules-sparql-1-2");
|
|
29
|
-
const sparql12ParserBuilder = import_core.ParserBuilder.create(import_parser_sparql_1_1.sparql11ParserBuilder).widenContext().typePatch().addMany(import_rules_sparql_1_2.gram.reifiedTripleBlock, import_rules_sparql_1_2.gram.reifiedTripleBlockPath, import_rules_sparql_1_2.gram.reifier, import_rules_sparql_1_2.gram.varOrReifierId, import_rules_sparql_1_2.gram.annotation, import_rules_sparql_1_2.gram.annotationPath, import_rules_sparql_1_2.gram.annotationBlockPath, import_rules_sparql_1_2.gram.annotationBlock, import_rules_sparql_1_2.gram.reifiedTriple, import_rules_sparql_1_2.gram.reifiedTripleSubject, import_rules_sparql_1_2.gram.reifiedTripleObject, import_rules_sparql_1_2.gram.tripleTerm, import_rules_sparql_1_2.gram.tripleTermSubject, import_rules_sparql_1_2.gram.tripleTermObject, import_rules_sparql_1_2.gram.tripleTermData, import_rules_sparql_1_2.gram.tripleTermDataSubject, import_rules_sparql_1_2.gram.tripleTermDataObject, import_rules_sparql_1_2.gram.exprTripleTerm, import_rules_sparql_1_2.gram.exprTripleTermSubject, import_rules_sparql_1_2.gram.exprTripleTermObject).addMany(import_rules_sparql_1_2.gram.versionDecl, import_rules_sparql_1_2.gram.versionSpecifier).addMany(import_rules_sparql_1_2.gram.buildInLangDir, import_rules_sparql_1_2.gram.buildInLangStrDir, import_rules_sparql_1_2.gram.buildInHasLang, import_rules_sparql_1_2.gram.buildInHasLangDir, import_rules_sparql_1_2.gram.buildInIsTriple, import_rules_sparql_1_2.gram.buildInTriple, import_rules_sparql_1_2.gram.buildInSubject, import_rules_sparql_1_2.gram.buildInPredicate, import_rules_sparql_1_2.gram.buildInObject).patchRule(import_rules_sparql_1_2.gram.dataBlockValue).patchRule(import_rules_sparql_1_2.gram.triplesSameSubject).patchRule(import_rules_sparql_1_2.gram.triplesSameSubjectPath).patchRule(import_rules_sparql_1_2.gram.object).patchRule(import_rules_sparql_1_2.gram.objectPath).patchRule(import_rules_sparql_1_2.gram.graphNode).patchRule(import_rules_sparql_1_2.gram.graphNodePath).patchRule(import_rules_sparql_1_2.gram.varOrTerm).deleteRule(import_rules_sparql_1_1.gram.graphTerm.name).patchRule(import_rules_sparql_1_2.gram.primaryExpression).patchRule(import_rules_sparql_1_2.gram.builtInCall).patchRule(import_rules_sparql_1_2.gram.rdfLiteral).patchRule(import_rules_sparql_1_2.gram.unaryExpression).patchRule(import_rules_sparql_1_2.gram.prologue);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Parser = exports.sparql12ParserBuilder = void 0;
|
|
4
|
+
const core_1 = require("@traqula/core");
|
|
5
|
+
const parser_sparql_1_1_1 = require("@traqula/parser-sparql-1-1");
|
|
6
|
+
const rules_sparql_1_1_1 = require("@traqula/rules-sparql-1-1");
|
|
7
|
+
const rules_sparql_1_2_1 = require("@traqula/rules-sparql-1-2");
|
|
8
|
+
exports.sparql12ParserBuilder = core_1.ParserBuilder.create(parser_sparql_1_1_1.sparql11ParserBuilder)
|
|
9
|
+
.widenContext()
|
|
10
|
+
.typePatch()
|
|
11
|
+
.addMany(rules_sparql_1_2_1.gram.reifiedTripleBlock, rules_sparql_1_2_1.gram.reifiedTripleBlockPath, rules_sparql_1_2_1.gram.reifier, rules_sparql_1_2_1.gram.varOrReifierId, rules_sparql_1_2_1.gram.annotation, rules_sparql_1_2_1.gram.annotationPath, rules_sparql_1_2_1.gram.annotationBlockPath, rules_sparql_1_2_1.gram.annotationBlock, rules_sparql_1_2_1.gram.reifiedTriple, rules_sparql_1_2_1.gram.reifiedTripleSubject, rules_sparql_1_2_1.gram.reifiedTripleObject, rules_sparql_1_2_1.gram.tripleTerm, rules_sparql_1_2_1.gram.tripleTermSubject, rules_sparql_1_2_1.gram.tripleTermObject, rules_sparql_1_2_1.gram.tripleTermData, rules_sparql_1_2_1.gram.tripleTermDataSubject, rules_sparql_1_2_1.gram.tripleTermDataObject, rules_sparql_1_2_1.gram.exprTripleTerm, rules_sparql_1_2_1.gram.exprTripleTermSubject, rules_sparql_1_2_1.gram.exprTripleTermObject)
|
|
12
|
+
.addMany(rules_sparql_1_2_1.gram.versionDecl, rules_sparql_1_2_1.gram.versionSpecifier)
|
|
13
|
+
.addMany(rules_sparql_1_2_1.gram.buildInLangDir, rules_sparql_1_2_1.gram.buildInLangStrDir, rules_sparql_1_2_1.gram.buildInHasLang, rules_sparql_1_2_1.gram.buildInHasLangDir, rules_sparql_1_2_1.gram.buildInIsTriple, rules_sparql_1_2_1.gram.buildInTriple, rules_sparql_1_2_1.gram.buildInSubject, rules_sparql_1_2_1.gram.buildInPredicate, rules_sparql_1_2_1.gram.buildInObject)
|
|
14
|
+
.patchRule(rules_sparql_1_2_1.gram.dataBlockValue)
|
|
15
|
+
.patchRule(rules_sparql_1_2_1.gram.triplesSameSubject)
|
|
16
|
+
.patchRule(rules_sparql_1_2_1.gram.triplesSameSubjectPath)
|
|
17
|
+
.patchRule(rules_sparql_1_2_1.gram.object)
|
|
18
|
+
.patchRule(rules_sparql_1_2_1.gram.objectPath)
|
|
19
|
+
.patchRule(rules_sparql_1_2_1.gram.graphNode)
|
|
20
|
+
.patchRule(rules_sparql_1_2_1.gram.graphNodePath)
|
|
21
|
+
.patchRule(rules_sparql_1_2_1.gram.varOrTerm)
|
|
22
|
+
.deleteRule(rules_sparql_1_1_1.gram.graphTerm.name)
|
|
23
|
+
.patchRule(rules_sparql_1_2_1.gram.primaryExpression)
|
|
24
|
+
.patchRule(rules_sparql_1_2_1.gram.builtInCall)
|
|
25
|
+
.patchRule(rules_sparql_1_2_1.gram.rdfLiteral)
|
|
26
|
+
.patchRule(rules_sparql_1_2_1.gram.unaryExpression)
|
|
27
|
+
.patchRule(rules_sparql_1_2_1.gram.prologue);
|
|
30
28
|
class Parser {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
29
|
+
parser;
|
|
30
|
+
F = new rules_sparql_1_2_1.AstFactory();
|
|
31
|
+
constructor(args = {}) {
|
|
32
|
+
this.parser = exports.sparql12ParserBuilder.build({
|
|
33
|
+
...args,
|
|
34
|
+
queryPreProcessor: rules_sparql_1_1_1.sparqlCodepointEscape,
|
|
35
|
+
tokenVocabulary: rules_sparql_1_2_1.lex.sparql12LexerBuilder.tokenVocabulary,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
parse(query, context = {}) {
|
|
39
|
+
return this.parser.queryOrUpdate(query, (0, rules_sparql_1_2_1.completeParseContext)(context));
|
|
40
|
+
}
|
|
41
|
+
parsePath(query, context = {}) {
|
|
42
|
+
const res = this.parser.path(query, (0, rules_sparql_1_2_1.completeParseContext)(context));
|
|
43
|
+
if (this.F.isPathPure(res)) {
|
|
44
|
+
return {
|
|
45
|
+
...res,
|
|
46
|
+
prefixes: {},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return res;
|
|
50
50
|
}
|
|
51
|
-
return res;
|
|
52
|
-
}
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Parser,
|
|
57
|
-
sparql12ParserBuilder
|
|
58
|
-
});
|
|
52
|
+
exports.Parser = Parser;
|
|
53
|
+
//# sourceMappingURL=Parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../../lib/Parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ParserBuilder } from '@traqula/core';\nimport type { Patch, Wrap, ParserBuildArgs } from '@traqula/core';\nimport { sparql11ParserBuilder } from '@traqula/parser-sparql-1-1';\nimport {\n gram as g11,\n type TermIri,\n sparqlCodepointEscape,\n} from '@traqula/rules-sparql-1-1';\nimport { completeParseContext, AstFactory, gram as S12, lex as l12 } from '@traqula/rules-sparql-1-2';\nimport type * as T12 from '@traqula/rules-sparql-1-2';\n\nexport const sparql12ParserBuilder = ParserBuilder.create(sparql11ParserBuilder)\n .widenContext<T12.SparqlContext>()\n .typePatch<{\n /// GeneralFile\n queryOrUpdate: [ T12.SparqlQuery];\n /// Query Unit file\n [g11.selectQuery.name]: [Omit<T12.QuerySelect, g11.HandledByBase>];\n [g11.subSelect.name]: [ Omit<T12.SubSelect, 'prefixes'>];\n [g11.selectClause.name]: [Wrap<Pick<T12.QuerySelect, 'variables' | 'distinct' | 'reduced'>>];\n [g11.constructQuery.name]: [Omit<T12.QueryConstruct, g11.HandledByBase>];\n [g11.describeQuery.name]: [Omit<T12.QueryDescribe, g11.HandledByBase>];\n [g11.askQuery.name]: [Omit<T12.QueryAsk, g11.HandledByBase>];\n [g11.valuesClause.name]: [T12.PatternValues[] | undefined];\n [g11.constructTemplate.name]: [Wrap<T12.PatternBgp>];\n [g11.constructTriples.name]: [T12.PatternBgp];\n /// Update Unit file\n [g11.update1.name]: [T12.UpdateOperation];\n [g11.load.name]: [T12.UpdateOperationLoad];\n [g11.clear.name]: [T12.UpdateOperationClear];\n [g11.drop.name]: [T12.UpdateOperationDrop];\n [g11.create.name]: [T12.UpdateOperationCreate];\n [g11.add.name]: [T12.UpdateOperationAdd];\n [g11.move.name]: [T12.UpdateOperationMove];\n [g11.copy.name]: [T12.UpdateOperationCopy];\n [g11.quadPattern.name]: [Wrap<T12.Quads[]>];\n [g11.quadData.name]: [Wrap<T12.Quads[]>];\n [g11.insertData.name]: [T12.UpdateOperationInsertData];\n [g11.deleteData.name]: [T12.UpdateOperationDeleteData];\n [g11.deleteWhere.name]: [T12.UpdateOperationDeleteWhere];\n [g11.modify.name]: [T12.UpdateOperationModify];\n [g11.deleteClause.name]: [Wrap<T12.Quads[]>];\n [g11.insertClause.name]: [Wrap<T12.Quads[]>];\n [g11.graphOrDefault.name]: [T12.GraphRefDefault | T12.GraphRefSpecific];\n [g11.graphRef.name]: [T12.GraphRefSpecific];\n [g11.graphRefAll.name]: [T12.GraphRef];\n [g11.quads.name]: [Wrap<T12.Quads[]>];\n [g11.quadsNotTriples.name]: [T12.GraphQuads];\n /// Built-in functions\n [g11.builtInStr.name]: [T12.ExpressionOperation];\n [g11.builtInLang.name]: [T12.ExpressionOperation];\n [g11.builtInLangmatches.name]: [T12.ExpressionOperation];\n [g11.builtInDatatype.name]: [T12.ExpressionOperation];\n [g11.builtInBound.name]: [T12.ExpressionOperation];\n [g11.builtInIri.name]: [T12.ExpressionOperation];\n [g11.builtInUri.name]: [T12.ExpressionOperation];\n [g11.builtInBnodeSparqlJs.name]: [T12.ExpressionOperation];\n [g11.builtInRand.name]: [T12.ExpressionOperation];\n [g11.builtInAbs.name]: [T12.ExpressionOperation];\n [g11.builtInCeil.name]: [T12.ExpressionOperation];\n [g11.builtInFloor.name]: [T12.ExpressionOperation];\n [g11.builtInRound.name]: [T12.ExpressionOperation];\n [g11.builtInConcat.name]: [T12.ExpressionOperation];\n [g11.substringExpression.name]: [T12.ExpressionOperation];\n [g11.builtInStrlen.name]: [T12.ExpressionOperation];\n [g11.strReplaceExpression.name]: [T12.ExpressionOperation];\n [g11.builtInUcase.name]: [T12.ExpressionOperation];\n [g11.builtInLcase.name]: [T12.ExpressionOperation];\n [g11.builtInEncode_for_uri.name]: [T12.ExpressionOperation];\n [g11.builtInContains.name]: [T12.ExpressionOperation];\n [g11.builtInStrstarts.name]: [T12.ExpressionOperation];\n [g11.builtInStrends.name]: [T12.ExpressionOperation];\n [g11.builtInStrbefore.name]: [T12.ExpressionOperation];\n [g11.builtInStrafter.name]: [T12.ExpressionOperation];\n [g11.builtInYear.name]: [T12.ExpressionOperation];\n [g11.builtInMonth.name]: [T12.ExpressionOperation];\n [g11.builtInDay.name]: [T12.ExpressionOperation];\n [g11.builtInHours.name]: [T12.ExpressionOperation];\n [g11.builtInMinutes.name]: [T12.ExpressionOperation];\n [g11.builtInSeconds.name]: [T12.ExpressionOperation];\n [g11.builtInTimezone.name]: [T12.ExpressionOperation];\n [g11.builtInTz.name]: [T12.ExpressionOperation];\n [g11.builtInNow.name]: [T12.ExpressionOperation];\n [g11.builtInUuid.name]: [T12.ExpressionOperation];\n [g11.builtInStruuid.name]: [T12.ExpressionOperation];\n [g11.builtInMd5.name]: [T12.ExpressionOperation];\n [g11.builtInSha1.name]: [T12.ExpressionOperation];\n [g11.builtInSha256.name]: [T12.ExpressionOperation];\n [g11.builtInSha384.name]: [T12.ExpressionOperation];\n [g11.builtInSha512.name]: [T12.ExpressionOperation];\n [g11.builtInCoalesce.name]: [T12.ExpressionOperation];\n [g11.builtInIf.name]: [T12.ExpressionOperation];\n [g11.builtInStrlang.name]: [T12.ExpressionOperation];\n [g11.builtInStrdt.name]: [T12.ExpressionOperation];\n [g11.builtInSameterm.name]: [T12.ExpressionOperation];\n [g11.builtInIsiri.name]: [T12.ExpressionOperation];\n [g11.builtInIsuri.name]: [T12.ExpressionOperation];\n [g11.builtInIsblank.name]: [T12.ExpressionOperation];\n [g11.builtInIsliteral.name]: [T12.ExpressionOperation];\n [g11.builtInIsnumeric.name]: [T12.ExpressionOperation];\n [g11.existsFunc.name]: [T12.ExpressionPatternOperation];\n [g11.notExistsFunc.name]: [T12.ExpressionPatternOperation];\n [g11.aggregateCount.name]: [T12.ExpressionAggregateOnWildcard | T12.ExpressionAggregateDefault];\n [g11.aggregateSum.name]: [T12.ExpressionAggregateDefault];\n [g11.aggregateMin.name]: [T12.ExpressionAggregateDefault];\n [g11.aggregateMax.name]: [T12.ExpressionAggregateDefault];\n [g11.aggregateAvg.name]: [T12.ExpressionAggregateDefault];\n [g11.aggregateSample.name]: [T12.ExpressionAggregateDefault];\n [g11.aggregateGroup_concat.name]: [T12.ExpressionAggregateDefault | T12.ExpressionAggregateSeparator];\n [g11.aggregate.name]: [T12.ExpressionAggregate];\n [g11.builtInCall.name]: [T12.Expression];\n /// DatasetClause\n [g11.datasetClause.name]: [Wrap<T12.DatasetClauses['clauses'][0]>];\n [g11.defaultGraphClause.name]: [T12.TermIri];\n [g11.usingClause.name]: [Wrap<T12.DatasetClauses['clauses'][0]>];\n [g11.datasetClauseStar.name]: [T12.DatasetClauses];\n [g11.usingClauseStar.name]: [T12.DatasetClauses];\n [g11.namedGraphClause.name]: [Wrap<T12.TermIri>];\n [g11.sourceSelector.name]: [T12.TermIri];\n // Expression file\n [g11.argList.name]: [Wrap<Patch<g11.IArgList, { args: T12.Expression[] }>>];\n [g11.expressionList.name]: [Wrap<T12.Expression[]>];\n [g11.expression.name]: [T12.Expression];\n [g11.conditionalOrExpression.name]: [T12.ExpressionOperation | T12.Expression];\n [g11.conditionalAndExpression.name]: [T12.Expression];\n [g11.valueLogical.name]: [T12.Expression];\n [g11.relationalExpression.name]: [T12.ExpressionOperation | T12.Expression];\n [g11.numericExpression.name]: [T12.Expression];\n [g11.additiveExpression.name]: [T12.Expression];\n [g11.multiplicativeExpression.name]: [T12.Expression];\n [g11.unaryExpression.name]: [T12.Expression];\n [g11.primaryExpression.name]: [T12.Expression];\n [g11.brackettedExpression.name]: [T12.Expression];\n [g11.iriOrFunction.name]: [T12.TermIri | T12.ExpressionFunctionCall];\n /// General\n [g11.prologue.name]: [T12.ContextDefinition[]];\n [g11.baseDecl.name]: [T12.ContextDefinition];\n [g11.prefixDecl.name]: [T12.ContextDefinition];\n [g11.verb.name]: [T12.TermVariable | T12.TermIri];\n [g11.varOrTerm.name]: [T12.Term];\n [g11.varOrIri.name]: [T12.TermIri | T12.TermVariable];\n [g11.var_.name]: [T12.TermVariable];\n [g11.graphTerm.name]: [T12.GraphTerm];\n /// Literals\n [g11.rdfLiteral.name]: [T12.TermLiteral];\n [g11.numericLiteral.name]: [T12.TermLiteralTyped];\n [g11.numericLiteralUnsigned.name]: [T12.TermLiteralTyped];\n [g11.numericLiteralPositive.name]: [T12.TermLiteralTyped];\n [g11.numericLiteralNegative.name]: [T12.TermLiteralTyped];\n [g11.booleanLiteral.name]: [T12.TermLiteralTyped];\n [g11.string.name]: [T12.TermLiteralStr];\n [g11.iri.name]: [T12.TermIri];\n [g11.iriFull.name]: [T12.TermIriFull];\n [g11.prefixedName.name]: [T12.TermIriPrefixed];\n [g11.blankNode.name]: [T12.TermBlank];\n [g11.verbA.name]: [T12.TermIriFull];\n /// / Paths: unchanged\n /// / SolutionModifiers\n [g11.solutionModifier.name]: [T12.SolutionModifiers];\n [g11.groupClause.name]: [T12.SolutionModifierGroup];\n [g11.groupCondition.name]: [T12.Expression | T12.SolutionModifierGroupBind];\n [g11.havingClause.name]: [T12.SolutionModifierHaving];\n [g11.havingCondition.name]: [T12.Expression];\n [g11.orderClause.name]: [T12.SolutionModifierOrder];\n [g11.orderCondition.name]: [T12.Ordering];\n [g11.limitOffsetClauses.name]: [T12.SolutionModifierLimitOffset];\n [g11.limitClause.name]: [Wrap<number>];\n [g11.offsetClause.name]: [ Wrap<number>];\n /// tripleBlock\n [g11.triplesBlock.name]: [T12.PatternBgp];\n [g11.triplesSameSubject.name]: [T12.BasicGraphPattern];\n [g11.triplesSameSubjectPath.name]: [T12.BasicGraphPattern];\n [g11.triplesTemplate.name]: [T12.PatternBgp];\n [g11.propertyList.name]: [T12.TripleNesting[]];\n [g11.propertyListPath.name]: [T12.TripleNesting[]];\n [g11.propertyListNotEmpty.name]: [T12.TripleNesting[]];\n [g11.propertyListPathNotEmpty.name]: [T12.TripleNesting[]];\n [g11.verbPath.name]: [T12.Path];\n [g11.verbSimple.name]: [T12.TermVariable];\n [g11.objectList.name]: [T12.TripleNesting[], [ T12.TripleNesting['subject'], T12.TripleNesting['predicate'] ]];\n [g11.objectListPath.name]: [T12.TripleNesting, [ T12.TripleNesting['subject'], T12.TripleNesting['predicate'] ]];\n [g11.object.name]: [T12.TripleNesting, [ T12.TripleNesting['subject'], T12.TripleNesting['predicate'] ]];\n [g11.objectPath.name]: [T12.TripleNesting[], [ T12.TripleNesting['subject'], T12.TripleNesting['predicate'] ]];\n [g11.collection.name]: [T12.TripleCollectionList];\n [g11.collectionPath.name]: [T12.TripleCollectionList];\n [g11.triplesNode.name]: [T12.TripleCollection];\n [g11.triplesNodePath.name]: [T12.TripleCollection];\n [g11.blankNodePropertyList.name]: [T12.TripleCollectionBlankNodeProperties];\n [g11.blankNodePropertyListPath.name]: [T12.TripleCollectionBlankNodeProperties];\n [g11.graphNode.name]: [T12.Term | T12.TripleCollection];\n [g11.graphNodePath.name]: [T12.Term | T12.TripleCollection];\n /// WhereClause\n [g11.whereClause.name]: [Wrap<T12.PatternGroup>];\n [g11.groupGraphPattern.name]: [T12.PatternGroup];\n [g11.groupGraphPatternSub.name]: [T12.Pattern[]];\n [g11.graphPatternNotTriples.name]: [Exclude<T12.Pattern, T12.SubSelect | T12.PatternBgp>];\n [g11.optionalGraphPattern.name]: [T12.PatternOptional];\n [g11.graphGraphPattern.name]: [T12.PatternGraph];\n [g11.serviceGraphPattern.name]: [T12.PatternService];\n [g11.bind.name]: [T12.PatternBind];\n [g11.inlineData.name]: [T12.PatternValues];\n [g11.dataBlock.name]: [T12.PatternValues];\n [g11.inlineDataOneVar.name]: [T12.PatternValues];\n [g11.inlineDataFull.name]: [T12.PatternValues];\n [g11.dataBlockValue.name]: [T12.TermIri | T12.TermLiteral | undefined];\n [g11.minusGraphPattern.name]: [T12.PatternMinus];\n [g11.groupOrUnionGraphPattern.name]: [T12.PatternGroup | T12.PatternUnion];\n [g11.filter.name]: [T12.PatternFilter];\n [g11.constraint.name]: [T12.Expression];\n [g11.functionCall.name]: [T12.ExpressionFunctionCall];\n }>()\n .addMany(\n S12.reifiedTripleBlock,\n S12.reifiedTripleBlockPath,\n S12.reifier,\n S12.varOrReifierId,\n S12.annotation,\n S12.annotationPath,\n S12.annotationBlockPath,\n S12.annotationBlock,\n S12.reifiedTriple,\n S12.reifiedTripleSubject,\n S12.reifiedTripleObject,\n S12.tripleTerm,\n S12.tripleTermSubject,\n S12.tripleTermObject,\n S12.tripleTermData,\n S12.tripleTermDataSubject,\n S12.tripleTermDataObject,\n S12.exprTripleTerm,\n S12.exprTripleTermSubject,\n S12.exprTripleTermObject,\n )\n .addMany(\n S12.versionDecl,\n S12.versionSpecifier,\n )\n .addMany(\n S12.buildInLangDir,\n S12.buildInLangStrDir,\n S12.buildInHasLang,\n S12.buildInHasLangDir,\n S12.buildInIsTriple,\n S12.buildInTriple,\n S12.buildInSubject,\n S12.buildInPredicate,\n S12.buildInObject,\n )\n .patchRule(S12.dataBlockValue)\n .patchRule(S12.triplesSameSubject)\n .patchRule(S12.triplesSameSubjectPath)\n .patchRule(S12.object)\n .patchRule(S12.objectPath)\n .patchRule(S12.graphNode)\n .patchRule(S12.graphNodePath)\n .patchRule(S12.varOrTerm)\n .deleteRule(g11.graphTerm.name)\n .patchRule(S12.primaryExpression)\n .patchRule(S12.builtInCall)\n .patchRule(S12.rdfLiteral)\n .patchRule(S12.unaryExpression)\n .patchRule(S12.prologue);\n\nexport type SparqlParser = ReturnType<typeof sparql12ParserBuilder.build>;\n\nexport class Parser {\n private readonly parser: SparqlParser;\n\n private readonly F = new AstFactory();\n\n public constructor(args: Pick<ParserBuildArgs, 'parserConfig' | 'lexerConfig'> = {}) {\n this.parser = sparql12ParserBuilder.build({\n ...args,\n queryPreProcessor: sparqlCodepointEscape,\n tokenVocabulary: l12.sparql12LexerBuilder.tokenVocabulary,\n });\n }\n\n public parse(query: string, context: Partial<T12.SparqlContext> = {}): T12.SparqlQuery {\n return this.parser.queryOrUpdate(query, completeParseContext(context));\n }\n\n public parsePath(\n query: string,\ncontext: Partial<T12.SparqlContext> = {},\n ): (T12.Path & { prefixes: object }) | TermIri {\n const res = this.parser.path(query, completeParseContext(context));\n if (this.F.isPathPure(res)) {\n return {\n ...res,\n prefixes: {},\n };\n }\n return res;\n }\n}\n"]}
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
13
15
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
module.exports = __toCommonJS(lib_exports);
|
|
18
|
-
__reExport(lib_exports, require("./Parser.js"), module.exports);
|
|
19
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
20
|
-
0 && (module.exports = {
|
|
21
|
-
...require("./Parser.js")
|
|
22
|
-
});
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Parser.js"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B","sourcesContent":["export * from './Parser.js';\nexport type { SparqlContext } from '@traqula/rules-sparql-1-1';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traqula/parser-sparql-1-2",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.24",
|
|
5
5
|
"description": "SPARQL 1.2 parser",
|
|
6
6
|
"lsd:module": true,
|
|
7
7
|
"license": "MIT",
|
|
@@ -27,17 +27,18 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"files": [
|
|
30
|
-
"dist/**/*.d.ts",
|
|
31
|
-
"dist/**/*.js",
|
|
32
|
-
"dist/**/*.js.map"
|
|
30
|
+
"dist/*/lib/**/*.d.ts",
|
|
31
|
+
"dist/*/lib/**/*.js",
|
|
32
|
+
"dist/*/lib/**/*.js.map",
|
|
33
|
+
"dist/cjs/package.json"
|
|
33
34
|
],
|
|
34
35
|
"engines": {
|
|
35
36
|
"node": "^20.19.0 || >=22.12.0"
|
|
36
37
|
},
|
|
37
38
|
"scripts": {
|
|
38
|
-
"build": "yarn build:ts && yarn build:
|
|
39
|
+
"build": "yarn build:ts && yarn build:cjs",
|
|
39
40
|
"build:ts": "node \"../../node_modules/typescript/bin/tsc\" -b",
|
|
40
|
-
"build:
|
|
41
|
+
"build:cjs": "node \"../../node_modules/typescript/bin/tsc\" -b tsconfig.cjs.json",
|
|
41
42
|
"spec:base-1-1": "rdf-test-suite dist/cjs/spec/parser.js http://w3c.github.io/rdf-tests/sparql/sparql11/manifest-all.ttl -c ../../.rdf-test-suite-cache/",
|
|
42
43
|
"spec:base-1-2": "rdf-test-suite dist/cjs/spec/parser.js https://w3c.github.io/rdf-tests/sparql/sparql12/manifest.ttl -c ../../.rdf-test-suite-cache/",
|
|
43
44
|
"spec:query-1-1": "yarn spec:base-1-1 -- -s http://www.w3.org/TR/sparql11-query/",
|
|
@@ -50,18 +51,18 @@
|
|
|
50
51
|
"spec:earl": "yarn spec:earl:query-1-1 && yarn spec:earl:update-1-1"
|
|
51
52
|
},
|
|
52
53
|
"dependencies": {
|
|
53
|
-
"@traqula/core": "^0.0.
|
|
54
|
-
"@traqula/parser-sparql-1-1": "^0.0.
|
|
55
|
-
"@traqula/rules-sparql-1-1": "^0.0.
|
|
56
|
-
"@traqula/rules-sparql-1-2": "^0.0.
|
|
54
|
+
"@traqula/core": "^0.0.24",
|
|
55
|
+
"@traqula/parser-sparql-1-1": "^0.0.24",
|
|
56
|
+
"@traqula/rules-sparql-1-1": "^0.0.24",
|
|
57
|
+
"@traqula/rules-sparql-1-2": "^0.0.24",
|
|
57
58
|
"rdf-data-factory": "^2.0.1"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@rdfjs/types": "^2.0.1",
|
|
61
|
-
"@traqula/test-utils": "^0.0.
|
|
62
|
+
"@traqula/test-utils": "^0.0.24",
|
|
62
63
|
"rdf-data-factory": "^2.0.1",
|
|
63
64
|
"rdf-test-suite": "^2.0.0",
|
|
64
65
|
"sparqljs": "^3.7.3"
|
|
65
66
|
},
|
|
66
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "9865fe1fe302819d46e19c6f3250ceef778f434f"
|
|
67
68
|
}
|
package/dist/cjs/spec/parser.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var parser_exports = {};
|
|
20
|
-
__export(parser_exports, {
|
|
21
|
-
parse: () => parse,
|
|
22
|
-
query: () => query,
|
|
23
|
-
update: () => update
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(parser_exports);
|
|
26
|
-
var import_rdf_test_suite = require("rdf-test-suite");
|
|
27
|
-
var import_lib = require("../lib/index.js");
|
|
28
|
-
function parse(query2, context = {}) {
|
|
29
|
-
const parser = new import_lib.Parser();
|
|
30
|
-
parser.parse(query2, context);
|
|
31
|
-
}
|
|
32
|
-
function query() {
|
|
33
|
-
return Promise.reject(new import_rdf_test_suite.ErrorSkipped("Querying is not supported"));
|
|
34
|
-
}
|
|
35
|
-
function update() {
|
|
36
|
-
return Promise.reject(new import_rdf_test_suite.ErrorSkipped("Updating is not supported"));
|
|
37
|
-
}
|
|
38
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
-
0 && (module.exports = {
|
|
40
|
-
parse,
|
|
41
|
-
query,
|
|
42
|
-
update
|
|
43
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var import_test_utils = require("@traqula/test-utils");
|
|
3
|
-
var import_sparqljs = require("sparqljs");
|
|
4
|
-
var import_vitest = require("vitest");
|
|
5
|
-
var import_lib = require("../lib/index.js");
|
|
6
|
-
(0, import_vitest.describe)("query 1.2, exclude construction", () => {
|
|
7
|
-
const traqulaParser = new import_lib.Parser();
|
|
8
|
-
const sparqlJSparser = new import_sparqljs.Parser();
|
|
9
|
-
(0, import_vitest.describe)("general queries", async () => {
|
|
10
|
-
const allQueries = await Promise.all([...(0, import_test_utils.positiveTest)("sparql-1-1")].map((x) => x.statics().then((x2) => x2.query)));
|
|
11
|
-
(0, import_vitest.bench)("traqula parse 1.2", () => {
|
|
12
|
-
for (const query of allQueries) {
|
|
13
|
-
traqulaParser.parse(query);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
(0, import_vitest.bench)("sparqljs", () => {
|
|
17
|
-
for (const query of allQueries) {
|
|
18
|
-
sparqlJSparser.parse(query);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
for (let key of __getOwnPropNames(from))
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
-
}
|
|
14
|
-
return to;
|
|
15
|
-
};
|
|
16
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
-
mod
|
|
23
|
-
));
|
|
24
|
-
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
25
|
-
var import_node_path = __toESM(require("node:path"), 1);
|
|
26
|
-
var import_rules_sparql_1_2 = require("@traqula/rules-sparql-1-2");
|
|
27
|
-
var import_test_utils = require("@traqula/test-utils");
|
|
28
|
-
var import_rdf_data_factory = require("rdf-data-factory");
|
|
29
|
-
var import_vitest = require("vitest");
|
|
30
|
-
var import_lib = require("../lib/index.js");
|
|
31
|
-
(0, import_vitest.describe)("a SPARQL 1.2 parser", () => {
|
|
32
|
-
const parser = new import_lib.Parser();
|
|
33
|
-
const F = new import_rules_sparql_1_2.AstFactory();
|
|
34
|
-
const context = { prefixes: { ex: "http://example.org/" } };
|
|
35
|
-
function _sinkAst(suite, test, response) {
|
|
36
|
-
const dir = (0, import_test_utils.getStaticFilePath)();
|
|
37
|
-
const fileLoc = import_node_path.default.join(dir, suite, `${test}.json`);
|
|
38
|
-
import_node_fs.default.writeFileSync(fileLoc, JSON.stringify(response, null, 2));
|
|
39
|
-
}
|
|
40
|
-
(0, import_vitest.it)("passes chevrotain validation", () => {
|
|
41
|
-
import_lib.sparql12ParserBuilder.build({
|
|
42
|
-
tokenVocabulary: import_rules_sparql_1_2.lex.sparql12LexerBuilder.tokenVocabulary,
|
|
43
|
-
lexerConfig: {
|
|
44
|
-
skipValidations: false,
|
|
45
|
-
ensureOptimizations: true
|
|
46
|
-
},
|
|
47
|
-
parserConfig: {
|
|
48
|
-
skipValidations: false
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
(0, import_vitest.describe)("positive paths", () => {
|
|
53
|
-
for (const { name, statics } of (0, import_test_utils.positiveTest)("paths")) {
|
|
54
|
-
(0, import_vitest.it)(`can parse ${name}`, async ({ expect }) => {
|
|
55
|
-
const { query, ast } = await statics();
|
|
56
|
-
const res = parser.parsePath(query, context);
|
|
57
|
-
expect(res).toEqualParsedQuery(ast);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
(0, import_vitest.describe)("positive sparql 1.1", () => {
|
|
62
|
-
for (const { name, statics } of (0, import_test_utils.positiveTest)("sparql-1-1")) {
|
|
63
|
-
(0, import_vitest.it)(`can parse ${name}`, async ({ expect }) => {
|
|
64
|
-
const { query, ast } = await statics();
|
|
65
|
-
const res = parser.parse(query, context);
|
|
66
|
-
expect(res).toEqualParsedQueryIgnoring((obj) => F.isTriple(obj), ["annotations"], ast);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
(0, import_vitest.describe)("negative SPARQL 1.1", () => {
|
|
71
|
-
for (const { name, statics } of (0, import_test_utils.negativeTest)("sparql-1-1-invalid")) {
|
|
72
|
-
(0, import_vitest.it)(`should NOT parse ${name}`, async ({ expect }) => {
|
|
73
|
-
const { query } = await statics();
|
|
74
|
-
expect(() => parser.parse(query, context)).toThrow();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
(0, import_vitest.describe)("positive sparql 1.2", () => {
|
|
79
|
-
for (const { name, statics } of (0, import_test_utils.positiveTest)("sparql-1-2")) {
|
|
80
|
-
(0, import_vitest.it)(`can parse ${name}`, async ({ expect }) => {
|
|
81
|
-
const { query, ast } = await statics();
|
|
82
|
-
const res = parser.parse(query, context);
|
|
83
|
-
expect(res).toEqualParsedQuery(ast);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
(0, import_vitest.it)(`should NOT parse $only thing}`, async ({ expect }) => {
|
|
88
|
-
const query = `
|
|
89
|
-
PREFIX : <http://example.com/ns#>
|
|
90
|
-
|
|
91
|
-
SELECT * WHERE {
|
|
92
|
-
<<( ?s ?p ?o )>> .
|
|
93
|
-
}
|
|
94
|
-
`;
|
|
95
|
-
expect(() => parser.parse(query)).toThrow();
|
|
96
|
-
});
|
|
97
|
-
(0, import_vitest.describe)("negative sparql 1.2", () => {
|
|
98
|
-
const skip = /* @__PURE__ */ new Set([
|
|
99
|
-
"sparql-1-2-syntax-basic-tripleterm-subject",
|
|
100
|
-
"sparql-1-2-syntax-compound-tripleterm-subject",
|
|
101
|
-
"sparql-1-2-syntax-subject-tripleterm"
|
|
102
|
-
]);
|
|
103
|
-
for (const { name, statics } of (0, import_test_utils.negativeTest)("sparql-1-2-invalid", (name2) => !skip.has(name2))) {
|
|
104
|
-
(0, import_vitest.it)(`should NOT parse ${name}`, async ({ expect }) => {
|
|
105
|
-
const { query } = await statics();
|
|
106
|
-
expect(() => parser.parse(query, context)).toThrow();
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
(0, import_vitest.describe)("specific sparql 1.1 tests", () => {
|
|
111
|
-
(0, import_test_utils.importSparql11NoteTests)(parser, new import_rdf_data_factory.DataFactory());
|
|
112
|
-
});
|
|
113
|
-
});
|
package/dist/esm/spec/parser.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ErrorSkipped } from 'rdf-test-suite';
|
|
2
|
-
import { Parser } from '../lib/index.js';
|
|
3
|
-
export function parse(query, context = {}) {
|
|
4
|
-
const parser = new Parser();
|
|
5
|
-
parser.parse(query, context);
|
|
6
|
-
}
|
|
7
|
-
export function query() {
|
|
8
|
-
return Promise.reject(new ErrorSkipped('Querying is not supported'));
|
|
9
|
-
}
|
|
10
|
-
export function update() {
|
|
11
|
-
return Promise.reject(new ErrorSkipped('Updating is not supported'));
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../spec/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,UAAkC,EAAE;IACvE,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AACD,MAAM,UAAU,KAAK;IACnB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACvE,CAAC","sourcesContent":["import type { SparqlContext } from '@traqula/rules-sparql-1-2';\nimport { ErrorSkipped } from 'rdf-test-suite';\nimport { Parser } from '../lib/index.js';\n\nexport function parse(query: string, context: Partial<SparqlContext> = {}): void {\n const parser = new Parser();\n parser.parse(query, context);\n}\nexport function query(): Promise<never> {\n return Promise.reject(new ErrorSkipped('Querying is not supported'));\n}\n\nexport function update(): Promise<never> {\n return Promise.reject(new ErrorSkipped('Updating is not supported'));\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { positiveTest } from '@traqula/test-utils';
|
|
2
|
-
import { Parser as SparqlJSparser } from 'sparqljs';
|
|
3
|
-
import { describe, bench } from 'vitest';
|
|
4
|
-
import { Parser as TraqulaParser } from '../lib/index.js';
|
|
5
|
-
describe('query 1.2, exclude construction', () => {
|
|
6
|
-
const traqulaParser = new TraqulaParser();
|
|
7
|
-
const sparqlJSparser = new SparqlJSparser();
|
|
8
|
-
describe('general queries', async () => {
|
|
9
|
-
const allQueries = await Promise.all([...positiveTest('sparql-1-1')]
|
|
10
|
-
.map(x => x.statics().then(x => x.query)));
|
|
11
|
-
bench('traqula parse 1.2', () => {
|
|
12
|
-
for (const query of allQueries) {
|
|
13
|
-
traqulaParser.parse(query);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
bench('sparqljs', () => {
|
|
17
|
-
for (const query of allQueries) {
|
|
18
|
-
sparqlJSparser.parse(query);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=query.bench.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.bench.js","sourceRoot":"","sources":["../../../test/query.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1D,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAE5C,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAG,EAAE;QACpC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAE,GAAG,YAAY,CAAC,YAAY,CAAC,CAAE;aACnE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7C,KAAK,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC9B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE;YACrB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { positiveTest } from '@traqula/test-utils';\nimport { Parser as SparqlJSparser } from 'sparqljs';\nimport { describe, bench } from 'vitest';\nimport { Parser as TraqulaParser } from '../lib/index.js';\n\ndescribe('query 1.2, exclude construction', () => {\n const traqulaParser = new TraqulaParser();\n const sparqlJSparser = new SparqlJSparser();\n\n describe('general queries', async() => {\n const allQueries = await Promise.all([ ...positiveTest('sparql-1-1') ]\n .map(x => x.statics().then(x => x.query)));\n\n bench('traqula parse 1.2', () => {\n for (const query of allQueries) {\n traqulaParser.parse(query);\n }\n });\n bench('sparqljs', () => {\n for (const query of allQueries) {\n sparqlJSparser.parse(query);\n }\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { AstFactory, lex as l12 } from '@traqula/rules-sparql-1-2';
|
|
4
|
-
import { positiveTest, importSparql11NoteTests, negativeTest, getStaticFilePath } from '@traqula/test-utils';
|
|
5
|
-
import { DataFactory } from 'rdf-data-factory';
|
|
6
|
-
import { describe, it } from 'vitest';
|
|
7
|
-
import { Parser, sparql12ParserBuilder } from '../lib/index.js';
|
|
8
|
-
describe('a SPARQL 1.2 parser', () => {
|
|
9
|
-
const parser = new Parser();
|
|
10
|
-
const F = new AstFactory();
|
|
11
|
-
const context = { prefixes: { ex: 'http://example.org/' } };
|
|
12
|
-
function _sinkAst(suite, test, response) {
|
|
13
|
-
const dir = getStaticFilePath();
|
|
14
|
-
const fileLoc = path.join(dir, suite, `${test}.json`);
|
|
15
|
-
// eslint-disable-next-line no-sync
|
|
16
|
-
fs.writeFileSync(fileLoc, JSON.stringify(response, null, 2));
|
|
17
|
-
}
|
|
18
|
-
it('passes chevrotain validation', () => {
|
|
19
|
-
sparql12ParserBuilder.build({
|
|
20
|
-
tokenVocabulary: l12.sparql12LexerBuilder.tokenVocabulary,
|
|
21
|
-
lexerConfig: {
|
|
22
|
-
skipValidations: false,
|
|
23
|
-
ensureOptimizations: true,
|
|
24
|
-
},
|
|
25
|
-
parserConfig: {
|
|
26
|
-
skipValidations: false,
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('positive paths', () => {
|
|
31
|
-
for (const { name, statics } of positiveTest('paths')) {
|
|
32
|
-
it(`can parse ${name}`, async ({ expect }) => {
|
|
33
|
-
const { query, ast } = await statics();
|
|
34
|
-
const res = parser.parsePath(query, context);
|
|
35
|
-
expect(res).toEqualParsedQuery(ast);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
describe('positive sparql 1.1', () => {
|
|
40
|
-
for (const { name, statics } of positiveTest('sparql-1-1')) {
|
|
41
|
-
it(`can parse ${name}`, async ({ expect }) => {
|
|
42
|
-
const { query, ast } = await statics();
|
|
43
|
-
const res = parser.parse(query, context);
|
|
44
|
-
expect(res).toEqualParsedQueryIgnoring(obj => F.isTriple(obj), ['annotations'], ast);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
describe('negative SPARQL 1.1', () => {
|
|
49
|
-
for (const { name, statics } of negativeTest('sparql-1-1-invalid')) {
|
|
50
|
-
it(`should NOT parse ${name}`, async ({ expect }) => {
|
|
51
|
-
const { query } = await statics();
|
|
52
|
-
expect(() => parser.parse(query, context)).toThrow();
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
describe('positive sparql 1.2', () => {
|
|
57
|
-
for (const { name, statics } of positiveTest('sparql-1-2')) {
|
|
58
|
-
it(`can parse ${name}`, async ({ expect }) => {
|
|
59
|
-
const { query, ast } = await statics();
|
|
60
|
-
const res = parser.parse(query, context);
|
|
61
|
-
// _sinkAst('sparql-1-2', name, <object> res);
|
|
62
|
-
expect(res).toEqualParsedQuery(ast);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
it(`should NOT parse $only thing}`, async ({ expect }) => {
|
|
67
|
-
const query = `
|
|
68
|
-
PREFIX : <http://example.com/ns#>
|
|
69
|
-
|
|
70
|
-
SELECT * WHERE {
|
|
71
|
-
<<( ?s ?p ?o )>> .
|
|
72
|
-
}
|
|
73
|
-
`;
|
|
74
|
-
expect(() => parser.parse(query)).toThrow();
|
|
75
|
-
});
|
|
76
|
-
describe('negative sparql 1.2', () => {
|
|
77
|
-
const skip = new Set([
|
|
78
|
-
'sparql-1-2-syntax-basic-tripleterm-subject',
|
|
79
|
-
'sparql-1-2-syntax-compound-tripleterm-subject',
|
|
80
|
-
'sparql-1-2-syntax-subject-tripleterm',
|
|
81
|
-
]);
|
|
82
|
-
for (const { name, statics } of negativeTest('sparql-1-2-invalid', name => !skip.has(name))) {
|
|
83
|
-
it(`should NOT parse ${name}`, async ({ expect }) => {
|
|
84
|
-
const { query } = await statics();
|
|
85
|
-
expect(() => parser.parse(query, context)).toThrow();
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
describe('specific sparql 1.1 tests', () => {
|
|
90
|
-
importSparql11NoteTests(parser, new DataFactory());
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=statics.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statics.test.js","sourceRoot":"","sources":["../../../test/statics.test.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport type { BaseQuad } from '@rdfjs/types';\nimport { AstFactory, lex as l12 } from '@traqula/rules-sparql-1-2';\nimport { positiveTest, importSparql11NoteTests, negativeTest, getStaticFilePath } from '@traqula/test-utils';\nimport { DataFactory } from 'rdf-data-factory';\nimport { describe, it } from 'vitest';\nimport { Parser, sparql12ParserBuilder } from '../lib/index.js';\n\ndescribe('a SPARQL 1.2 parser', () => {\n const parser = new Parser();\n const F = new AstFactory();\n const context = { prefixes: { ex: 'http://example.org/' }};\n\n function _sinkAst(suite: string, test: string, response: object): void {\n const dir = getStaticFilePath();\n const fileLoc = path.join(dir, suite, `${test}.json`);\n // eslint-disable-next-line no-sync\n fs.writeFileSync(fileLoc, JSON.stringify(response, null, 2));\n }\n\n it('passes chevrotain validation', () => {\n sparql12ParserBuilder.build({\n tokenVocabulary: l12.sparql12LexerBuilder.tokenVocabulary,\n lexerConfig: {\n skipValidations: false,\n ensureOptimizations: true,\n },\n parserConfig: {\n skipValidations: false,\n },\n });\n });\n\n describe('positive paths', () => {\n for (const { name, statics } of positiveTest('paths')) {\n it(`can parse ${name}`, async({ expect }) => {\n const { query, ast } = await statics();\n const res: unknown = parser.parsePath(query, context);\n expect(res).toEqualParsedQuery(ast);\n });\n }\n });\n\n describe('positive sparql 1.1', () => {\n for (const { name, statics } of positiveTest('sparql-1-1')) {\n it(`can parse ${name}`, async({ expect }) => {\n const { query, ast } = await statics();\n const res: unknown = parser.parse(query, context);\n expect(res).toEqualParsedQueryIgnoring(obj => F.isTriple(obj), [ 'annotations' ], ast);\n });\n }\n });\n\n describe('negative SPARQL 1.1', () => {\n for (const { name, statics } of negativeTest('sparql-1-1-invalid')) {\n it(`should NOT parse ${name}`, async({ expect }) => {\n const { query } = await statics();\n expect(() => parser.parse(query, context)).toThrow();\n });\n }\n });\n\n describe('positive sparql 1.2', () => {\n for (const { name, statics } of positiveTest('sparql-1-2')) {\n it(`can parse ${name}`, async({ expect }) => {\n const { query, ast } = await statics();\n const res: unknown = parser.parse(query, context);\n // _sinkAst('sparql-1-2', name, <object> res);\n expect(res).toEqualParsedQuery(ast);\n });\n }\n });\n\n it(`should NOT parse $only thing}`, async({ expect }) => {\n const query = `\n PREFIX : <http://example.com/ns#>\n\nSELECT * WHERE {\n <<( ?s ?p ?o )>> .\n}\n `;\n expect(() => parser.parse(query)).toThrow();\n });\n\n describe('negative sparql 1.2', () => {\n const skip = new Set([\n 'sparql-1-2-syntax-basic-tripleterm-subject',\n 'sparql-1-2-syntax-compound-tripleterm-subject',\n 'sparql-1-2-syntax-subject-tripleterm',\n ]);\n for (const { name, statics } of negativeTest('sparql-1-2-invalid', name => !skip.has(name))) {\n it(`should NOT parse ${name}`, async({ expect }) => {\n const { query } = await statics();\n expect(() => parser.parse(query, context)).toThrow();\n });\n }\n });\n\n describe('specific sparql 1.1 tests', () => {\n importSparql11NoteTests(parser, new DataFactory<BaseQuad>());\n });\n});\n"]}
|