data-pipeline-information-system-sparql
Version:
Sparql function to query/update RDF through SPARQL 1.1
35 lines (33 loc) • 1.65 kB
text/typescript
import SparqlObject from '../SparqlObject/SparqlObject'
import {ConfigurationElementI, ConfigurationAttribute} from './types'
import SparqlTask from './SparqlTask'
export function init(configurationArray: {attributes: Array<string | ConfigurationAttribute>, definition: string, reference: string, primaryKey: string, prefixes?: {[key:string] : string}}[] = []) {
let configurationMap: { [ref: string]: ConfigurationElementI } = {};
let sparqlObjects: { [ref: string]: SparqlObject } = {};
configurationArray.forEach((configuration) => {
configurationMap[configuration.reference] = {
reference: configuration.reference,
attributes: [],
definition: configuration.definition,
primaryKey: configuration.primaryKey,
prefixes: configuration.prefixes || {}
};
SparqlTask.prefixes = {...SparqlTask.prefixes, ...configuration.prefixes}
configuration.attributes.forEach((attribute) => {
let initAttribute: ConfigurationAttribute;
if (typeof attribute === "string") {
initAttribute = new ConfigurationAttribute();
initAttribute.name = attribute;
} else {
initAttribute = { ...{ arrayable: false, reference: null }, ...attribute };
}
configurationMap[configuration.reference].attributes.push(initAttribute);
})
});
Object.keys(configurationMap).forEach((reference) => {
let object = new SparqlObject(configurationMap[reference]);
sparqlObjects[reference] = object;
})
return sparqlObjects;
}
export default init;