rdflib 2.2.37 → 2.3.0-08f819ce
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/rdflib.min.js +1 -1
- package/dist/rdflib.min.js.map +1 -1
- package/esm/fetcher.js +17 -26
- package/esm/jsonldparser.js +8 -9
- package/esm/n3parser.js +45 -9
- package/esm/parse.js +5 -2
- package/esm/serializer.js +1 -0
- package/esm/store.js +14 -8
- package/lib/fetcher.js +18 -28
- package/lib/formula.d.ts +1 -0
- package/lib/index.js +1 -2
- package/lib/jsonldparser.d.ts +1 -1
- package/lib/jsonldparser.js +9 -11
- package/lib/literal.d.ts +1 -1
- package/lib/n3parser.js +46 -11
- package/lib/node-internal.d.ts +1 -1
- package/lib/parse.d.ts +1 -1
- package/lib/parse.js +6 -4
- package/lib/rdfaparser.js +1 -2
- package/lib/rdfxmlparser.js +1 -2
- package/lib/serializer.js +2 -2
- package/lib/statement.js +1 -2
- package/lib/store.d.ts +4 -1
- package/lib/store.js +14 -8
- package/lib/tf-types.d.ts +1 -1
- package/lib/update-manager.js +1 -2
- package/lib/utils-js.js +1 -2
- package/lib/variable.js +1 -2
- package/package.json +2 -2
- package/src/fetcher.ts +26 -34
- package/src/formula.ts +1 -0
- package/src/jsonldparser.js +12 -17
- package/src/literal.ts +1 -1
- package/src/n3parser.js +46 -17
- package/src/node-internal.ts +1 -1
- package/src/parse.ts +7 -2
- package/src/serializer.js +1 -1
- package/src/store.ts +15 -8
- package/src/tf-types.ts +1 -1
package/esm/fetcher.js
CHANGED
|
@@ -142,7 +142,9 @@ class XHTMLHandler extends Handler {
|
|
|
142
142
|
return 'XHTMLHandler';
|
|
143
143
|
}
|
|
144
144
|
static register(fetcher) {
|
|
145
|
-
fetcher.mediatypes[XHTMLContentType] = {
|
|
145
|
+
fetcher.mediatypes[XHTMLContentType] = {
|
|
146
|
+
'q': 0.8
|
|
147
|
+
};
|
|
146
148
|
}
|
|
147
149
|
parse(fetcher, responseText, options) {
|
|
148
150
|
let relation, reverse;
|
|
@@ -275,7 +277,7 @@ class HTMLHandler extends Handler {
|
|
|
275
277
|
}
|
|
276
278
|
static register(fetcher) {
|
|
277
279
|
fetcher.mediatypes['text/html'] = {
|
|
278
|
-
'q': 0.
|
|
280
|
+
'q': 0.8
|
|
279
281
|
};
|
|
280
282
|
}
|
|
281
283
|
parse(fetcher, responseText, options) {
|
|
@@ -324,21 +326,19 @@ class JsonLdHandler extends Handler {
|
|
|
324
326
|
'q': 0.9
|
|
325
327
|
};
|
|
326
328
|
}
|
|
327
|
-
parse(fetcher, responseText, options, response) {
|
|
329
|
+
async parse(fetcher, responseText, options, response) {
|
|
328
330
|
const kb = fetcher.store;
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
}
|
|
338
|
-
});
|
|
331
|
+
try {
|
|
332
|
+
await jsonldParser(responseText, kb, options.original.value);
|
|
333
|
+
fetcher.store.add(options.original, ns.rdf('type'), ns.link('RDFDocument'), fetcher.appNode);
|
|
334
|
+
return fetcher.doneFetch(options, response);
|
|
335
|
+
} catch (err) {
|
|
336
|
+
const msg = 'Error trying to parse ' + options.resource + ' as JSON-LD:\n' + err; // not err.stack -- irrelevant
|
|
337
|
+
return fetcher.failFetch(options, msg, 'parse_error', response);
|
|
338
|
+
}
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
|
-
JsonLdHandler.pattern = /application\/ld\+json/;
|
|
341
|
+
JsonLdHandler.pattern = /application\/(ld\+json|activity\+json)/;
|
|
342
342
|
class TextHandler extends Handler {
|
|
343
343
|
static toString() {
|
|
344
344
|
return 'TextHandler';
|
|
@@ -376,17 +376,8 @@ class N3Handler extends Handler {
|
|
|
376
376
|
return 'N3Handler';
|
|
377
377
|
}
|
|
378
378
|
static register(fetcher) {
|
|
379
|
-
fetcher.mediatypes['text/n3'] = {
|
|
380
|
-
|
|
381
|
-
}; // as per 2008 spec
|
|
382
|
-
/*
|
|
383
|
-
fetcher.mediatypes['application/x-turtle'] = {
|
|
384
|
-
'q': 1.0
|
|
385
|
-
} // pre 2008
|
|
386
|
-
*/
|
|
387
|
-
fetcher.mediatypes['text/turtle'] = {
|
|
388
|
-
'q': 1.0
|
|
389
|
-
}; // post 2008
|
|
379
|
+
fetcher.mediatypes['text/n3'] = {};
|
|
380
|
+
fetcher.mediatypes['text/turtle'] = {};
|
|
390
381
|
}
|
|
391
382
|
parse(fetcher, responseText, options, response) {
|
|
392
383
|
// Parse the text of this N3 file
|
|
@@ -736,7 +727,7 @@ export default class Fetcher {
|
|
|
736
727
|
options.baseURI = options.baseURI || uri; // Preserve though proxying etc
|
|
737
728
|
options.original = kb.rdfFactory.namedNode(options.baseURI);
|
|
738
729
|
options.req = kb.bnode();
|
|
739
|
-
options.headers = options.headers ||
|
|
730
|
+
options.headers = options.headers || {};
|
|
740
731
|
if (options.contentType) {
|
|
741
732
|
// @ts-ignore
|
|
742
733
|
options.headers['content-type'] = options.contentType;
|
package/esm/jsonldparser.js
CHANGED
|
@@ -53,16 +53,15 @@ function listToCollection(kb, obj) {
|
|
|
53
53
|
*
|
|
54
54
|
* Ensure that {kb.rdfFactory} is a DataFactory.
|
|
55
55
|
*/
|
|
56
|
-
export default function jsonldParser(str, kb, base
|
|
56
|
+
export default async function jsonldParser(str, kb, base) {
|
|
57
57
|
const baseString = base && Object.prototype.hasOwnProperty.call(base, 'termType') ? base.value : base;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}, kb)).then(callback).catch(callback);
|
|
58
|
+
const jsonld = await import('jsonld');
|
|
59
|
+
// ⚠ Unit tests also work without accessing `jsonld.default` explicitly, but real browser usage will fail with
|
|
60
|
+
// just calling `jsonld.flatten`, so please do not remove `default`
|
|
61
|
+
const flattened = await jsonld.default.flatten(JSON.parse(str), null, {
|
|
62
|
+
base: baseString
|
|
63
|
+
});
|
|
64
|
+
return flattened.reduce((store, flatResource) => processResource(store, base, flatResource), kb);
|
|
66
65
|
}
|
|
67
66
|
function nodeType(kb, obj) {
|
|
68
67
|
if (obj['@id'].startsWith('_:')) {
|
package/esm/n3parser.js
CHANGED
|
@@ -183,9 +183,19 @@ var ws = new RegExp("^[ \\t]*", 'g');
|
|
|
183
183
|
var signed_integer = new RegExp("^[-+]?[0-9]+", 'g');
|
|
184
184
|
var number_syntax = new RegExp("^([-+]?[0-9]+)(\\.[0-9]+)?([eE][-+]?[0-9]+)?", 'g');
|
|
185
185
|
var datetime_syntax = new RegExp('^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9](T[0-9][0-9]:[0-9][0-9](:[0-9][0-9](\\.[0-9]*)?)?)?Z?');
|
|
186
|
+
|
|
187
|
+
// Reused in tight loops to detect whitespace or comment after a dot
|
|
188
|
+
var wsOrHash = new RegExp("[\\s#]");
|
|
186
189
|
var digitstring = new RegExp("^[0-9]+", 'g');
|
|
187
190
|
var interesting = new RegExp("[\\\\\\r\\n\\\"]", 'g');
|
|
188
191
|
var langcode = new RegExp("^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*", 'g');
|
|
192
|
+
|
|
193
|
+
// Returns true when a dot at position i should terminate a name,
|
|
194
|
+
// i.e., when the next character is whitespace, a comment start, or EOF
|
|
195
|
+
function dotTerminatesName(str, i) {
|
|
196
|
+
var next = str.charAt(i + 1);
|
|
197
|
+
return next === '' || wsOrHash.test(next);
|
|
198
|
+
}
|
|
189
199
|
function createSinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why) {
|
|
190
200
|
return new SinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why);
|
|
191
201
|
}
|
|
@@ -674,6 +684,16 @@ export class SinkParser {
|
|
|
674
684
|
if (j < 0) {
|
|
675
685
|
throw BadSyntax(this._thisDoc, this.lines, str, i, "EOF when ']' expected after [ <propertyList>");
|
|
676
686
|
}
|
|
687
|
+
if (str.slice(j, j + 1) == ".") {
|
|
688
|
+
// If a dot is found after a blank node, treat it as a statement terminator.
|
|
689
|
+
// Do NOT consume the '.' here: statement terminators are handled centrally by
|
|
690
|
+
// checkDot() (called by directiveOrStatement after statement()). Consuming the dot
|
|
691
|
+
// locally would bypass that unified logic and could cause inconsistencies.
|
|
692
|
+
// We do consume ']' below because it is a structural closer of the blank node,
|
|
693
|
+
// not a statement terminator.
|
|
694
|
+
res.push(subj);
|
|
695
|
+
return j; // leave '.' for checkDot()
|
|
696
|
+
}
|
|
677
697
|
if (str.slice(j, j + 1) != "]") {
|
|
678
698
|
throw BadSyntax(this._thisDoc, this.lines, str, j, "']' expected");
|
|
679
699
|
}
|
|
@@ -1122,7 +1142,17 @@ export class SinkParser {
|
|
|
1122
1142
|
return -1;
|
|
1123
1143
|
}
|
|
1124
1144
|
var i = j;
|
|
1125
|
-
while (i < pyjslib_len(str)
|
|
1145
|
+
while (i < pyjslib_len(str)) {
|
|
1146
|
+
var c = str.charAt(i);
|
|
1147
|
+
if (c === '.') {
|
|
1148
|
+
if (dotTerminatesName(str, i)) {
|
|
1149
|
+
break; // treat as statement terminator, not part of name
|
|
1150
|
+
}
|
|
1151
|
+
// else: accept '.' as part of name
|
|
1152
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1153
|
+
// Other invalid characters terminate the name
|
|
1154
|
+
break;
|
|
1155
|
+
}
|
|
1126
1156
|
var i = i + 1;
|
|
1127
1157
|
}
|
|
1128
1158
|
res.push(str.slice(j, i));
|
|
@@ -1148,12 +1178,15 @@ export class SinkParser {
|
|
|
1148
1178
|
var i = i + 1;
|
|
1149
1179
|
while (i < pyjslib_len(str)) {
|
|
1150
1180
|
var c = str.charAt(i);
|
|
1151
|
-
if (
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1181
|
+
if (c === '.') {
|
|
1182
|
+
if (dotTerminatesName(str, i)) {
|
|
1183
|
+
break; // dot ends the name here
|
|
1184
|
+
}
|
|
1185
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1155
1186
|
break;
|
|
1156
1187
|
}
|
|
1188
|
+
var ln = ln + c;
|
|
1189
|
+
var i = i + 1;
|
|
1157
1190
|
}
|
|
1158
1191
|
} else {
|
|
1159
1192
|
var ln = "";
|
|
@@ -1164,12 +1197,15 @@ export class SinkParser {
|
|
|
1164
1197
|
var ln = "";
|
|
1165
1198
|
while (i < pyjslib_len(str)) {
|
|
1166
1199
|
var c = str.charAt(i);
|
|
1167
|
-
if (
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1200
|
+
if (c === '.') {
|
|
1201
|
+
if (dotTerminatesName(str, i)) {
|
|
1202
|
+
break; // dot ends the name here
|
|
1203
|
+
}
|
|
1204
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1171
1205
|
break;
|
|
1172
1206
|
}
|
|
1207
|
+
var ln = ln + c;
|
|
1208
|
+
var i = i + 1;
|
|
1173
1209
|
}
|
|
1174
1210
|
res.push(new pyjslib_Tuple([pfx, ln]));
|
|
1175
1211
|
return i;
|
package/esm/parse.js
CHANGED
|
@@ -12,7 +12,7 @@ import { TurtleContentType, N3ContentType, RDFXMLContentType, XHTMLContentType,
|
|
|
12
12
|
* Parse a string and put the result into the graph kb.
|
|
13
13
|
* Normal method is sync.
|
|
14
14
|
* Unfortunately jsdonld is currently written to need to be called async.
|
|
15
|
-
*
|
|
15
|
+
* If you are parsing JSON-LD and want to know when and whether it succeeded, you need to use the callback param.
|
|
16
16
|
* @param str - The input string to parse
|
|
17
17
|
* @param kb - The store to use
|
|
18
18
|
* @param base - The base URI to use
|
|
@@ -48,7 +48,10 @@ export default function parse(str, kb, base) {
|
|
|
48
48
|
sparqlUpdateParser(str, kb, base);
|
|
49
49
|
executeCallback();
|
|
50
50
|
} else if (contentType === JSONLDContentType) {
|
|
51
|
-
|
|
51
|
+
// since we do not await the promise here, rejections will not be covered by the surrounding try catch
|
|
52
|
+
// we do not use await, because parse() should stay sync
|
|
53
|
+
// so, to not lose the async error, we need to catch the rejection and call the error callback here too
|
|
54
|
+
jsonldParser(str, kb, base).then(executeCallback).catch(executeErrorCallback);
|
|
52
55
|
} else if (contentType === NQuadsContentType || contentType === NQuadsAltContentType) {
|
|
53
56
|
var n3Parser = new N3jsParser({
|
|
54
57
|
factory: DataFactory
|
package/esm/serializer.js
CHANGED
|
@@ -21,6 +21,7 @@ export default function createSerializer(store) {
|
|
|
21
21
|
export class Serializer {
|
|
22
22
|
constructor(store) {
|
|
23
23
|
_defineProperty(this, "_notQNameChars", '\t\r\n !"#$%&\'()*.,+/;<=>?@[\\]^`{|}~');
|
|
24
|
+
// issue#228
|
|
24
25
|
_defineProperty(this, "_notNameChars", this._notQNameChars + ':');
|
|
25
26
|
// stringToN3: String escaping for N3
|
|
26
27
|
_defineProperty(this, "validPrefix", new RegExp(/^[a-zA-Z][a-zA-Z0-9]*$/));
|
package/esm/store.js
CHANGED
|
@@ -129,7 +129,9 @@ export default class IndexedFormula extends Formula {
|
|
|
129
129
|
/** Function to remove quads from the store arrays with */
|
|
130
130
|
_defineProperty(this, "rdfArrayRemove", void 0);
|
|
131
131
|
/** Callbacks which are triggered after a statement has been added to the store */
|
|
132
|
-
_defineProperty(this, "dataCallbacks",
|
|
132
|
+
_defineProperty(this, "dataCallbacks", []);
|
|
133
|
+
/** Callbacks which are triggered after a statement has been removed from the store */
|
|
134
|
+
_defineProperty(this, "dataRemovalCallbacks", []);
|
|
133
135
|
this.propertyActions = {};
|
|
134
136
|
this.classActions = {};
|
|
135
137
|
this.redirections = [];
|
|
@@ -151,6 +153,9 @@ export default class IndexedFormula extends Formula {
|
|
|
151
153
|
if (opts.dataCallback) {
|
|
152
154
|
this.dataCallbacks = [opts.dataCallback];
|
|
153
155
|
}
|
|
156
|
+
if (opts.dataRemovalCallback) {
|
|
157
|
+
this.dataRemovalCallbacks = [opts.dataRemovalCallback];
|
|
158
|
+
}
|
|
154
159
|
this.initPropertyActions(this.features);
|
|
155
160
|
}
|
|
156
161
|
|
|
@@ -179,11 +184,11 @@ export default class IndexedFormula extends Formula {
|
|
|
179
184
|
* @param cb
|
|
180
185
|
*/
|
|
181
186
|
addDataCallback(cb) {
|
|
182
|
-
if (!this.dataCallbacks) {
|
|
183
|
-
this.dataCallbacks = [];
|
|
184
|
-
}
|
|
185
187
|
this.dataCallbacks.push(cb);
|
|
186
188
|
}
|
|
189
|
+
addDataRemovalCallback(cb) {
|
|
190
|
+
this.dataRemovalCallbacks.push(cb);
|
|
191
|
+
}
|
|
187
192
|
|
|
188
193
|
/**
|
|
189
194
|
* Apply a set of statements to be deleted and to be inserted
|
|
@@ -397,10 +402,8 @@ export default class IndexedFormula extends Formula {
|
|
|
397
402
|
|
|
398
403
|
// log.debug("ADDING {"+subj+" "+pred+" "+objNode+"} "+why)
|
|
399
404
|
this.statements.push(st);
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
callback(st);
|
|
403
|
-
}
|
|
405
|
+
for (const callback of this.dataCallbacks) {
|
|
406
|
+
callback(st);
|
|
404
407
|
}
|
|
405
408
|
return st;
|
|
406
409
|
}
|
|
@@ -850,6 +853,9 @@ export default class IndexedFormula extends Formula {
|
|
|
850
853
|
}
|
|
851
854
|
}
|
|
852
855
|
this.rdfArrayRemove(this.statements, st);
|
|
856
|
+
for (const callback of this.dataRemovalCallbacks) {
|
|
857
|
+
callback(st);
|
|
858
|
+
}
|
|
853
859
|
return this;
|
|
854
860
|
}
|
|
855
861
|
|
package/lib/fetcher.js
CHANGED
|
@@ -22,8 +22,7 @@ var _crossFetch = _interopRequireWildcard(require("cross-fetch"));
|
|
|
22
22
|
var _types = require("./types");
|
|
23
23
|
var _termValue = require("./utils/termValue");
|
|
24
24
|
var _jsonldparser = _interopRequireDefault(require("./jsonldparser"));
|
|
25
|
-
function
|
|
26
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
25
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
27
26
|
/* global $SolidTestEnvironment */
|
|
28
27
|
/**
|
|
29
28
|
*
|
|
@@ -152,7 +151,9 @@ class XHTMLHandler extends Handler {
|
|
|
152
151
|
return 'XHTMLHandler';
|
|
153
152
|
}
|
|
154
153
|
static register(fetcher) {
|
|
155
|
-
fetcher.mediatypes[_types.XHTMLContentType] = {
|
|
154
|
+
fetcher.mediatypes[_types.XHTMLContentType] = {
|
|
155
|
+
'q': 0.8
|
|
156
|
+
};
|
|
156
157
|
}
|
|
157
158
|
parse(fetcher, responseText, options) {
|
|
158
159
|
let relation, reverse;
|
|
@@ -285,7 +286,7 @@ class HTMLHandler extends Handler {
|
|
|
285
286
|
}
|
|
286
287
|
static register(fetcher) {
|
|
287
288
|
fetcher.mediatypes['text/html'] = {
|
|
288
|
-
'q': 0.
|
|
289
|
+
'q': 0.8
|
|
289
290
|
};
|
|
290
291
|
}
|
|
291
292
|
parse(fetcher, responseText, options) {
|
|
@@ -334,21 +335,19 @@ class JsonLdHandler extends Handler {
|
|
|
334
335
|
'q': 0.9
|
|
335
336
|
};
|
|
336
337
|
}
|
|
337
|
-
parse(fetcher, responseText, options, response) {
|
|
338
|
+
async parse(fetcher, responseText, options, response) {
|
|
338
339
|
const kb = fetcher.store;
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
});
|
|
340
|
+
try {
|
|
341
|
+
await (0, _jsonldparser.default)(responseText, kb, options.original.value);
|
|
342
|
+
fetcher.store.add(options.original, ns.rdf('type'), ns.link('RDFDocument'), fetcher.appNode);
|
|
343
|
+
return fetcher.doneFetch(options, response);
|
|
344
|
+
} catch (err) {
|
|
345
|
+
const msg = 'Error trying to parse ' + options.resource + ' as JSON-LD:\n' + err; // not err.stack -- irrelevant
|
|
346
|
+
return fetcher.failFetch(options, msg, 'parse_error', response);
|
|
347
|
+
}
|
|
349
348
|
}
|
|
350
349
|
}
|
|
351
|
-
JsonLdHandler.pattern = /application\/ld\+json/;
|
|
350
|
+
JsonLdHandler.pattern = /application\/(ld\+json|activity\+json)/;
|
|
352
351
|
class TextHandler extends Handler {
|
|
353
352
|
static toString() {
|
|
354
353
|
return 'TextHandler';
|
|
@@ -386,17 +385,8 @@ class N3Handler extends Handler {
|
|
|
386
385
|
return 'N3Handler';
|
|
387
386
|
}
|
|
388
387
|
static register(fetcher) {
|
|
389
|
-
fetcher.mediatypes['text/n3'] = {
|
|
390
|
-
|
|
391
|
-
}; // as per 2008 spec
|
|
392
|
-
/*
|
|
393
|
-
fetcher.mediatypes['application/x-turtle'] = {
|
|
394
|
-
'q': 1.0
|
|
395
|
-
} // pre 2008
|
|
396
|
-
*/
|
|
397
|
-
fetcher.mediatypes['text/turtle'] = {
|
|
398
|
-
'q': 1.0
|
|
399
|
-
}; // post 2008
|
|
388
|
+
fetcher.mediatypes['text/n3'] = {};
|
|
389
|
+
fetcher.mediatypes['text/turtle'] = {};
|
|
400
390
|
}
|
|
401
391
|
parse(fetcher, responseText, options, response) {
|
|
402
392
|
// Parse the text of this N3 file
|
|
@@ -746,7 +736,7 @@ class Fetcher {
|
|
|
746
736
|
options.baseURI = options.baseURI || uri; // Preserve though proxying etc
|
|
747
737
|
options.original = kb.rdfFactory.namedNode(options.baseURI);
|
|
748
738
|
options.req = kb.bnode();
|
|
749
|
-
options.headers = options.headers ||
|
|
739
|
+
options.headers = options.headers || {};
|
|
750
740
|
if (options.contentType) {
|
|
751
741
|
// @ts-ignore
|
|
752
742
|
options.headers['content-type'] = options.contentType;
|
package/lib/formula.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import BlankNode from './blank-node';
|
|
|
12
12
|
import NamedNode from './named-node';
|
|
13
13
|
export interface FormulaOpts {
|
|
14
14
|
dataCallback?: (q: Quad) => void;
|
|
15
|
+
dataRemovalCallback?: (q: Quad) => void;
|
|
15
16
|
rdfArrayRemove?: (arr: Quad[], q: Quad) => void;
|
|
16
17
|
rdfFactory?: RdfJsDataFactory;
|
|
17
18
|
}
|
package/lib/index.js
CHANGED
|
@@ -290,8 +290,7 @@ Object.keys(_terms).forEach(function (key) {
|
|
|
290
290
|
});
|
|
291
291
|
});
|
|
292
292
|
var _termValue = require("./utils/termValue");
|
|
293
|
-
function
|
|
294
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
293
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
295
294
|
// Prepare bound versions of data factory methods for export
|
|
296
295
|
const boundDataFactory = {};
|
|
297
296
|
for (const name in _rdflibDataFactory.default) {
|
package/lib/jsonldparser.d.ts
CHANGED
|
@@ -10,4 +10,4 @@ export function jsonldObjectToTerm(kb: any, obj: any): Literal | NamedNode | Bla
|
|
|
10
10
|
*
|
|
11
11
|
* Ensure that {kb.rdfFactory} is a DataFactory.
|
|
12
12
|
*/
|
|
13
|
-
export default function jsonldParser(str: any, kb: any, base: any
|
|
13
|
+
export default function jsonldParser(str: any, kb: any, base: any): Promise<any>;
|
package/lib/jsonldparser.js
CHANGED
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = jsonldParser;
|
|
7
7
|
exports.jsonldObjectToTerm = jsonldObjectToTerm;
|
|
8
8
|
var _utils = require("./utils");
|
|
9
|
-
function
|
|
10
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
10
|
/**
|
|
12
11
|
* Parses json-ld formatted JS objects to a rdf Term.
|
|
13
12
|
* @param kb - The DataFactory to use.
|
|
@@ -61,16 +60,15 @@ function listToCollection(kb, obj) {
|
|
|
61
60
|
*
|
|
62
61
|
* Ensure that {kb.rdfFactory} is a DataFactory.
|
|
63
62
|
*/
|
|
64
|
-
function jsonldParser(str, kb, base
|
|
63
|
+
async function jsonldParser(str, kb, base) {
|
|
65
64
|
const baseString = base && Object.prototype.hasOwnProperty.call(base, 'termType') ? base.value : base;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}, kb)).then(callback).catch(callback);
|
|
65
|
+
const jsonld = await Promise.resolve().then(() => _interopRequireWildcard(require('jsonld')));
|
|
66
|
+
// ⚠ Unit tests also work without accessing `jsonld.default` explicitly, but real browser usage will fail with
|
|
67
|
+
// just calling `jsonld.flatten`, so please do not remove `default`
|
|
68
|
+
const flattened = await jsonld.default.flatten(JSON.parse(str), null, {
|
|
69
|
+
base: baseString
|
|
70
|
+
});
|
|
71
|
+
return flattened.reduce((store, flatResource) => processResource(store, base, flatResource), kb);
|
|
74
72
|
}
|
|
75
73
|
function nodeType(kb, obj) {
|
|
76
74
|
if (obj['@id'].startsWith('_:')) {
|
package/lib/literal.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export default class Literal extends Node implements TFLiteral {
|
|
|
33
33
|
* Gets whether two literals are the same
|
|
34
34
|
* @param other The other statement
|
|
35
35
|
*/
|
|
36
|
-
equals(other: Term): boolean;
|
|
36
|
+
equals(other: Term | null | undefined): boolean;
|
|
37
37
|
/**
|
|
38
38
|
* The language for the literal
|
|
39
39
|
* @deprecated use {language} instead
|
package/lib/n3parser.js
CHANGED
|
@@ -7,8 +7,7 @@ exports.default = exports.SinkParser = void 0;
|
|
|
7
7
|
var Uri = _interopRequireWildcard(require("./uri"));
|
|
8
8
|
var _utils = require("./utils");
|
|
9
9
|
var _lists = require("./lists");
|
|
10
|
-
function
|
|
11
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
11
|
/**
|
|
13
12
|
*
|
|
14
13
|
* UTF-8 data encode / decode
|
|
@@ -192,9 +191,19 @@ var ws = new RegExp("^[ \\t]*", 'g');
|
|
|
192
191
|
var signed_integer = new RegExp("^[-+]?[0-9]+", 'g');
|
|
193
192
|
var number_syntax = new RegExp("^([-+]?[0-9]+)(\\.[0-9]+)?([eE][-+]?[0-9]+)?", 'g');
|
|
194
193
|
var datetime_syntax = new RegExp('^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9](T[0-9][0-9]:[0-9][0-9](:[0-9][0-9](\\.[0-9]*)?)?)?Z?');
|
|
194
|
+
|
|
195
|
+
// Reused in tight loops to detect whitespace or comment after a dot
|
|
196
|
+
var wsOrHash = new RegExp("[\\s#]");
|
|
195
197
|
var digitstring = new RegExp("^[0-9]+", 'g');
|
|
196
198
|
var interesting = new RegExp("[\\\\\\r\\n\\\"]", 'g');
|
|
197
199
|
var langcode = new RegExp("^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*", 'g');
|
|
200
|
+
|
|
201
|
+
// Returns true when a dot at position i should terminate a name,
|
|
202
|
+
// i.e., when the next character is whitespace, a comment start, or EOF
|
|
203
|
+
function dotTerminatesName(str, i) {
|
|
204
|
+
var next = str.charAt(i + 1);
|
|
205
|
+
return next === '' || wsOrHash.test(next);
|
|
206
|
+
}
|
|
198
207
|
function createSinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why) {
|
|
199
208
|
return new SinkParser(store, openFormula, thisDoc, baseURI, genPrefix, metaURI, flags, why);
|
|
200
209
|
}
|
|
@@ -683,6 +692,16 @@ class SinkParser {
|
|
|
683
692
|
if (j < 0) {
|
|
684
693
|
throw BadSyntax(this._thisDoc, this.lines, str, i, "EOF when ']' expected after [ <propertyList>");
|
|
685
694
|
}
|
|
695
|
+
if (str.slice(j, j + 1) == ".") {
|
|
696
|
+
// If a dot is found after a blank node, treat it as a statement terminator.
|
|
697
|
+
// Do NOT consume the '.' here: statement terminators are handled centrally by
|
|
698
|
+
// checkDot() (called by directiveOrStatement after statement()). Consuming the dot
|
|
699
|
+
// locally would bypass that unified logic and could cause inconsistencies.
|
|
700
|
+
// We do consume ']' below because it is a structural closer of the blank node,
|
|
701
|
+
// not a statement terminator.
|
|
702
|
+
res.push(subj);
|
|
703
|
+
return j; // leave '.' for checkDot()
|
|
704
|
+
}
|
|
686
705
|
if (str.slice(j, j + 1) != "]") {
|
|
687
706
|
throw BadSyntax(this._thisDoc, this.lines, str, j, "']' expected");
|
|
688
707
|
}
|
|
@@ -1131,7 +1150,17 @@ class SinkParser {
|
|
|
1131
1150
|
return -1;
|
|
1132
1151
|
}
|
|
1133
1152
|
var i = j;
|
|
1134
|
-
while (i < pyjslib_len(str)
|
|
1153
|
+
while (i < pyjslib_len(str)) {
|
|
1154
|
+
var c = str.charAt(i);
|
|
1155
|
+
if (c === '.') {
|
|
1156
|
+
if (dotTerminatesName(str, i)) {
|
|
1157
|
+
break; // treat as statement terminator, not part of name
|
|
1158
|
+
}
|
|
1159
|
+
// else: accept '.' as part of name
|
|
1160
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1161
|
+
// Other invalid characters terminate the name
|
|
1162
|
+
break;
|
|
1163
|
+
}
|
|
1135
1164
|
var i = i + 1;
|
|
1136
1165
|
}
|
|
1137
1166
|
res.push(str.slice(j, i));
|
|
@@ -1157,12 +1186,15 @@ class SinkParser {
|
|
|
1157
1186
|
var i = i + 1;
|
|
1158
1187
|
while (i < pyjslib_len(str)) {
|
|
1159
1188
|
var c = str.charAt(i);
|
|
1160
|
-
if (
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1189
|
+
if (c === '.') {
|
|
1190
|
+
if (dotTerminatesName(str, i)) {
|
|
1191
|
+
break; // dot ends the name here
|
|
1192
|
+
}
|
|
1193
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1164
1194
|
break;
|
|
1165
1195
|
}
|
|
1196
|
+
var ln = ln + c;
|
|
1197
|
+
var i = i + 1;
|
|
1166
1198
|
}
|
|
1167
1199
|
} else {
|
|
1168
1200
|
var ln = "";
|
|
@@ -1173,12 +1205,15 @@ class SinkParser {
|
|
|
1173
1205
|
var ln = "";
|
|
1174
1206
|
while (i < pyjslib_len(str)) {
|
|
1175
1207
|
var c = str.charAt(i);
|
|
1176
|
-
if (
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1208
|
+
if (c === '.') {
|
|
1209
|
+
if (dotTerminatesName(str, i)) {
|
|
1210
|
+
break; // dot ends the name here
|
|
1211
|
+
}
|
|
1212
|
+
} else if (_notNameChars.indexOf(c) >= 0) {
|
|
1180
1213
|
break;
|
|
1181
1214
|
}
|
|
1215
|
+
var ln = ln + c;
|
|
1216
|
+
var i = i + 1;
|
|
1182
1217
|
}
|
|
1183
1218
|
res.push(new pyjslib_Tuple([pfx, ln]));
|
|
1184
1219
|
return i;
|
package/lib/node-internal.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export default abstract class Node {
|
|
|
33
33
|
* Compares whether the two nodes are equal
|
|
34
34
|
* @param other The other node
|
|
35
35
|
*/
|
|
36
|
-
equals(other: Term): boolean;
|
|
36
|
+
equals(other: Term | null | undefined): boolean;
|
|
37
37
|
/**
|
|
38
38
|
* Creates a hash for this node
|
|
39
39
|
* @deprecated use {rdfFactory.id} instead if possible
|
package/lib/parse.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ type CallbackFunc = (error: any, kb: Formula | null) => void;
|
|
|
5
5
|
* Parse a string and put the result into the graph kb.
|
|
6
6
|
* Normal method is sync.
|
|
7
7
|
* Unfortunately jsdonld is currently written to need to be called async.
|
|
8
|
-
*
|
|
8
|
+
* If you are parsing JSON-LD and want to know when and whether it succeeded, you need to use the callback param.
|
|
9
9
|
* @param str - The input string to parse
|
|
10
10
|
* @param kb - The store to use
|
|
11
11
|
* @param base - The base URI to use
|
package/lib/parse.js
CHANGED
|
@@ -14,8 +14,7 @@ var _rdfxmlparser = _interopRequireDefault(require("./rdfxmlparser"));
|
|
|
14
14
|
var _patchParser = _interopRequireDefault(require("./patch-parser"));
|
|
15
15
|
var Util = _interopRequireWildcard(require("./utils-js"));
|
|
16
16
|
var _types = require("./types");
|
|
17
|
-
function
|
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
18
|
// @ts-ignore is this injected?
|
|
20
19
|
// @@ Goal: remove this dependency
|
|
21
20
|
|
|
@@ -23,7 +22,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
23
22
|
* Parse a string and put the result into the graph kb.
|
|
24
23
|
* Normal method is sync.
|
|
25
24
|
* Unfortunately jsdonld is currently written to need to be called async.
|
|
26
|
-
*
|
|
25
|
+
* If you are parsing JSON-LD and want to know when and whether it succeeded, you need to use the callback param.
|
|
27
26
|
* @param str - The input string to parse
|
|
28
27
|
* @param kb - The store to use
|
|
29
28
|
* @param base - The base URI to use
|
|
@@ -59,7 +58,10 @@ function parse(str, kb, base) {
|
|
|
59
58
|
(0, _patchParser.default)(str, kb, base);
|
|
60
59
|
executeCallback();
|
|
61
60
|
} else if (contentType === _types.JSONLDContentType) {
|
|
62
|
-
|
|
61
|
+
// since we do not await the promise here, rejections will not be covered by the surrounding try catch
|
|
62
|
+
// we do not use await, because parse() should stay sync
|
|
63
|
+
// so, to not lose the async error, we need to catch the rejection and call the error callback here too
|
|
64
|
+
(0, _jsonldparser.default)(str, kb, base).then(executeCallback).catch(executeErrorCallback);
|
|
63
65
|
} else if (contentType === _types.NQuadsContentType || contentType === _types.NQuadsAltContentType) {
|
|
64
66
|
var n3Parser = new _n.Parser({
|
|
65
67
|
factory: _extendedTermFactory.default
|
package/lib/rdfaparser.js
CHANGED
|
@@ -11,8 +11,7 @@ var _namedNode = _interopRequireDefault(require("./named-node"));
|
|
|
11
11
|
var Uri = _interopRequireWildcard(require("./uri"));
|
|
12
12
|
var Util = _interopRequireWildcard(require("./utils-js"));
|
|
13
13
|
var _canonicalDataFactory = _interopRequireDefault(require("./factories/canonical-data-factory"));
|
|
14
|
-
function
|
|
15
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
15
|
// RDFa Parser for rdflib.js
|
|
17
16
|
|
|
18
17
|
// Originally by: Alex Milowski
|