UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

116 lines 5 kB
"use strict"; 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"); const logger_1 = require("../../../../logger"); const PerformanceLogger_1 = require("../../../../util/PerformanceLogger"); 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(); this.logger = logger_1.Logger.getInstance(); } async executeSparqlSelectAndGetData(query) { const generatedQuery = this.sparqlGenerator.stringify(query); return this.executeSparqlSelectAndGetDataRaw(generatedQuery); } async executeSparqlSelectAndGetDataRaw(query) { const span = PerformanceLogger_1.PerformanceLogger.startSpan('SPARQL.SELECT', { query }); try { // This.logger.debug(query); const stream = await this.sparqlClient.query.select(query, { operation: 'postUrlencoded' }); const result = await new Promise((resolve, reject) => { const data = []; stream.on('data', (row) => { data.push(row); }); stream.on('end', () => { resolve(data); }); stream.on('error', (error) => { reject(error); }); }); PerformanceLogger_1.PerformanceLogger.endSpan(span, { resultCount: result.length }); return result; } catch (error) { PerformanceLogger_1.PerformanceLogger.endSpan(span, { error: true }); throw error; } } async executeSparqlConstructAndGetDataRaw(query) { const span = PerformanceLogger_1.PerformanceLogger.startSpan('SPARQL.CONSTRUCT', { query }); try { const result = await this.executeSparqlSelectAndGetDataRaw(query); PerformanceLogger_1.PerformanceLogger.endSpan(span, { resultCount: result.length }); return result; } catch (error) { PerformanceLogger_1.PerformanceLogger.endSpan(span, { error: true }); throw error; } } async executeSparqlUpdate(query) { const generatedQuery = this.sparqlGenerator.stringify(query); await this.executeRawSparqlUpdate(generatedQuery); } async executeRawSparqlUpdate(query) { const span = PerformanceLogger_1.PerformanceLogger.startSpan('SPARQL.UPDATE', { query }); try { await this.sparqlClient.query.update(query); PerformanceLogger_1.PerformanceLogger.endSpan(span); } catch (error) { PerformanceLogger_1.PerformanceLogger.endSpan(span, { error: true }); throw error; } } async executeAskQueryAndGetResponse(query) { const generatedQuery = this.sparqlGenerator.stringify(query); const span = PerformanceLogger_1.PerformanceLogger.startSpan('SPARQL.ASK', { query: generatedQuery }); try { const result = await this.sparqlClient.query.ask(generatedQuery); PerformanceLogger_1.PerformanceLogger.endSpan(span, { result }); return result; } catch (error) { PerformanceLogger_1.PerformanceLogger.endSpan(span, { error: true }); throw error; } } async executeSelectCountAndGetResponse(query) { const generatedQuery = this.sparqlGenerator.stringify(query); const span = PerformanceLogger_1.PerformanceLogger.startSpan('SPARQL.COUNT', { query: generatedQuery }); try { const stream = await this.sparqlClient.query.select(generatedQuery, { operation: 'postUrlencoded' }); const countValue = await new Promise((resolve, reject) => { let count; stream.on('data', (row) => { count = Number.parseInt(row.count.value, 10); }); stream.on('end', () => { resolve(count); }); stream.on('error', (error) => { reject(error); }); }); PerformanceLogger_1.PerformanceLogger.endSpan(span, { count: countValue }); return countValue; } catch (error) { PerformanceLogger_1.PerformanceLogger.endSpan(span, { error: true }); throw error; } } } exports.SparqlEndpointQueryExecutor = SparqlEndpointQueryExecutor; //# sourceMappingURL=SparqlEndpointQueryExecutor.js.map