Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- `AnnotationComponentType::apply_update_graph_index` makes sure all edges
from named dominance components are also contained in the default
dominance component `Dominance/annis`.

## [4.2.0] - 2026-08-11

### Added
Expand Down
33 changes: 32 additions & 1 deletion graphannis/src/annis/db/aql/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use graphannis_core::{
util::disk_collections::{DEFAULT_BLOCK_CACHE_CAPACITY, DiskMap, EvictionStrategy},
};
use std::{
collections::{BTreeMap, HashMap},
collections::{BTreeMap, BTreeSet, HashMap},
fmt,
};
use transient_btree_index::BtreeConfig;
Expand Down Expand Up @@ -597,6 +597,37 @@ impl ComponentType for AnnotationComponentType {
index.reindex_inherited_coverage(graph, gs_order)?;
}

// make sure all edges in named dominance components are also in the default dominance component `Dominance/annis`
{
let default_dominance_component = AnnotationComponent::new(
AnnotationComponentType::Dominance,
ANNIS_NS.into(),
"".into(),
);
let mut edge_collector = BTreeSet::default();
let all_dominance_components =
graph.get_all_components(Some(AnnotationComponentType::Dominance), None);
for component in all_dominance_components {
if component == default_dominance_component {
continue;
}
if let Some(other_dominance_gs) = graph.get_graphstorage_as_ref(&component) {
for source_node in other_dominance_gs.source_nodes() {
let source = source_node?;
for target in other_dominance_gs.get_outgoing_edges(source) {
let target = target?;
edge_collector.insert(Edge { source, target });
}
}
}
}
let default_dominance_gs =
graph.get_or_create_writable(&default_dominance_component)?;
edge_collector
.into_iter()
.try_for_each(|e| default_dominance_gs.add_edge(e))?;
}

