UNPKG

wikibase-sdk

Version:

utils functions to query a Wikibase instance and simplify its results

62 lines 2.84 kB
import { pick } from '../utils/utils.js'; // List parsed from https://query.wikidata.org/ a[data-i18n="[title]wdqs-app-button-prefixes"] const wellknownPrefixes = { bd: 'http://www.bigdata.com/rdf#', bds: 'http://www.bigdata.com/rdf/search#', dct: 'http://purl.org/dc/terms/', gas: 'http://www.bigdata.com/rdf/gas#', geo: 'http://www.opengis.net/ont/geosparql#', geof: 'http://www.opengis.net/def/geosparql/function/', hint: 'http://www.bigdata.com/queryHints#', mwapi: 'https://www.mediawiki.org/ontology#API/', ontolex: 'http://www.w3.org/ns/lemon/ontolex#', owl: 'http://www.w3.org/2002/07/owl#', p: 'http://www.wikidata.org/prop/', pq: 'http://www.wikidata.org/prop/qualifier/', pqn: 'http://www.wikidata.org/prop/qualifier/value-normalized/', pqv: 'http://www.wikidata.org/prop/qualifier/value/', pr: 'http://www.wikidata.org/prop/reference/', prn: 'http://www.wikidata.org/prop/reference/value-normalized/', prov: 'http://www.w3.org/ns/prov#', prv: 'http://www.wikidata.org/prop/reference/value/', ps: 'http://www.wikidata.org/prop/statement/', psn: 'http://www.wikidata.org/prop/statement/value-normalized/', psv: 'http://www.wikidata.org/prop/statement/value/', rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', rdfs: 'http://www.w3.org/2000/01/rdf-schema#', schema: 'http://schema.org/', skos: 'http://www.w3.org/2004/02/skos/core#', wd: 'http://www.wikidata.org/entity/', wdata: 'http://www.wikidata.org/wiki/Special:EntityData/', wdno: 'http://www.wikidata.org/prop/novalue/', wdref: 'http://www.wikidata.org/reference/', wds: 'http://www.wikidata.org/entity/statement/', wdsubgraph: 'https://query.wikidata.org/subgraph/', wdt: 'http://www.wikidata.org/prop/direct/', wdtn: 'http://www.wikidata.org/prop/direct-normalized/', wdv: 'http://www.wikidata.org/value/', wikibase: 'http://wikiba.se/ontology#', xsd: 'http://www.w3.org/2001/XMLSchema#', }; export function addWellknownPrefixes(sparql) { if (sparql.trim().startsWith('PREFIX')) return sparql; let prefixesHeader = ''; const foundPrefixesKeys = sparql .match(/[ (][a-z]+:[^/]/g) ?.map(prefix => prefix.replace(/^[^a-z]*([a-z]+):.*$/, '$1')); if (foundPrefixesKeys) { for (const prefix of foundPrefixesKeys) { if (!(prefix in wellknownPrefixes)) { throw new Error(`unknown prefix: ${prefix}`); } } const foundPrefixes = pick(wellknownPrefixes, foundPrefixesKeys); prefixesHeader = Object.entries(foundPrefixes).map(([key, value]) => { return `PREFIX ${key}: <${value}>`; }) .join('\n'); } return `${prefixesHeader}\n${sparql}`.trim(); } //# sourceMappingURL=add_prefixes.js.map