meta-log-db
Version:
Native database package for Meta-Log (ProLog, DataLog, R5RS)
144 lines • 3.74 kB
TypeScript
/**
* Browser-Native Meta-Log Database
*
* Browser-specific implementation of MetaLogDb using browser file I/O and IndexedDB
*/
import { MetaLogDbConfig, Fact } from '../types/index.js';
import { BrowserFileIO } from './io.js';
import { IndexedDBStorage } from './indexeddb-storage.js';
import { ChainComplex, HomologyResult } from '../extensions/homology/index.js';
export interface BrowserConfig extends MetaLogDbConfig {
enableEncryption?: boolean;
mnemonic?: string;
indexedDBName?: string;
cacheStrategy?: 'memory' | 'indexeddb' | 'both';
r5rsEngineURL?: string;
enableHomology?: boolean;
enableMetaLogNode?: boolean;
enableProjectiveAffine?: boolean;
enableDAG?: boolean;
enableOrgMode?: boolean;
}
/**
* Browser-Native Meta-Log Database
*/
export declare class MetaLogDbBrowser {
private prolog?;
private datalog?;
private r5rs?;
private jsonl;
private rdf?;
private shacl?;
private config;
private fileIO;
private storage;
private initialized;
constructor(config?: BrowserConfig);
/**
* Initialize browser database (async initialization)
*/
init(): Promise<void>;
/**
* Load R5RS engine from URL or IndexedDB
*/
loadR5RSEngine(pathOrURL: string): Promise<void>;
/**
* Load canvas file (JSONL or CanvasL) from URL or IndexedDB
*/
loadCanvas(path: string, url?: string): Promise<void>;
/**
* Parse JSONL canvas
*/
parseJsonlCanvas(path: string, url?: string): Promise<any>;
/**
* Parse CanvasL file
*/
parseCanvasL(path: string, url?: string): Promise<any>;
/**
* Extract facts from canvas
*/
extractFactsFromCanvas(canvas: any): Fact[];
/**
* Extract facts
*/
extractFacts(): Fact[];
/**
* Convert JSONL facts to RDF
*/
jsonlToRdf(facts?: Fact[]): any[];
/**
* Execute ProLog query
*/
prologQuery(query: string): Promise<any>;
/**
* Build ProLog database from facts
*/
buildPrologDb(facts: Fact[]): void;
/**
* Add ProLog rule
*/
addPrologRule(rule: string): void;
/**
* Execute DataLog query
*/
datalogQuery(query: string, program?: any): Promise<any>;
/**
* Build DataLog program
*/
buildDatalogProgram(rules: string[]): any;
/**
* Execute SPARQL query
*/
sparqlQuery(query: string): Promise<any>;
/**
* Store RDF triples
*/
storeTriples(triples: any[]): void;
/**
* RDFS entailment
*/
rdfsEntailment(triples: any[]): any[];
/**
* Load SHACL shapes from URL or IndexedDB
*/
loadShaclShapes(path: string, url?: string): Promise<any>;
/**
* Validate SHACL
*/
validateShacl(shapes?: any, triples?: any): Promise<any>;
/**
* Execute R5RS function
*/
executeR5RS(functionName: string, args: any[]): Promise<any>;
/**
* Register R5RS function
*/
registerR5RSFunction(name: string, fn: Function): void;
/**
* Get configuration
*/
getConfig(): BrowserConfig;
/**
* Get file I/O instance
*/
getFileIO(): BrowserFileIO;
/**
* Get IndexedDB storage instance
*/
getStorage(): IndexedDBStorage;
/**
* Clear cache
*/
clearCache(): Promise<void>;
/**
* Validate homology of chain complex
* Requires enableHomology: true in config
*/
validateHomology(complex: ChainComplex): HomologyResult;
/**
* Compute Betti number for dimension n
* Requires enableHomology: true in config
*/
computeBetti(complex: ChainComplex, n: number): number;
}
//# sourceMappingURL=database.d.ts.map