pub struct SummaryView {
pub round: u32,
pub summary: Vec<SuperEdge>,
pub class_hierarchy: Vec<ClassNode>,
pub level_rollups: Vec<LevelRollup>,
pub level_links: Vec<LevelLinks>,
pub descriptors: Vec<CommunityDescriptor>,
pub subclass_cycles: Vec<Vec<String>>,
pub disjoint_pairs: Vec<(String, String)>,
pub equivalent_pairs: Vec<(String, String)>,
/* private fields */
}Expand description
A lightweight, overview-only view of a file: the pyramid summary graph plus just enough dictionary to label predicates. Fetched via ranges without touching the (large) triple index — the “load the coarse graph first” path from SPEC.md §7.2.
Fields§
§round: u32§summary: Vec<SuperEdge>§class_hierarchy: Vec<ClassNode>The shipped subClassOf hierarchy (v2 schema pyramid; empty on v1 files).
level_rollups: Vec<LevelRollup>Per-level type rollups — the leveled legend, read index-free.
level_links: Vec<LevelLinks>Per-level lateral class-relation graph (the non-is-a connections).
descriptors: Vec<CommunityDescriptor>Per-community descriptors (Phase 4 progressive refinement; may be empty).
subclass_cycles: Vec<Vec<String>>subClassOf cycles (v2.1; empty on older files).
disjoint_pairs: Vec<(String, String)>owl:disjointWith class pairs (v2.1; empty on older files).
equivalent_pairs: Vec<(String, String)>owl:equivalentClass class pairs (v2.1; empty on older files).
Implementations§
Source§impl SummaryView
impl SummaryView
Sourcepub fn open_ranged<R>(reader: &R) -> Result<Option<SummaryView>, FileError>where
R: RangeReader,
pub fn open_ranged<R>(reader: &R) -> Result<Option<SummaryView>, FileError>where
R: RangeReader,
Read header → dictionary → pyramid-meta only (skips the index container).
Sourcepub fn level_count(&self) -> usize
pub fn level_count(&self) -> usize
Number of semantic-zoom levels in the schema pyramid (0 if none shipped).
Sourcepub fn level_rollup(&self, k: usize) -> Option<&LevelRollup>
pub fn level_rollup(&self, k: usize) -> Option<&LevelRollup>
The type rollup at semantic level k (0 = coarsest/most abstract), or
None if k is out of range. Index-free — answered from the pyramid-meta.
Sourcepub fn predicate_term(&self, id: u32) -> Option<String>
pub fn predicate_term(&self, id: u32) -> Option<String>
Resolve a predicate ID in the summary to its term.
Sourcepub fn predicate_total(&self, predicate: &str) -> u32
pub fn predicate_total(&self, predicate: &str) -> u32
Exact number of triples using predicate, summed from the summary’s
superedge counts — answered without ever reading the triple index.
Sourcepub fn predicate_totals(&self) -> Vec<(String, u32)>
pub fn predicate_totals(&self) -> Vec<(String, u32)>
All predicates with their exact triple totals, descending by count.
Sourcepub fn community_count(&self) -> usize
pub fn community_count(&self) -> usize
Number of communities the summary spans (distinct supernode endpoints).
Sourcepub fn tbox_coherence(&self) -> Vec<Inconsistency>
pub fn tbox_coherence(&self) -> Vec<Inconsistency>
Index-free T-Box coherence (Tier-0). Detect schema-level incoherent points purely from the shipped schema pyramid — no triple index, no instance data, O(ontology) regardless of graph size:
subclass-cycle: a set of classes that are mutuallyrdfs:subClassOf.unsatisfiable-class: a class whose ancestor closure (over all parents, folded throughowl:equivalentClass) contains both ends of anowl:disjointWithpair, so no individual can ever be one.
Soundness is bounded by what the pyramid ships: the subClassOf hierarchy
is capped (MAX_HIERARCHY in schema_pyramid), so on a very large ontology
a pruned ancestor can hide an unsatisfiable class (a false coherent, never
a false incoherent). Instance-level clashes (a node typed into disjoint
classes, functional-property clashes) are NOT visible here — they need the
A-Box (Tier-1/Tier-2 reason).
Sourcepub fn tbox_is_coherent(&self) -> bool
pub fn tbox_is_coherent(&self) -> bool
True when tbox_coherence finds no schema-level
incoherent point.