@comunica/actor-query-source-identify-hypermedia
Version:
A hypermedia query-source-identify actor
54 lines (53 loc) • 3.18 kB
TypeScript
import type { MediatorQuerySourceDereferenceLink } from '@comunica/bus-query-source-dereference-link';
import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';
import type { MediatorRdfResolveHypermediaLinks } from '@comunica/bus-rdf-resolve-hypermedia-links';
import type { MediatorRdfResolveHypermediaLinksQueue } from '@comunica/bus-rdf-resolve-hypermedia-links-queue';
import type { BindingsStream, ComunicaDataFactory, FragmentSelectorShape, IActionContext, IQueryBindingsOptions, IQuerySource, ILink } from '@comunica/types';
import type { Algebra } from '@comunica/utils-algebra';
import type { BindingsFactory } from '@comunica/utils-bindings-factory';
import type * as RDF from '@rdfjs/types';
import type { AsyncIterator } from 'asynciterator';
import { LRUCache } from 'lru-cache';
import type { ISourceState } from './LinkedRdfSourcesAsyncRdfIterator';
export declare class QuerySourceHypermedia implements IQuerySource {
readonly referenceValue: string;
readonly firstLink: ILink;
readonly mediators: IMediatorArgs;
readonly dataFactory: ComunicaDataFactory;
readonly bindingsFactory: BindingsFactory;
/**
* A cache for source URLs to source states.
*/
sourcesState: LRUCache<string, Promise<ISourceState>>;
private readonly cacheSize;
private readonly maxIterators;
constructor(cacheSize: number, firstUrl: ILink, maxIterators: number, mediators: IMediatorArgs, dataFactory: ComunicaDataFactory, bindingsFactory: BindingsFactory);
getSelectorShape(context: IActionContext): Promise<FragmentSelectorShape>;
getFilterFactor(context: IActionContext): Promise<number>;
queryBindings(operation: Algebra.Operation, context: IActionContext, options?: IQueryBindingsOptions): BindingsStream;
queryQuads(operation: Algebra.Operation, context: IActionContext): AsyncIterator<RDF.Quad>;
queryBoolean(operation: Algebra.Ask, context: IActionContext): Promise<boolean>;
queryVoid(operation: Algebra.Operation, context: IActionContext): Promise<void>;
/**
* Resolve a source for the given URL.
* @param link A source link.
* @param handledDatasets A hash of dataset identifiers that have already been handled.
* @param context The action context.
*/
getSource(link: ILink, handledDatasets: Record<string, boolean>, context: IActionContext): Promise<ISourceState>;
/**
* Resolve a source for the given URL.
* This will first try to retrieve the source from cache.
* @param link A source ILink.
* @param handledDatasets A hash of dataset identifiers that have already been handled.
* @param context The action context.
*/
getSourceCached(link: ILink, handledDatasets: Record<string, boolean>, context: IActionContext): Promise<ISourceState>;
toString(): string;
}
export interface IMediatorArgs {
mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;
mediatorQuerySourceDereferenceLink: MediatorQuerySourceDereferenceLink;
mediatorRdfResolveHypermediaLinks: MediatorRdfResolveHypermediaLinks;
mediatorRdfResolveHypermediaLinksQueue: MediatorRdfResolveHypermediaLinksQueue;
}