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 {
39 Self::new(EntityKind::Class, iri)
40 }
41
42 #[must_use]
44 pub fn object_property(iri: Iri<String>) -> Self {
45 Self::new(EntityKind::ObjectProperty, iri)
46 }
47
48 #[must_use]
50 pub fn data_property(iri: Iri<String>) -> Self {
51 Self::new(EntityKind::DataProperty, iri)
52 }
53
54 #[must_use]
56 pub fn annotation_property(iri: Iri<String>) -> Self {
57 Self::new(EntityKind::AnnotationProperty, iri)
58 }
59
60 #[must_use]
62 pub fn named_individual(iri: Iri<String>) -> Self {
63 Self::new(EntityKind::NamedIndividual, iri)
64 }
65
66 #[must_use]
68 pub fn datatype(iri: Iri<String>) -> Self {
69 Self::new(EntityKind::Datatype, iri)
70 }
71
72 #[must_use]
74 pub fn kind(&self) -> EntityKind {
75 self.kind
76 }
77
78 #[must_use]
80 pub fn iri(&self) -> &Iri<String> {
81 &self.iri
82 }
83}