Skip to main content

xz_knowledge_graph/types/
graph.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::entity::Entity;
6use super::relation::Relation;
7
8/// A subgraph containing entities and relations within it.
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct SubGraph {
11    pub center: Entity,
12    pub entities: Vec<Entity>,
13    pub relations: Vec<Relation>,
14}
15
16/// A step in a path between entities.
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct PathStep {
19    pub entity: Entity,
20    pub relation: Relation,
21}
22
23/// Graph statistics.
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct GraphStats {
26    pub total_entities: usize,
27    pub total_relations: usize,
28    pub entity_types: HashMap<String, usize>,
29    pub relation_types: HashMap<String, usize>,
30    pub avg_degree: f64,
31    pub max_degree: usize,
32    pub orphan_entities: usize,
33    pub db_size_bytes: u64,
34}