43 lines
1.4 KiB
Rust
43 lines
1.4 KiB
Rust
use oxigraph::model::NamedNodeRef;
|
|||
|
|
use crate::vocab;
|
||
|
|
|
||
|
|
pub enum Class {
|
||
|
|
RdfProperty = 0,
|
||
|
|
RdfsClass = 1,
|
||
|
|
SkosConcept = 2,
|
||
|
|
Work = 10001,
|
||
|
|
Person = 10004,
|
||
|
|
CorporateBody = 10005,
|
||
|
|
Expression = 10006,
|
||
|
|
Manifestation = 10007,
|
||
|
|
}
|
||
|
|
|
||
|
|
impl Class {
|
||
|
|
pub fn to_named_node(&self) -> NamedNodeRef<'_> {
|
||
|
|
match self {
|
||
|
|
Class::RdfProperty => vocab::rdf::PROPERTY,
|
||
|
|
Class::RdfsClass => vocab::rdfs::CLASS,
|
||
|
|
Class::SkosConcept => vocab::skos::CONCEPT,
|
||
|
|
Class::Work => vocab::rdac::WORK,
|
||
|
|
Class::Person => vocab::rdac::PERSON,
|
||
|
|
Class::CorporateBody => vocab::rdac::CORPORATE_BODY,
|
||
|
|
Class::Expression => vocab::rdac::EXPRESSION,
|
||
|
|
Class::Manifestation => vocab::rdac::MANIFESTATION,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn try_from_named_node<'a>(node: impl Into<NamedNodeRef<'a>>) -> Option<Self> {
|
||
|
|
let node = node.into();
|
||
|
|
match node {
|
||
|
|
vocab::rdf::PROPERTY => Some(Class::RdfProperty),
|
||
|
|
vocab::rdfs::CLASS => Some(Class::RdfsClass),
|
||
|
|
vocab::skos::CONCEPT => Some(Class::SkosConcept),
|
||
|
|
vocab::rdac::WORK => Some(Class::Work),
|
||
|
|
vocab::rdac::PERSON => Some(Class::Person),
|
||
|
|
vocab::rdac::CORPORATE_BODY => Some(Class::CorporateBody),
|
||
|
|
vocab::rdac::EXPRESSION => Some(Class::Expression),
|
||
|
|
vocab::rdac::MANIFESTATION => Some(Class::Manifestation),
|
||
|
|
_ => None,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|