sevensense_learning/
lib.rs

1//! # sevensense-learning
2//!
3//! Graph Neural Network (GNN) based learning and embedding refinement for 7sense.
4//!
5//! This crate provides:
6//! - GNN models (GCN, GraphSAGE, GAT) for graph-based learning
7//! - Embedding refinement through message passing
8//! - Contrastive learning with InfoNCE and triplet loss
9//! - Elastic Weight Consolidation (EWC) for continual learning
10//! - Graph attention mechanisms for relationship modeling
11//!
12//! ## Architecture
13//!
14//! The crate follows Domain-Driven Design principles:
15//! - `domain`: Core entities and repository traits
16//! - `application`: Business logic and services
17//! - `infrastructure`: GNN implementations and attention mechanisms
18//!
19//! ## Example
20//!
21//! ```rust,ignore
22//! use sevensense_learning::{LearningService, LearningConfig, GnnModelType};
23//!
24//! let config = LearningConfig::default();
25//! let service = LearningService::new(config);
26//!
27//! // Train on transition graph
28//! let metrics = service.train_epoch(&graph).await?;
29//!
30//! // Refine embeddings
31//! let refined = service.refine_embeddings(&embeddings).await?;
32//! ```
33
34#![warn(missing_docs)]
35#![warn(clippy::all)]
36#![warn(clippy::pedantic)]
37#![allow(clippy::module_name_repetitions)]
38
39pub mod domain;
40pub mod application;
41pub mod infrastructure;
42pub mod loss;
43pub mod ewc;
44
45// Re-exports for convenience
46pub use domain::entities::{
47    LearningSession, GnnModelType, TrainingStatus, TrainingMetrics,
48    TransitionGraph, RefinedEmbedding, EmbeddingId, Timestamp,
49    GraphNode, GraphEdge, HyperParameters, LearningConfig,
50};
51pub use domain::repository::LearningRepository;
52pub use application::services::LearningService;
53pub use infrastructure::gnn_model::{GnnModel, GnnLayer, Aggregator};
54pub use infrastructure::attention::{AttentionLayer, MultiHeadAttention};
55pub use loss::{info_nce_loss, triplet_loss, margin_ranking_loss, contrastive_loss};
56pub use ewc::{EwcState, FisherInformation, EwcRegularizer};
57
58/// Crate version information
59pub const VERSION: &str = env!("CARGO_PKG_VERSION");
60
61/// Prelude module for convenient imports
62pub mod prelude {
63    pub use crate::domain::entities::*;
64    pub use crate::domain::repository::*;
65    pub use crate::application::services::*;
66    pub use crate::infrastructure::gnn_model::*;
67    pub use crate::infrastructure::attention::*;
68    pub use crate::loss::*;
69    pub use crate::ewc::*;
70}
71
72#[cfg(test)]
73mod tests {
74    use super::*;
75
76    #[test]
77    fn test_crate_exports() {
78        // Verify all public types are accessible
79        let _: GnnModelType = GnnModelType::Gcn;
80        let _: TrainingStatus = TrainingStatus::Pending;
81    }
82}