The Doctor’s Doxastic Web
When Possible-Worlds Logic Meets Narrative Graphs
Part 2 of a Fabula blog series
There is a branch of modal logic called doxastic logic — from the Greek doxa, meaning belief — that formalises what agents believe, and what they believe about each other’s beliefs. Its central metaphor is elegant: an agent’s belief state is the set of worlds that agent considers possible. An accessibility relation connects the actual world to each world the agent cannot distinguish from it. If every world accessible to Agent A contains proposition p, then A believes p.
This sounds abstract. It is abstract, on purpose. But if you squint at a Fabula knowledge graph the right way, you see something unexpected: the graph is a concrete, queryable realisation of exactly this structure. And Doctor Who Season 12 — specifically Genesis of the Daleks — is the perfect lens to see it through.
Identity Is Topology
In doxastic logic, a possible world has no intrinsic identity. It is defined entirely by its relations — which agents can access it, which propositions hold in it, which other worlds it connects to. Strip away the relations, and nothing remains.
The same is true of characters in a Fabula graph. The Doctor node carries properties — canonical_name, foundational_description, tier: "anchor" — but these are labels, not identity. The Doctor’s identity is his connectivity pattern: 756 event participations in Season 4, 65 shared events with Davros in Genesis, a betweenness centrality that connects 428 otherwise-isolated character clusters. Remove the edges and you have a floating string. Keep the edges and delete the properties, and you still know exactly who this node is.
This is not a metaphor. It is a structural fact. In possible-worlds semantics, identity is accessibility. In a knowledge graph, identity is topology.
Multiple Accessibility Relations as Typed Edges
Classical doxastic models use a single accessibility relation per agent. Fabula does something richer: it deploys multiple typed edge relations simultaneously, each constituting a distinct accessibility topology over the same node set.
PARTICIPATED_AS: who was present at which events, and in what role (protagonist, antagonist, informant, victim)
AFFILIATED_WITH: organisational membership and allegiance
CAUSAL: event-to-event causation chains (509 in Season 4 alone)
INVOLVED_IN_ARC: which events participate in which conflict trajectories
NARRATIVELY_FOLLOWS, FORESHADOWING, THEMATIC_PARALLEL: structural narrative connections
Each of these is a separate accessibility relation laid over the same graph. The full Fabula graph is a superposition of overlapping topologies — what a logician would call a multi-index Kripke frame. Query one edge type and you see the social network. Query another and you see the causal skeleton. Query a third and you see the thematic architecture. The drama lives in where these topologies align and where they diverge.
Higher-Order Beliefs as Multi-Hop Paths
Here is where it gets interesting. Doxastic logic supports nesting: “Davros believes that Nyder fears that the Doctor suspects his plan” is a perfectly well-formed proposition. In Kripke semantics, evaluating it requires traversing three accessibility relations in sequence — one per epistemic agent.
In the Fabula graph, this nested belief state corresponds to a multi-hop path. Consider the Genesis co-occurrence data:
Doctor <-> Davros: 65 shared events
Nyder <-> Davros: 59 shared events
Doctor <-> Nyder: 60 shared eventsThese three pairs form a tight triangle — a doxastic neighbourhood in which every agent has dense observational access to every other. Compare this with a structurally different cluster:
Sevrin <-> Sarah Jane: 37 shared events
Doctor <-> Sarah Jane: 53 shared eventsSevrin and Sarah Jane form an imprisonment cluster, sharing 37 events during their captivity arc. But Sevrin’s connection to Davros is sparse. The path from Sevrin’s beliefs about the Dalek project must pass through Sarah Jane and then through the Doctor — a longer chain with weaker epistemic authority at each hop. The topology encodes the limits of what Sevrin can know.
The Logical Omniscience Problem
Every serious engagement with doxastic logic hits the same wall: the logical omniscience problem. In standard Kripke semantics, agents believe all logical consequences of their beliefs. If Agent A believes p, and p entails q, then A believes q — automatically, costlessly, without having to reason about it.
This is obviously wrong for human agents, and it is spectacularly wrong for dramatic characters. The entire tension of Genesis of the Daleks depends on Davros not drawing the logical consequences of what he already knows. He has all the evidence that the Doctor’s ethical objections are sincere. He has all the evidence that his own Kaled government is turning against him. He cannot — or will not — close the inferential chain.
Fabula’s graph hits the same problem operationally. If the Doctor participates in Event A and Event A is causally linked to Event B involving the Kaled Council, naive path-finding would infer that the Doctor has causal influence over the Council. Sometimes that is correct. Sometimes the drama is precisely about the gap between structural connection and actual influence.
This is why Fabula extracts belief states at the beat level — not as inferred closures but as observed dramatic facts. Each PlotBeat carries emotional arcs (directional: “defiant to resigned”), character goals, and active belief states extracted directly from the screenplay text. These are not computed from the graph. They are grounded in what the script actually shows.
Absent Characters Are Load-Bearing
One of the deepest insights from doxastic logic is that an agent’s beliefs persist even when the agent is off-stage. In possible-worlds terms, the set of accessible worlds does not shrink just because the agent is not currently being observed.
Fabula captures this structurally. When Sarah Jane is separated from the Doctor during her imprisonment with Sevrin (37 shared events in their own sub-graph), the Doctor does not vanish from the narrative topology. His PARTICIPATED_AS edges in earlier events still exist. His CAUSAL connections still propagate. He is structurally load-bearing even in his absence — the graph records the fact that Sarah Jane’s situation was caused by events the Doctor participated in, and that her eventual rescue will reconnect the separated subgraphs.
The Season 4 bridge character analysis quantifies this precisely: the Doctor connects 428 otherwise-isolated character clusters. Remove that node and the graph fragments into hundreds of disconnected components. He is not just a character; he is a topological necessity.
From Abstract Semantics to Operational Queries
What possible-worlds semantics describes abstractly — agents, accessibility relations, nested beliefs, the gap between structural entailment and actual knowledge — the Fabula graph implements operationally. You can write a Cypher query that traverses exactly the path a logician would draw on a whiteboard:
// Doxastic neighbourhood: agents with dense mutual observation
MATCH (a:Agent)-[:PARTICIPATED_AS]->(e:Event)<-[:PARTICIPATED_AS]-(b:Agent)
WHERE a.canonical_name = "The Doctor" AND a <> b
WITH b.canonical_name AS partner, COUNT(DISTINCT e) AS shared_events
ORDER BY shared_events DESC LIMIT 5
RETURN partner, shared_eventsThis returns the Doctor’s epistemic neighbourhood — the agents whose belief states most overlap with his because they have been present at the same dramatic moments. The 65-event Doctor-Davros overlap is not just a number. It is the width of an accessibility relation, the density of a doxastic channel, the structural measure of how deeply two characters can reason about each other.
Doxastic logic gave us the vocabulary. Graph databases gave us the query language. Fabula gives us the data. The web is real, and you can walk it.
This is post #2 in a series on computational narratology and knowledge graph topology. Fabula is an open narrative intelligence platform — explore the data at fabula.productions.

