use crate::ast::error::ASTError;
use prefixmap::PrefixMapError;
use rudof_iri::error::IriSError;
use rudof_rdf::rdf_core::RDFError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum ShaclParserError {
#[error("RDF parse error: {err}")]
RDFParseError {
#[from]
err: RDFError,
},
#[error("Expected Value of `sh:reifierShape` to be a subject, found: {term}")]
ReifierShapeNoSubject { term: String },
#[error("Error converting Term to RDFNode: {term}")]
TermToRDFNodeFailed { term: String },
#[error("Expected RDFNode parsing node shape, found: {term}")]
ExpectedRDFNodeNodeShape { term: String },
#[error("Expected term as subject, found: {term} in {context}")]
ExpectedSubject { term: String, context: String },
#[error("Expected Value of `sh:or` to be a subject, found: {term}")]
OrValueNoSubject { term: String },
#[error("Expected Value of `sh:or` to be an object, found: {term}")]
OrValueNoObject { term: String },
#[error("Expected Value of `sh:and` to be a subject, found: {term}")]
AndValueNoSubject { term: String },
#[error("Expected Value of `sh:xone` to be a subject, found: {term}")]
XOneValueNoSubject { term: String },
#[error("Expected Value of `sh:not` to be an object, found: {term}")]
NotValueNoObject { term: String },
#[error("Expected NodeKind, found: {term}")]
ExpectedNodeKind { term: String },
#[error("Unknown NodeKind, found: {term}")]
UnknownNodeKind { term: String },
#[error("SHACL AST error: {err}")]
ASTError {
#[from]
err: ASTError,
},
#[error("Custom error: {msg}")]
Custom { msg: String },
}
#[derive(Debug, Error)]
pub enum ShaclWriterError {
#[error("IRI parsing error: {err}")]
IriS {
#[from]
err: IriSError,
},
#[error("Prefix map error: {err}")]
PrefixMap {
#[from]
err: PrefixMapError,
},
#[error("An error occured while writing RDF: {msg}")]
Write { msg: String },
#[error("An error occured while adding a prefix map to RDF: {msg}")]
AddPrefixMap { msg: String },
#[error("An error occured while adding a base to RDF: {msg}")]
AddBase { msg: String },
}