Don’t Blink
Modeling Narrative Time When the Story is a Tangled Web
The Impossible Protagonist
Consider the central puzzle of the Doctor Who episode “Blink.” Sally Sparrow receives a cryptic warning from the Doctor recorded in 1969—thirty-eight years before she discovers it hidden in DVD Easter eggs. Her investigation leads to encounters with the Weeping Angels, quantum-locked predators who send their victims back in time. Throughout Sally’s ordeal, she is stalked, aided, and ultimately saved by a protagonist who exists almost entirely outside her timeline.
This presents a computational paradox. How can a machine comprehend a story where the protagonist’s most crucial actions happened decades before the narrative began? Standard computational models, built on linear broadcast schedules, aren’t merely insufficient—they’re blind to the essence of narrative craft. To teach a machine to understand “Blink” is to teach it to see in four dimensions.
Why a Simple Timeline Isn’t Enough
Most media systems represent television by broadcast schedule. As the BBC’s Mythology Engine project observed, this approach organizes content by series and episode—a model that fails to capture what audiences truly care about: the characters, storylines, and places that compose the storyworld. The Mythology Engine aimed to solve this by creating a content-centric model where stories were composed of editorially chosen “events” featuring characters, places, and significant objects.
This shift reveals the core narratological challenge: the distinction between Fabula and Syuzhet. The Fabula is the raw, chronological sequence of events as they occurred in the story world. The Syuzhet is the artfully rearranged order in which those events are presented to create tension, mystery, or emotional impact.
Technical approaches inevitably stumble here. A simple database table with a timestamp column can only represent one timeline—it cannot model the temporal paradoxes of “Blink” because it has no mechanism to separate chronological causality from viewing experience. A linear timeline shows when an episode aired, but not how an action in 1969 caused an effect in 2007.
Building the Story World as a Graph
The solution is to model the storyworld ontologically, creating a formal separation between the chronological event layer (Fabula) and the narrative presentation layer (Syuzhet). By representing the story as a graph, we map the complex web of relationships between characters, events, and the different temporal sequences they inhabit.
A Practical Ontology for Narrative Drama
A robust narrative graph requires only a handful of core node types:
Character: An agent in the narrative
Event: A key narrative moment in story-chronological order (Fabula)
Scene: A unit of presentation in viewing order (Syuzhet)
Location: Physical spaces where events occur
Object: Items with narrative significance
These nodes connect through relationships that define narrative structure:
PARTICIPATES_IN: Links a Character to an Event
OCCURS_IN: Links an Event to a Scene, showing where chronological events appear to the audience
NEXT_EVENT: Connects Event nodes to form the chronological Fabula chain
NEXT_SCENE: Connects Scene nodes to form the presented Syuzhet chain
Modeling “Blink” in Neo4j
Here’s how this ontology implements in Neo4j:
// Create Characters
CREATE (:Character {name: “Sally Sparrow”});
CREATE (:Character {name: “The Doctor”});
CREATE (:Character {name: “Larry Nightingale”});
CREATE (:Character {name: “Weeping Angels”, type: “Antagonist”});
// Create Objects
CREATE (dvd:Object {name: “DVD”, description: “Contains the Doctor’s Easter Egg”});
// Create Scenes (Syuzhet)
CREATE (scene1:Scene {name: “Opening Scene”, order: 1});
CREATE (scene2:Scene {name: “Investigate Warning”, order: 2});
CREATE (scene1)-[:NEXT_SCENE]->(scene2);
// Create Events (Fabula)
CREATE (event1:Event {name: “Sally Receives Warning”, sequence: 1});
CREATE (event2:Event {name: “Sally Investigates Warning”, sequence: 2});
CREATE (event3:Event {name: “Sally Finds DVD”, sequence: 3});
CREATE (event4:Event {name: “Angels Attack”, sequence: 4});
CREATE (event1)-[:NEXT_EVENT]->(event2);
CREATE (event2)-[:NEXT_EVENT]->(event3);
CREATE (event3)-[:NEXT_EVENT]->(event4);
// Link Characters to Events
MATCH (sally:Character {name: “Sally Sparrow”}), (event1:Event {name: “Sally Receives Warning”})
MERGE (sally)-[:PARTICIPATES_IN]->(event1);
MATCH (doctor:Character {name: “The Doctor”}), (event1)
MERGE (doctor)-[:PARTICIPATES_IN]->(event1);
MATCH (angels:Character {name: “Weeping Angels”}), (event4:Event {name: “Angels Attack”})
MERGE (angels)-[:PARTICIPATES_IN]->(event4);
// Represent Character beliefs over Fabula sequence
MATCH (sally:Character {name: “Sally Sparrow”}), (event1), (event2)
MERGE (sally)-[:HAS_BELIEF {belief: “The warning is a joke”, sequence: 1}]->(event1);
MERGE (sally)-[:HAS_BELIEF {belief: “The warning is real”, sequence: 2}]->(event2);
This script explicitly creates two parallel linked lists: (:Event)-[:NEXT_EVENT]->(:Event) for chronological Fabula and (:Scene)-[:NEXT_SCENE]->(:Scene) for presented Syuzhet. This dual-chain structure is the breakthrough. A query following NEXT_SCENE shows the story as Sally experiences it. A query following NEXT_EVENT traces the true causal path, even when it jumps across decades.
The model also represents a character’s evolving internal state—like Sally’s belief—not as a property on the Character node, but as a temporal relationship (HAS_BELIEF) linked to specific Events in the Fabula sequence. This allows queries about a character’s mindset at any point in the story’s true chronology.
3.3. Context and Comparisons
This practical graph model exists within the broader field of computational narratology. The BBC’s Mythology Engine used the Ontomedia ontology to represent Doctor Who stories, granular enough to model complex temporal relationships—such as representing a character sent back in time as two distinct entities linked by shared identity.
Academic research has produced other valuable approaches. The Drammar ontology formalizes relationships between characters’ intentions and actions, excellent for analyzing conflict but less focused on temporal structure. The ProppOntology, based on Vladimir Propp’s structuralist analysis of 31 invariant plot “functions” in Russian fairy tales, is powerful for archetypal folklore analysis but less flexible for modern, character-driven drama.
The ontological graph is one of several valid formalisms. Other approaches, such as using Linear Logic, model narrative from the perspective of resource consumption and causality, where actions consume and create resources to drive the story forward. Each method provides a different lens for understanding narrative machinery.
Seeing the Whole Web
Once the Fabula is modeled as a graph, computational analysis transcends simple plot summary. The structure enables identification of higher-order narrative connections:
CAUSAL: One event directly causes another
CHARACTER_CONTINUITY: Events mark milestones in a character’s psychological journey
THEMATIC_PARALLEL: Different events mirror each other in meaning or function
ESCALATION: One event intensifies another
CALLBACK: An event explicitly references an earlier moment, creating narrative bookending
This analysis allows queries that probe not just what happens, but why it matters. An AI can trace a character’s entire emotional arc, identify all events related to a theme like “sacrifice,” or map the chain of cause and effect driving the plot.
And this brings us back to our impossible protagonist. The graph makes the Doctor computationally visible. It can see his PARTICIPATES_IN relationship with the “Sally Receives Warning” event, then trace causal consequences through the entire Fabula chain—from Sally’s investigation to her final confrontation with the Weeping Angels. The Doctor’s absence in the Syuzhet becomes an irrelevant artifact of presentation; the graph reveals his omnipresence in the Fabula, the true causal engine of the story.
By separating what happened from how it was told, the graph allows us to see the story as the writer intended: not as a straight line, but as a timeless, interconnected web of cause and effect.