Ok(())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,101 +106,125 @@ expression: "String::from_utf8_lossy(&output)"
<data key="k3">node</data>
<data key="k5"></data>
</node>
<edge id="e0" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/">
<edge id="e0" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/annis/">
</edge>
<edge id="e1" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/">
<edge id="e1" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/annis/">
</edge>
<edge id="e2" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/">
<edge id="e2" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/annis/">
</edge>
<edge id="e3" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/">
<edge id="e3" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/annis/">
</edge>
<edge id="e4" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/">
<edge id="e4" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/annis/">
</edge>
<edge id="e5" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/">
<edge id="e5" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/annis/">
</edge>
<edge id="e6" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/">
<edge id="e6" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/annis/">
</edge>
<edge id="e7" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/">
<edge id="e7" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/annis/">
</edge>
<edge id="e8" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/">
<edge id="e8" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/annis/">
</edge>
<edge id="e9" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/">
<edge id="e9" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/annis/">
</edge>
<edge id="e10" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/">
<edge id="e10" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/annis/">
</edge>
<edge id="e11" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/">
<edge id="e11" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/annis/">
</edge>
<edge id="e12" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/edge">
<edge id="e12" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/">
</edge>
<edge id="e13" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/edge">
<edge id="e13" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/">
</edge>
<edge id="e14" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/edge">
<edge id="e14" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/">
</edge>
<edge id="e15" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/edge">
<edge id="e15" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/">
</edge>
<edge id="e16" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/edge">
<edge id="e16" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/">
</edge>
<edge id="e17" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/edge">
<edge id="e17" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/">
</edge>
<edge id="e18" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/edge">
<edge id="e18" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/">
</edge>
<edge id="e19" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/edge">
<edge id="e19" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/">
</edge>
<edge id="e20" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/edge">
<edge id="e20" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/">
</edge>
<edge id="e21" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/edge">
<edge id="e21" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/">
</edge>
<edge id="e22" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/edge">
<edge id="e22" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/">
</edge>
<edge id="e23" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/edge">
<edge id="e23" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/">
</edge>
<edge id="e24" source="single_sentence/zossen#t1" target="single_sentence/zossen#t2" label="Ordering/annis/">
<edge id="e24" source="single_sentence/zossen#n1" target="single_sentence/zossen#n2" label="Dominance/syntax/edge">
</edge>
<edge id="e25" source="single_sentence/zossen#t2" target="single_sentence/zossen#t3" label="Ordering/annis/">
<edge id="e25" source="single_sentence/zossen#n1" target="single_sentence/zossen#t8" label="Dominance/syntax/edge">
</edge>
<edge id="e26" source="single_sentence/zossen#t3" target="single_sentence/zossen#t4" label="Ordering/annis/">
<edge id="e26" source="single_sentence/zossen#n2" target="single_sentence/zossen#n3" label="Dominance/syntax/edge">
</edge>
<edge id="e27" source="single_sentence/zossen#t4" target="single_sentence/zossen#newToken" label="Ordering/annis/">
<edge id="e27" source="single_sentence/zossen#n2" target="single_sentence/zossen#t5" label="Dominance/syntax/edge">
</edge>
<edge id="e28" source="single_sentence/zossen#t5" target="single_sentence/zossen#t6" label="Ordering/annis/">
<edge id="e28" source="single_sentence/zossen#n2" target="single_sentence/zossen#n5" label="Dominance/syntax/edge">
</edge>
<edge id="e29" source="single_sentence/zossen#t6" target="single_sentence/zossen#t7" label="Ordering/annis/">
<edge id="e29" source="single_sentence/zossen#n3" target="single_sentence/zossen#t1" label="Dominance/syntax/edge">
</edge>
<edge id="e30" source="single_sentence/zossen#t7" target="single_sentence/zossen#t8" label="Ordering/annis/">
<edge id="e30" source="single_sentence/zossen#n3" target="single_sentence/zossen#t2" label="Dominance/syntax/edge">
</edge>
<edge id="e31" source="single_sentence/zossen#newToken" target="single_sentence/zossen#t5" label="Ordering/annis/">
<edge id="e31" source="single_sentence/zossen#n3" target="single_sentence/zossen#n4" label="Dominance/syntax/edge">
</edge>
<edge id="e32" source="single_sentence/zossen" target="single_sentence" label="PartOf/annis/">
<edge id="e32" source="single_sentence/zossen#n4" target="single_sentence/zossen#t3" label="Dominance/syntax/edge">
</edge>
<edge id="e33" source="single_sentence/zossen#text" target="single_sentence/zossen" label="PartOf/annis/">
<edge id="e33" source="single_sentence/zossen#n4" target="single_sentence/zossen#t4" label="Dominance/syntax/edge">
</edge>
<edge id="e34" source="single_sentence/zossen#n1" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e34" source="single_sentence/zossen#n5" target="single_sentence/zossen#t6" label="Dominance/syntax/edge">
</edge>
<edge id="e35" source="single_sentence/zossen#n2" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e35" source="single_sentence/zossen#n5" target="single_sentence/zossen#t7" label="Dominance/syntax/edge">
</edge>
<edge id="e36" source="single_sentence/zossen#n3" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e36" source="single_sentence/zossen#t1" target="single_sentence/zossen#t2" label="Ordering/annis/">
</edge>
<edge id="e37" source="single_sentence/zossen#t1" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e37" source="single_sentence/zossen#t2" target="single_sentence/zossen#t3" label="Ordering/annis/">
</edge>
<edge id="e38" source="single_sentence/zossen#t2" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e38" source="single_sentence/zossen#t3" target="single_sentence/zossen#t4" label="Ordering/annis/">
</edge>
<edge id="e39" source="single_sentence/zossen#n4" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e39" source="single_sentence/zossen#t4" target="single_sentence/zossen#newToken" label="Ordering/annis/">
</edge>
<edge id="e40" source="single_sentence/zossen#t3" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e40" source="single_sentence/zossen#t5" target="single_sentence/zossen#t6" label="Ordering/annis/">
</edge>
<edge id="e41" source="single_sentence/zossen#t4" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e41" source="single_sentence/zossen#t6" target="single_sentence/zossen#t7" label="Ordering/annis/">
</edge>
<edge id="e42" source="single_sentence/zossen#t5" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e42" source="single_sentence/zossen#t7" target="single_sentence/zossen#t8" label="Ordering/annis/">
</edge>
<edge id="e43" source="single_sentence/zossen#n5" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e43" source="single_sentence/zossen#newToken" target="single_sentence/zossen#t5" label="Ordering/annis/">
</edge>
<edge id="e44" source="single_sentence/zossen#t6" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e44" source="single_sentence/zossen" target="single_sentence" label="PartOf/annis/">
</edge>
<edge id="e45" source="single_sentence/zossen#t7" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e45" source="single_sentence/zossen#text" target="single_sentence/zossen" label="PartOf/annis/">
</edge>
<edge id="e46" source="single_sentence/zossen#t8" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e46" source="single_sentence/zossen#n1" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e47" source="single_sentence/zossen#newToken" target="single_sentence/zossen#text" label="PartOf/annis/">
<edge id="e47" source="single_sentence/zossen#n2" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e48" source="single_sentence/zossen#n3" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e49" source="single_sentence/zossen#t1" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e50" source="single_sentence/zossen#t2" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e51" source="single_sentence/zossen#n4" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e52" source="single_sentence/zossen#t3" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e53" source="single_sentence/zossen#t4" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e54" source="single_sentence/zossen#t5" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e55" source="single_sentence/zossen#n5" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e56" source="single_sentence/zossen#t6" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e57" source="single_sentence/zossen#t7" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e58" source="single_sentence/zossen#t8" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
<edge id="e59" source="single_sentence/zossen#newToken" target="single_sentence/zossen#text" label="PartOf/annis/">
</edge>
</graph>
</graphml>
Loading