@graphy/content.nt.scan
Advanced tools
Changelog
v4.3.4 (2023-10-26)
Fixed DatasetFactory adoption.
@graphy/core.data.factory
- Fixed a bug that was not correctly patching an adopted DatasetFactory with XSD-specific literal methods.Changelog
v4.3.3 (2020-09-08)
Fixed handling of prefixes in XML Scriber.
@graphy/content.xml.sribe
- Patched bug in XML Scriber when serializing prefixes that could lead to an infinite loop. Also, now prevents user from serializing any namespace beginning with 'xml' as these are reserved namespaces.uri-js
.Changelog
v4.3.2 (2020-08-28)
Dependency upgrades and RDFJS compatibility fixes.
uuid
..import
method returning the wrong stream.Changelog
v4.3.1 (2020-08-27)
Fixed XML Scriber normalizing quads from other libs.
@graphy/content.xml.scribe
- XML Scriber now normalizes quad-like objects before serializing.Changelog
v4.3.0 (2020-08-22)
Added .directives
option to writers.
.directives
option to writers.Changelog
v4.2.1 (2020-05-05)
Removed an unused dependency that could interfere with the installation on some platforms.
worker
.Changelog
v4.2.0 (2020-04-20)
This update adds experimental multithreaded reading for N-Triples and N-Quads, called 'Scanners': @graphy/content.nt.scan
and @graphy/content.nq.scan
. These are deserializers that take a single input stream and read it across multiple workers in parallel, allowing users to take advantage of multiprocessor systems.
@graphy/content.nt.scan
and@graphy/content.nq.scan
are experimental; they have limited test case coverage in node.js and have not been tested in the browser.
How it works:
The main thread populates sections of a preallocated SharedArrayBuffer
with chunks copied from the input stream data and allows workers to claim each slot on a first-come-first-serve basis (synchronized using Atomics
). For each chunk of input data, the main thread handles reading the leading and trailing fragments that belong to RDF statements spanning across chunk boundaries. Communication about data exchange is done mostly through unidirectional byte indicators on SharedArrayBuffer
, with occassional help and synchronization from Atomics
when necessary. Error handling and gathering of results is done using message passing, i.e., postMessage
, which accepts transferable objects when passing large amounts of data.
How its used:
Similar to map/reduce, you must provide some code that will be run on each thread to create the reader instance and send updates or submit the final result(s) back to the main thread. Set the .run
property on the config object passed to the constructor, it will be eval
'd on both the main thread and each of the workers (eval
is necessary to allow access to global context, such as require
, while providing consistent behavior across node.js and browser). Tasks are therefore intended only for running trusted code. See scan verb documentation for more information.