use oxigraph::model::{NamedNode, NamedNodeRef, Term, TermRef}; use oxigraph::model::vocab::xsd; use crate::vocab::rdf; pub(crate) fn term_to_named_node(term: &Term) -> Option<&NamedNode> { if let Term::NamedNode(node) = term { Some(node) } else { None } } pub(crate) fn term_as_str(term: &Term) -> Option<&str> { if let Term::Literal(literal) = term { match literal.datatype() { xsd::STRING | xsd::NORMALIZED_STRING | rdf::LANG_STRING | rdf::DIR_LANG_STRING => { Some(literal.value()) } _ => None, } } else { None } } pub(crate) fn term_ref_as_str(term: TermRef<'_>) -> Option<&str> { if let TermRef::Literal(literal) = term { match literal.datatype() { xsd::STRING | xsd::NORMALIZED_STRING | rdf::LANG_STRING | rdf::DIR_LANG_STRING => { Some(literal.value()) } _ => None, } } else { None } }