Product
Introducing SSO
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
rdf-streaming-store
Advanced tools
Changelog
Readme
A read-only RDF/JS store that allows parallel data lookup and insertion. It works in both JavaScript and TypeScript.
Concretely, this means that match()
calls happening before import()
calls, will still consider those triples that
are inserted later, which is done by keeping the response streams of match()
open.
Only when the end()
method is invoked, all response streams will close, and the StreamingStore will be considered
immutable.
WARNING: end()
MUST be called at some point, otherwise all match
streams will remain unended.
If using TypeScript, it is recommended to use this in conjunction with @rdfjs/types
.
$ npm install rdf-streaming-store
or
$ yarn add rdf-streaming-store
This package also works out-of-the-box in browsers via tools such as webpack and browserify.
A new StreamingStore
can be created as follows:
import { StreamingStore } from 'rdf-streaming-store';
const store = new StreamingStore();
Following the RDF/JS Sink interface,
new quads can be added using the import
method, which accepts a stream of quads:
const quad = require('rdf-quad');
const streamifyArray = require('streamify-array');
// Somehow create a quad stream
const quadStream = streamifyArray([
quad('s3', 'p3', 'o3'),
quad('s4', 'p4', 'o4'),
]);
// Import it into the store
store.import(quadStream);
After inserting your quads, you MUST call end()
to make sure that match
calls will end their response streams:
store.end();
After calling end()
, importing new quads is not allowed.
Following the RDF/JS Source interface,
quads can be found using the match
method, which returns a stream of quads:
import type * as RDF from '@rdfjs/types';
import { DataFactory } from 'rdf-data-factory';
const DF = new DataFactory();
const returnStream = store.match(undefined, DF.namedNode('p3'), DF.namedNode('o3'), undefined);
returnStream.on('data', (quad: RDF.Quad) => {
console.log(quad);
});
returnStream.on('error', (error) => {
console.log(error);
});
returnStream.on('end', () => {
console.log('Done!');
});
Note that the returnStream
will not end until the store.end()
has been invoked.
match()
can be called before import()
Since match()
calls will only end after calling end()
,
quads that are imported after initiating the match()
call,
can still be emitted in the created match()
stream.
const store = new StreamingStore();
const returnStream = store.match(undefined, DF.namedNode('p3'), DF.namedNode('o3'), undefined);
returnStream.on('data', (quad: RDF.Quad) => {
console.log(quad);
});
returnStream.on('end', () => {
console.log('Done!');
});
// At this stage, the store is empty, so no quads will be printed yet
// After importing some quads into the store, the s3-p3-o3 triple will be printed
store.import(streamifyArray([
quad('s3', 'p3', 'o3'),
quad('s4', 'p4', 'o4'),
]));
// After importing some more triples, another triple will be printed
store.import(streamifyArray([
quad('sOther', 'p3', 'o3'),
]));
// Since we mark the store as ended, the returnStream will print `Done!`
store.end();
This software is written by Maarten Vandenbrande and Ruben Taelman.
This code is released under the MIT license.
FAQs
A read-only RDF/JS store that allows parallel data lookup and insertion.
The npm package rdf-streaming-store receives a total of 851 weekly downloads. As such, rdf-streaming-store popularity was classified as not popular.
We found that rdf-streaming-store demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.