use std::io::Write;
use iri_s::IriS;
use prefixmap::PrefixMap;
use crate::{RDFFormat, RDFNode, SRDF};
pub trait SRDFBuilder: SRDF {
fn empty() -> Self;
fn add_base(&mut self, base: &Option<IriS>) -> Result<(), Self::Err>;
fn add_prefix(&mut self, alias: &str, iri: &IriS) -> Result<(), Self::Err>;
fn add_prefix_map(&mut self, prefix_map: PrefixMap) -> Result<(), Self::Err>;
fn add_triple(
&mut self,
subj: &Self::Subject,
pred: &Self::IRI,
obj: &Self::Term,
) -> Result<(), Self::Err>;
fn remove_triple(
&mut self,
subj: &Self::Subject,
pred: &Self::IRI,
obj: &Self::Term,
) -> Result<(), Self::Err>;
fn add_type(&mut self, node: &RDFNode, type_: Self::Term) -> Result<(), Self::Err>;
fn serialize<W: Write>(&self, format: &RDFFormat, writer: &mut W) -> Result<(), Self::Err>;
}