1use std::fmt::Display;
2use std::str::FromStr;
3
4use crate::RDFParseError;
5
6#[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}