Skip to main content

owl_structural_model/
annotation_axiom.rs

1//! Checked construction for annotation axiom families.
2use crate::{AnnotationSubject, AnnotationValue, Axiom, AxiomAnnotations};
3use iri_rfc3987::Iri;
4impl<L, B> Axiom<L, B> {
5    /// Construct `AnnotationAssertion` without axiom annotations.
6    #[must_use]
7    pub fn annotation_assertion(
8        property: Iri<String>,
9        subject: AnnotationSubject<B>,
10        value: AnnotationValue<L, B>,
11    ) -> Self {
12        Self::AnnotationAssertion {
13            property,
14            subject,
15            value,
16            annotations: AxiomAnnotations::empty(),
17        }
18    }
19    /// Construct `SubAnnotationPropertyOf` without axiom annotations.
20    #[must_use]
21    pub fn sub_annotation_property_of(
22        sub_property: Iri<String>,
23        super_property: Iri<String>,
24    ) -> Self {
25        Self::SubAnnotationPropertyOf {
26            sub_property,
27            super_property,
28            annotations: AxiomAnnotations::empty(),
29        }
30    }
31    /// Construct `AnnotationPropertyDomain` without axiom annotations.
32    #[must_use]
33    pub fn annotation_property_domain(property: Iri<String>, domain: Iri<String>) -> Self {
34        Self::AnnotationPropertyDomain {
35            property,
36            domain,
37            annotations: AxiomAnnotations::empty(),
38        }
39    }
40    /// Construct `AnnotationPropertyRange` without axiom annotations.
41    #[must_use]
42    pub fn annotation_property_range(property: Iri<String>, range: Iri<String>) -> Self {
43        Self::AnnotationPropertyRange {
44            property,
45            range,
46            annotations: AxiomAnnotations::empty(),
47        }
48    }
49}