/**
 * TypeScript type definitions for Ragatanga Ontology interactions
 * These types align with the server-side schema for ontology operations
 */
/**
 * Basic ontology entity interface
 */
interface OntologyEntity {
    uri: string;
    label?: string;
    comment?: string;
}
/**
 * Class representation in the ontology
 */
interface OntologyClass extends OntologyEntity {
    parentClasses?: string[];
    properties?: OntologyProperty[];
    instances?: OntologyInstance[];
}
/**
 * Property representation in the ontology
 */
interface OntologyProperty extends OntologyEntity {
    domain?: string;
    range?: string;
    propertyType: 'object' | 'datatype' | 'annotation';
}
/**
 * Instance representation in the ontology
 */
interface OntologyInstance extends OntologyEntity {
    classUri: string;
    properties?: Record<string, any[]>;
}
/**
 * Ontology statistics
 */
interface OntologyStats {
    classCount: number;
    propertyCount: number;
    instanceCount: number;
    tripleCount: number;
    lastModified: string;
}
/**
 * Pagination parameters for ontology requests
 */
interface OntologyPaginationParams {
    cursor?: string;
    limit?: number;
}
/**
 * Paginated response from ontology endpoints
 */
interface PaginatedOntologyResponse<T> {
    items: T[];
    totalCount: number;
    nextCursor?: string;
    hasMore: boolean;
}
/**
 * Parameters for querying a concept in the ontology
 */
interface QueryConceptParams {
    uri: string;
    depth?: number;
}
/**
 * Parameters for searching the ontology
 */
interface SearchConceptsParams {
    query: string;
    cursor?: string;
    limit?: number;
}
/**
 * Parameters for executing a SPARQL query
 */
interface ExecuteSparqlParams {
    query: string;
    includeNamespaces?: boolean;
}
/**
 * SPARQL query result formats
 */
interface SparqlResultRow {
    [key: string]: {
        type: 'uri' | 'literal' | 'bnode';
        value: string;
        datatype?: string;
        'xml:lang'?: string;
    };
}
interface SparqlQueryResult {
    head: {
        vars: string[];
    };
    results: {
        bindings: SparqlResultRow[];
    };
}
/**
 * Parameters for getting information about a class
 */
interface ClassInfoParams {
    classUri: string;
    includeInstances?: boolean;
    includeProperties?: boolean;
}
/**
 * Context specification for MCP context provider
 */
interface ContextSpec {
    type: string;
    source?: string;
    uri?: string;
    query?: string;
    parameters?: Record<string, any>;
}
/**
 * Context request for MCP context provider
 */
interface ContextRequest {
    specs: ContextSpec[];
    context?: Record<string, any>;
}
/**
 * Context response from MCP context provider
 */
interface ContextResponse {
    contexts: {
        spec: ContextSpec;
        content: any;
    }[];
}
/**
 * Parameters for modifying the ontology
 */
interface ModifyOntologyParams {
    operation: 'add_class' | 'add_property' | 'add_individual' | 'remove_entity' | 'update_entity' | 'save_changes';
    entityUri?: string;
    parameters?: {
        label?: string;
        comment?: string;
        parentClassUri?: string;
        propertyType?: 'object' | 'datatype' | 'annotation';
        domainUri?: string;
        rangeUri?: string;
        classUri?: string;
        properties?: Record<string, any[]>;
        cascade?: boolean;
        propertyUri?: string;
        newValues?: any[];
        replaceExisting?: boolean;
        outputFile?: string;
        format?: 'xml' | 'n3' | 'turtle' | 'json-ld';
    };
}
/**
 * Result of a modification operation
 */
interface ModificationResult {
    success: boolean;
    message: string;
    entityUri?: string;
}

export type { ClassInfoParams as C, ExecuteSparqlParams as E, ModifyOntologyParams as M, OntologyEntity as O, PaginatedOntologyResponse as P, QueryConceptParams as Q, SearchConceptsParams as S, OntologyClass as a, OntologyProperty as b, OntologyInstance as c, OntologyStats as d, OntologyPaginationParams as e, SparqlResultRow as f, SparqlQueryResult as g, ContextSpec as h, ContextRequest as i, ContextResponse as j, ModificationResult as k };
