UNPKG

sparnatural

Version:

Visual client-side SPARQL query builder and knowledge graph exploration tool

75 lines 3.89 kB
import { getSettings } from "../../../sparnatural/settings/defaultSettings"; import { SparnaturalJsonGenerator } from "../../generators/json/SparnaturalJsonGenerator"; import { SparnaturalJsonGeneratorV13 } from "../../generators/json/SparnaturalJson-v13Generator"; import { Generator } from "sparqljs"; import { SparnaturalElement } from "../../../SparnaturalElement"; import { JsonSparqlTranslator } from "../../generators/sparql/fromjson/JsonSparqlTranslator"; import { JsonV13SparqlTranslator } from "../../generators/sparql/fromjsonv13/JsonV13SparqlTranslator"; export class QueryGenerator { constructor(actionStore) { this.actionStore = actionStore; } generateQuery() { // if we are quiet, don't do anything if (this.actionStore.quiet) { return; } // if the query editor is empty, don't do anything if (this.actionStore.sparnatural.isEmpty()) { return; } // triggered when Sparnatural is submitted : generates output SPARQL query let settings = getSettings(); let qryGen = new SparnaturalJsonGenerator(this.actionStore.sparnatural); var jsonQueryOld = qryGen.generateQuery(this.actionStore.sparnatural.variableSection.listVariables(), this.actionStore.sparnatural.variableSection.getOrder(), settings.addDistinct, settings.limit); // -------------------------------------------------------------- // Generate v13 query let qryGenV13 = new SparnaturalJsonGeneratorV13(this.actionStore.sparnatural); var jsonQuery = qryGenV13.generateQuery(settings.addDistinct, settings.limit); //console.log("Generated JSON v13 Query:", jsonQueryV13); // -------------------------------------------------------------- if (settings.debug) { console.log("*** Sparnatural JSON Query ***"); console.dir(jsonQuery); } var sparqlFromJsonGenerator = new JsonSparqlTranslator(this.actionStore.specProvider, settings); let selectQueryFromJson = sparqlFromJsonGenerator.generateQuery(jsonQueryOld); var generator = new Generator(); var queryStringOld = generator.stringify(selectQueryFromJson); if (settings.debug) { console.log("*** Sparnatural SPARQL Query from JSON ***"); console.dir(queryStringOld); } // -------------------------------------------------------------- // Translate the v13 JSON to SPARQL var sparqlFromJsonV13Generator = new JsonV13SparqlTranslator(this.actionStore.specProvider, settings); let selectQueryFromJsonV13 = sparqlFromJsonV13Generator.generateQuery(jsonQuery); var generatorV13 = new Generator(); var queryString = generatorV13.stringify(selectQueryFromJsonV13); //console.log("Generated SPARQL v13 Query:", queryStringV13); // -------------------------------------------------------------- // fire the event let payload = { queryString: queryStringOld, queryJson: jsonQueryOld, // when switching to v13, replace with those 2 lines queryJsonNew: jsonQuery, queryStringNew: queryString, querySparqlJs: selectQueryFromJson, }; this.fireQueryUpdatedEvent(payload); // re-enable submit button if it was disabled // note that the submitSection may not be present in case submitButton = false in the attributes this.actionStore.sparnatural.submitSection?.enableSubmit(); } fireQueryUpdatedEvent(payload) { // fire the event this.actionStore.sparnatural.html[0].dispatchEvent(new CustomEvent(SparnaturalElement.EVENT_QUERY_UPDATED, { bubbles: true, detail: payload, })); } } export class QueryUpdatedPayload { } //# sourceMappingURL=GenerateQuery.js.map