@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
69 lines • 2.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SparqlEndpointQueryExecutor = void 0;
const sparql_http_client_1 = __importDefault(require("sparql-http-client"));
const sparqljs_1 = require("sparqljs");
class SparqlEndpointQueryExecutor {
constructor(options) {
this.sparqlClient = new sparql_http_client_1.default({
endpointUrl: options.endpointUrl,
updateUrl: options.updateUrl ?? options.endpointUrl,
});
this.sparqlGenerator = new sparqljs_1.Generator();
}
async executeSparqlSelectAndGetData(query) {
const generatedQuery = this.sparqlGenerator.stringify(query);
return this.executeSparqlSelectAndGetDataRaw(generatedQuery);
}
async executeSparqlSelectAndGetDataRaw(query) {
const stream = await this.sparqlClient.query.select(query, { operation: 'postUrlencoded' });
return new Promise((resolve, reject) => {
const data = [];
stream.on('data', (row) => {
data.push(row);
});
stream.on('end', () => {
resolve(data);
});
stream.on('error', (error) => {
reject(error);
});
});
}
async executeSparqlConstructAndGetDataRaw(query) {
return await this.executeSparqlSelectAndGetDataRaw(query);
}
async executeSparqlUpdate(query) {
const generatedQuery = this.sparqlGenerator.stringify(query);
await this.executeRawSparqlUpdate(generatedQuery);
}
async executeRawSparqlUpdate(query) {
await this.sparqlClient.query.update(query);
}
async executeAskQueryAndGetResponse(query) {
const generatedQuery = this.sparqlGenerator.stringify(query);
return await this.sparqlClient.query.ask(generatedQuery);
}
async executeSelectCountAndGetResponse(query) {
const generatedQuery = this.sparqlGenerator.stringify(query);
const stream = await this.sparqlClient.query.select(generatedQuery, { operation: 'postUrlencoded' });
return new Promise((resolve, reject) => {
let countValue;
stream.on('data', (row) => {
const { count } = row;
countValue = Number.parseInt(count.value, 10);
});
stream.on('end', () => {
resolve(countValue);
});
stream.on('error', (error) => {
reject(error);
});
});
}
}
exports.SparqlEndpointQueryExecutor = SparqlEndpointQueryExecutor;
//# sourceMappingURL=SparqlEndpointQueryExecutor.js.map