Research Knowledge Graph
Build a living knowledge base where agents curate, connect, and evolve research — from papers and notes to structured insight graphs.
Research teams drown in information. Papers pile up. Notes fragment across tools. Connections between ideas exist only in someone's head. When that person leaves, the connections leave too.
A knowledge graph makes connections explicit, discoverable, and persistent. Agents continuously enrich it. Humans curate and validate. The knowledge compounds.
The ontology
interface Searchable {
title: String @index
body: String @index
embedding: Vector(768) @index
}
interface Timestamped {
created_at: DateTime
updated_at: DateTime
}
node Paper implements Searchable, Timestamped {
doi: String @key
authors: [String]
venue: String?
published: Date
status: enum(unread, reading, read, annotated, archived)
relevance: F64?
}
node Note implements Searchable, Timestamped {
slug: String @key
author: String
source: enum(reading, experiment, meeting, conversation, synthesis)
confidence: enum(speculative, plausible, established)
}
node Concept {
slug: String @key
name: String @index
domain: enum(ml, systems, product, strategy, operations)
maturity: enum(emerging, growing, established, declining)
}
node Question {
slug: String @key
text: String @index
status: enum(open, investigating, answered, parked)
priority: enum(critical, high, medium, low)
asked_by: String
asked_at: DateTime
}
node Claim {
slug: String @key
statement: String @index
confidence: F64
verified: Bool
embedding: Vector(768) @index
}
// Knowledge edges
edge Cites: Paper -> Paper
edge Covers: Paper -> Concept
edge Supports: Paper -> Claim
edge Contradicts: Claim -> Claim { @unique(src, dst) }
edge Supersedes: Claim -> Claim { @unique(src, dst) }
edge Answers: Note -> Question
edge DerivedFrom: Note -> Paper
edge Connects: Note -> Concept
edge Raises: Paper -> Question
edge RelatedTo: Concept -> Concept { @unique(src, dst) }This ontology captures not just what you know, but how you know it. Papers support claims. Claims can contradict each other. Notes derive from papers. Questions get raised and answered. Concepts relate to each other.
What agents can do with this
Literature discovery
A scanning agent reads new papers and places them in the graph:
query add_paper($doi: String, $title: String, $body: String, $authors: String, $venue: String, $published: Date, $embedding: Vector(768)) {
insert Paper {
doi: $doi,
title: $title,
body: $body,
authors: [$authors],
venue: $venue,
published: $published,
status: "unread",
embedding: $embedding,
created_at: "2026-03-30T00:00:00",
updated_at: "2026-03-30T00:00:00",
}
}Then it detects which concepts the paper covers and creates edges:
query link_paper_to_concept($doi: String, $concept: String) {
insert Covers {
src: $doi,
dst: $concept,
}
}Research gap detection
What questions remain unanswered?
query open_questions_by_priority() {
match {
$q: Question { status: "open" }
not { $_ answers $q }
}
return {
$q.text, $q.priority, $q.asked_by, $q.asked_at
}
order { $q.priority asc }
}[
{
"text": "Does retrieval-augmented generation degrade on multi-hop reasoning?",
"priority": "critical",
"asked_by": "research-lead",
"asked_at": "2026-03-15T09:00:00"
},
{
"text": "What's the latency ceiling for hybrid search at 10M documents?",
"priority": "high",
"asked_by": "systems-eng",
"asked_at": "2026-03-20T14:00:00"
}
]Citation graph traversal
Follow the citation chain to find foundational work:
query citation_chain($doi: String) {
match {
$p: Paper { doi: $doi }
$p cites {1, 3} $ancestor
}
return {
$ancestor.title, $ancestor.doi,
$ancestor.published, $ancestor.venue
}
order { $ancestor.published asc }
}Three hops into the citation graph surfaces the foundational papers that your paper of interest builds on.
Contradiction detection
A verification agent scans for conflicting claims:
query unresolved_contradictions() {
match {
$c1: Claim { verified: true }
$c1 contradicts $c2
$c2.verified = true
}
return {
$c1.statement, $c1.confidence,
$c2.statement, $c2.confidence
}
}[
{
"c1.statement": "Fine-tuning on domain data consistently outperforms RAG for factual QA",
"c1.confidence": 0.75,
"c2.statement": "RAG with structured retrieval matches fine-tuned models on domain QA benchmarks",
"c2.confidence": 0.82
}
]Two verified claims that disagree. A resolution agent can examine the supporting papers, compare methodologies, and either update confidence scores or mark one as superseded.
Semantic research discovery
Find papers related to a question using vector search, scoped to a domain:
query find_relevant_papers($concept: String, $question: Vector(768)) {
match {
$c: Concept { slug: $concept }
$p covers $c
$p.status != "archived"
}
return { $p.doi, $p.title, $p.published, $p.relevance }
order { nearest($p.embedding, $question) }
limit 10
}Structure narrows (only papers covering this concept). Vectors rank (by semantic similarity to the question). Combined, you get precise, relevant results.
Knowledge synthesis
A synthesis agent reads across related concepts and writes connecting notes:
query concept_neighborhood($concept: String) {
match {
$c: Concept { slug: $concept }
$c relatedTo $related
$p covers $c
$p covers $related
}
return {
$c.name, $related.name, $related.maturity,
$p.title, $p.doi
}
}"What papers sit at the intersection of two related concepts?" This surfaces cross-domain connections that humans miss because they're reading within one domain at a time.
Multi-agent research pipeline
Scanner agent → ingests new papers, extracts concepts, writes Claims
(branch: scan/arxiv-20260330)
Linker agent → reads new papers, finds citation links and concept connections
(branch: link/batch-42)
Verification → checks new Claims against existing ones, flags contradictions
agent (branch: verify/batch-42)
Synthesis agent → reads concept neighborhoods, writes connecting Notes
(branch: synthesis/weekly-13)
Question agent → reads open Questions, searches for relevant papers/claims
that might answer them (branch: answers/weekly-13)Each agent merges independently. The scanner runs daily. The linker runs after each scan merge. Verification runs after linking. Synthesis runs weekly. The graph accumulates structured understanding over time.
What you can build from here
- Reading list prioritization — Score unread papers by citation count, concept relevance to open questions, recency, and semantic similarity to the team's current focus.
- Expertise mapping — Add
Researchernodes andAuthoredBy/ExpertInedges. Query "who on the team has the deepest knowledge of concept X?" - Trend detection — Track concept maturity over time. An agent that reads new papers and updates
Concept.maturitybased on publication velocity can flag emerging topics. - Literature review generation — Given a question, traverse to relevant papers, claims, and notes. Feed the structured context to an LLM that writes a review with proper citations.
Revenue Operations
Build an AI-powered revenue operations layer — pipeline intelligence, account scoring, deal risk, and rep coaching — all backed by a typed knowledge graph.
Incident Response
Build an incident management graph where agents correlate alerts, trace impact, and coordinate response — with a full audit trail.