Current Version: v0.8.3 Released: July 2026 DOI: 10.5281/zenodo.21490478 (this version) · 10.5281/zenodo.17808652 (concept — resolves to latest)
The EDM whitepaper is archived in-repo under releases/ and published on Zenodo:
- Download: EDM v0.8.3 Whitepaper (PDF)
- Cite as: Harvey, J. (2026). Emotional Data Model (EDM). Zenodo. https://doi.org/10.5281/zenodo.17808652
This repository contains:
- Profile-based JSON Schemas (
schema/edm.v0.8.{essential,extended,full}.schema.json) - Example artifacts (
examples/) - Implementation documentation (
docs/) - Release notes
Reference implementations:
- ddna-tools - Sealing and verification
- deepadata-edm-sdk - Artifact extraction
- deepadata-edm-mcp-server - MCP adapter
Status: Stable (v0.8.3) — Production ready
Everyone is building memory for AI. No one is building identity governance for emotional data.
As AI agents gain persistent memory (Mem0, OpenAI Memory, etc.) and communicate via standardized protocols (MCP, A2A), a critical gap remains: there is no governance-first standard for emotional data.
EDM fills this gap by providing:
- A portable schema for emotional context (not locked to any vendor)
- Compliance by design (GDPR, HIPAA, EU AI Act ready)
- Non-inferential representation (explicit data only, no psychological reconstruction)
- The foundation for .ddna — a cryptographically-signed emotional identity artifact
EDM is: A data format specification. It defines structure and semantics for emotional context that can be validated, exchanged, and governed.
EDM is not:
- An identity provider (Auth0-class systems remain external)
- A certificate authority or regulator
- A memory store, agent runtime, or analytics system
- An emotion recognizer or prediction system
Tooling is non-normative. Any tooling built around EDM (validators, SDKs, CLI tools) is reference implementation only. The canonical JSON Schema remains the sole source of truth.
See: Scope and Non-Goals | EDM and .ddna Boundary
The EDM whitepaper is published on Zenodo (latest published deposit:
v0.8.1; the v0.8.3 document is regenerated in-repo under
releases/v0.8.3/ and its Zenodo deposit is pending):
Citation:
Harvey, J. (2026). Emotional Data Model (EDM). Zenodo. https://doi.org/10.5281/zenodo.17808652
Full Whitepaper: Download from Zenodo
The Emotional Data Model (EDM) v0.8.3 is a governance-first schema for representing emotional context in AI systems. It defines a domain-complete, schema-bound format that externalizes affective context as a deterministic, model-agnostic data object.
New in v0.8.x: Partner Profiles (§3.7.6), meta.profile two-tier model with partner: prefix, two new arc_type values, certification minimum bar. v0.8.1 is a references/errata patch; v0.8.2 reconciles the published fragments with the canonical vocabulary (ADR-0030 — narrative_archetype at 12 identity archetypes); v0.8.3 is a truth-only patch (Full composite source_timestamp conformance, field count 91, document regeneration). See PROFILES.md, CONFORMANCE.md, and CHANGELOG.md.
Key principles:
- Transient by default — EDM artifacts should not persist beyond session windows (24 hours max) unless explicitly sealed in a .ddna envelope
- Non-inferential — No field may contain psychological inference or behavioral prediction
- Portable — Works across any LLM provider, memory system, or agent framework
- Compliant — Built for GDPR, CCPA, HIPAA, EU AI Act from day one
This repository contains:
- Canonical JSON Schema for EDM v0.8
- Domain Fragment Schemas (10 domains, 91 fields, Full profile)
- Implementation Profiles and Conformance documentation
- Migration Crosswalks and Guides
- Validation Tools & Examples
# Clone the repository
git clone https://github.com/emotional-data-model/edm-spec.git
cd edm-spec
# Validate an artifact (choose profile schema)
npm install -g ajv-cli
ajv validate -s schema/edm.v0.8.full.schema.json -d examples/example-full-profile.json
ajv validate -s schema/edm.v0.8.essential.schema.json -d examples/example-essential-profile.jsonProfile schemas are hosted at their canonical $id URLs:
https://deepadata.com/schemas/edm/v0.8.0/edm.essential.schema.json
https://deepadata.com/schemas/edm/v0.8.0/edm.extended.schema.json
https://deepadata.com/schemas/edm/v0.8.0/edm.full.schema.json
For always-latest versions, use /current/ (redirects to latest stable):
https://deepadata.com/schemas/edm/current/edm.essential.schema.json
https://deepadata.com/schemas/edm/current/edm.extended.schema.json
https://deepadata.com/schemas/edm/current/edm.full.schema.json
JavaScript/TypeScript:
// Import the profile schema matching your artifact's meta.profile
import essentialSchema from 'edm-spec/schema/edm.v0.8.essential.schema.json';
import extendedSchema from 'edm-spec/schema/edm.v0.8.extended.schema.json';
import fullSchema from 'edm-spec/schema/edm.v0.8.full.schema.json';
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile(fullSchema); // or essentialSchema, extendedSchema
if (validate(artifact)) {
console.log('Valid EDM v0.8 artifact');
} else {
console.error('Validation failed:', validate.errors);
}Python:
import json
import jsonschema
# Choose profile schema matching artifact's meta.profile
with open('schema/edm.v0.8.full.schema.json') as f:
schema = json.load(f)
with open('artifact.json') as f:
artifact = json.load(f)
jsonschema.validate(instance=artifact, schema=schema)
print("Valid EDM v0.8 artifact")EDM v0.8 defines 10 mandatory domains (91 fields total, Full profile) plus the optional extensions domain:
- CORE (7 fields) - Narrative anchors: anchor, spark, wound, fuel, bridge, echo, narrative
- CONSTELLATION (19 fields) - Affective topology: emotions, narrative arcs, relational dynamics
- MILKY_WAY (5 fields) - Contextual framing: event type, location, people, tone shifts
- GRAVITY (14 fields) - Salience geometry: emotional weight, density, recall triggers
- IMPULSE (12 fields) - Motivational state: energy, drive, orientation, regulation
- META (17 fields) - Identity & provenance: id, version, timestamps, consent, visibility
- GOVERNANCE (7 fields) - Rights & compliance: jurisdiction, retention, subject rights, k-anonymity
- TELEMETRY (4 fields) - Extraction metadata: model, confidence, extraction context
- SYSTEM (2 fields) - Compute boundary: embeddings, indices
- CROSSWALKS (4 fields) - Interoperability: Plutchik, Geneva Emotion Wheel, DSM-5, ISO mappings
EDM artifacts can be rendered as a navigable markdown wiki using the EDM Significance Wiki Format. The two-file pattern (wiki_article.md + significance_article.md) enables agents and individuals to build personal knowledge bases weighted by what mattered.
Reference implementation: deepadata-edm-mcp-server
Canonical values are preferred; free text is accepted where no canonical value accurately represents the extracted content (two-tier enum model, v0.7.0+).
joy, sadness, fear, anger, wonder, peace, tenderness, reverence, pride, anxiety, gratitude, longing, hope, shame, disappointment, relief, frustration
betrayal, liberation, grief, discovery, resistance, bond, moral_awakening, transformation, reconciliation, reckoning, threshold, exile, gratitude, authenticity
parent_child, grandparent_grandchild, romantic_partnership, couple, sibling_bond, family, friendship, friend, companionship, colleague, mentorship, reunion, community_ritual, grief, self_reflection, professional, therapeutic, service, adversarial
hero, caregiver, seeker, sage, lover, outlaw, innocent, magician, creator, everyman, jester, ruler
The 12 canonical identity archetypes — which archetype the subject
embodies, not a story role (ADR-0030; orphan and mentor are excluded
as roles, not identities).
person, symbol, event, place, ritual, object, tradition, identity, self
belonging, safety, mastery, meaning, autonomy, authenticity
EDM is designed for regulated environments:
| Regulation | EDM Support |
|---|---|
| EU AI Act | Non-inferential representation; no behavioral prediction |
| GDPR | jurisdiction, consent_basis, subject_rights (portable, erasable, explainable) |
| HIPAA | policy_labels (health, biometrics), masking_rules, k_anonymity |
| CCPA | retention_policy, exportability controls |
The GOVERNANCE domain provides explicit fields for:
- Jurisdiction declaration (GDPR, CCPA, HIPAA, PIPEDA, LGPD)
- Retention policies (TTL, on_expiry actions)
- Subject rights (portable, erasable, explainable booleans)
- K-anonymity requirements
- Policy labels and masking rules
See: EU AI Act Compliance Guide for detailed regulatory mapping.
edm-spec/
├── schema/
│ ├── edm.v0.8.essential.schema.json # Essential profile (5 domains, 24 fields)
│ ├── edm.v0.8.extended.schema.json # Extended profile (8 domains, 50 fields)
│ ├── edm.v0.8.full.schema.json # Full profile (10 domains, 91 fields)
│ ├── fragments/ # Shared domain schemas
│ │ ├── core.json
│ │ ├── constellation.json
│ │ ├── governance.json # Compliance & rights
│ │ └── ... (11 total)
│ └── crosswalks/ # Migration mappings
│ ├── v0.2_to_v0.3.json … v0.8.2_to_v0.8.3.json
├── examples/
│ ├── example-{essential,extended,full}-profile.json
│ └── example-partner-{journaling,therapy,companion,wiki}.json
├── test-vectors/ # Canonical .ddna verification vectors
├── releases/ # Versioned whitepaper documents
│ ├── v0.8.0/
│ ├── v0.8.1/
│ └── v0.8.3/
├── docs/
│ ├── OVERVIEW.md # Schema architecture
│ ├── PROFILES.md # Implementation & partner profiles
│ ├── CONFORMANCE.md # Conformance levels
│ ├── SCOPE_AND_NONGOALS.md # What EDM is and is not
│ ├── EDM_DDNA_BOUNDARY.md # Transient vs persistent
│ ├── EU_AI_ACT_COMPLIANCE.md # Regulatory compliance guide
│ ├── WIKI_FORMAT.md # Significance Wiki two-file format
│ ├── VALIDATION.md # Validation guide
│ ├── RELEASE-NOTES.md
│ └── archive/ # Historical migration guides
├── scripts/
│ └── validate-examples.mjs # Validation utilities
├── CHANGELOG.md # Version history
├── CITATION.cff # Citation metadata
├── LICENSE # MIT License
├── SECURITY.md # Security policy
└── README.md
Truth-only patch: the Full composite meta block gains source_timestamp
(conformance to the canonical fragment — widening only), field count
corrected to 91, narrative_archetype description corrected to the
identity definition. No migration required.
See schema/crosswalks/v0.8.2_to_v0.8.3.json.
Fragment reconciliation to the canonical vocabulary: narrative_archetype
13 → 12 (mentor removed), motivational_orientation +authenticity,
meta.profile two-tier fragment fix, meta.tags spurious enum removed.
Migration needed only for artifacts carrying
narrative_archetype = "mentor".
See schema/crosswalks/v0.8.1_to_v0.8.2.json.
References and errata only. No structural change; no migration required.
New features: Partner Profiles (§3.7.6), meta.profile two-tier model
(partner: prefix), arc_type +2 values, certification minimum bar.
See schema/crosswalks/v0.7.0_to_v0.8.0.json. No breaking changes.
New features: Extensions domain, arc_type field, expanded enums, field deprecations.
See RELEASE-NOTES.md for full details.
Breaking change: meta.profile is now required.
EDM v0.6.0 introduced Implementation Profiles. All artifacts must declare their profile:
"essential"— Minimal footprint (24 fields)"extended"— Narrative depth (50 fields)"full"— Complete manifold (96 fields)
Backwards-compatible enum additions. No breaking changes.
See docs/archive/V05_MIGRATION_GUIDE.md for full details.
- Review changes: 6 fields removed, GOVERNANCE domain added
- Migration guide: docs/archive/V04_MIGRATION_GUIDE.md
- Use crosswalk:
schema/crosswalks/v0.3_to_v0.4.json - Test thoroughly: Validate migrated artifacts against v0.4 schema
We welcome contributions!
Ways to contribute:
- Open an Issue for bugs or suggestions
- Submit a Pull Request for schema improvements
- Join Discussions for design questions
- Contact: jason@emotionaldatamodel.org
See CONTRIBUTING.md for guidelines.
Security issues: Please report vulnerabilities privately via SECURITY.md.
If you use EDM in your research, please cite:
@software{harvey2026edm,
author = {Harvey, Jason},
title = {Emotional Data Model (EDM)},
year = {2026},
publisher = {Zenodo},
version = {v0.8.3},
doi = {10.5281/zenodo.17808652},
url = {https://github.com/emotional-data-model/edm-spec}
}
(10.5281/zenodo.17808652 is the concept DOI and resolves to the latest published deposit; a version-specific v0.8.3 DOI will replace it once the v0.8.3 Zenodo deposit is published.)
MIT License — See LICENSE file.
EDM is open source to enable proliferation and interoperability. The schema is free to use, modify, and distribute.
EDM is maintained by DeepaData and the emotionaldatamodel.org standards body.
- EDM — Emotional Data Model (this specification)
- .ddna — Portable, signed emotional identity artifact
- ESAA — Emotional Safety Attestation Artifact
Mission: Make emotional AI safe, governed, and user-sovereign.
Website: emotionaldatamodel.org | deepadata.com GitHub: @emotional-data-model Contact: jason@emotionaldatamodel.org
- Whitepaper (latest published deposit, v0.8.1): Zenodo Record
- Concept DOI (all versions): 10.5281/zenodo.17808652
- Note: The v0.8.0 deposit (10.5281/zenodo.19555166) exists outside the main version chain, cross-linked via related identifiers. v0.8.1 reunifies the lineage under concept 17808652. v0.8.2 was npm-only (no deposit); the v0.8.3 deposit is pending.
- Repository: https://github.com/emotional-data-model/edm-spec
- Issues: https://github.com/emotional-data-model/edm-spec/issues
Last Updated: July 2026 Version: 0.8.3 License: MIT