Skip to main content

oxirs_shacl_ai/advanced_pattern_mining/
patterns.rs

1//! Pattern structures and pattern-related data types
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6use super::types::*;
7
8/// A discovered pattern with advanced metrics
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct AdvancedPattern {
11    /// Pattern items (properties, classes, values)
12    pub items: Vec<PatternItem>,
13
14    /// Support count (absolute frequency)
15    pub support_count: usize,
16
17    /// Support ratio (relative frequency)
18    pub support_ratio: f64,
19
20    /// Confidence score
21    pub confidence: f64,
22
23    /// Lift measure (interest factor)
24    pub lift: f64,
25
26    /// Conviction measure
27    pub conviction: f64,
28
29    /// Quality score
30    pub quality_score: f64,
31
32    /// Pattern type classification
33    pub pattern_type: PatternType,
34
35    /// Temporal characteristics
36    pub temporal_info: Option<TemporalPatternInfo>,
37
38    /// Hierarchical level
39    pub hierarchy_level: usize,
40
41    /// Associated SHACL constraints
42    pub suggested_constraints: Vec<SuggestedConstraint>,
43}
44
45/// Pattern item in a discovered pattern
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct PatternItem {
48    /// Item type (property, class, value pattern)
49    pub item_type: PatternItemType,
50
51    /// URI or identifier
52    pub identifier: String,
53
54    /// Item role in pattern
55    pub role: ItemRole,
56
57    /// Frequency in pattern occurrences
58    pub frequency: f64,
59}
60
61/// Temporal pattern information
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct TemporalPatternInfo {
64    /// Time series frequency
65    pub frequency: f64,
66
67    /// Seasonality indicators
68    pub seasonality: Vec<SeasonalityComponent>,
69
70    /// Trend direction
71    pub trend: TrendDirection,
72
73    /// Pattern stability over time
74    pub stability_score: f64,
75}
76
77/// Seasonality component in temporal patterns
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct SeasonalityComponent {
80    /// Period length (in time units)
81    pub period: usize,
82
83    /// Amplitude of seasonal effect
84    pub amplitude: f64,
85
86    /// Phase offset
87    pub phase: f64,
88}
89
90/// Suggested SHACL constraint from pattern
91#[derive(Debug, Clone, Serialize, Deserialize)]
92pub struct SuggestedConstraint {
93    /// Constraint type
94    pub constraint_type: ConstraintType,
95
96    /// Target path
97    pub path: String,
98
99    /// Constraint parameters
100    pub parameters: HashMap<String, String>,
101
102    /// Confidence in suggestion
103    pub confidence: f64,
104
105    /// Expected validation coverage
106    pub coverage: f64,
107
108    /// Severity recommendation
109    pub severity: oxirs_shacl::Severity,
110}