use field33_rdftk_iri_temporary_fork::IRIRef;
use field33_rdftk_names_temporary_fork::{rdf, xsd};
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum DataType {
String,
QName,
#[allow(clippy::upper_case_acronyms)]
IRI,
Boolean,
Float,
Double,
Long,
Int,
Short,
Byte,
UnsignedLong,
UnsignedInt,
UnsignedShort,
UnsignedByte,
Duration,
XmlLiteral,
Other(IRIRef),
}
impl From<IRIRef> for DataType {
fn from(iri: IRIRef) -> Self {
if &iri == xsd::string() {
DataType::String
} else if &iri == xsd::q_name() {
DataType::QName
} else if &iri == xsd::any_uri() {
DataType::IRI
} else if &iri == xsd::boolean() {
DataType::Boolean
} else if &iri == xsd::float() {
DataType::Float
} else if &iri == xsd::double() {
DataType::Double
} else if &iri == xsd::long() {
DataType::Long
} else if &iri == xsd::int() {
DataType::Int
} else if &iri == xsd::short() {
DataType::Short
} else if &iri == xsd::byte() {
DataType::Byte
} else if &iri == xsd::unsigned_long() {
DataType::UnsignedLong
} else if &iri == xsd::unsigned_int() {
DataType::UnsignedInt
} else if &iri == xsd::unsigned_short() {
DataType::UnsignedShort
} else if &iri == xsd::unsigned_byte() {
DataType::UnsignedByte
} else if &iri == xsd::duration() {
DataType::Duration
} else if &iri == rdf::xml_literal() {
DataType::XmlLiteral
} else {
DataType::Other(iri)
}
}
}
impl DataType {
pub fn as_iri(&self) -> &IRIRef {
match &self {
DataType::String => xsd::string(),
DataType::QName => xsd::q_name(),
DataType::IRI => xsd::any_uri(),
DataType::Boolean => xsd::boolean(),
DataType::Float => xsd::float(),
DataType::Double => xsd::double(),
DataType::Long => xsd::long(),
DataType::Int => xsd::int(),
DataType::Short => xsd::short(),
DataType::Byte => xsd::byte(),
DataType::UnsignedLong => xsd::unsigned_long(),
DataType::UnsignedInt => xsd::unsigned_int(),
DataType::UnsignedShort => xsd::unsigned_short(),
DataType::UnsignedByte => xsd::unsigned_byte(),
DataType::Duration => xsd::duration(),
DataType::XmlLiteral => rdf::xml_literal(),
DataType::Other(iri) => iri,
}
}
}