Skip to content

Timestamps Identifiers Digests

Chris Meyer edited this page Aug 27, 2019 · 3 revisions

This describes the functional overview of the software. This document is a mix of the current state and the desired state of the software.

Timestamps

Each item has a created and modified date. created is set once when the item is created. modified is updated when the item is changed.

Timestamps are not generally copied when processing results in a new data item. The exception to this is during a snapshot, which is a special operation which explicitly makes an exact copy including timestamps.

Identifiers

Each item has a universally unique identifier (UUID) that is assigned when the item is created. The UUID is only unique within a particular project. The UUID uniqueness within a project is enforced when adding objects to a project.

Digests

Digests may be used to identify a snapshot of the item at a given time. Digests must be stored outside the item they represent, but the digest should normally include the identifiers and timestamps as part of the data to be digested.

Digests may be used for authenticating data.

References

When loaded in memory, each item has a unique reference, which is the pointer to the item in memory.

Persistent Specifiers

A persistent specifier is used to persistently refer to another item. To refer to objects within the same project, the persistent specifier must include the UUID of the item. To refer to objects in a different project, the persistent specifier must include the UUID of the item in the other project and the UUID of the other project itself.

Handling Objects with Matching Identifiers

Objects with identical UUID's can exist since each will have a unique reference when represented in memory. In addition, persistent specifiers can uniquely refer to objects with matching UUID's either implicitly within their own project or explicitly by including the project UUID to distinguish the item UUID.

Other Resources

XPath 3.1 Specification

"context item"

"available contexts"