When Is a Temporal Statement Store a Statement Graph?
A tiramemsu record looks like a statement vertex with its three role edges, so it is tempting to say the store already is a Statement Graph, the model behind Amazon Neptune's OneGraph. In general it is not. This paper says exactly which part of the store is one, what an export has to drop or report, and how both clocks can travel into RDF-star without loss.
Abstract
A temporal statement store keeps every statement occurrence as a record with an identifier, a triple, a transaction-time lifetime and a valid-time interval, and lets other records refer to it. We ask which part of such a store can be exported as a Statement Graph, the DAG model that underlies OneGraph interoperability between RDF-star and property graphs, without inventing or renaming any occurrence. The answer has three parts. What can be exported: a selected record set admits an identity-preserving export exactly when it is closed under references and acyclic. Every set contains a greatest such subset, the least fixpoint of a one-line operator, computed by a linear-time topological peel that also yields an export order. When content is immutable, records are never deleted and inserts reference only existing records, the whole history is closed. Exporting the history rather than a snapshot then loses only cycles created by atomic correction, and a per-record bit maintained at insert time turns export into a filter scan. A batch-local check at correction time removes even those cycles. What is dropped: snapshot export additionally drops supersession lineage, whose targets are retracted; a dual reference closure keeps it by adding the retracted targets. What is reported: every omitted record with a reason. An explicit encoding into the RDF-star branch of the OneGraph image, with transaction and valid time as reserved statements, makes the roundtrip of the exportable history lossless, and conjunctive queries over the asserted part are answered identically up to a quoting bijection. Two contrasts locate the boundary. RDF 1.2 reifiers name occurrences instead of nesting them and need neither closure nor acyclicity, but assert per triple, not per occurrence. The property-graph branch admits only edges and unreferenced properties, so it carries both clocks for edges alone.
The main results
Closed and acyclic
A record set exports with every occurrence kept and no reference rewritten exactly when every record it points at is in the set and there are no reference cycles.
The most you can export
Every set has one greatest exportable part. A topological peel finds it in linear time and gives the order a streaming writer needs. One stored bit per record keeps it current.
Export the past, not the present
The full history is closed, so it loses only cycles that a correction can create. A check on the replay batch rejects those, and then the whole history exports.
Both clocks, losslessly
Clocks become reserved statements in RDF-star, and the roundtrip returns every field of every record. Queries agree with the store when contents are distinct.
Who it is for
Anyone moving data between a temporal statement store and RDF-star, RDF 1.2 or a property graph who needs to know what survives: the occurrence ids, the annotations on them, the corrections and both clocks. If you want the ideas without the proofs, start with the companion article. For the informal comparison it builds on, see statement graphs and tiramemsu.
Status and evidence
A draft preprint, archived on Zenodo together with a validation archive. It has not been peer reviewed. The evidence has three parts:
- Proofs. The PDF's proofs are by hand. A Lean 4 development re-proves the criterion, the kernel, the history results, the temporal roundtrip, the query view and the reifier roundtrip. The property-graph result and the cost bounds are not mechanized.
- Validator. It covers 217 625 exhaustive stores, 72 567 four-record reference structures, 20 000 random stores and 3 000 random protocol histories.
- Engine traces. Both counterexamples are traced through the engine and recomputed independently.
Cite
@misc{pavlyshyn2026export,
author = {Pavlyshyn, Volodymyr},
title = {When Is a Temporal Statement Store a Statement Graph?
Export Boundaries for Occurrence Records with Two Clocks},
year = {2026},
note = {Draft preprint, revision 4. CC BY 4.0},
doi = {10.5281/zenodo.23335652},
url = {https://doi.org/10.5281/zenodo.23335652}
}
← Paper 2: Metagraph Encodings over Identified Triples · All papers