UNPKG

@ontola/memoized-factory

Version:

RDF Factory with neat memory usage and good cpu performance.

59 lines (58 loc) 2.02 kB
import { BlankNode, Comparable, DataFactory, Indexable, Literal, NamedNode, PlainFactory, Quad, Quadruple } from "@ontologies/core"; export declare type AnyRDFObject = BlankNode | NamedNode | Literal | Quad | Quadruple; declare type SomeNode = BlankNode | NamedNode; interface MemoizedHashFactoryInternals { memoizationMap: { [k: string]: AnyRDFObject; }; } export interface DataFactoryArgs { bnIndex?: number; } /** * RDF DataFactory which stores every value once at most. * * This version uses hashing which might be more CPU consuming but has deterministic id creation. */ export declare class MemoizedHashFactory extends PlainFactory implements DataFactory<AnyRDFObject>, MemoizedHashFactoryInternals { static FactorySupport: { COLLECTIONS: boolean; DEFAULT_GRAPH_TYPE: boolean; EQUALS_METHOD: boolean; ID: boolean; ID_STAMP: boolean; IDENTITY: boolean; REVERSIBLE_ID: boolean; VARIABLE_TYPE: boolean; }; bnIndex: number; memoizationMap: { [k: string]: BlankNode | NamedNode | Literal | Quadruple; }; blankNodeMap: { [k: string]: BlankNode; }; namedNodeMap: { [k: string]: NamedNode; }; literalMap: { [k: string]: Literal; }; quadMap: { [k: string]: Quad; }; private readonly base; private index; constructor(opts?: DataFactoryArgs); blankNode(value?: string): BlankNode; namedNode(value: string): NamedNode; defaultGraph(): NamedNode; literal(value: string | unknown, languageOrDatatype?: string | NamedNode): Literal; quad(subject: NamedNode | BlankNode, predicate: NamedNode, object: BlankNode | NamedNode | Literal, graph?: SomeNode): Quad; equals(a: Comparable, b: Comparable): boolean; fromId(id: Indexable): BlankNode | NamedNode | Literal | Quad | Quadruple; id(term: AnyRDFObject): number; private mapId; } declare const _default: MemoizedHashFactory; export default _default;