owl_structural_model/
entity.rs1use iri_rfc3987::Iri;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
7pub enum EntityKind {
8 Class,
10 ObjectProperty,
12 DataProperty,
14 AnnotationProperty,
16 NamedIndividual,
18 Datatype,
20}
21
22#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
24pub struct Entity {
25 kind: EntityKind,
26 iri: Iri<String>,
27}
28
29impl Entity {
30 #[must_use]
32 pub fn new(kind: EntityKind, iri: Iri<String>) -> Self {
33 Self { kind, iri }
34 }
35
36 #[must_use]
38 pub fn class(iri: Iri<String>) -> Self { Self::new(EntityKind::Class, iri) }
39
40 #[must_use]
42 pub fn object_property(iri: Iri<String>) -> Self { Self::new(EntityKind::ObjectProperty, iri) }
43
44 #[must_use]
46 pub fn data_property(iri: Iri<String>) -> Self { Self::new(EntityKind::DataProperty, iri) }
47
48 #[must_use]
50 pub fn annotation_property(iri: Iri<String>) -> Self {
51 Self::new(EntityKind::AnnotationProperty, iri)
52 }
53
54 #[must_use]
56 pub fn named_individual(iri: Iri<String>) -> Self {
57 Self::new(EntityKind::NamedIndividual, iri)
58 }
59
60 #[must_use]
62 pub fn datatype(iri: Iri<String>) -> Self { Self::new(EntityKind::Datatype, iri) }
63
64 #[must_use]
66 pub fn kind(&self) -> EntityKind { self.kind }
67
68 #[must_use]
70 pub fn iri(&self) -> &Iri<String> { &self.iri }
71}
72