2026-08-20 20:43:18 -04:00
|
|
|
use oxigraph::model::{NamedNode, Term, TermRef};
|
2026-08-12 14:11:47 -04:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|