use borrow_or_share::Bos;
use iri_rfc3987::Iri;
use super::GeneralizedTriple;
use crate::{
BlankNodeId,
Literal,
NoExtension,
};
#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
#[serde(
deny_unknown_fields,
bound(
serialize = "Text: serde::Serialize, Extension: serde::Serialize",
deserialize = "Text: serde::Deserialize<'de>, Iri<Text>: serde::Deserialize<'de>, Extension: serde::Deserialize<'de>"
)
)]
pub enum GeneralizedTerm<Text: Bos<str> + AsRef<str> = String, Extension = NoExtension> {
Iri(Iri<Text>),
BlankNode(BlankNodeId<Text>),
Literal(Literal<Text>),
Triple(Box<GeneralizedTriple<Text, Extension>>),
Extension(Extension),
}