UNPKG

@rdfjs/types

Version:

Authoritative TypeScript typings for all RDF/JS specifications

205 lines (176 loc) 8.12 kB
/* Dataset Interfaces */ /* https://rdf.js.org/dataset-spec/ */ import { Quad, BaseQuad, Term } from './data-model'; import { Stream } from './stream'; export interface DatasetCore<OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad> { /** * A non-negative integer that specifies the number of quads in the set. */ readonly size: number; /** * Adds the specified quad to the dataset. * * Existing quads, as defined in `Quad.equals`, will be ignored. */ add(quad: InQuad): this; /** * Removes the specified quad from the dataset. */ delete(quad: InQuad): this; /** * Determines whether a dataset includes a certain quad. */ has(quad: InQuad): boolean; /** * Returns a new dataset that is comprised of all quads in the current instance matching the given arguments. * * The logic described in {@link https://rdf.js.org/dataset-spec/#quad-matching|Quad Matching} is applied for each * quad in this dataset to check if it should be included in the output dataset. * * This method always returns a new DatasetCore, even if that dataset contains no quads. * * Since a `DatasetCore` is an unordered set, the order of the quads within the returned sequence is arbitrary. * * @param subject The optional exact subject to match. * @param predicate The optional exact predicate to match. * @param object The optional exact object to match. * @param graph The optional exact graph to match. */ match(subject?: Term | null, predicate?: Term | null, object?: Term | null, graph?: Term | null): DatasetCore<OutQuad, InQuad>; [Symbol.iterator](): Iterator<OutQuad>; } export interface DatasetCoreFactory<OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad, D extends DatasetCore<OutQuad, InQuad> = DatasetCore<OutQuad, InQuad>> { /** * Returns a new dataset and imports all quads, if given. */ dataset(quads?: InQuad[]): D; } export interface Dataset<OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad> extends DatasetCore<OutQuad, InQuad> { /** * Imports the quads into this dataset. * * This method differs from `Dataset.union` in that it adds all `quads` to the current instance, rather than * combining `quads` and the current instance to create a new instance. */ addAll(quads: Dataset<InQuad>|InQuad[]): this; /** * Returns `true` if the current instance is a superset of the given dataset; differently put: if the given dataset * is a subset of, is contained in the current dataset. * * Blank Nodes will be normalized. */ contains(other: Dataset<InQuad>): boolean; /** * This method removes the quads in the current instance that match the given arguments. * * The logic described in {@link https://rdf.js.org/dataset-spec/#quad-matching|Quad Matching} is applied for each * quad in this dataset to select the quads which will be deleted. * * @param subject The optional exact subject to match. * @param predicate The optional exact predicate to match. * @param object The optional exact object to match. * @param graph The optional exact graph to match. */ deleteMatches(subject?: Term, predicate?: Term, object?: Term, graph?: Term): this; /** * Returns a new dataset that contains all quads from the current dataset, not included in the given dataset. */ difference(other: Dataset<InQuad>): Dataset<OutQuad, InQuad>; /** * Returns true if the current instance contains the same graph structure as the given dataset. * * Blank Nodes will be normalized. */ equals(other: Dataset<InQuad>): boolean; /** * Universal quantification method, tests whether every quad in the dataset passes the test implemented by the * provided `iteratee`. * * This method immediately returns boolean `false` once a quad that does not pass the test is found. * * This method always returns boolean `true` on an empty dataset. * * This method is aligned with `Array.prototype.every()` in ECMAScript-262. */ every(iteratee: (quad: OutQuad, dataset: this) => boolean): boolean; /** * Creates a new dataset with all the quads that pass the test implemented by the provided `iteratee`. * * This method is aligned with Array.prototype.filter() in ECMAScript-262. */ filter(iteratee: (quad: OutQuad, dataset: this) => boolean): Dataset<OutQuad, InQuad>; /** * Executes the provided `iteratee` once on each quad in the dataset. * * This method is aligned with `Array.prototype.forEach()` in ECMAScript-262. */ forEach(callback: (quad: OutQuad, dataset: this) => void): void; /** * Imports all quads from the given stream into the dataset. * * The stream events `end` and `error` are wrapped in a Promise. */ import(stream: Stream<InQuad>): Promise<this>; /** * Returns a new dataset containing alls quads from the current dataset that are also included in the given dataset. */ intersection(other: Dataset<InQuad>): Dataset<OutQuad, InQuad>; /** * Returns a new dataset containing all quads returned by applying `iteratee` to each quad in the current dataset. */ map(iteratee: (quad: OutQuad, dataset: Dataset<OutQuad>) => OutQuad): Dataset<OutQuad, InQuad>; /** * This method calls the `iteratee` on each `quad` of the `Dataset`. The first time the `iteratee` is called, the * `accumulator` value is the `initialValue` or, if not given, equals to the first quad of the `Dataset`. The return * value of the `iteratee` is used as `accumulator` value for the next calls. * * This method returns the return value of the last `iteratee` call. * * This method is aligned with `Array.prototype.reduce()` in ECMAScript-262. */ reduce<A = any>(callback: (accumulator: A, quad: OutQuad, dataset: this) => A, initialValue?: A): A; /** * Existential quantification method, tests whether some quads in the dataset pass the test implemented by the * provided `iteratee`. * * This method immediately returns boolean `true` once a quad that passes the test is found. * * This method is aligned with `Array.prototype.some()` in ECMAScript-262. */ some(iteratee: (quad: OutQuad, dataset: this) => boolean): boolean; /** * Returns the set of quads within the dataset as a host language native sequence, for example an `Array` in * ECMAScript-262. * * Since a `Dataset` is an unordered set, the order of the quads within the returned sequence is arbitrary. */ toArray(): OutQuad[]; /** * Returns an N-Quads string representation of the dataset, preprocessed with * {@link https://json-ld.github.io/normalization/spec/|RDF Dataset Normalization} algorithm. */ toCanonical(): string; /** * Returns a stream that contains all quads of the dataset. */ toStream(): Stream<OutQuad>; /** * Returns an N-Quads string representation of the dataset. * * No prior normalization is required, therefore the results for the same quads may vary depending on the `Dataset` * implementation. */ toString(): string; /** * Returns a new `Dataset` that is a concatenation of this dataset and the quads given as an argument. */ union(quads: Dataset<InQuad>): Dataset<OutQuad, InQuad>; match(subject?: Term | null, predicate?: Term | null, object?: Term | null, graph?: Term | null): Dataset<OutQuad, InQuad>; } export interface DatasetFactory<OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad, D extends Dataset<OutQuad, InQuad> = Dataset<OutQuad, InQuad>> extends DatasetCoreFactory<OutQuad, InQuad, D> { /** * Returns a new dataset and imports all quads, if given. */ dataset(quads?: Dataset<InQuad>|InQuad[]): D; }