Skip to main content

Domain Model

iAm's graph-based data model captures the complex, interconnected nature of subjective experience. Built on Neo4j, the system models experiential data through a network of entities and relationships that preserve both the temporal and semantic dimensions of experience reporting.

Terminology Note

In the documentation we use Experience Instance and Unique Value for clarity. In the codebase and database schema, these correspond to the Manifestation and Abstract node types respectively.

Why a Graph Database?

Traditional relational databases are not well suited to the fluid, interconnected nature of subjective experience data. iAm uses a graph model because:

  • Natural Relationships: Experiences don't exist in isolation -- they reference, investigate, and build upon each other
  • Temporal Sequences: The flow of consciousness has inherent ordering
  • Semantic Networks: Different experience types share conceptual relationships
  • Pattern Analysis: Graph traversals support pattern analysis not readily available in tabular structures

The Entity Hierarchy

Level 1: Users and Observers

User is the account holder who manages authentication, preferences, and account settings. A User owns multiple Observers.

Observer is the entity that actually reports experiences. It represents a specific "lens" or perspective for data collection. Multiple Observers per User enable different research contexts -- for example, a meditation teacher might have separate Observer identities for personal practice vs. research participation.

Level 2: Type Definitions (The Ontology Layer)

These entities form iAm's shared vocabulary for describing consciousness:

EntityPurposeExamples
ExperienceTypeCategories of subjective phenomena"Verbal Thought", "Emotion", "Visual Imagery", "Bodily Sensation"
SessionTypeStructure and rules for measurement sessionsWhich experience types to track, timing constraints, input methods
SequenceTypeOrdered combinations of sessions and surveysMulti-day study protocols, structured practices
SurveyTypeQuestionnaire structuresPre/post measurements, validated instruments

Level 3: Version Entities (The Evolution Layer)

Every Type has multiple Versions that track definitional evolution:

All versions are immutable once published for research reproducibility. Just as scientific papers cite specific versions of instruments, iAm research can point to exact definitional versions.

Level 4: Measurement Entities (The Data Collection Layer)

EntityDescription
SessionAn instance of a SessionTypeVersion being executed. Has start/end times and contains all Experience Instances reported during it.
SequenceAn instance of a SequenceTypeVersion. Contains ordered Sessions and Surveys.
SurveyAn instance of a SurveyTypeVersion being completed. Contains individual Response entities.

Relationship Types

Core Relationships

RelationshipMeaningExample
HASOwnershipUser HAS Observers, Observer HAS Sessions
IMPLEMENTSType instantiationSession IMPLEMENTS SessionTypeVersion
REPORTEDContainmentSession REPORTED Experience Instances
FOLLOWED_BYTemporal sequenceExperience Instance FOLLOWED_BY Experience Instance
INVESTIGATESMeta-cognitive reflectionExperience Instance INVESTIGATES another Experience Instance
TODirect targetingResponse TO Question
VERSION / DRAFTType evolutionExperienceType VERSION ExperienceTypeVersion

Access Control

Every entity with user-facing data supports access control:

  • Private: Only the owner can see
  • Public: Visible to all platform users
  • Shared: Visible to specific groups or studies

Temporal Architecture

Every experience report captures three distinct temporal moments:

TimestampMeaning
beginInputTimestampWhen the observer starts responding to the experience
endInputTimestampWhen the observer finishes input (stops typing/releases key)
submitInputTimestampWhen the user submits the experience instance

The lag between experience and reporting is itself useful data. These timestamps help researchers understand the temporal dynamics of introspection.

Experience Instances within a session maintain explicit temporal ordering through index values and FOLLOWED_BY relationships, preserving the narrative structure of experience.

Design Trade-offs

Why Separate Unique Value from Experience Instance?

Different observers might report the same experience with slight variations. Unique Values create canonical, normalized representations while preserving raw input. This increases complexity but enables grouping and analysis across observers and time.

Why Three Timestamps?

The gap between experience and reporting contains useful data. Capturing input behavior as part of the measurement enables analysis of reporting latency and introspective dynamics.

Why Versioned Types?

Definitions of consciousness phenomena evolve with research. Immutable versions with clear evolution tracking support research reproducibility at the cost of slightly more complex type management.