@traqula/test-utils 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +33 -3
  2. package/dist/cjs/lib/Sparql11NotesTest.js +6 -0
  3. package/dist/cjs/lib/Sparql11NotesTest.js.map +1 -1
  4. package/dist/cjs/lib/fileUtils.js +10 -0
  5. package/dist/cjs/lib/fileUtils.js.map +1 -1
  6. package/dist/cjs/lib/generators/algebraGenerators.js +10 -0
  7. package/dist/cjs/lib/generators/algebraGenerators.js.map +1 -1
  8. package/dist/cjs/lib/generators/generators.js +13 -0
  9. package/dist/cjs/lib/generators/generators.js.map +1 -1
  10. package/dist/cjs/lib/generators/utils.js +5 -0
  11. package/dist/cjs/lib/generators/utils.js.map +1 -1
  12. package/dist/esm/lib/Sparql11NotesTest.d.ts +6 -0
  13. package/dist/esm/lib/Sparql11NotesTest.js +6 -0
  14. package/dist/esm/lib/Sparql11NotesTest.js.map +1 -1
  15. package/dist/esm/lib/fileUtils.d.ts +10 -0
  16. package/dist/esm/lib/fileUtils.js +10 -0
  17. package/dist/esm/lib/fileUtils.js.map +1 -1
  18. package/dist/esm/lib/generators/algebraGenerators.d.ts +19 -2
  19. package/dist/esm/lib/generators/algebraGenerators.js +10 -0
  20. package/dist/esm/lib/generators/algebraGenerators.js.map +1 -1
  21. package/dist/esm/lib/generators/generators.d.ts +13 -0
  22. package/dist/esm/lib/generators/generators.js +13 -0
  23. package/dist/esm/lib/generators/generators.js.map +1 -1
  24. package/dist/esm/lib/generators/utils.d.ts +5 -0
  25. package/dist/esm/lib/generators/utils.js +5 -0
  26. package/dist/esm/lib/generators/utils.js.map +1 -1
  27. package/package.json +2 -2
  28. package/statics/algebra/algebra/sparql12/select-variable-reuse.json +137 -0
  29. package/statics/algebra/algebra-blank-to-var/sparql12/select-variable-reuse.json +137 -0
  30. package/statics/algebra/canonical-sparql/base/sparql-1.1/values/values-many-once.sparql +1 -1
  31. package/statics/algebra/canonical-sparql/base/sparql12/select-variable-reuse.sparql +8 -0
  32. package/statics/algebra/canonical-sparql/blank-to-var/sparql-1.1/values/values-many-once.sparql +1 -1
  33. package/statics/algebra/canonical-sparql/blank-to-var/sparql12/select-variable-reuse.sparql +8 -0
  34. package/statics/algebra/sparql/sparql12/select-variable-reuse.sparql +3 -0
  35. package/statics/ast/ast-source-tracked/sparql-1-1/note-as-var-not-in-term-subquery.json +166 -0
  36. package/statics/ast/ast-source-tracked/sparql-1-1/note-as-var-not-in-wildcard-subquery.json +164 -0
  37. package/statics/ast/ast-source-tracked/sparql-1-1/note-expression-grouped-var.json +169 -0
  38. package/statics/ast/ast-source-tracked/sparql-1-2/select-variable-reuse.json +243 -0
  39. package/statics/ast/sparql/sparql-1-1/note-as-var-not-in-term-subquery.sparql +1 -0
  40. package/statics/ast/sparql/sparql-1-1/note-as-var-not-in-wildcard-subquery.sparql +1 -0
  41. package/statics/ast/sparql/sparql-1-1/note-expression-grouped-var.sparql +1 -0
  42. package/statics/ast/sparql/sparql-1-1-invalid/count-with-ungrouped-expression-variable.sparql +1 -0
  43. package/statics/ast/sparql/sparql-1-1-invalid/select-star-with-group-by.sparql +1 -0
  44. package/statics/ast/sparql/sparql-1-1-invalid/ungrouped-variable-in-expression-projection.sparql +1 -0
  45. package/statics/ast/sparql/sparql-1-2/select-variable-reuse.sparql +3 -0
  46. package/statics/ast/sparql-generated/sparql-1-1/note-as-var-not-in-term-subquery.sparql +5 -0
  47. package/statics/ast/sparql-generated/sparql-1-1/note-as-var-not-in-wildcard-subquery.sparql +5 -0
  48. package/statics/ast/sparql-generated/sparql-1-1/note-expression-grouped-var.sparql +4 -0
  49. package/statics/ast/sparql-generated/sparql-1-2/select-variable-reuse.sparql +8 -0
  50. package/statics/ast/sparql-generated-compact/sparql-1-1/note-as-var-not-in-term-subquery.sparql +1 -0
  51. package/statics/ast/sparql-generated-compact/sparql-1-1/note-as-var-not-in-wildcard-subquery.sparql +1 -0
  52. package/statics/ast/sparql-generated-compact/sparql-1-1/note-expression-grouped-var.sparql +1 -0
  53. package/statics/ast/sparql-generated-compact/sparql-1-2/select-variable-reuse.sparql +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../../lib/generators/generators.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { readFile } from '../fileUtils.js';\nimport { getStaticFilePath } from './utils.js';\n\ninterface PositiveTest {\n name: string;\n statics: () => Promise<{\n query: string;\n astWithSource: unknown;\n astNoSource: unknown;\n autoGen: string;\n autoGenCompact: string;\n }>;\n}\n\nexport function* positiveTest(\n type: 'paths' | 'sparql-1-1' | 'sparql-1-2',\n filter?: (name: string) => boolean,\n): Generator<PositiveTest> {\n const astDir = getStaticFilePath('ast');\n const jsonSourceTrackedDir = join(astDir, 'ast-source-tracked', type);\n const jsonNonSourceTrackedDir = join(astDir, 'ast-no-source-tracked', type);\n const sparqlDir = join(astDir, 'sparql', type);\n const sparqlGeneratedDir = join(astDir, 'sparql-generated', type);\n const sparqlGenCompactDir = join(astDir, 'sparql-generated-compact', type);\n const statics = readdirSync(jsonSourceTrackedDir);\n for (const file of statics) {\n if (filter && !filter(file.replace('.json', ''))) {\n continue;\n }\n const name = file.replace(/\\.json$/u, '');\n yield {\n name,\n statics: async() => {\n const query = await readFile(join(sparqlDir, `${name}.sparql`));\n const sourceTracked = await readFile(join(jsonSourceTrackedDir, file));\n let noSourceTracked: string;\n try {\n noSourceTracked = await readFile(join(jsonNonSourceTrackedDir, file));\n } catch {\n noSourceTracked = '{}';\n }\n let autoGen = '';\n try {\n autoGen = await readFile(join(sparqlGeneratedDir, `${name}.sparql`));\n } catch { /* Already initialized */ }\n let autoGenCompact = '';\n try {\n autoGenCompact = await readFile(join(sparqlGenCompactDir, `${name}.sparql`));\n } catch { /* Already initialized */ }\n return {\n query,\n astWithSource: JSON.parse(sourceTracked),\n astNoSource: JSON.parse(noSourceTracked),\n autoGen,\n autoGenCompact,\n };\n },\n };\n }\n}\n\nexport interface NegativeTest {\n name: string;\n statics: () => Promise<{\n query: string;\n }>;\n}\n\nexport function* negativeTest(\n type: 'sparql-1-1-invalid' | 'sparql-1-2-invalid',\n filter?: (name: string) => boolean,\n): Generator<NegativeTest> {\n const astDir = getStaticFilePath('ast');\n const sparqlGeneratedDir = join(astDir, 'sparql', type);\n const statics = readdirSync(sparqlGeneratedDir).filter(f => f.endsWith('.sparql'));\n for (const file of statics) {\n if (filter && !filter(file.replace('.sparql', ''))) {\n continue;\n }\n const name = file.replace(/\\.sparql$/u, '');\n yield {\n name,\n statics: async() => {\n const query = await readFile(join(sparqlGeneratedDir, file));\n return {\n query,\n };\n },\n };\n }\n}\n"]}
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../../lib/generators/generators.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { readFile } from '../fileUtils.js';\nimport { getStaticFilePath } from './utils.js';\n\ninterface PositiveTest {\n name: string;\n statics: () => Promise<{\n query: string;\n astWithSource: unknown;\n astNoSource: unknown;\n autoGen: string;\n autoGenCompact: string;\n }>;\n}\n\n/**\n * Yields test cases for positive SPARQL parser tests.\n * Each test provides the query string, expected ASTs (with and without source tracking),\n * and auto-generated query strings (pretty-printed and compact).\n * @param type - The test suite to use.\n * @param filter - Optional filter predicate applied to the test file name (without extension).\n */\nexport function* positiveTest(\n type: 'paths' | 'sparql-1-1' | 'sparql-1-2',\n filter?: (name: string) => boolean,\n): Generator<PositiveTest> {\n const astDir = getStaticFilePath('ast');\n const jsonSourceTrackedDir = join(astDir, 'ast-source-tracked', type);\n const jsonNonSourceTrackedDir = join(astDir, 'ast-no-source-tracked', type);\n const sparqlDir = join(astDir, 'sparql', type);\n const sparqlGeneratedDir = join(astDir, 'sparql-generated', type);\n const sparqlGenCompactDir = join(astDir, 'sparql-generated-compact', type);\n const statics = readdirSync(jsonSourceTrackedDir);\n for (const file of statics) {\n if (filter && !filter(file.replace('.json', ''))) {\n continue;\n }\n const name = file.replace(/\\.json$/u, '');\n yield {\n name,\n statics: async() => {\n const query = await readFile(join(sparqlDir, `${name}.sparql`));\n const sourceTracked = await readFile(join(jsonSourceTrackedDir, file));\n let noSourceTracked: string;\n try {\n noSourceTracked = await readFile(join(jsonNonSourceTrackedDir, file));\n } catch {\n noSourceTracked = '{}';\n }\n let autoGen = '';\n try {\n autoGen = await readFile(join(sparqlGeneratedDir, `${name}.sparql`));\n } catch { /* Already initialized */ }\n let autoGenCompact = '';\n try {\n autoGenCompact = await readFile(join(sparqlGenCompactDir, `${name}.sparql`));\n } catch { /* Already initialized */ }\n return {\n query,\n astWithSource: JSON.parse(sourceTracked),\n astNoSource: JSON.parse(noSourceTracked),\n autoGen,\n autoGenCompact,\n };\n },\n };\n }\n}\n\nexport interface NegativeTest {\n name: string;\n statics: () => Promise<{\n query: string;\n }>;\n}\n\n/**\n * Yields test cases for negative (invalid) SPARQL parser tests.\n * Each test provides a query string that should fail to parse.\n * @param type - The test suite to use.\n * @param filter - Optional filter predicate applied to the test file name (without extension).\n */\nexport function* negativeTest(\n type: 'sparql-1-1-invalid' | 'sparql-1-2-invalid',\n filter?: (name: string) => boolean,\n): Generator<NegativeTest> {\n const astDir = getStaticFilePath('ast');\n const sparqlGeneratedDir = join(astDir, 'sparql', type);\n const statics = readdirSync(sparqlGeneratedDir).filter(f => f.endsWith('.sparql'));\n for (const file of statics) {\n if (filter && !filter(file.replace('.sparql', ''))) {\n continue;\n }\n const name = file.replace(/\\.sparql$/u, '');\n yield {\n name,\n statics: async() => {\n const query = await readFile(join(sparqlGeneratedDir, file));\n return {\n query,\n };\n },\n };\n }\n}\n"]}
@@ -1 +1,6 @@
1
+ /**
2
+ * Resolve a path relative to the test-utils statics directory.
3
+ * @param paths - Path segments to join after the statics root.
4
+ * @returns The absolute path to the static fixture.
5
+ */
1
6
  export declare function getStaticFilePath(...paths: string[]): string;
