solid-ui 2.4.22-d52421dc → 2.4.22-d6a4e62e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +9579 -9553
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +14 -9
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +15 -10
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +13 -9
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +11 -7
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +18 -13
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/chat/bookmarks.js +21 -18
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +15 -9
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +17 -12
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +37 -29
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +14 -14
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -10
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +9 -4
- package/lib/chat/thread.js.map +1 -1
- package/lib/footer/index.js +10 -8
- package/lib/footer/index.js.map +1 -1
- package/lib/header/index.js +17 -9
- package/lib/header/index.js.map +1 -1
- package/lib/iconBase.js +3 -2
- package/lib/iconBase.js.map +1 -1
- package/lib/login/login.d.ts +9 -8
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +303 -313
- package/lib/login/login.js.map +1 -1
- package/lib/media/media-capture.js +20 -4
- package/lib/media/media-capture.js.map +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +21 -18
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +7 -5
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/versionInfo.d.ts +9 -9
- package/lib/versionInfo.js +13 -13
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/error.d.ts +0 -12
- package/lib/widgets/error.d.ts.map +1 -1
- package/lib/widgets/error.js +5 -0
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +15 -17
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +8 -5
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +19 -21
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +15 -8
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +27 -22
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms.js +270 -27
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +46 -44
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
@@ -14,7 +14,7 @@ exports.getPreferredLanguages = getPreferredLanguages;
|
|
|
14
14
|
exports.getPreferredLanguagesFor = getPreferredLanguagesFor;
|
|
15
15
|
exports.languageCodeURIBase = void 0;
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
18
18
|
|
|
19
19
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
20
20
|
|
|
@@ -26,10 +26,17 @@ var ns = _interopRequireWildcard(require("../../../ns"));
|
|
|
26
26
|
|
|
27
27
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
28
28
|
|
|
29
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
|
29
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
30
|
|
|
31
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == (0, _typeof2["default"])(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
31
|
+
/* Logic to access public data stores
|
|
32
|
+
*
|
|
33
|
+
* including filtering resut by natural language etc
|
|
34
|
+
* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html
|
|
35
|
+
*/
|
|
32
36
|
|
|
37
|
+
/* eslint-disable no-console */
|
|
38
|
+
// import * as logic from '../index'
|
|
39
|
+
// import { authn } from '../../../authn/index'
|
|
33
40
|
var languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
|
|
34
41
|
|
|
35
42
|
exports.languageCodeURIBase = languageCodeURIBase;
|
|
@@ -53,11 +60,11 @@ function getPreferredLanguagesFor(_x) {
|
|
|
53
60
|
|
|
54
61
|
|
|
55
62
|
function _getPreferredLanguagesFor() {
|
|
56
|
-
_getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
63
|
+
_getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
|
|
57
64
|
var _store$fetcher;
|
|
58
65
|
|
|
59
66
|
var doc, list, languageCodeArray;
|
|
60
|
-
return
|
|
67
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
61
68
|
while (1) {
|
|
62
69
|
switch (_context.prev = _context.next) {
|
|
63
70
|
case 0:
|
|
@@ -126,9 +133,9 @@ function getPreferredLanguages() {
|
|
|
126
133
|
|
|
127
134
|
|
|
128
135
|
function _getPreferredLanguages() {
|
|
129
|
-
_getPreferredLanguages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
136
|
+
_getPreferredLanguages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
130
137
|
var me, solidLanguagePrefs;
|
|
131
|
-
return
|
|
138
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
132
139
|
while (1) {
|
|
133
140
|
switch (_context2.prev = _context2.next) {
|
|
134
141
|
case 0:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.js","names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","store","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;AAGA;;AACA
|
|
1
|
+
{"version":3,"file":"language.js","names":["languageCodeURIBase","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","person","doc","store","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
@@ -24,7 +24,7 @@ exports.queryPublicDataConstruct = queryPublicDataConstruct;
|
|
|
24
24
|
exports.queryPublicDataSelect = queryPublicDataSelect;
|
|
25
25
|
exports.wikidataParameters = exports.wikidataOutgoingClassMap = exports.wikidataIncomingClassMap = exports.wikidataClasses = exports.variableNameToPredicateMap = void 0;
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
28
28
|
|
|
29
29
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
30
30
|
|
|
@@ -40,10 +40,15 @@ var _language = require("./language");
|
|
|
40
40
|
|
|
41
41
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
42
42
|
|
|
43
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
|
43
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
44
44
|
|
|
45
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == (0, _typeof2["default"])(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
45
|
+
/* Logic to access public data stores
|
|
46
|
+
*
|
|
47
|
+
* including filtering resut by natural language etc
|
|
48
|
+
* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html
|
|
49
|
+
*/
|
|
46
50
|
|
|
51
|
+
/* eslint-disable no-console */
|
|
47
52
|
var AUTOCOMPLETE_LIMIT = 200; // How many to get from server
|
|
48
53
|
// With 3000 we could exceed the wikidata timeout
|
|
49
54
|
|
|
@@ -284,11 +289,11 @@ function queryESCODataByName(_x, _x2, _x3) {
|
|
|
284
289
|
|
|
285
290
|
|
|
286
291
|
function _queryESCODataByName() {
|
|
287
|
-
_queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
292
|
+
_queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
|
|
288
293
|
var _store$fetcher;
|
|
289
294
|
|
|
290
295
|
var limit, queryURI, response, text, json;
|
|
291
|
-
return
|
|
296
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
292
297
|
while (1) {
|
|
293
298
|
switch (_context.prev = _context.next) {
|
|
294
299
|
case 0:
|
|
@@ -354,10 +359,10 @@ function queryPublicDataByName(_x4, _x5, _x6, _x7) {
|
|
|
354
359
|
|
|
355
360
|
|
|
356
361
|
function _queryPublicDataByName() {
|
|
357
|
-
_queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
362
|
+
_queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
|
|
358
363
|
var substituteStrings, languagePrefs, language, sparql, queryURI, response, _store$fetcher2, text, text2, json, bindings;
|
|
359
364
|
|
|
360
|
-
return
|
|
365
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
361
366
|
while (1) {
|
|
362
367
|
switch (_context2.prev = _context2.next) {
|
|
363
368
|
case 0:
|
|
@@ -487,11 +492,11 @@ function queryPublicDataSelect(_x8, _x9) {
|
|
|
487
492
|
|
|
488
493
|
|
|
489
494
|
function _queryPublicDataSelect() {
|
|
490
|
-
_queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
495
|
+
_queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
|
|
491
496
|
var _store$fetcher3;
|
|
492
497
|
|
|
493
498
|
var myUrlWithParams, queryURI, headers, options, response, text, text2, json, bindings;
|
|
494
|
-
return
|
|
499
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
495
500
|
while (1) {
|
|
496
501
|
switch (_context3.prev = _context3.next) {
|
|
497
502
|
case 0:
|
|
@@ -550,11 +555,11 @@ function queryPublicDataConstruct(_x10, _x11, _x12) {
|
|
|
550
555
|
}
|
|
551
556
|
|
|
552
557
|
function _queryPublicDataConstruct() {
|
|
553
|
-
_queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
558
|
+
_queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
|
|
554
559
|
var _store$fetcher4;
|
|
555
560
|
|
|
556
561
|
var myUrlWithParams, queryURI, headers, options, response, text, report;
|
|
557
|
-
return
|
|
562
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
558
563
|
while (1) {
|
|
559
564
|
switch (_context4.prev = _context4.next) {
|
|
560
565
|
case 0:
|
|
@@ -614,9 +619,9 @@ function loadPublicDataThing(_x13, _x14, _x15) {
|
|
|
614
619
|
}
|
|
615
620
|
|
|
616
621
|
function _loadPublicDataThing() {
|
|
617
|
-
_loadPublicDataThing = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
622
|
+
_loadPublicDataThing = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(kb, subject, publicDataID) {
|
|
618
623
|
var iDToFetch, headers;
|
|
619
|
-
return
|
|
624
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
620
625
|
while (1) {
|
|
621
626
|
switch (_context5.prev = _context5.next) {
|
|
622
627
|
case 0:
|
|
@@ -664,9 +669,9 @@ function getWikidataDetails(_x16, _x17, _x18) {
|
|
|
664
669
|
}
|
|
665
670
|
|
|
666
671
|
function _getWikidataDetails() {
|
|
667
|
-
_getWikidataDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
672
|
+
_getWikidataDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(kb, solidSubject, publicDataID) {
|
|
668
673
|
var subjRegexp, sparql;
|
|
669
|
-
return
|
|
674
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
670
675
|
while (1) {
|
|
671
676
|
switch (_context6.prev = _context6.next) {
|
|
672
677
|
case 0:
|
|
@@ -693,9 +698,9 @@ function getWikidataDetailsOld(_x19, _x20, _x21) {
|
|
|
693
698
|
}
|
|
694
699
|
|
|
695
700
|
function _getWikidataDetailsOld() {
|
|
696
|
-
_getWikidataDetailsOld = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
701
|
+
_getWikidataDetailsOld = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(kb, solidSubject, publicDataID) {
|
|
697
702
|
var sparql, bindings;
|
|
698
|
-
return
|
|
703
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
699
704
|
while (1) {
|
|
700
705
|
switch (_context7.prev = _context7.next) {
|
|
701
706
|
case 0:
|
|
@@ -722,9 +727,9 @@ function getWikidataLocation(_x22, _x23, _x24) {
|
|
|
722
727
|
}
|
|
723
728
|
|
|
724
729
|
function _getWikidataLocation() {
|
|
725
|
-
_getWikidataLocation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
730
|
+
_getWikidataLocation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(kb, solidSubject, publicDataID) {
|
|
726
731
|
var sparql, bindings;
|
|
727
|
-
return
|
|
732
|
+
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
728
733
|
while (1) {
|
|
729
734
|
switch (_context8.prev = _context8.next) {
|
|
730
735
|
case 0:
|
|
@@ -753,9 +758,9 @@ function getDbpediaDetails(_x25, _x26, _x27) {
|
|
|
753
758
|
}
|
|
754
759
|
|
|
755
760
|
function _getDbpediaDetails() {
|
|
756
|
-
_getDbpediaDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/
|
|
761
|
+
_getDbpediaDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(kb, solidSubject, publicDataID) {
|
|
757
762
|
var sparql, bindings;
|
|
758
|
-
return
|
|
763
|
+
return _regenerator["default"].wrap(function _callee9$(_context9) {
|
|
759
764
|
while (1) {
|
|
760
765
|
switch (_context9.prev = _context9.next) {
|
|
761
766
|
case 0:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publicData.js","names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","store","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","kb","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","getPreferredLanguages","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solidos/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publicData.js","names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","store","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","kb","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","getPreferredLanguages","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solidos/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"mappings":"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"}
|