1
What happened, bounded.
Every event carries temporal bounds with their uncertainty, a spatial footprint rather than a pin, and a classification saying what type of thing it was.
Globodex Specification
A shared language for describing what happens in the world: where, when, and why it matters. EDS gives AI agents and media systems a common way to discover, verify, and reason about real-world events.
EDS is a specification that describes events — things that happen at a specific time and place — and links them to verifiable media assets like video, audio, images, and text.
How it works
At its core EDS defines a single portable object — the event — capturing what happened, where, when, and what evidence exists for it.
1
Every event carries temporal bounds with their uncertainty, a spatial footprint rather than a pin, and a classification saying what type of thing it was.
2
Video, photos, audio and text dispatches attach to the event, each with its own provenance chain and a cryptographic hash for tamper detection.
3
Every link between two events carries a type, a direction and a weight. Sequences can be replayed, causal claims traced, and a contradiction kept rather than quietly resolved.
The result is a structured, queryable, verifiable record of what is happening in the world — readable by a newsroom, an analyst, and an autonomous agent without translation between them.
Why it exists
Every newsroom, sensor network, and AI agent describes the world differently. EDS is the description they can share, with the evidence and rights still attached.
Every producer already describes events. EDS is the part they can agree on.
One object → four layers → a graphArchitecture
Raw media enters at the bottom and is progressively enriched: extracted into metadata, embedded into vectors for semantic search, and finally linked into a knowledge graph. Nothing is discarded on the way up. Queries enter at the top and read down.
Nothing is interpreted yet. Files are written once and hashed, never rewritten, so every claim made higher up traces back to bytes that have not changed.
Interpretation comes later, so it can be redone without disturbing the evidence.
object storage
Time resolves to a bounded interval, location to a geometry, subject matter to a classification against a published taxonomy. Provenance and rights are recorded as fields, not notes.
Fields can be matched across sources. Notes cannot.
object → metadata
Structured fields and the assets themselves are embedded as vectors, so retrieval works on similarity. Two records describing the same kind of thing in different words sit near each other.
You find the record you meant, not the one that matched your words.
metadata + objects → vectors
Candidate relationships are proposed, weighted and sourced, then written as typed edges: sequence, cause, identity, contradiction.
Every edge keeps its confidence and its author, so the graph can be audited, never merely trusted.
vectors → knowledge graph
Event model
This is the field reference: what each part is called and what goes in it. Which fields a record must carry depends on the conformance level it claims, set out in the table below.
Which rules apply, and what to call this.
schema pins the version to validate against; id is a ULID, so chronological order survives a plain text sort. status declares the kind of claim — observed, reported, scheduled, disputed.
Reported and observed are not the same epistemic act. Absent status defaults to the weaker one.
"schema": "eds-0.1", "id": "evt_01HZYR4E…", "status": "observed"
When, and how sure.
An interval, never an instant. An ISO 8601 range, so the whole span is one value. uncertainty carries a separate duration for each bound: how far the start might be wrong, and how far the end might be.
Required from L1. A bare instant with no uncertainty is invalid, not approximate.
"time": {
"interval": "…T17:02Z/…T19:40Z",
"uncertainty": { "lower": "PT5M", "upper": "PT2M" }
}
Where, as an area.
GeoJSON geometry: a Point only where a point is genuinely what happened, otherwise a line or polygon. spatial_index carries an H3 cell so proximity queries skip the geometry maths.
The index is derived. If it disagrees with the geometry, the geometry wins.
"place": {
"geometry": { "type": "Polygon", "coordinates": [] },
"spatial_index": { "h3": { "res7": ["87283082affffff"] } }
}
What kind of thing happened.
type comes from a closed core list so cross-producer counting is possible; subtype is open and extensible, which is where domain vocabulary belongs.
Closed at the core, so counts compare across producers. Open at the subtype, so no domain has to flatten itself to fit.
"classification": {
"type": "public_protest",
"subtype": "march"
}
Who says so, and how they know.
collection_method separates witnessed, sensor, derived and reported. source_confidence is the producer’s own estimate in this record.
Source confidence is a self-report. Its value is that it is attributable, not that it is objective.
"provenance": {
"created_by": "org:channel1",
"collection_method": ["mobile_uploads", "wire_service"],
"source_confidence": 0.86
}
Whether it holds, and whether you may use it.
verification_state records the outcome of checking and signals what was checked. rights is a sibling of trust, not a field inside it: licence, consent and restrictions travel on the record, because a permission held elsewhere has already failed the only test that matters.
unchecked is not failed. Absent and negative mean different things here.
"trust": {
"verification_state": "unchecked",
"signals": []
},
"rights": {
"license": "CC-BY-4.0",
"restrictions": ["no_face_recognition"]
}
Conformance
Not every source can provide every field on day one. Conformance levels let producers contribute useful event data immediately without overstating what is known. A record that claims a level and omits a field that level requires is not demoted to a lower one. It is invalid.
Schema version, event ID, status, and summary.
Something happenedAdds temporal bounds and a spatial footprint.
Anchored in the worldClassification, provenance, rights, trust, entities, and assets.
Production readyCryptographic content-authenticity manifests attached.
End-to-end proofRelations
EDS defines four categories of relation between events, and nothing outside them.
precedesfollowscoincides_withcausescaused_bycorrelates_withwithinpart_ofsuperset_ofsame_assupersedescontradictsRelations are directional, weighted, and sourced. They let systems reconstruct sequences, trace causal claims, distinguish duplicates, and preserve contradictions.
Principles
Keep the portable event object readable. Put domain-specific complexity in governed extensions.
Use JSON, GeoJSON, ISO 8601, H3, JSON-LD hooks, and established content-authenticity systems.
Treat provenance, hashing, corroboration, and verification as part of the record — not optional decoration.
Keep licenses, consent, restrictions, and sensitivity machine-readable at every downstream use.
Version explicitly, publish migrations, and give integrations time to adapt to breaking changes.
The standard
EDS gives agents and media systems a common, verifiable way to describe real-world events, so intelligence moves between them without losing its sources. If your systems move event data, we want to hear from you.