Skip to main content

tensorlogic_adapters/
lib.rs

1//! Adapter utilities for the Tensorlogic ecosystem.
2//!
3//! **Version**: 0.1.0-beta.1 | **Status**: Production Ready
4//!
5//! This crate provides the bridge between logical expressions and tensor execution
6//! by managing symbol tables, domain hierarchies, and schema validation.
7//!
8//! # Overview
9//!
10//! `tensorlogic-adapters` offers a comprehensive system for managing the metadata
11//! and structure of logical systems compiled to tensor operations. It provides:
12//!
13//! - **Symbol tables** - Central registry for predicates, domains, and variables
14//! - **Domain hierarchies** - Type relationships with subtyping and inheritance
15//! - **Parametric types** - Generic domains like `List<T>`, `Option<T>`, `Map<K,V>`
16//! - **Predicate composition** - Define predicates in terms of other predicates
17//! - **Rich metadata** - Provenance tracking, documentation, version history
18//! - **Schema validation** - Completeness, consistency, and semantic checks
19//!
20//! # Quick Start
21//!
22//! ```rust
23//! use tensorlogic_adapters::{SymbolTable, DomainInfo, PredicateInfo};
24//!
25//! // Create a symbol table
26//! let mut table = SymbolTable::new();
27//!
28//! // Add a domain
29//! table.add_domain(DomainInfo::new("Person", 100)).unwrap();
30//!
31//! // Add a predicate
32//! let knows = PredicateInfo::new(
33//!     "knows",
34//!     vec!["Person".to_string(), "Person".to_string()]
35//! );
36//! table.add_predicate(knows).unwrap();
37//!
38//! // Bind a variable
39//! table.bind_variable("x", "Person").unwrap();
40//! ```
41//!
42//! # Features
43//!
44//! ## Domain Hierarchies
45//!
46//! Define type hierarchies with subtype relationships:
47//!
48//! ```rust
49//! use tensorlogic_adapters::DomainHierarchy;
50//!
51//! let mut hierarchy = DomainHierarchy::new();
52//! hierarchy.add_subtype("Student", "Person");
53//! hierarchy.add_subtype("Person", "Agent");
54//!
55//! assert!(hierarchy.is_subtype("Student", "Agent")); // Transitive
56//! ```
57//!
58//! ## Parametric Types
59//!
60//! Create generic domain types:
61//!
62//! ```rust
63//! use tensorlogic_adapters::{ParametricType, TypeParameter};
64//!
65//! let list_person = ParametricType::list(
66//!     TypeParameter::concrete("Person")
67//! );
68//! assert_eq!(list_person.to_string(), "List<Person>");
69//! ```
70//!
71//! ## Schema Validation
72//!
73//! Validate schemas for correctness:
74//!
75//! ```rust
76//! use tensorlogic_adapters::{SymbolTable, SchemaValidator, DomainInfo};
77//!
78//! let mut table = SymbolTable::new();
79//! table.add_domain(DomainInfo::new("Person", 100)).unwrap();
80//!
81//! let validator = SchemaValidator::new(&table);
82//! let report = validator.validate().unwrap();
83//!
84//! assert!(report.errors.is_empty());
85//! ```
86
87mod autocompletion;
88mod axis;
89mod builder;
90mod codegen;
91mod compact;
92mod compiler_integration;
93mod composition;
94mod computed;
95mod constraint;
96mod database;
97mod dependent;
98mod diff;
99mod domain;
100mod effects;
101mod embeddings;
102mod error;
103mod evolution;
104mod hierarchy;
105mod incremental_validation;
106mod lazy;
107mod learning;
108mod linear;
109mod locking;
110mod mask;
111mod merge_strategies;
112mod metadata;
113mod parametric;
114mod performance;
115mod predicate;
116mod product;
117mod query_cache;
118mod query_planner;
119mod recommendation;
120mod refinement;
121mod schema_analysis;
122mod signature_matcher;
123mod symbol_table;
124mod synchronization;
125mod utilities;
126mod validation;
127
128#[cfg(test)]
129mod tests;
130
131pub use autocompletion::{
132    AutoCompleter, AutoCompleterStats, DomainSuggestion, PredicateSuggestion, SuggestionSource,
133    VariableSuggestion,
134};
135pub use axis::AxisMetadata;
136pub use builder::SchemaBuilder;
137pub use codegen::{GraphQLCodegen, PythonCodegen, RustCodegen, TypeScriptCodegen};
138pub use compact::{CompactSchema, CompressionStats};
139pub use compiler_integration::{
140    AdvancedExportBundle, CompilerExport, CompilerExportAdvanced, CompilerExportBundle,
141    CompilerImport, CompleteExportBundle, SymbolTableSync, ValidationResult,
142};
143pub use composition::{CompositePredicate, CompositeRegistry, PredicateBody, PredicateTemplate};
144pub use computed::{ComputedDomain, ComputedDomainRegistry, DomainComputation};
145pub use constraint::{FunctionalDependency, PredicateConstraints, PredicateProperty, ValueRange};
146pub use database::{
147    DatabaseStats, MemoryDatabase, SchemaDatabase, SchemaDatabaseSQL, SchemaId, SchemaMetadata,
148    SchemaVersion,
149};
150
151#[cfg(feature = "sqlite")]
152pub use database::SQLiteDatabase;
153
154#[cfg(feature = "postgres")]
155pub use database::PostgreSQLDatabase;
156pub use diff::{
157    check_compatibility, compute_diff, merge_tables, CompatibilityLevel, DiffSummary,
158    DomainModification, PredicateModification, SchemaDiff, VariableModification,
159};
160pub use domain::DomainInfo;
161pub use embeddings::{
162    Embedding, EmbeddingWeights, SchemaEmbedder, SimilaritySearch, SimilarityStats, EMBEDDING_DIM,
163};
164pub use error::AdapterError;
165pub use hierarchy::DomainHierarchy;
166pub use lazy::{FileSchemaLoader, LazyLoadStats, LazySymbolTable, LoadStrategy, SchemaLoader};
167pub use learning::{
168    ConfidenceScore, DataSample, InferenceConfig, LearningStatistics, SchemaLearner,
169};
170pub use locking::{LockStats, LockWithTimeout, LockedSymbolTable, Transaction};
171pub use mask::DomainMask;
172pub use merge_strategies::{
173    DomainConflict, MergeConflictResolution, MergeReport, MergeResult, MergeStrategy,
174    PredicateConflict, SchemaMerger, VariableConflict,
175};
176pub use metadata::{
177    Documentation, Example, Metadata, Provenance, TagCategory, TagRegistry, VersionEntry,
178};
179pub use parametric::{BoundConstraint, ParametricType, TypeBound, TypeParameter};
180pub use performance::{CacheStats, LookupCache, MemoryStats, StringInterner};
181pub use predicate::PredicateInfo;
182pub use product::{ProductDomain, ProductDomainExt};
183pub use schema_analysis::{SchemaAnalyzer, SchemaIssue, SchemaRecommendations, SchemaStatistics};
184pub use signature_matcher::{MatcherStats, SignatureMatcher};
185pub use symbol_table::SymbolTable;
186pub use validation::{SchemaValidator, ValidationReport};
187
188// Re-export new modules (already declared above as mod)
189pub use evolution::{
190    BreakingChange, ChangeImpact, ChangeKind, CompatibilityReport, EvolutionAnalyzer,
191    MigrationPlan, MigrationStep, VersionBump,
192};
193pub use incremental_validation::{
194    AffectedComponents, Change, ChangeStats, ChangeTracker, ChangeType, DependencyGraph,
195    IncrementalValidationReport, IncrementalValidator, ValidationCache,
196};
197pub use query_cache::{
198    CacheConfig, CacheKey, CachedResult, QueryCache, QueryCacheStats, SymbolTableCache,
199};
200pub use query_planner::{
201    IndexStrategy, PredicatePattern, PredicateQuery, QueryPlan, QueryPlanner, QueryStatistics,
202};
203pub use recommendation::{
204    PatternMatcher, RecommendationContext, RecommendationStrategy, RecommenderStats,
205    SchemaRecommender, SchemaScore,
206};
207
208// Advanced Type System modules
209pub use dependent::{
210    patterns as dependent_patterns, DependentType, DependentTypeContext, DependentTypeRegistry,
211    DimConstraint, DimExpr, DimRelation,
212};
213pub use effects::{
214    infer_effects, Effect, EffectContext, EffectHandler, EffectRegistry, EffectRow, EffectSet,
215    EffectSignature,
216};
217pub use linear::{
218    LinearContext, LinearError, LinearKind, LinearStatistics, LinearType, LinearTypeRegistry,
219    Ownership, Resource,
220};
221pub use refinement::{
222    DependentRelation, RefinementContext, RefinementPredicate, RefinementRegistry, RefinementType,
223};
224pub use synchronization::{
225    ApplyResult, ConflictResolution, EventListener, InMemorySyncProtocol, NodeId, SyncChangeType,
226    SyncEvent, SyncProtocol, SyncStatistics, SynchronizationManager, VectorClock,
227};
228pub use utilities::{
229    BatchOperations, ConversionUtils, QueryUtils, StatisticsUtils, ValidationUtils,
230};