rdf_types/
grdf.rs

1use crate::{Id, Literal, Quad, Term, Triple};
2
3/// gRDF quad.
4///
5/// A quad where each component is a [`Term`].
6pub type GrdfQuad<I = Id, L = Literal> = Quad<Term<I, L>>;
7
8impl<I, B, L> Quad<Id<I, B>, I, Term<Id<I, B>, L>, Id<I, B>> {
9	pub fn into_grdf(self) -> GrdfQuad<Id<I, B>, L> {
10		self.map_subject(|s| Term::Id(s))
11			.map_predicate(|p| Term::Id(Id::Iri(p)))
12			.map_graph(|g| g.map(Term::Id))
13	}
14}
15
16/// gRDF triple.
17///
18/// A triple where each component is a [`Term`].
19pub type GrdfTriple<I, L> = Triple<Term<I, L>>;
20
21impl<I, B, L> Triple<Id<I, B>, I, Term<Id<I, B>, L>> {
22	pub fn into_grdf(self) -> GrdfTriple<Id<I, B>, L> {
23		self.map_subject(|s| Term::Id(s))
24			.map_predicate(|p| Term::Id(Id::Iri(p)))
25	}
26}