lsp_core/feature/
parse.rs

1use bevy_ecs::{prelude::*, schedule::ScheduleLabel};
2
3pub use crate::systems::{
4    derive_classes, derive_prefix_links, derive_properties, derive_shapes, extract_type_hierarchy,
5    fetch_lov_properties, infer_types,
6};
7use crate::{
8    client::Client,
9    systems::{check_added_ontology_extract, derive_owl_imports_links, open_imports},
10};
11
12/// Parse schedule barrier, after this system, triples should be derived
13pub fn triples() {}
14/// Parse schedule barrier, after this system, prefixes should be derived
15pub fn prefixes() {}
16
17/// [`ScheduleLabel`] related to the Parse schedule
18#[derive(ScheduleLabel, Clone, Eq, PartialEq, Debug, Hash)]
19pub struct Label;
20
21pub fn setup_schedule<C: Client + Resource>(world: &mut World) {
22    let mut parse_schedule = bevy_ecs::schedule::Schedule::new(Label);
23    parse_schedule.add_systems((
24        prefixes,
25        triples,
26        derive_prefix_links.after(prefixes),
27        derive_owl_imports_links.after(triples),
28        derive_classes.after(triples),
29        derive_properties.after(triples),
30        fetch_lov_properties::<C>.after(prefixes),
31        extract_type_hierarchy.after(triples),
32        infer_types.after(triples),
33        derive_shapes.after(triples),
34        check_added_ontology_extract.after(triples),
35        open_imports::<C>.after(triples),
36    ));
37    world.add_schedule(parse_schedule);
38}