1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! Storage contracts for Vertep actors.
//!
//! Storage is two RDF-agnostic traits, so that no backend is asked for a guarantee it cannot
//! give:
//!
//! - [`JournalStore`]: per actor address, a linearizable, all-or-nothing append of journal
//! entries at an expected position (compare-and-set), reads from a position, and an optional
//! fencing token checked on append.
//! - [`GraphStore`]: RDF quads in, SPARQL 1.1 out, with a declared RDF 1.2 capability. No
//! compare-and-set and no transactions across requests are required.
//!
//! Journal entries are RDF datasets with one named graph per entry ([`Entry`]). The crate also
//! ships the pieces every backend shares: the in-memory reference implementation
//! ([`MemoryStore`]), the projector that copies journals into an external graph store
//! ([`Projector`]), the RDF 1.1 reification fallback for annotations ([`reification`]), the
//! SPARQL text helpers ([`sparql`]) and, behind the `testkit` feature, the shared backend test
//! kit every backend must pass.
//!
//! @tg: implements:: [[decisions#Two storage traits with tiramemsu as default]] {confidence: partial}
//! @tg: implements:: [[decisions#Fencing epochs on journal appends]] {confidence: partial}
pub use ;
pub use ;
pub use ;
pub use MemoryStore;
pub use ;
/// The RDF model the contracts are written in (the `oxrdf` crate, with RDF 1.2 terms).
pub use oxrdf;
;