meta-log-db
Version:
Native database package for Meta-Log (ProLog, DataLog, R5RS)
186 lines • 5.14 kB
TypeScript
/**
* CanvasL Metaverse Browser - Unified Browser API for CanvasL Operations
*
* Provides a unified interface for CanvasL metaverse browser functionality,
* consolidating implementations from template-projector and ui packages.
*
* Features:
* - CanvasL/JSONL file loading and parsing
* - ProLog, DataLog, SPARQL query execution
* - R5RS function execution
* - SHACL validation
* - CanvasL object execution (rdf-triple, r5rs-call, sparql-construct, etc.)
* - Browser-native with IndexedDB caching
*/
import type { MetaLogDbBrowser, BrowserConfig } from './database.js';
import type { Fact, Canvas, PrologQueryResult, DatalogQueryResult, SparqlQueryResult, ShaclValidationReport } from '../types/index.js';
/**
* Configuration for CanvasL Metaverse Browser
*/
export interface CanvasLBrowserConfig extends BrowserConfig {
enableEncryption?: boolean;
mnemonic?: string;
indexedDBName?: string;
cacheStrategy?: 'memory' | 'indexeddb' | 'both';
r5rsEngineURL?: string;
}
/**
* Options for CanvasL queries
*/
export interface CanvasLQueryOptions {
canvasFile?: string;
timeout?: number;
facts?: Fact[];
}
/**
* Result of CanvasL object execution
*/
export interface CanvasLExecutionResult {
type: string;
result?: any;
error?: string;
object?: any;
}
/**
* Unified CanvasL Metaverse Browser
*/
export declare class CanvasLMetaverseBrowser {
private db;
private initialized;
private initPromise;
private config;
constructor(config?: CanvasLBrowserConfig);
/**
* Initialize browser database
* Uses lazy initialization with promise-based pattern to prevent race conditions
*/
init(): Promise<void>;
private _doInit;
/**
* Load CanvasL/JSONL file from URL or path
* Standardized parameter order: path (identifier), url (optional fetch location)
*/
loadCanvas(path: string, url?: string): Promise<void>;
/**
* Parse JSONL canvas from URL without loading into database
*/
parseJsonlCanvas(path: string, url?: string): Promise<Canvas>;
/**
* Parse CanvasL file from URL without loading into database
*/
parseCanvasL(path: string, url?: string): Promise<Canvas>;
/**
* Extract facts from loaded canvas
*/
extractFacts(canvasFile?: string): Fact[];
/**
* Convert facts to RDF triples
*/
jsonlToRdf(facts?: Fact[]): any[];
/**
* Execute ProLog query
*/
prologQuery(query: string, options?: CanvasLQueryOptions): Promise<PrologQueryResult>;
/**
* Execute DataLog query
*/
datalogQuery(goal: string, program?: any, options?: CanvasLQueryOptions): Promise<DatalogQueryResult>;
/**
* Execute SPARQL query
*/
sparqlQuery(query: string, options?: CanvasLQueryOptions): Promise<SparqlQueryResult>;
/**
* Validate with SHACL
*/
validateShacl(shapes?: any, triples?: any[]): Promise<ShaclValidationReport>;
/**
* Execute R5RS function
*/
executeR5RS(functionName: string, args?: any[]): Promise<any>;
/**
* Get R5RS function (if available)
*/
getR5RSFunction(name: string): Promise<any>;
/**
* List R5RS functions
*/
listR5RSFunctions(pattern?: string): Promise<string[]>;
/**
* Invoke R5RS function (alias for executeR5RS)
*/
invokeR5RSFunction(name: string, args: any[], context?: any): Promise<any>;
/**
* Add ProLog rule
*/
addPrologRule(rule: string): void;
/**
* Add DataLog rule
*/
addDatalogRule(rule: string): void;
/**
* Store RDF triples
*/
storeTriples(triples: any[]): void;
/**
* Add ProLog facts
*/
addPrologFacts(facts: Fact[]): void;
/**
* Add DataLog facts
*/
addDatalogFacts(facts: Fact[]): void;
/**
* Clear all data
*/
clear(): Promise<void>;
/**
* Check if browser is initialized
*/
isInitialized(): boolean;
/**
* Get the underlying database instance (for advanced usage)
*/
getDb(): MetaLogDbBrowser | null;
/**
* Execute a CanvasL object
* Supports: rdf-triple, r5rs-call, sparql-construct, prolog-query, datalog-query, shacl-validate, slide
*/
executeCanvasLObject(obj: any): Promise<CanvasLExecutionResult>;
/**
* Execute RDF triple
*/
private executeRdfTriple;
/**
* Execute R5RS function call
*/
private executeR5RSCall;
/**
* Execute SPARQL CONSTRUCT query
*/
private executeSparqlConstruct;
/**
* Execute ProLog query
*/
private executePrologQuery;
/**
* Execute DataLog query
*/
private executeDatalogQuery;
/**
* Execute SHACL validation
*/
private executeShaclValidate;
/**
* Execute multiple CanvasL objects
*/
executeCanvasLObjects(objects: any[]): Promise<{
triples: any[];
slides: any[];
objects: Map<string, any>;
errors: Array<{
object: any;
error: string;
}>;
}>;
}
//# sourceMappingURL=canvasl-browser.d.ts.map