/** * LDP Execution Strategy * * Implements ExecutionStrategy for LDP mode. * - SELECT: Uses Comunica to query RDF resources * - INSERT/UPDATE/DELETE: Uses N3 Patch or PUT */ import type { PodTable } from '../schema'; import type { ComunicaSPARQLExecutor } from '../sparql-executor'; import type { ASTToSPARQLConverter } from '../ast-to-sparql'; import type { ResourceResolver } from '../resource-resolver'; import type { QueryCondition } from '../query-conditions'; import type { SelectQueryPlan } from '../select-plan'; import type { ExecutionStrategy, ExecutionResult, InsertQueryPlan, UpdateQueryPlan, DeleteQueryPlan } from './types'; import { LdpExecutor } from './ldp-executor'; export interface LdpStrategyDependencies { sparqlExecutor: ComunicaSPARQLExecutor; sparqlConverter: ASTToSPARQLConverter; fetchFn: typeof fetch; ldpExecutor: LdpExecutor; getResolver: (table: PodTable) => ResourceResolver; listContainerResources: (containerUrl: string) => Promise; findSubjectsForCondition: (condition: QueryCondition, table: PodTable, resourceUrl: string) => Promise; } export declare class LdpStrategy implements ExecutionStrategy { readonly mode: "ldp"; private sparqlExecutor; private sparqlConverter; private fetchFn; private ldpExecutor; private getResolver; private listContainerResources; private findSubjectsForCondition; constructor(deps: LdpStrategyDependencies); /** * Execute SELECT query in LDP mode * Uses ResourceResolver to determine which sources to query */ executeSelect(plan: SelectQueryPlan, containerUrl: string, _resourceUrl: string): Promise; /** * Execute INSERT operation in LDP mode */ executeInsert(plan: InsertQueryPlan, _containerUrl: string, resourceUrl: string): Promise; /** * Execute UPDATE operation in LDP mode */ executeUpdate(plan: UpdateQueryPlan, containerUrl: string, resourceUrl: string): Promise; /** * Execute DELETE operation in LDP mode */ executeDelete(plan: DeleteQueryPlan, containerUrl: string, resourceUrl: string): Promise; } //# sourceMappingURL=ldp-strategy.d.ts.map