Skip to main content

tensorlogic_adapters/
lib.rs

1//! Adapter utilities for the Tensorlogic ecosystem.
2//!
3//! **Version**: 0.1.0 | **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;
105pub mod hierarchy_viz;
106mod incremental_query;
107mod incremental_validation;
108mod lazy;
109mod learning;
110mod linear;
111mod locking;
112mod mask;
113mod merge_strategies;
114mod metadata;
115mod parametric;
116mod performance;
117mod predicate;
118mod product;
119mod query_cache;
120mod query_planner;
121mod recommendation;
122mod refinement;
123pub mod rule_deps;
124mod schema_analysis;
125mod schema_lint;
126pub mod schema_migration;
127mod signature_matcher;
128mod symbol_table;
129mod synchronization;
130mod utilities;
131mod validation;
132
133#[cfg(test)]
134mod tests;
135
136pub use autocompletion::{
137    AutoCompleter, AutoCompleterStats, DomainSuggestion, PredicateSuggestion, SuggestionSource,
138    VariableSuggestion,
139};
140pub use axis::AxisMetadata;
141pub use builder::SchemaBuilder;
142pub use codegen::{GraphQLCodegen, PythonCodegen, RustCodegen, TypeScriptCodegen};
143pub use compact::{CompactSchema, CompressionStats};
144pub use compiler_integration::{
145    AdvancedExportBundle, CompilerExport, CompilerExportAdvanced, CompilerExportBundle,
146    CompilerImport, CompleteExportBundle, SymbolTableSync, ValidationResult,
147};
148pub use composition::{CompositePredicate, CompositeRegistry, PredicateBody, PredicateTemplate};
149pub use computed::{ComputedDomain, ComputedDomainRegistry, DomainComputation};
150pub use constraint::{FunctionalDependency, PredicateConstraints, PredicateProperty, ValueRange};
151pub use database::{
152    DatabaseStats, MemoryDatabase, SchemaDatabase, SchemaDatabaseSQL, SchemaId, SchemaMetadata,
153    SchemaVersion,
154};
155
156#[cfg(feature = "sqlite")]
157pub use database::SQLiteDatabase;
158
159#[cfg(feature = "postgres")]
160pub use database::PostgreSQLDatabase;
161pub use diff::{
162    check_compatibility, compute_diff, merge_tables, CompatibilityLevel, DiffSummary,
163    DomainModification, PredicateModification, SchemaDiff, VariableModification,
164};
165pub use domain::DomainInfo;
166pub use embeddings::{
167    Embedding, EmbeddingWeights, SchemaEmbedder, SimilaritySearch, SimilarityStats, EMBEDDING_DIM,
168};
169pub use error::AdapterError;
170pub use hierarchy::DomainHierarchy;
171pub use lazy::{FileSchemaLoader, LazyLoadStats, LazySymbolTable, LoadStrategy, SchemaLoader};
172pub use learning::{
173    ConfidenceScore, DataSample, InferenceConfig, LearningStatistics, SchemaLearner,
174};
175pub use locking::{LockStats, LockWithTimeout, LockedSymbolTable, Transaction};
176pub use mask::DomainMask;
177pub use merge_strategies::{
178    DomainConflict, MergeConflictResolution, MergeReport, MergeResult, MergeStrategy,
179    PredicateConflict, SchemaMerger, VariableConflict,
180};
181pub use metadata::{
182    Documentation, Example, Metadata, Provenance, TagCategory, TagRegistry, VersionEntry,
183};
184pub use parametric::{BoundConstraint, ParametricType, TypeBound, TypeParameter};
185pub use performance::{CacheStats, LookupCache, MemoryStats, StringInterner};
186pub use predicate::PredicateInfo;
187pub use product::{ProductDomain, ProductDomainExt};
188pub use schema_analysis::{SchemaAnalyzer, SchemaIssue, SchemaRecommendations, SchemaStatistics};
189pub use schema_lint::{LintCode, LintIssue, LintResult, LintSeverity, LinterConfig, SchemaLinter};
190pub use signature_matcher::{MatcherStats, SignatureMatcher};
191pub use symbol_table::SymbolTable;
192pub use validation::{SchemaValidator, ValidationReport};
193
194// Re-export new modules (already declared above as mod)
195pub use evolution::{
196    BreakingChange, ChangeImpact, ChangeKind, CompatibilityReport, EvolutionAnalyzer,
197    MigrationPlan, MigrationStep, VersionBump,
198};
199pub use incremental_query::{
200    Atom, Edb, EvalStats, Fact, FactArg, Idb, IncrementalEvaluator, QueryError, Relation, Rule,
201    SemiNaiveEvaluator, Term,
202};
203pub use incremental_validation::{
204    AffectedComponents, Change, ChangeStats, ChangeTracker, ChangeType, DependencyGraph,
205    IncrementalValidationReport, IncrementalValidator, ValidationCache,
206};
207pub use query_cache::{
208    CacheConfig, CacheKey, CachedResult, QueryCache, QueryCacheStats, SymbolTableCache,
209};
210pub use query_planner::{
211    IndexStrategy, PredicatePattern, PredicateQuery, QueryPlan, QueryPlanner, QueryStatistics,
212};
213pub use recommendation::{
214    PatternMatcher, RecommendationContext, RecommendationStrategy, RecommenderStats,
215    SchemaRecommender, SchemaScore,
216};
217
218// Advanced Type System modules
219pub use dependent::{
220    patterns as dependent_patterns, DependentType, DependentTypeContext, DependentTypeRegistry,
221    DimConstraint, DimExpr, DimRelation,
222};
223pub use effects::{
224    infer_effects, Effect, EffectContext, EffectHandler, EffectRegistry, EffectRow, EffectSet,
225    EffectSignature,
226};
227pub use linear::{
228    LinearContext, LinearError, LinearKind, LinearStatistics, LinearType, LinearTypeRegistry,
229    Ownership, Resource,
230};
231pub use refinement::{
232    DependentRelation, RefinementContext, RefinementPredicate, RefinementRegistry, RefinementType,
233};
234pub use rule_deps::{
235    DepEdge, DepGraphStats, DepNode, RuleDependencyGraph, StratificationError, StratificationLayer,
236};
237pub use schema_migration::{
238    compute_migration, string_similarity, validate_plan, ChangeSeverity, MigrationConfig,
239    MigrationError, SchemaChange, SchemaMigrationPlan, SchemaMigrationStep, SchemaSnapshot,
240};
241pub use synchronization::{
242    ApplyResult, ConflictResolution, EventListener, InMemorySyncProtocol, NodeId, SyncChangeType,
243    SyncEvent, SyncProtocol, SyncStatistics, SynchronizationManager, VectorClock,
244};
245pub use utilities::{
246    BatchOperations, ConversionUtils, QueryUtils, StatisticsUtils, ValidationUtils,
247};