Skip to main content

rdf_model/interop/oxrdf/
node.rs

1// This is free and unencumbered software released into the public domain.
2
3use crate::{DEFAULT_GRAPH_URN, DefaultGraph, Term, TermKind};
4
5#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
6pub struct OxrdfNamedNode(oxrdf::NamedNode);
7
8impl Term for OxrdfNamedNode {
9    fn kind(&self) -> TermKind {
10        TermKind::Iri
11    }
12
13    #[cfg(feature = "alloc")]
14    fn value_str(&self) -> alloc::borrow::Cow<'_, str> {
15        use alloc::borrow::Cow;
16        Cow::Borrowed(self.0.as_str())
17    }
18}
19
20#[derive(Clone, Debug, Eq, Hash, PartialEq)]
21pub struct OxrdfGraphName(oxrdf::GraphName);
22
23impl Term for OxrdfGraphName {
24    fn kind(&self) -> TermKind {
25        use oxrdf::GraphName;
26        match &self.0 {
27            GraphName::NamedNode(_) => TermKind::Iri,
28            GraphName::BlankNode(_) => TermKind::BNode,
29            GraphName::DefaultGraph => TermKind::DefaultGraph,
30        }
31    }
32
33    #[cfg(feature = "alloc")]
34    fn value_str(&self) -> alloc::borrow::Cow<'_, str> {
35        use alloc::borrow::Cow;
36        use oxrdf::GraphName;
37        match &self.0 {
38            GraphName::NamedNode(node) => Cow::Borrowed(node.as_str()),
39            GraphName::BlankNode(node) => Cow::Borrowed(node.as_str()),
40            GraphName::DefaultGraph => Cow::Borrowed(DEFAULT_GRAPH_URN),
41        }
42    }
43}
44
45impl From<DefaultGraph> for OxrdfGraphName {
46    fn from(_: DefaultGraph) -> Self {
47        Self(oxrdf::GraphName::DefaultGraph)
48    }
49}