@bahulneel/rdflib
Version:
an RDF library for node.js. Suitable for client and server side.
63 lines (62 loc) • 3 kB
TypeScript
import Literal from '../literal';
import Statement from '../statement';
import NamedNode from '../named-node';
import BlankNode from '../blank-node';
import Variable from '../variable';
import { BlankNode as TFBlankNode, RdfJsDataFactory, Literal as TFLiteral, NamedNode as TFNamedNode, Quad, Term, Variable as TFVariable } from '../tf-types';
export declare type Comparable = Term | TFNamedNode | TFBlankNode | TFLiteral | Quad | undefined | null;
export declare type DefaultFactoryTypes = NamedNode | BlankNode | Literal | Variable | Statement;
export declare type Indexable = number | string;
export declare type Namespace = (term: string) => TFNamedNode;
/** A set of features that may be supported by a Data Factory */
export declare type SupportTable = Record<Feature, boolean>;
export declare type TFIDFactoryTypes = TFNamedNode | TFBlankNode | TFLiteral | Quad | TFVariable | Term;
export declare enum Feature {
/** Whether the factory supports termType:Collection terms */
collections = "COLLECTIONS",
/** Whether the factory supports termType:DefaultGraph terms */
defaultGraphType = "DEFAULT_GRAPH_TYPE",
/** Whether the factory supports equals on produced instances */
equalsMethod = "EQUALS_METHOD",
/** Whether the factory can create a unique idempotent identifier for the given term. */
id = "ID",
/**
* Whether the factory will return the same instance for subsequent calls.
* This implies `===`, which means methods like `indexOf` can be used.
*/
identity = "IDENTITY",
/** Whether the factory supports mapping ids back to instances (should adhere to the identity setting) */
reversibleId = "REVERSIBLE_ID",
/** Whether the factory supports termType:Variable terms */
variableType = "VARIABLE_TYPE"
}
/**
* Defines a DataFactory as used in rdflib, based on the RDF/JS: Data model specification,
* but with additional extensions
*
* bnIndex is optional but useful.
*/
export interface DataFactory<FactoryTypes = DefaultFactoryTypes, IndexType = Indexable> extends RdfJsDataFactory {
/**
* BlankNode index
* @private
*/
bnIndex?: number;
supports: SupportTable;
literal(value: string, languageOrDatatype?: string | TFNamedNode): Literal;
isQuad(obj: any): obj is Statement;
equals(a: Comparable, b: Comparable): boolean;
toNQ(term: Term | FactoryTypes): string;
quad(subject: Term, predicate: Term, object: Term, graph?: Term): Statement;
quadToNQ(term: Statement | Quad): string;
termToNQ(term: Term): string;
/**
* Generates a unique session-idempotent identifier for the given object.
*
* @example NQ serialization (reversible from value)
* @example MD5 hash of termType + value (irreversible from value, map needed)
*
* @return {Indexable} A unique value which must also be a valid JS object key type.
*/
id(obj: Term | FactoryTypes): IndexType;
}