Data Model - TrueLink/Carpona GitHub Wiki

Hypergraph of linked facts (observations? events?) with data and metadata

TODO: need better words for fact, provider, etc. need terminology

Fact Structure

  • User

  • tenant owning things that are happening, resource root

  • logical context owner

  • tx time authority

  • TX time

  • logical time, causal, relative to other TX times, usually serialized at physical_viewpoints

  • may contain links to ptime but this is hard to do and better done in logical context

  • Space/Universe/Provider/Repository

  • managed or unmanaged object provider/locator/sync channel/index (materialized view)

  • logical storage/repository too

  • provider of rules for the logical context

  • side effect handler

  • may also be a canonicalization rule provider

  • Physical Viewpoint

  • representation/reflection of an inference agent/system performing the derivations, required to reason about performance and resources

  • contains users, providers (many-to-many), indices

  • Logical Context

  • user-chosen subset/viewpoint of the universe containing inference traits/flavors

  • inference rules, coercion/canonicalization rules (always logical, don't belong to universe apart from physical_viewpoint), construction/deconstruction rules

  • acquisition keys like precision or source trust

  • target context eg criteria of what data we choose to use/disclose, permissions belong here

  • logical_viewpoint eg the task that we're currently solving, or just session (timeline + state)

  • Fact / Event Locator

  • physical time, relative to universe, stuff like GPS coordinates also belongs here

  • not strictly mandatory but really useful.

  • derivations are logical-context dependent

  • Domain Data

  • may overlap with Event Locator, all other data.

  • derivations are same as event locator data

Object Identification and Canonicalization

  • Objects are identified by "nominal_id:query" where nominal id must be GUID of provider, query may also be ID or it may be filter by event locator
  • Logical context and/or providers give canonicalization relations between providers and/or individual objects. Sync flow and inference flow should respect canonicalization.
  • IDs must not be concatenated into "paths" because same object may totally legally exist at multiple providers.
  • Canonicalization relations are tx-scoped by logical context, and if possible locator-scoped (note the recursion here...)

Sync Model

We totally need to support both state-based and event-based sync, even given the complications that necessarily arise.

State-based sync happens ONLY between managed + unmanaged objects, syncing unmanaged + unmanaged is undecidable.