@@ -3,6 +3,11 @@ import path from 'node:path';
3
3
  // Path.resolve() returns process.cwd() — the monorepo root when running via vitest.
4
4
  // This avoids __dirname (CJS-only) and import.meta.url (ESM-only).
5
5
  const staticsPath = path.resolve('packages/test-utils/statics');
6
+ /**
7
+ * Resolve a path relative to the test-utils statics directory.
8
+ * @param paths - Path segments to join after the statics root.
9
+ * @returns The absolute path to the static fixture.
10
+ */
6
11
  export function getStaticFilePath(...paths) {
7
12
  return path.join(staticsPath, ...paths);
8
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/generators/utils.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,oFAAoF;AACpF,mEAAmE;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAAC,GAAG,KAAe;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport path from 'node:path';\n\n// Path.resolve() returns process.cwd() — the monorepo root when running via vitest.\n// This avoids __dirname (CJS-only) and import.meta.url (ESM-only).\nconst staticsPath = path.resolve('packages/test-utils/statics');\n\nexport function getStaticFilePath(...paths: string[]): string {\n return path.join(staticsPath, ...paths);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../lib/generators/utils.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,oFAAoF;AACpF,mEAAmE;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG,KAAe;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport path from 'node:path';\n\n// Path.resolve() returns process.cwd() — the monorepo root when running via vitest.\n// This avoids __dirname (CJS-only) and import.meta.url (ESM-only).\nconst staticsPath = path.resolve('packages/test-utils/statics');\n\n/**\n * Resolve a path relative to the test-utils statics directory.\n * @param paths - Path segments to join after the statics root.\n * @returns The absolute path to the static fixture.\n */\nexport function getStaticFilePath(...paths: string[]): string {\n return path.join(staticsPath, ...paths);\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@traqula/test-utils",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.1.2",
5
5
  "description": "Test utils used by the Traqula monorepo",
6
6
  "lsd:module": true,
7
7
  "license": "MIT",
@@ -49,5 +49,5 @@
49
49
  "devDependencies": {
50
50
  "@rdfjs/types": "^2.0.0"
51
51
  },
52
- "gitHead": "ecbed266b9247b7600d4d7185a98b2ead74e33b9"
52
+ "gitHead": "4a8a40e902755a39eab0d9f4f144e2e46d44b4d2"
53
53
  }
