n3 1.21.2 → 1.22.0

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.
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.Variable = exports.Triple = exports.Term = exports.Quad = exports.NamedNode = exports.Literal = exports.DefaultGraph = exports.BlankNode = void 0;
7
7
  exports.escapeQuotes = escapeQuotes;
8
+ exports.fromQuad = fromQuad;
9
+ exports.fromTerm = fromTerm;
8
10
  exports.termFromId = termFromId;
9
11
  exports.termToId = termToId;
10
12
  exports.unescapeQuotes = unescapeQuotes;
@@ -31,7 +33,9 @@ const DataFactory = {
31
33
  literal,
32
34
  defaultGraph,
33
35
  quad,
34
- triple: quad
36
+ triple: quad,
37
+ fromTerm,
38
+ fromQuad
35
39
  };
36
40
  var _default = exports.default = DataFactory; // ## Term constructor
37
41
  class Term {
@@ -366,4 +370,30 @@ function defaultGraph() {
366
370
  // ### Creates a quad
367
371
  function quad(subject, predicate, object, graph) {
368
372
  return new Quad(subject, predicate, object, graph);
373
+ }
374
+ function fromTerm(term) {
375
+ if (term instanceof Term) return term;
376
+
377
+ // Term instantiated with another library
378
+ switch (term.termType) {
379
+ case 'NamedNode':
380
+ return namedNode(term.value);
381
+ case 'BlankNode':
382
+ return blankNode(term.value);
383
+ case 'Variable':
384
+ return variable(term.value);
385
+ case 'DefaultGraph':
386
+ return DEFAULTGRAPH;
387
+ case 'Literal':
388
+ return literal(term.value, term.language || term.datatype);
389
+ case 'Quad':
390
+ return fromQuad(term);
391
+ default:
392
+ throw new Error(`Unexpected termType: ${term.termType}`);
393
+ }
394
+ }
395
+ function fromQuad(inQuad) {
396
+ if (inQuad instanceof Quad) return inQuad;
397
+ if (inQuad.termType !== 'Quad') throw new Error(`Unexpected termType: ${inQuad.termType}`);
398
+ return quad(fromTerm(inQuad.subject), fromTerm(inQuad.predicate), fromTerm(inQuad.object), fromTerm(inQuad.graph));
369
399
  }
package/lib/N3Store.js CHANGED
@@ -424,7 +424,7 @@ class N3Store {
424
424
  });
425
425
  const iterable = this.readQuads(subject, predicate, object, graph);
426
426
  stream._read = size => {
427
- while (size-- > 0) {
427
+ while (--size >= 0) {
428
428
  const {
429
429
  done,
430
430
  value
@@ -1055,7 +1055,7 @@ class DatasetCoreAndReadableStream extends _readableStream.Readable {
1055
1055
  _read(size) {
1056
1056
  if (size > 0 && !this[ITERATOR]) this[ITERATOR] = this[Symbol.iterator]();
1057
1057
  const iterable = this[ITERATOR];
1058
- while (size-- > 0) {
1058
+ while (--size >= 0) {
1059
1059
  const {
1060
1060
  done,
1061
1061
  value
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n3",
3
- "version": "1.21.2",
3
+ "version": "1.22.0",
4
4
  "description": "Lightning fast, asynchronous, streaming Turtle / N3 / RDF library.",
5
5
  "author": "Ruben Verborgh <ruben.verborgh@gmail.com>",
6
6
  "keywords": [
@@ -20,6 +20,8 @@ const DataFactory = {
20
20
  defaultGraph,
21
21
  quad,
22
22
  triple: quad,
23
+ fromTerm,
24
+ fromQuad,
23
25
  };
24
26
  export default DataFactory;
25
27
 
@@ -386,3 +388,29 @@ function defaultGraph() {
386
388
  function quad(subject, predicate, object, graph) {
387
389
  return new Quad(subject, predicate, object, graph);
388
390
  }
391
+
392
+ export function fromTerm(term) {
393
+ if (term instanceof Term)
394
+ return term;
395
+
396
+ // Term instantiated with another library
397
+ switch (term.termType) {
398
+ case 'NamedNode': return namedNode(term.value);
399
+ case 'BlankNode': return blankNode(term.value);
400
+ case 'Variable': return variable(term.value);
401
+ case 'DefaultGraph': return DEFAULTGRAPH;
402
+ case 'Literal': return literal(term.value, term.language || term.datatype);
403
+ case 'Quad': return fromQuad(term);
404
+ default: throw new Error(`Unexpected termType: ${term.termType}`);
405
+ }
406
+ }
407
+
408
+ export function fromQuad(inQuad) {
409
+ if (inQuad instanceof Quad)
410
+ return inQuad;
411
+
412
+ if (inQuad.termType !== 'Quad')
413
+ throw new Error(`Unexpected termType: ${inQuad.termType}`);
414
+
415
+ return quad(fromTerm(inQuad.subject), fromTerm(inQuad.predicate), fromTerm(inQuad.object), fromTerm(inQuad.graph));
416
+ }
package/src/N3Store.js CHANGED
@@ -430,7 +430,7 @@ export default class N3Store {
430
430
 
431
431
  const iterable = this.readQuads(subject, predicate, object, graph);
432
432
  stream._read = size => {
433
- while (size-- > 0) {
433
+ while (--size >= 0) {
434
434
  const { done, value } = iterable.next();
435
435
  if (done) {
436
436
  stream.push(null);
@@ -1097,7 +1097,7 @@ class DatasetCoreAndReadableStream extends Readable {
1097
1097
  if (size > 0 && !this[ITERATOR])
1098
1098
  this[ITERATOR] = this[Symbol.iterator]();
1099
1099
  const iterable = this[ITERATOR];
1100
- while (size-- > 0) {
1100
+ while (--size >= 0) {
1101
1101
  const { done, value } = iterable.next();
1102
1102
  if (done) {
1103
1103
  this.push(null);