owl_structural_model/
entity.rs1use iri_rfc3987::Iri;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
7#[serde(deny_unknown_fields)]
8pub enum EntityKind {
9 Class,
11 ObjectProperty,
13 DataProperty,
15 AnnotationProperty,
17 NamedIndividual,
19 Datatype,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
25#[serde(deny_unknown_fields)]
26pub struct Entity {
27 kind: EntityKind,
28 iri: Iri<String>,
29}
30
31impl Entity {
32 #[must_use]
34 pub fn new(kind: EntityKind, iri: Iri<String>) -> Self {
35 Self { kind, iri }
36 }
37
38 #[must_use]
40 pub fn class(iri: Iri<String>) -> Self {
41 Self::new(EntityKind::Class, iri)
42 }
43
44 #[must_use]
46 pub fn object_property(iri: Iri<String>) -> Self {
47 Self::new(EntityKind::ObjectProperty, iri)
48 }
49
50 #[must_use]
52 pub fn data_property(iri: Iri<String>) -> Self {
53 Self::new(EntityKind::DataProperty, iri)
54 }
55
56 #[must_use]
58 pub fn annotation_property(iri: Iri<String>) -> Self {
59 Self::new(EntityKind::AnnotationProperty, iri)
60 }
61
62 #[must_use]
64 pub fn named_individual(iri: Iri<String>) -> Self {
65 Self::new(EntityKind::NamedIndividual, iri)
66 }
67
68 #[must_use]
70 pub fn datatype(iri: Iri<String>) -> Self {
71 Self::new(EntityKind::Datatype, iri)
72 }
73
74 #[must_use]
76 pub fn kind(&self) -> EntityKind {
77 self.kind
78 }
79
80 #[must_use]
82 pub fn iri(&self) -> &Iri<String> {
83 &self.iri
84 }
85}