1extern crate alloc;
5
6use iref::InvalidIri;
7use {crate::DataType, thiserror::Error};
8
9#[derive(Error, Debug)]
10pub enum RDFStoreError {
11 #[allow(dead_code)]
12 #[error("Unknown Error")]
13 Unknown,
14 #[error("While {action}: {message}")]
15 Exception { action: String, message: String },
16 #[error("Unknown data type {data_type_id}")]
17 UnknownDataType { data_type_id: u8 },
18 #[error("Unknown value [{value}] for data type {data_type:?}")]
19 UnknownValueForDataType { data_type: DataType, value: String },
20 #[error("Unknown XSD data type {data_type_iri}")]
21 UnknownXsdDataType { data_type_iri: String },
22 #[error("Unknown literal value in N-Triples format: {value}")]
23 UnknownNTriplesValue { value: String },
24 #[error(
25 "The multiplicity ({multiplicity}) of a cursor row exceeded the maximum number of rows \
26 ({maxrow}) for query:\n{query}"
27 )]
28 MultiplicityExceededMaximumNumberOfRows {
29 maxrow: usize,
30 multiplicity: usize,
31 query: String,
32 },
33 #[error("Cannot get any argument indexes from the cursor of:\n{query}")]
34 CannotGetAnyArgumentIndexes { query: String },
35 #[error("Maximum number of rows ({maxrow}) has been exceeded for query:\n{query}")]
36 ExceededMaximumNumberOfRows { maxrow: usize, query: String },
37 #[error("Could not find a license key")]
38 RDFoxLicenseFileNotFound,
39 #[allow(dead_code)]
40 #[error("Unknown resource")]
41 UnknownResourceException,
42 #[error("Could not create RDFox server")]
43 CouldNotCreateRDFoxServer,
44 #[error("Could not connect to RDFox server")]
45 CouldNotConnectToServer,
46 #[error("Could not import RDF File")]
47 CouldNotImportRDFFile,
48 #[error("Invalid prefix name")]
49 InvalidPrefixName,
50 #[error("Invalid literal value")]
51 InvalidLiteral,
52 #[error(transparent)]
54 IOError(#[from] std::io::Error),
55 #[error(transparent)]
58 WalkError(#[from] ignore::Error),
59 #[error(transparent)]
60 InvalidIri(#[from] iref::iri::InvalidIri<String>),
61 #[error("Could not parse IRI: {0:?}")]
62 IriParseError(String),
63 #[error(transparent)]
64 IriStringParseError(#[from] iri_string::validate::Error),
65 #[error(transparent)]
66 ParseIntError(#[from] std::num::ParseIntError),
67
68 #[cfg(feature = "serde")]
69 #[error(transparent)]
70 SerdeJsonError(#[from] serde_json::Error),
71
72 #[error(transparent)]
73 DateParseError(#[from] chrono::ParseError),
74
75 #[error(transparent)]
76 CApiError(#[from] std::ffi::NulError),
77
78 #[error(transparent)]
79 R2D2Error(#[from] r2d2::Error),
80}
81
82#[cfg(feature = "nom-support")]
83impl<I: From<&'static str>> From<RDFStoreError> for nom::Err<nom::error::Error<I>> {
84 fn from(_: RDFStoreError) -> Self {
85 nom::Err::Error(nom::error::Error::new(
86 "unknown rdfox error".into(),
87 nom::error::ErrorKind::Fail,
88 ))
89 }
90}
91
92impl<T: core::fmt::Debug> From<iref::IriError<T>> for RDFStoreError {
93 fn from(error: iref::IriError<T>) -> Self {
94 RDFStoreError::IriParseError(format!("{:?}", error))
95 }
96}
97
98impl From<InvalidIri<&str>> for RDFStoreError {
99 fn from(error: InvalidIri<&str>) -> Self {
100 RDFStoreError::IriParseError(format!("{:?}", error))
101 }
102}
103
104