srdf/
rdf_format.rs

1use std::fmt::Display;
2use std::str::FromStr;
3
4use crate::RDFParseError;
5
6/// Posible RDF formats
7#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Default)]
8pub enum RDFFormat {
9    #[default]
10    Turtle,
11    NTriples,
12    RDFXML,
13    TriG,
14    N3,
15    NQuads,
16}
17
18impl FromStr for RDFFormat {
19    type Err = RDFParseError;
20
21    fn from_str(s: &str) -> Result<RDFFormat, RDFParseError> {
22        match s {
23            "ttl" => Ok(RDFFormat::Turtle),
24            "nt" => Ok(RDFFormat::NTriples),
25            "rdf" => Ok(RDFFormat::RDFXML),
26            "trig" => Ok(RDFFormat::TriG),
27            "n3" => Ok(RDFFormat::N3),
28            "nq" => Ok(RDFFormat::NQuads),
29            _ => Err(RDFParseError::SRDFError {
30                err: format!("Format {} not supported", s).to_string(),
31            }),
32        }
33    }
34}
35
36impl Display for RDFFormat {
37    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
38        match self {
39            RDFFormat::Turtle => write!(f, "Turtle"),
40            RDFFormat::NTriples => write!(f, "N-Triples"),
41            RDFFormat::RDFXML => write!(f, "RDF/XML"),
42            RDFFormat::TriG => write!(f, "TriG"),
43            RDFFormat::N3 => write!(f, "N3"),
44            RDFFormat::NQuads => write!(f, "NQuads"),
45        }
46    }
47}