@comake/skl-js-engine 0.3.8 → 0.5.0
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/index.d.ts +10 -2
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/sklEngine.d.ts +4 -3
- package/dist/sklEngine.js +10 -6
- package/dist/sklEngine.js.map +1 -1
- package/dist/storage/BaseQueryAdapterOptions.d.ts +1 -1
- package/dist/storage/FindOperator.d.ts +1 -1
- package/dist/storage/FindOptionsTypes.d.ts +7 -4
- package/dist/storage/QueryAdapter.d.ts +2 -2
- package/dist/storage/blazegraph/BlazegraphQueryAdapter.d.ts +30 -0
- package/dist/storage/blazegraph/BlazegraphQueryAdapter.js +130 -0
- package/dist/storage/blazegraph/BlazegraphQueryAdapter.js.map +1 -0
- package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.d.ts +15 -0
- package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.js +3 -0
- package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.js.map +1 -0
- package/dist/storage/blazegraph/BlazegraphQueryBuilder.d.ts +23 -0
- package/dist/storage/blazegraph/BlazegraphQueryBuilder.js +98 -0
- package/dist/storage/blazegraph/BlazegraphQueryBuilder.js.map +1 -0
- package/dist/storage/memory/MemoryQueryAdapter.d.ts +2 -2
- package/dist/storage/memory/MemoryQueryAdapter.js +10 -5
- package/dist/storage/memory/MemoryQueryAdapter.js.map +1 -1
- package/dist/storage/operator/Equal.d.ts +3 -1
- package/dist/storage/operator/Equal.js.map +1 -1
- package/dist/storage/operator/In.d.ts +2 -1
- package/dist/storage/operator/In.js.map +1 -1
- package/dist/storage/operator/InverseRelation.d.ts +7 -0
- package/dist/storage/operator/InverseRelation.js +13 -0
- package/dist/storage/operator/InverseRelation.js.map +1 -0
- package/dist/storage/sparql/BasicSparqlQueryAdapter.d.ts +31 -0
- package/dist/storage/sparql/BasicSparqlQueryAdapter.js +133 -0
- package/dist/storage/sparql/BasicSparqlQueryAdapter.js.map +1 -0
- package/dist/storage/sparql/BasicSparqlQueryBuilder.d.ts +17 -0
- package/dist/storage/sparql/BasicSparqlQueryBuilder.js +36 -0
- package/dist/storage/sparql/BasicSparqlQueryBuilder.js.map +1 -0
- package/dist/storage/sparql/SparqlQueryAdapter.d.ts +15 -19
- package/dist/storage/sparql/SparqlQueryAdapter.js +51 -180
- package/dist/storage/sparql/SparqlQueryAdapter.js.map +1 -1
- package/dist/storage/sparql/SparqlQueryBuilder.d.ts +7 -84
- package/dist/storage/sparql/SparqlQueryBuilder.js +0 -655
- package/dist/storage/sparql/SparqlQueryBuilder.js.map +1 -1
- package/dist/storage/sparql/SparqlQueryExecutor.d.ts +23 -0
- package/dist/storage/sparql/SparqlQueryExecutor.js +63 -0
- package/dist/storage/sparql/SparqlQueryExecutor.js.map +1 -0
- package/dist/storage/sparql/SparqlQueryPatternBuilder.d.ts +55 -0
- package/dist/storage/sparql/SparqlQueryPatternBuilder.js +509 -0
- package/dist/storage/sparql/SparqlQueryPatternBuilder.js.map +1 -0
- package/dist/storage/sparql/SparqlUpdateBuilder.js +8 -7
- package/dist/storage/sparql/SparqlUpdateBuilder.js.map +1 -1
- package/dist/util/SparqlUtil.d.ts +50 -0
- package/dist/util/SparqlUtil.js +304 -0
- package/dist/util/SparqlUtil.js.map +1 -0
- package/dist/util/TripleUtil.d.ts +0 -12
- package/dist/util/TripleUtil.js +21 -34
- package/dist/util/TripleUtil.js.map +1 -1
- package/dist/util/Vocabularies.d.ts +1 -0
- package/dist/util/Vocabularies.js +4 -1
- package/dist/util/Vocabularies.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,42 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.SparqlQueryAdapter = void 0;
|
|
7
|
-
const
|
|
8
|
-
const sparql_http_client_1 = __importDefault(require("sparql-http-client"));
|
|
9
|
-
const sparqljs_1 = require("sparqljs");
|
|
4
|
+
const SparqlUtil_1 = require("../../util/SparqlUtil");
|
|
10
5
|
const TripleUtil_1 = require("../../util/TripleUtil");
|
|
11
6
|
const SparqlQueryBuilder_1 = require("./SparqlQueryBuilder");
|
|
7
|
+
const SparqlQueryExecutor_1 = require("./SparqlQueryExecutor");
|
|
12
8
|
const SparqlUpdateBuilder_1 = require("./SparqlUpdateBuilder");
|
|
13
9
|
/**
|
|
14
10
|
* A {@link QueryAdapter} that stores data in a database through a sparql endpoint.
|
|
15
11
|
*/
|
|
16
12
|
class SparqlQueryAdapter {
|
|
17
13
|
constructor(options) {
|
|
18
|
-
this.
|
|
19
|
-
endpointUrl: options.endpointUrl,
|
|
20
|
-
updateUrl: options.updateUrl ?? options.endpointUrl,
|
|
21
|
-
});
|
|
22
|
-
this.sparqlGenerator = new sparqljs_1.Generator();
|
|
14
|
+
this.sparqlQueryExecutor = new SparqlQueryExecutor_1.SparqlQueryExecutor(options);
|
|
23
15
|
this.setTimestamps = options.setTimestamps ?? false;
|
|
24
16
|
}
|
|
25
17
|
async executeRawQuery(query) {
|
|
26
|
-
const response = await this.
|
|
18
|
+
const response = await this.sparqlQueryExecutor.executeSparqlSelectAndGetDataRaw(query);
|
|
27
19
|
if (response.length === 0) {
|
|
28
20
|
return [];
|
|
29
21
|
}
|
|
30
|
-
return response
|
|
31
|
-
.map((result) => Object.entries(result).reduce((obj, [key, value]) => ({
|
|
32
|
-
...obj,
|
|
33
|
-
[key]: value.termType === 'Literal'
|
|
34
|
-
? (0, TripleUtil_1.toJSValueFromDataType)(value.value, value.datatype?.value)
|
|
35
|
-
: value.value,
|
|
36
|
-
}), {}));
|
|
22
|
+
return (0, SparqlUtil_1.selectQueryResultsAsJSValues)(response);
|
|
37
23
|
}
|
|
38
24
|
async executeRawEntityQuery(query, frame) {
|
|
39
|
-
const response = await this.
|
|
25
|
+
const response = await this.sparqlQueryExecutor.executeSparqlSelectAndGetDataRaw(query);
|
|
40
26
|
if (response.length === 0) {
|
|
41
27
|
return { '@graph': [] };
|
|
42
28
|
}
|
|
@@ -54,20 +40,6 @@ class SparqlQueryAdapter {
|
|
|
54
40
|
}
|
|
55
41
|
return jsonld;
|
|
56
42
|
}
|
|
57
|
-
constructSparqlSelect(variables, where, order, limit, offset) {
|
|
58
|
-
if (where.length > 0) {
|
|
59
|
-
return {
|
|
60
|
-
type: 'query',
|
|
61
|
-
queryType: 'SELECT',
|
|
62
|
-
variables,
|
|
63
|
-
where,
|
|
64
|
-
order: order.length > 0 ? order : undefined,
|
|
65
|
-
limit,
|
|
66
|
-
offset,
|
|
67
|
-
prefixes: {},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
43
|
async findBy(where) {
|
|
72
44
|
return this.find({ where });
|
|
73
45
|
}
|
|
@@ -79,182 +51,81 @@ class SparqlQueryAdapter {
|
|
|
79
51
|
return [jsonld];
|
|
80
52
|
}
|
|
81
53
|
async findAllAsJsonLd(options) {
|
|
54
|
+
if (options?.search) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
82
57
|
const queryBuilder = new SparqlQueryBuilder_1.SparqlQueryBuilder();
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (selectQueryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {
|
|
87
|
-
return await this.findAllWithOrder(queryBuilder, selectQueryData, entitySelectQuery, options);
|
|
58
|
+
const { queryData, entityOrder } = await this.buildFindAllQueryData(queryBuilder, options);
|
|
59
|
+
if (entityOrder && entityOrder.length === 0) {
|
|
60
|
+
return [];
|
|
88
61
|
}
|
|
89
|
-
|
|
62
|
+
const query = queryBuilder.buildConstructFromEntitySelectQuery(queryData.graphWhere, queryData.graphSelectionTriples, options?.select);
|
|
63
|
+
return await this.executeEntitySelectQuery(query, options?.relations, entityOrder);
|
|
64
|
+
}
|
|
65
|
+
async buildFindAllQueryData(queryBuilder, options) {
|
|
66
|
+
const queryData = queryBuilder.buildPatternsFromQueryOptions(TripleUtil_1.entityVariable, options?.where, options?.order, options?.relations);
|
|
67
|
+
const entitySelectQuery = queryData.where.length > 0
|
|
68
|
+
? (0, SparqlUtil_1.createSparqlSelectQuery)(TripleUtil_1.entityVariable, queryData.where, queryData.orders, options?.limit, options?.offset)
|
|
69
|
+
: undefined;
|
|
70
|
+
if (queryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {
|
|
71
|
+
return await this.buildFindAllWithOrder(queryData, entitySelectQuery);
|
|
72
|
+
}
|
|
73
|
+
return await this.buildFindAllWithoutOrder(queryData, entitySelectQuery);
|
|
90
74
|
}
|
|
91
|
-
async
|
|
75
|
+
async buildFindAllWithOrder(queryData, entitySelectQuery) {
|
|
92
76
|
// We need to execute the entity select query here first to get ordered results.
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return [];
|
|
77
|
+
const entitySelectResponse = await this.sparqlQueryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);
|
|
78
|
+
const valuesByVariable = (0, SparqlUtil_1.groupSelectQueryResultsByKey)(entitySelectResponse);
|
|
79
|
+
const entityOrder = (0, SparqlUtil_1.getEntityVariableValuesFromVariables)(valuesByVariable);
|
|
80
|
+
if (entityOrder.length === 0) {
|
|
81
|
+
return { queryData, entityOrder: [] };
|
|
99
82
|
}
|
|
100
|
-
const variableValueFilters =
|
|
101
|
-
|
|
102
|
-
return
|
|
83
|
+
const variableValueFilters = (0, SparqlUtil_1.createValuesPatternsForVariables)(valuesByVariable);
|
|
84
|
+
queryData.graphWhere = [...variableValueFilters, ...queryData.graphWhere];
|
|
85
|
+
return { queryData, entityOrder };
|
|
103
86
|
}
|
|
104
|
-
async
|
|
87
|
+
async buildFindAllWithoutOrder(queryData, entitySelectQuery) {
|
|
105
88
|
if (entitySelectQuery) {
|
|
106
|
-
const entitySelectGroupQuery =
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
return await this.executeEntitySelectQuery(queryBuilder, selectQueryData, options);
|
|
110
|
-
}
|
|
111
|
-
async executeEntitySelectQuery(queryBuilder, selectQueryData, options, orderedEntities) {
|
|
112
|
-
const query = queryBuilder.buildConstructFromEntitySelectQuery(selectQueryData.graphWhere, selectQueryData.variables, options?.select);
|
|
113
|
-
const generatedQuery = this.sparqlGenerator.stringify(query);
|
|
114
|
-
const responseTriples = await this.executeSparqlSelectAndGetData(generatedQuery);
|
|
115
|
-
return await (0, TripleUtil_1.triplesToJsonld)(responseTriples, options?.relations, orderedEntities);
|
|
116
|
-
}
|
|
117
|
-
getEntityVariableValuesFromVariables(variables) {
|
|
118
|
-
if (!(TripleUtil_1.entityVariable.value in variables)) {
|
|
119
|
-
return [];
|
|
89
|
+
const entitySelectGroupQuery = (0, SparqlUtil_1.createSparqlSelectGroup)([entitySelectQuery]);
|
|
90
|
+
queryData.graphWhere.unshift(entitySelectGroupQuery);
|
|
120
91
|
}
|
|
121
|
-
return
|
|
122
|
-
.map((namedNode) => namedNode.value);
|
|
123
|
-
}
|
|
124
|
-
groupByKey(entitySelectResponse) {
|
|
125
|
-
return entitySelectResponse
|
|
126
|
-
.reduce((obj, result) => {
|
|
127
|
-
for (const [key, value] of Object.entries(result)) {
|
|
128
|
-
if (!(key in obj)) {
|
|
129
|
-
obj[key] = [value];
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
obj[key].push(value);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return obj;
|
|
136
|
-
}, {});
|
|
92
|
+
return { queryData };
|
|
137
93
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
patterns,
|
|
142
|
-
};
|
|
94
|
+
async executeEntitySelectQuery(query, relations, entityOrder) {
|
|
95
|
+
const responseTriples = await this.sparqlQueryExecutor.executeSparqlSelectAndGetData(query);
|
|
96
|
+
return await (0, TripleUtil_1.triplesToJsonld)(responseTriples, relations, entityOrder);
|
|
143
97
|
}
|
|
144
98
|
async findAllBy(where) {
|
|
145
99
|
return this.findAll({ where });
|
|
146
100
|
}
|
|
147
|
-
async exists(
|
|
101
|
+
async exists(options) {
|
|
148
102
|
const queryBuilder = new SparqlQueryBuilder_1.SparqlQueryBuilder();
|
|
149
|
-
const
|
|
150
|
-
const query =
|
|
151
|
-
return await this.executeAskQueryAndGetResponse(query);
|
|
103
|
+
const queryData = queryBuilder.buildPatternsFromQueryOptions(TripleUtil_1.entityVariable, options?.where, options?.order, options?.relations);
|
|
104
|
+
const query = (0, SparqlUtil_1.creteSparqlAskQuery)(queryData.where);
|
|
105
|
+
return await this.sparqlQueryExecutor.executeAskQueryAndGetResponse(query);
|
|
152
106
|
}
|
|
153
|
-
|
|
154
|
-
return {
|
|
155
|
-
type: 'query',
|
|
156
|
-
queryType: 'ASK',
|
|
157
|
-
where,
|
|
158
|
-
prefixes: {},
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
async count(where) {
|
|
107
|
+
async count(options) {
|
|
162
108
|
const queryBuilder = new SparqlQueryBuilder_1.SparqlQueryBuilder();
|
|
163
|
-
const
|
|
164
|
-
const query =
|
|
165
|
-
return await this.executeSelectCountAndGetResponse(query);
|
|
166
|
-
}
|
|
167
|
-
sparqlCountSelect(where, graphWhere) {
|
|
168
|
-
return {
|
|
169
|
-
type: 'query',
|
|
170
|
-
queryType: 'SELECT',
|
|
171
|
-
variables: [{
|
|
172
|
-
expression: {
|
|
173
|
-
type: 'aggregate',
|
|
174
|
-
aggregation: 'count',
|
|
175
|
-
distinct: true,
|
|
176
|
-
expression: TripleUtil_1.entityVariable,
|
|
177
|
-
},
|
|
178
|
-
variable: TripleUtil_1.countVariable,
|
|
179
|
-
}],
|
|
180
|
-
where: [
|
|
181
|
-
...where,
|
|
182
|
-
...graphWhere,
|
|
183
|
-
this.sparqlSelectGraph(TripleUtil_1.entityVariable, [{
|
|
184
|
-
type: 'bgp',
|
|
185
|
-
triples: [{
|
|
186
|
-
subject: TripleUtil_1.entityVariable,
|
|
187
|
-
predicate: data_model_1.default.variable('predicate'),
|
|
188
|
-
object: data_model_1.default.variable('object'),
|
|
189
|
-
}],
|
|
190
|
-
}]),
|
|
191
|
-
],
|
|
192
|
-
prefixes: {},
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
sparqlSelectGraph(name, patterns) {
|
|
196
|
-
return {
|
|
197
|
-
type: 'graph',
|
|
198
|
-
name: name,
|
|
199
|
-
patterns,
|
|
200
|
-
};
|
|
109
|
+
const queryData = queryBuilder.buildPatternsFromQueryOptions(TripleUtil_1.entityVariable, options?.where, options?.order, options?.relations);
|
|
110
|
+
const query = (0, SparqlUtil_1.createSparqlCountSelectQuery)(TripleUtil_1.entityVariable, [...queryData.where, ...queryData.graphWhere]);
|
|
111
|
+
return await this.sparqlQueryExecutor.executeSelectCountAndGetResponse(query);
|
|
201
112
|
}
|
|
202
113
|
async save(entityOrEntities) {
|
|
203
114
|
const queryBuilder = new SparqlUpdateBuilder_1.SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });
|
|
204
115
|
const query = queryBuilder.buildUpdate(entityOrEntities);
|
|
205
|
-
await this.executeSparqlUpdate(query);
|
|
116
|
+
await this.sparqlQueryExecutor.executeSparqlUpdate(query);
|
|
206
117
|
return entityOrEntities;
|
|
207
118
|
}
|
|
208
119
|
async destroy(entityOrEntities) {
|
|
209
120
|
const queryBuilder = new SparqlUpdateBuilder_1.SparqlUpdateBuilder();
|
|
210
121
|
const query = queryBuilder.buildDelete(entityOrEntities);
|
|
211
|
-
await this.executeSparqlUpdate(query);
|
|
122
|
+
await this.sparqlQueryExecutor.executeSparqlUpdate(query);
|
|
212
123
|
return entityOrEntities;
|
|
213
124
|
}
|
|
214
125
|
async destroyAll() {
|
|
215
126
|
const queryBuilder = new SparqlUpdateBuilder_1.SparqlUpdateBuilder();
|
|
216
127
|
const query = queryBuilder.buildDeleteAll();
|
|
217
|
-
await this.executeSparqlUpdate(query);
|
|
218
|
-
}
|
|
219
|
-
async executeSparqlSelectAndGetData(query) {
|
|
220
|
-
const stream = await this.sparqlClient.query.select(query, { operation: 'postUrlencoded' });
|
|
221
|
-
return new Promise((resolve, reject) => {
|
|
222
|
-
const data = [];
|
|
223
|
-
stream.on('data', (row) => {
|
|
224
|
-
data.push(row);
|
|
225
|
-
});
|
|
226
|
-
stream.on('end', () => {
|
|
227
|
-
resolve(data);
|
|
228
|
-
});
|
|
229
|
-
stream.on('error', (error) => {
|
|
230
|
-
reject(error);
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
async executeSparqlUpdate(query) {
|
|
235
|
-
const generatedQuery = this.sparqlGenerator.stringify(query);
|
|
236
|
-
await this.sparqlClient.query.update(generatedQuery);
|
|
237
|
-
}
|
|
238
|
-
async executeAskQueryAndGetResponse(query) {
|
|
239
|
-
const generatedQuery = this.sparqlGenerator.stringify(query);
|
|
240
|
-
return await this.sparqlClient.query.ask(generatedQuery);
|
|
241
|
-
}
|
|
242
|
-
async executeSelectCountAndGetResponse(query) {
|
|
243
|
-
const generatedQuery = this.sparqlGenerator.stringify(query);
|
|
244
|
-
const stream = await this.sparqlClient.query.select(generatedQuery, { operation: 'postUrlencoded' });
|
|
245
|
-
return new Promise((resolve, reject) => {
|
|
246
|
-
let countValue;
|
|
247
|
-
stream.on('data', (row) => {
|
|
248
|
-
const { count } = row;
|
|
249
|
-
countValue = Number.parseInt(count.value, 10);
|
|
250
|
-
});
|
|
251
|
-
stream.on('end', () => {
|
|
252
|
-
resolve(countValue);
|
|
253
|
-
});
|
|
254
|
-
stream.on('error', (error) => {
|
|
255
|
-
reject(error);
|
|
256
|
-
});
|
|
257
|
-
});
|
|
128
|
+
await this.sparqlQueryExecutor.executeSparqlUpdate(query);
|
|
258
129
|
}
|
|
259
130
|
}
|
|
260
131
|
exports.SparqlQueryAdapter = SparqlQueryAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../src/storage/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../src/storage/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,85 +1,8 @@
|
|
|
1
|
-
import type { Variable
|
|
2
|
-
import type { Pattern, ConstructQuery, Triple
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
graphValues: ValuesPattern[];
|
|
9
|
-
graphTriples: Triple[];
|
|
10
|
-
graphFilters: OperationExpression[];
|
|
11
|
-
}
|
|
12
|
-
export interface RelationsQueryData {
|
|
13
|
-
variables: Variable[];
|
|
14
|
-
triples: Triple[];
|
|
15
|
-
graphTriples: Triple[];
|
|
16
|
-
}
|
|
17
|
-
export interface OrderQueryData {
|
|
18
|
-
triples: Triple[];
|
|
19
|
-
orders: Ordering[];
|
|
20
|
-
variables: Variable[];
|
|
21
|
-
}
|
|
22
|
-
export declare type QueryData = {
|
|
23
|
-
relationsVariables: Variable[];
|
|
24
|
-
values: ValuesPattern[];
|
|
25
|
-
filters: OperationExpression[];
|
|
26
|
-
triples: Triple[];
|
|
27
|
-
optionalTriples: Triple[];
|
|
28
|
-
orders: Ordering[];
|
|
29
|
-
graphValues: ValuesPattern[];
|
|
30
|
-
graphTriples: Triple[];
|
|
31
|
-
optionalGraphTriples: Triple[];
|
|
32
|
-
graphFilters: OperationExpression[];
|
|
33
|
-
};
|
|
34
|
-
export interface SelectQueryData {
|
|
35
|
-
variables: Variable[];
|
|
36
|
-
where: Pattern[];
|
|
37
|
-
orders: Ordering[];
|
|
38
|
-
graphWhere: Pattern[];
|
|
39
|
-
}
|
|
40
|
-
export declare class SparqlQueryBuilder {
|
|
41
|
-
private readonly variableGenerator;
|
|
42
|
-
constructor();
|
|
43
|
-
buildValuesForVariables(valuesByVariable: Record<string, (NamedNode | Literal)[]>): ValuesPattern[];
|
|
44
|
-
private filterWithExpression;
|
|
45
|
-
buildPatternsFromQueryOptions(subject: Variable, where?: FindOptionsWhere, order?: FindOptionsOrder, relations?: FindOptionsRelations): SelectQueryData;
|
|
46
|
-
private createWherePatternsFromQueryData;
|
|
47
|
-
private filterPatternFromFilters;
|
|
48
|
-
private sparqlOptionalWithTriples;
|
|
49
|
-
private sparqlBasicGraphPattern;
|
|
50
|
-
buildConstructFromEntitySelectQuery(graphWhere: Pattern[], graphSelectVariables: Variable[], select?: FindOptionsSelect): ConstructQuery;
|
|
51
|
-
private createSelectPattern;
|
|
52
|
-
private createGraphSelectsAndTriplePatterns;
|
|
53
|
-
private sparqlSelectGraph;
|
|
54
|
-
private sparqlOptionalSelectGraph;
|
|
55
|
-
private createQueryData;
|
|
56
|
-
private createWhereQueryData;
|
|
57
|
-
private createWhereQueryDataForField;
|
|
58
|
-
private createWhereQueryDataForIdValue;
|
|
59
|
-
private createWhereQueryDataForType;
|
|
60
|
-
private createWhereQueryDataFromKeyValue;
|
|
61
|
-
private inversePropertyPredicate;
|
|
62
|
-
private createWhereQueryDataForFindOperator;
|
|
63
|
-
private createWhereQueryDataForNestedWhere;
|
|
64
|
-
private createWhereQueryDataForValueObject;
|
|
65
|
-
private valueObjectToTerm;
|
|
66
|
-
private resolveFindOperatorAsExpressionWithMultipleValues;
|
|
67
|
-
private resolveFindOperatorAsExpressionForId;
|
|
68
|
-
private resolveValueToExpression;
|
|
69
|
-
private buildInOperation;
|
|
70
|
-
private buildNotInOperation;
|
|
71
|
-
private buildNotOperationForMultiValued;
|
|
72
|
-
private buildNotOperationForId;
|
|
73
|
-
private buildEqualOperation;
|
|
74
|
-
private buildGtOperation;
|
|
75
|
-
private buildGteOperation;
|
|
76
|
-
private buildLtOperation;
|
|
77
|
-
private buildLteOperation;
|
|
78
|
-
private buildNotEqualOperation;
|
|
79
|
-
private buildTypesAndSuperTypesTriple;
|
|
80
|
-
private resolveValueToTerm;
|
|
81
|
-
private createOrderQueryData;
|
|
82
|
-
private createOrderQueryDataForProperty;
|
|
83
|
-
private createRelationsQueryData;
|
|
84
|
-
private createVariable;
|
|
1
|
+
import type { Variable } from '@rdfjs/types';
|
|
2
|
+
import type { Pattern, ConstructQuery, Triple } from 'sparqljs';
|
|
3
|
+
import type { FindAllOptions, FindOptionsSelect } from '../FindOptionsTypes';
|
|
4
|
+
import type { EntitySelectQueryData } from './SparqlQueryPatternBuilder';
|
|
5
|
+
export interface SparqlQueryBuilder {
|
|
6
|
+
buildEntitySelectPatternsFromOptions<T extends FindAllOptions>(subject: Variable, options: T): EntitySelectQueryData;
|
|
7
|
+
buildConstructFromEntitySelectQuery(graphWhere: Pattern[], graphSelectionTriples: Triple[], select?: FindOptionsSelect): ConstructQuery;
|
|
85
8
|
}
|