owl_structural_model/
class_restriction.rs1use crate::ObjectPropertyExpression;
3use crate::{
4 Cardinality, ClassExpression, DataRange, OperandList, RDFS_LITERAL, StructuralModelError,
5};
6use iri_rfc3987::Iri;
7impl<L, B> ClassExpression<L, B> {
8 #[must_use]
10 pub fn object_min_cardinality(
11 cardinality: Cardinality,
12 property: ObjectPropertyExpression,
13 filler: Option<Self>,
14 ) -> Self {
15 Self::ObjectMinCardinality {
16 cardinality,
17 property,
18 filler: Box::new(filler.unwrap_or_else(Self::thing)),
19 }
20 }
21 #[must_use]
23 pub fn object_max_cardinality(
24 cardinality: Cardinality,
25 property: ObjectPropertyExpression,
26 filler: Option<Self>,
27 ) -> Self {
28 Self::ObjectMaxCardinality {
29 cardinality,
30 property,
31 filler: Box::new(filler.unwrap_or_else(Self::thing)),
32 }
33 }
34 #[must_use]
36 pub fn object_exact_cardinality(
37 cardinality: Cardinality,
38 property: ObjectPropertyExpression,
39 filler: Option<Self>,
40 ) -> Self {
41 Self::ObjectExactCardinality {
42 cardinality,
43 property,
44 filler: Box::new(filler.unwrap_or_else(Self::thing)),
45 }
46 }
47 pub fn data_some_values_from(
51 properties: Vec<Iri<String>>,
52 range: DataRange<L>,
53 ) -> Result<Self, StructuralModelError> {
54 Ok(Self::DataSomeValuesFrom {
55 properties: OperandList::try_new(properties)?,
56 range,
57 })
58 }
59 pub fn data_all_values_from(
63 properties: Vec<Iri<String>>,
64 range: DataRange<L>,
65 ) -> Result<Self, StructuralModelError> {
66 Ok(Self::DataAllValuesFrom {
67 properties: OperandList::try_new(properties)?,
68 range,
69 })
70 }
71 #[must_use]
73 pub fn data_has_value(property: Iri<String>, value: L) -> Self {
74 Self::DataHasValue { property, value }
75 }
76 #[must_use]
78 pub fn data_min_cardinality(
79 cardinality: Cardinality,
80 property: Iri<String>,
81 range: Option<DataRange<L>>,
82 ) -> Self {
83 Self::DataMinCardinality {
84 cardinality,
85 property,
86 range: range.unwrap_or_else(|| DataRange::datatype(Self::builtin(RDFS_LITERAL))),
87 }
88 }
89 #[must_use]
91 pub fn data_max_cardinality(
92 cardinality: Cardinality,
93 property: Iri<String>,
94 range: Option<DataRange<L>>,
95 ) -> Self {
96 Self::DataMaxCardinality {
97 cardinality,
98 property,
99 range: range.unwrap_or_else(|| DataRange::datatype(Self::builtin(RDFS_LITERAL))),
100 }
101 }
102 #[must_use]
104 pub fn data_exact_cardinality(
105 cardinality: Cardinality,
106 property: Iri<String>,
107 range: Option<DataRange<L>>,
108 ) -> Self {
109 Self::DataExactCardinality {
110 cardinality,
111 property,
112 range: range.unwrap_or_else(|| DataRange::datatype(Self::builtin(RDFS_LITERAL))),
113 }
114 }
115}