At its core, EDS defines a single portable object, the event, that captures what happened, where it happened, when it happened, and what evidence exists for it.
Every event carries temporal bounds (when it started and ended, with uncertainty margins), a spatial footprint (a GeoJSON polygon covering the area, plus altitude and H3 spatial indexing), and a classification that describes what type of event it is.
Attached to each event are the raw media assets (video clips, photos, audio recordings, text dispatches) each with their own provenance chain, cryptographic hashes for tamper detection, and optional cryptographic manifests for end-to-end content authenticity verification.
Events then connect to each other through typed, weighted relations, forming a knowledge graph over time and space. One event precedes another. A traffic disruption is caused by a march. Two reports from different sources are flagged as same_as, or contradicts.
The result is a structured, queryable, verifiable record of what's happening in the world, designed for both human editorial teams and autonomous AI agents.
Object Storage holds the raw media files: video clips, photographs, audio recordings, sensor telemetry. These are the source-of-truth assets, stored immutably with cryptographic hashes.
Metadata Storage extracts structured information from those assets: when they were captured, where, by whom, with what device, and how much of the EDS schema they conform to. Conformance is scored on four levels, from L0 (basic, minimal fields) up to L3 (fully verified with cryptographic content authenticity).
Vector Storage generates semantic embeddings from both the metadata and the original media, enabling natural-language queries like "protests in downtown LA this week" to return relevant events by meaning, not just keyword match.
Graph Database is where events become knowledge. Entities (people, organizations, places) are linked to events through typed relations, forming a knowledge graph that supports causal reasoning, timeline reconstruction, and cross-source deduplication.
Identity gives each event a globally unique, time-sortable identifier (UUIDv7 or ULID), a human-readable summary, and a status indicator (whether it's been observed, predicted, or retracted).
Time captures when the event occurred as an ISO 8601 interval with explicit upper and lower bounds. Critically, it also records uncertainty, because real-world events rarely have precise start and end times. An earthquake might be timed to the second; a political rally might have 15 minutes of uncertainty on either end.
Place defines the event's spatial footprint as a GeoJSON polygon, not just a point. A wildfire covers an area. A parade follows a route. EDS captures that geometry natively, with altitude ranges and H3 spatial indexing for fast geospatial queries.
Classification categorizes the event using a pluggable taxonomy system. The base taxonomy covers common event types (natural disaster, public protest, election, press conference), but organizations can extend it with domain-specific types.
Provenance records who created the event record, when, using what collection methods (satellite imagery, mobile uploads, wire service), and with what level of source confidence. This is the chain of custody for the data itself.
Trust & Rights is where EDS diverges from most data standards. Verification status, trust signals (cross-source corroboration, cryptographic manifests), licensing terms, consent records, and usage restrictions are all first-class fields, not optional metadata bolted on later.
{
"schema": "eds-0.1",
"id": "evt_01HZYR4E1K0A3N7A6J3C4KZ9B2",
"summary": "Large march along Wilshire Blvd",
"status": "observed",
// When it happened — with uncertainty bounds
"time": {
"interval": "2025-08-12T12:05:00Z/2025-08-12T13:40:00Z",
"uncertainty": { "lower": "PT5M", "upper": "PT2M" }
},
// Where it happened — as a GeoJSON polygon, not a point
"place": {
"geometry": { "type": "Polygon", "coordinates": [/* ... */] },
"spatial_index": { "h3": { "res7": ["87283082affffff"] } }
},
// What type of event
"classification": { "type": "public_protest", "subtype": "march" },
// Who recorded it and how
"provenance": {
"created_by": "org:channel1",
"collection_method": ["uav_video", "mobile_uploads"],
"source_confidence": 0.86
},
// Trust and rights travel with the data
"trust": {
"verification_state": "partially_verified",
"signals": [{ "kind": "cross_source", "score": 0.7 }]
},
"rights": { "license": "CC-BY-4.0", "restrictions": ["no_face_recognition"] }
}
Not every data source can provide every field on day one. EDS uses four conformance levels so that teams can start contributing data immediately and improve quality over time. An event at L0 is still useful; it just has fewer guarantees.
EDS defines four categories of relations between events. Each relation is directional, carries a confidence weight, and can optionally link to the specific assets that evidence the relationship.