Life Ontology Schema

A human life involves identity, temporal context, relationships, domains, projects, resources, and state — all evolving over time. This schema captures that structure.

The 5-Layer Model

PCF organizes human context into five conceptual layers, from stable identity at the core to ephemeral current state at the edge.

Identity Core
Temporal Self
Domain Contexts
Active State
Meta-Patterns
01

Identity Core

The most stable layer. Changes slowly over years.

Contains:

  • Values — weighted, possibly conflicting
  • Personality patterns — communication style, decision style, risk tolerance
  • Cognitive patterns — how you think, learn, process
  • Aesthetic preferences — not just "likes blue" but deeper taste structures
Stability:
Years
02

Temporal Self

The narrative arc of your life. Past, present trajectory, future.

Contains:

  • Past — key events, learnings, failures, wins, relationships formed/ended
  • Present — current state, active contexts, energy levels, focus areas
  • Future — goals (nested, weighted, with dependencies), aspirations, fears
Stability:
Months to years
03

Domain Contexts

The major areas of life, each with its own subgraph.

Contains:

  • Work/Career — role, projects, skills, trajectory, relationships
  • Health — physical state, mental state, patterns, goals
  • Finance — resources, obligations, goals, constraints
  • Relationships — graph of people, connection strength, context, history
  • Learning — what you know, what you're acquiring, gaps
  • Creativity — projects, ideas, inspirations, works
  • Extensible to any domain
Stability:
Weeks to months
04

Active State

What's happening right now. High churn, high relevance.

Contains:

  • Current projects and their states
  • Current blockers and dependencies
  • Emotional/energy state
  • Environmental context
  • Current priorities (which may differ from stated goals)
Stability:
Hours to days
05

Meta-Patterns

Patterns about patterns. Self-knowledge and self-awareness.

Contains:

  • Change patterns — how you've changed over time
  • Intervention results — what has worked/failed
  • Self-relationship — do you follow through? self-sabotage patterns?
  • Blind spots (if known)
Stability:
Changes slowly (meta-level)

Core Entity Types

Entities are the nodes in your context graph. PCF defines a core vocabulary that all implementations should understand.

Goal

A desired outcome with optional deadline, priority, and parent goal. Goals nest hierarchically and can conflict.

Common relations: supports conflicts_with depends_on
Project

A bounded effort toward a goal. Has a state (active/paused/complete/abandoned), timeline, and deliverables.

Common relations: part_of blocks depends_on
Task

A discrete action item. The leaf nodes of the goal/project hierarchy. Has state, due date, context requirements.

Common relations: part_of depends_on blocked_by
Person

Someone in your social graph. Has connection strength, context, history, and relationship type.

Common relations: related_to part_of (organization)
Organization

A group you're part of or interact with. Company, team, community, family unit.

Common relations: contains related_to
Value

Something you care about. Has weight and can conflict with other values. Forms the basis of decision-making patterns.

Common relations: supports conflicts_with
Event

Something that happened. Has temporal bounds, participants, outcomes, and emotional valence.

Common relations: caused_by leads_to
Skill

A capability you have. Has proficiency level, recency of use, and acquisition history.

Common relations: supports part_of (domain)
Resource

Something you have or need. Time, money, energy, attention, social capital.

Common relations: supports blocks depends_on
State

A point-in-time snapshot. Emotional state, energy level, focus area, environmental context.

Common relations: caused_by leads_to

Entity Extension

Implementations can define additional entity types. Use the type field with a namespaced identifier: helaix:custom_type. Unknown types should be preserved during sync.

Core Relation Types

Relations are the edges in your context graph. They capture how entities connect, influence, and depend on each other.

Relation Semantics Inverse Example
supports A helps achieve B supported_by Project → Goal
conflicts_with A and B cannot both be true/achieved conflicts_with Value ↔ Value
depends_on A requires B to proceed depended_by Task → Task
blocks A prevents B from progressing blocked_by Resource → Project
part_of A is contained within B contains Task → Project
contains A contains B as a component part_of Project → Task
caused_by A resulted from B leads_to State → Event
leads_to A resulted in B caused_by Event → State
related_to A and B are connected (weak/untyped) related_to Person ↔ Person

Relation Properties

Every relation carries additional metadata:

weight: float

Strength of the relationship (0.0 - 1.0). Optional, defaults to 1.0.

temporal_bounds: [start, end?]

When this relationship is valid. Null end means still active.

confidence: float

How certain we are about this relationship (0.0 - 1.0).

source: string

Where this relationship came from. "user", "inference", "import".

Core Schema Definition

The minimal core schema that all PCF implementations must understand. Designed to be stable, simple, and extensible.

Entity The base type for all context records
Entity {
  id: uuid                     // Stable identifier
  type: EntityType             // Goal, Project, Task, etc.
  created: timestamp           // When first recorded
  modified: timestamp          // Last modification
  valid_from: timestamp        // When true in reality
  valid_to: timestamp?         // When ceased being true (null = current)
  confidence: float            // 0.0 - 1.0
  source: string               // "user" | "inference" | "import:origin"
  data: type-specific-payload  // Varies by EntityType
}
Relation Connects entities in the graph
Relation {
  id: uuid                     // Stable identifier
  from: entity_id              // Source entity
  to: entity_id                // Target entity
  type: RelationType           // supports, depends_on, etc.
  weight: float                // 0.0 - 1.0, default 1.0
  temporal_bounds: [start, end?]
  confidence: float            // 0.0 - 1.0
  source: string
  metadata: {}                 // Extensible attributes
}
Goal Example entity type payload
Goal.data {
  title: string
  description: string?
  deadline: timestamp?
  priority: "critical" | "high" | "medium" | "low"
  status: "active" | "achieved" | "abandoned" | "blocked"
  parent_goal_id: uuid?        // For hierarchical goals
  domain: string               // "career" | "health" | "finance" | ...
  success_criteria: string[]   // How do we know it's done?
}

Schema Design Principles

  • Minimal stable core: The base Entity and Relation structures rarely change. Type-specific payloads can evolve.
  • Temporal by default: Every record has valid_from/valid_to. Your goals from 3 years ago aren't as relevant as yesterday's.
  • Confidence scores: Not everything is certain. Inferred relationships carry lower confidence than explicit ones.
  • Provenance tracking: Source field enables filtering by origin. "Show me only what I explicitly said, not inferences."

Extensibility Model

PCF is designed to be extended without breaking compatibility. The schema registry pattern enables gradual evolution.

Custom Entity Types

Use namespaced type identifiers. Unknown types should be preserved during sync operations.

type: "helaix:habit_tracker" type: "myapp:custom_entity"

Custom Relation Types

Same namespacing pattern. Include inverse relation name for bidirectional queries.

type: "helaix:inspired_by" inverse: "helaix:inspired"

Payload Extensions

Type-specific data can include additional fields. Use the metadata object for truly unstructured extensions.

data.custom_field: "value" metadata.app_specific: { ... }

Compatibility Rules

  • MUST preserve unknown entity types during sync
  • MUST preserve unknown relation types during sync
  • MUST preserve unknown fields in data payloads
  • MAY ignore unknown types when rendering UI
  • SHOULD warn user when encountering unknown types
Next

Storage Architecture

How the schema gets stored: local-first design, encryption model, sync protocols, and access control patterns.

Read storage docs →