rdf_fusion_encoding/
scalar_encoder.rs

1use rdf_fusion_model::{BlankNodeRef, GraphNameRef, LiteralRef, NamedNodeRef, TermRef};
2
3/// Is responsible for encoding RDF terms (or NULL) in a particular encoding.
4pub trait ScalarEncoder {
5    type Scalar;
6
7    /// Encodes a [TermRef] as a scalar in a particular encoding.
8    fn encode_scalar_term(term: TermRef<'_>) -> Self::Scalar {
9        match term {
10            TermRef::NamedNode(nn) => Self::encode_scalar_named_node(nn),
11            TermRef::BlankNode(bnode) => Self::encode_scalar_blank_node(bnode),
12            TermRef::Literal(lit) => Self::encode_scalar_literal(lit),
13        }
14    }
15
16    /// Encodes a [GraphNameRef] as a scalar in a particular encoding.
17    fn encode_scalar_graph(graph: GraphNameRef<'_>) -> Self::Scalar;
18
19    /// Encodes NULL as a scalar in a particular encoding.
20    fn encode_scalar_null() -> Self::Scalar;
21
22    /// Encodes a [NamedNodeRef] as a scalar in a particular encoding.
23    fn encode_scalar_named_node(node: NamedNodeRef<'_>) -> Self::Scalar;
24
25    /// Encodes a [BlankNodeRef] as a scalar in a particular encoding.
26    fn encode_scalar_blank_node(node: BlankNodeRef<'_>) -> Self::Scalar;
27
28    /// Encodes a [LiteralRef] as a scalar in a particular encoding.
29    fn encode_scalar_literal(literal: LiteralRef<'_>) -> Self::Scalar;
30}