pub struct SchemaStatistics {
pub domain_count: usize,
pub predicate_count: usize,
pub variable_count: usize,
pub total_cardinality: usize,
pub avg_cardinality: f64,
pub max_cardinality: usize,
pub min_cardinality: usize,
pub arity_distribution: HashMap<usize, usize>,
pub domain_usage_frequency: HashMap<String, usize>,
pub unused_domains: Vec<String>,
pub predicates_by_arity: HashMap<usize, Vec<String>>,
}Expand description
Comprehensive statistics about a schema.
Fields§
§domain_count: usizeNumber of domains defined.
predicate_count: usizeNumber of predicates defined.
variable_count: usizeNumber of variables bound.
total_cardinality: usizeTotal cardinality across all domains.
avg_cardinality: f64Average domain cardinality.
max_cardinality: usizeMaximum domain cardinality.
min_cardinality: usizeMinimum domain cardinality.
arity_distribution: HashMap<usize, usize>Distribution of predicate arities.
domain_usage_frequency: HashMap<String, usize>Most common domain types in predicates.
unused_domains: Vec<String>Domains that are never used in predicates.
predicates_by_arity: HashMap<usize, Vec<String>>Predicates grouped by arity.
Implementations§
Source§impl SchemaStatistics
impl SchemaStatistics
Sourcepub fn compute(table: &SymbolTable) -> Self
pub fn compute(table: &SymbolTable) -> Self
Compute statistics for a symbol table.
§Example
use tensorlogic_adapters::{SymbolTable, DomainInfo, PredicateInfo, SchemaStatistics};
let mut table = SymbolTable::new();
table.add_domain(DomainInfo::new("Person", 100)).unwrap();
table.add_predicate(PredicateInfo::new(
"knows",
vec!["Person".to_string(), "Person".to_string()]
)).unwrap();
let stats = SchemaStatistics::compute(&table);
assert_eq!(stats.domain_count, 1);
assert_eq!(stats.predicate_count, 1);Sourcepub fn most_used_domains(&self, n: usize) -> Vec<(String, usize)>
pub fn most_used_domains(&self, n: usize) -> Vec<(String, usize)>
Get the most frequently used domains.
Sourcepub fn least_used_domains(&self, n: usize) -> Vec<(String, usize)>
pub fn least_used_domains(&self, n: usize) -> Vec<(String, usize)>
Get the least frequently used domains (excluding unused).
Sourcepub fn complexity_score(&self) -> f64
pub fn complexity_score(&self) -> f64
Calculate schema complexity score.
This is a heuristic metric based on:
- Number of domains
- Number of predicates
- Arity distribution
- Domain usage patterns
Trait Implementations§
Source§impl Clone for SchemaStatistics
impl Clone for SchemaStatistics
Source§fn clone(&self) -> SchemaStatistics
fn clone(&self) -> SchemaStatistics
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SchemaStatistics
impl RefUnwindSafe for SchemaStatistics
impl Send for SchemaStatistics
impl Sync for SchemaStatistics
impl Unpin for SchemaStatistics
impl UnwindSafe for SchemaStatistics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more