data-pipeline-information-system-sparql
Version:
Sparql function to query/update RDF through SPARQL 1.1
52 lines (42 loc) • 1.3 kB
text/typescript
import jsonpointer from 'json-pointer'
const delimiter = '_';
export function jsPointerToBinding(jsPointer: string) {
return jsPointer.replace('/', '?').replace(/\//g, delimiter)
}
export function pointer(path: string[]) {
return jsonpointer.compile(path);
}
export function binding(path: string[]) {
return '?' + path.join(delimiter);
}
// TODO
// Better define an uri
export function isUri(str: string) {
return (str.search('/') !== -1) && (str.search('\\?') === -1);
}
// TODO
// Better define a binding
export function isBinding(str: string) {
return (str.search('\\?') === 0) && (str.search(':') === -1)
}
// TODO
// Better define a prefix
export function isPrefixed(str: string) {
return (str.search('^[a-z0-9_]*:.*[^\.:]$') !== -1) && !isUri(str)
}
export function parseValue(str: string) {
if (isPrefixed(str)) {
return str;
} else if (isUri(str)) {
return '<'+str+'>'
} else {
return '"' + str +'"'
}
}
// <https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex>
export function escapeRegExp(str: string) {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
export function pathToBinding(path: string[]) {
return '?' + path.join(delimiter);
}