@@ -0,0 +1,137 @@
1
+ {
2
+ "type": "project",
3
+ "input": {
4
+ "type": "extend",
5
+ "input": {
6
+ "type": "extend",
7
+ "input": {
8
+ "type": "group",
9
+ "input": {
10
+ "type": "values",
11
+ "variables": [
12
+ {
13
+ "termType": "Variable",
14
+ "value": "v"
15
+ }
16
+ ],
17
+ "bindings": [
18
+ {
19
+ "v": {
20
+ "termType": "Literal",
21
+ "value": "0",
22
+ "datatype": {
23
+ "termType": "NamedNode",
24
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
25
+ }
26
+ }
27
+ },
28
+ {
29
+ "v": {
30
+ "termType": "Literal",
31
+ "value": "1",
32
+ "datatype": {
33
+ "termType": "NamedNode",
34
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
35
+ }
36
+ }
37
+ },
38
+ {
39
+ "v": {
40
+ "termType": "Literal",
41
+ "value": "2",
42
+ "datatype": {
43
+ "termType": "NamedNode",
44
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "v": {
50
+ "termType": "Literal",
51
+ "value": "3",
52
+ "datatype": {
53
+ "termType": "NamedNode",
54
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ },
60
+ "variables": [],
61
+ "aggregates": [
62
+ {
63
+ "type": "expression",
64
+ "subType": "aggregate",
65
+ "aggregator": "count",
66
+ "expression": {
67
+ "type": "expression",
68
+ "subType": "term",
69
+ "term": {
70
+ "termType": "Variable",
71
+ "value": "v"
72
+ }
73
+ },
74
+ "distinct": false,
75
+ "variable": {
76
+ "termType": "Variable",
77
+ "value": "var0"
78
+ }
79
+ }
80
+ ]
81
+ },
82
+ "variable": {
83
+ "termType": "Variable",
84
+ "value": "count"
85
+ },
86
+ "expression": {
87
+ "type": "expression",
88
+ "subType": "term",
89
+ "term": {
90
+ "termType": "Variable",
91
+ "value": "var0"
92
+ }
93
+ }
94
+ },
95
+ "variable": {
96
+ "termType": "Variable",
97
+ "value": "countPlusOne"
98
+ },
99
+ "expression": {
100
+ "type": "expression",
101
+ "subType": "operator",
102
+ "operator": "+",
103
+ "args": [
104
+ {
105
+ "type": "expression",
106
+ "subType": "term",
107
+ "term": {
108
+ "termType": "Variable",
109
+ "value": "count"
110
+ }
111
+ },
112
+ {
113
+ "type": "expression",
114
+ "subType": "term",
115
+ "term": {
116
+ "termType": "Literal",
117
+ "value": "1",
118
+ "datatype": {
119
+ "termType": "NamedNode",
120
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
121
+ }
122
+ }
123
+ }
124
+ ]
125
+ }
126
+ },
127
+ "variables": [
128
+ {
129
+ "termType": "Variable",
130
+ "value": "count"
131
+ },
132
+ {
133
+ "termType": "Variable",
134
+ "value": "countPlusOne"
135
+ }
136
+ ]
137
+ }
@@ -0,0 +1,137 @@
1
+ {
2
+ "type": "project",
3
+ "input": {
4
+ "type": "extend",
5
+ "input": {
6
+ "type": "extend",
7
+ "input": {
8
+ "type": "group",
9
+ "input": {
10
+ "type": "values",
11
+ "variables": [
12
+ {
13
+ "termType": "Variable",
14
+ "value": "v"
15
+ }
16
+ ],
17
+ "bindings": [
18
+ {
19
+ "v": {
20
+ "termType": "Literal",
21
+ "value": "0",
22
+ "datatype": {
23
+ "termType": "NamedNode",
24
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
25
+ }
26
+ }
27
+ },
28
+ {
29
+ "v": {
30
+ "termType": "Literal",
31
+ "value": "1",
32
+ "datatype": {
33
+ "termType": "NamedNode",
34
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
35
+ }
36
+ }
37
+ },
38
+ {
39
+ "v": {
40
+ "termType": "Literal",
41
+ "value": "2",
42
+ "datatype": {
43
+ "termType": "NamedNode",
44
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "v": {
50
+ "termType": "Literal",
51
+ "value": "3",
52
+ "datatype": {
53
+ "termType": "NamedNode",
54
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ },
60
+ "variables": [],
61
+ "aggregates": [
62
+ {
63
+ "type": "expression",
64
+ "subType": "aggregate",
65
+ "aggregator": "count",
66
+ "expression": {
67
+ "type": "expression",
68
+ "subType": "term",
69
+ "term": {
70
+ "termType": "Variable",
71
+ "value": "v"
72
+ }
73
+ },
74
+ "distinct": false,
75
+ "variable": {
76
+ "termType": "Variable",
77
+ "value": "var0"
78
+ }
79
+ }
80
+ ]
81
+ },
82
+ "variable": {
83
+ "termType": "Variable",
84
+ "value": "count"
85
+ },
86
+ "expression": {
87
+ "type": "expression",
88
+ "subType": "term",
89
+ "term": {
90
+ "termType": "Variable",
91
+ "value": "var0"
92
+ }
93
+ }
94
+ },
95
+ "variable": {
96
+ "termType": "Variable",
97
+ "value": "countPlusOne"
98
+ },
99
+ "expression": {
100
+ "type": "expression",
101
+ "subType": "operator",
102
+ "operator": "+",
103
+ "args": [
104
+ {
105
+ "type": "expression",
106
+ "subType": "term",
107
+ "term": {
108
+ "termType": "Variable",
109
+ "value": "count"
110
+ }
111
+ },
112
+ {
113
+ "type": "expression",
114
+ "subType": "term",
115
+ "term": {
116
+ "termType": "Literal",
117
+ "value": "1",
118
+ "datatype": {
119
+ "termType": "NamedNode",
120
+ "value": "http://www.w3.org/2001/XMLSchema#integer"
121
+ }
122
+ }
123
+ }
124
+ ]
125
+ }
126
+ },
127
+ "variables": [
128
+ {
129
+ "termType": "Variable",
130
+ "value": "count"
131
+ },
132
+ {
133
+ "termType": "Variable",
134
+ "value": "countPlusOne"
135
+ }
136
+ ]
137
+ }
@@ -1,5 +1,5 @@
1
1
  SELECT ?y ?z WHERE {
2
2
  VALUES( ?y ?z ){
3
- ( <http://example.com/ns#a><http://example.com/ns#b> )
3
+ ( <http://example.com/ns#a> <http://example.com/ns#b> )
4
4
  }
5
5
  }
@@ -0,0 +1,8 @@
1
+ SELECT ( COUNT( ?v ) AS ?count ) ( ( ?count + "1"^^<http://www.w3.org/2001/XMLSchema#integer> ) AS ?countPlusOne ) WHERE {
2
+ VALUES ?v {
3
+ "0"^^<http://www.w3.org/2001/XMLSchema#integer>
4
+ "1"^^<http://www.w3.org/2001/XMLSchema#integer>
5
+ "2"^^<http://www.w3.org/2001/XMLSchema#integer>
6
+ "3"^^<http://www.w3.org/2001/XMLSchema#integer>
7
+ }
8
+ }
@@ -1,5 +1,5 @@
1
1
  SELECT ?y ?z WHERE {
2
2
  VALUES( ?y ?z ){
3
- ( <http://example.com/ns#a><http://example.com/ns#b> )
3
+ ( <http://example.com/ns#a> <http://example.com/ns#b> )
4
4
  }
5
5
  }
@@ -0,0 +1,8 @@
1
+ SELECT ( COUNT( ?v ) AS ?count ) ( ( ?count + "1"^^<http://www.w3.org/2001/XMLSchema#integer> ) AS ?countPlusOne ) WHERE {
2
+ VALUES ?v {
3
+ "0"^^<http://www.w3.org/2001/XMLSchema#integer>
4
+ "1"^^<http://www.w3.org/2001/XMLSchema#integer>
5
+ "2"^^<http://www.w3.org/2001/XMLSchema#integer>
6
+ "3"^^<http://www.w3.org/2001/XMLSchema#integer>
7
+ }
8
+ }
@@ -0,0 +1,3 @@
1
+ SELECT (COUNT(?v) AS ?count) (?count + 1 AS ?countPlusOne) WHERE {
2
+ VALUES ?v { 0 1 2 3 }
3
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "context": [],
3
+ "subType": "select",
4
+ "where": {
5
+ "type": "pattern",
6
+ "subType": "group",
7
+ "patterns": [
8
+ {
9
+ "type": "query",
10
+ "subType": "select",
11
+ "where": {
12
+ "type": "pattern",
13
+ "subType": "group",
14
+ "patterns": [
15
+ {
16
+ "type": "pattern",
17
+ "subType": "bgp",
18
+ "triples": [
19
+ {
20
+ "type": "triple",
21
+ "subject": {
22
+ "type": "term",
23
+ "subType": "variable",
24
+ "value": "y",
25
+ "loc": {
26
+ "sourceLocationType": "source",
27
+ "start": 43,
28
+ "end": 45
29
+ }
30
+ },
31
+ "predicate": {
32
+ "type": "term",
33
+ "subType": "variable",
34
+ "value": "p",
35
+ "loc": {
36
+ "sourceLocationType": "source",
37
+ "start": 46,
38
+ "end": 48
39
+ }
40
+ },
41
+ "object": {
42
+ "type": "term",
43
+ "subType": "variable",
44
+ "value": "o",
45
+ "loc": {
46
+ "sourceLocationType": "source",
47
+ "start": 49,
48
+ "end": 51
49
+ }
50
+ },
51
+ "loc": {
52
+ "sourceLocationType": "source",
53
+ "start": 43,
54
+ "end": 51
55
+ }
56
+ }
57
+ ],
58
+ "loc": {
59
+ "sourceLocationType": "source",
60
+ "start": 43,
61
+ "end": 51
62
+ }
63
+ }
64
+ ],
65
+ "loc": {
66
+ "sourceLocationType": "source",
67
+ "start": 41,
68
+ "end": 53
69
+ }
70
+ },
71
+ "datasets": {
72
+ "type": "datasetClauses",
73
+ "clauses": [],
74
+ "loc": {
75
+ "sourceLocationType": "noMaterialize"
76
+ }
77
+ },
78
+ "context": [],
79
+ "solutionModifiers": {},
80
+ "variables": [
81
+ {
82
+ "type": "term",
83
+ "subType": "variable",
84
+ "value": "y",
85
+ "loc": {
86
+ "sourceLocationType": "source",
87
+ "start": 32,
88
+ "end": 34
89
+ }
90
+ }
91
+ ],
92
+ "loc": {
93
+ "sourceLocationType": "source",
94
+ "start": 25,
95
+ "end": 53
96
+ }
97
+ }
98
+ ],
99
+ "loc": {
100
+ "sourceLocationType": "source",
101
+ "start": 23,
102
+ "end": 55
103
+ }
104
+ },
105
+ "solutionModifiers": {},
106
+ "datasets": {
107
+ "type": "datasetClauses",
108
+ "clauses": [],
109
+ "loc": {
110
+ "sourceLocationType": "noMaterialize"
111
+ }
112
+ },
113
+ "variables": [
114
+ {
115
+ "type": "pattern",
116
+ "subType": "bind",
117
+ "expression": {
118
+ "type": "term",
119
+ "subType": "literal",
120
+ "value": "1",
121
+ "langOrIri": {
122
+ "type": "term",
123
+ "subType": "namedNode",
124
+ "value": "http://www.w3.org/2001/XMLSchema#integer",
125
+ "loc": {
126
+ "sourceLocationType": "noMaterialize"
127
+ }
128
+ },
129
+ "loc": {
130
+ "sourceLocationType": "source",
131
+ "start": 8,
132
+ "end": 9
133
+ }
134
+ },
135
+ "variable": {
136
+ "type": "term",
137
+ "subType": "variable",
138
+ "value": "x",
139
+ "loc": {
140
+ "sourceLocationType": "source",
141
+ "start": 13,
142
+ "end": 15
143
+ }
144
+ },
145
+ "loc": {
146
+ "sourceLocationType": "source",
147
+ "start": 7,
148
+ "end": 16
149
+ }
150
+ }
151
+ ],
152
+ "loc": {
153
+ "sourceLocationType": "inlinedSource",
154
+ "newSource": "SELECT (1 AS ?x) WHERE { SELECT ?y WHERE { ?y ?p ?o } }\n",
155
+ "start": 0,
156
+ "end": 9007199254740991,
157
+ "loc": {
158
+ "sourceLocationType": "source",
159
+ "start": 0,
160
+ "end": 55
161
+ },
162
+ "startOnNew": 0,
163
+ "endOnNew": 55
164
+ },
165
+ "type": "query"
166
+ }