data-pipeline-information-system-sparql
Version:
Sparql function to query/update RDF through SPARQL 1.1
28 lines (24 loc) • 1.19 kB
text/typescript
import sparqljs from 'sparqljs'
import SparqlTask from '../Core/SparqlTask'
import { groupBy, jsonRepresentation } from './_select'
// import {jsonRepresentation as js2} from './_select'
import DefinitionPattern from './DefinitionPattern'
export function generate(this: DefinitionPattern, reference: string) {
let model = SparqlTask.sparqlObjects[reference];
// model.prefixes
let parser = new sparqljs.Parser(model.prefixes);
// console.log(jsonRepresentation(reference, reference, [], true));
let _parsed = parser.parse(`SELECT ${jsonRepresentation(reference, reference, [], true)} WHERE { ${model.coreDefinition} } GROUP BY ${groupBy(reference)}`);
this.query = <sparqljs.SelectQuery>_parsed;
model.attributes.filter(attribute => attribute.reference)
.forEach((attribute) => {
let subDef = new DefinitionPattern(attribute.reference)
// Link between outter and nested
this.subQuery[attribute.name] = subDef;
})
this.primaryKey = model.primaryKey;
this.query.prefixes = model.prefixes || {};
}
export default generate;
// let query: sparqljs.SparqlQuery = new sparqljs.SparqlQuery;
// query.type