mcpField
R
research-knowledge-graph

research-knowledge-graph

github.com/kalarislabs数据与数据库7349 次安装3 天前更新
代码仓库

关于 research-knowledge-graph

Research Knowledge Graphs 是将参考文献库转为论文、作者、出版场所、主题和引文关系图谱的技能。它支持离线构建或通过 OpenAlex 补充数据,并导出供图分析和可视化工具使用的数据。

主要功能

  1. 01从 BibTeX 或 CSL-JSON 构建图谱
  2. 02通过 OpenAlex 补充元数据
  3. 03导出 JSON、GraphML、CSV 和 Obsidian 库
  4. 04表示作者、主题、出版场所和引文
  5. 05分析聚类与桥接论文

适用场景

  1. 01梳理文献库中的主题与引文关系
  2. 02找出语料内被引较多的论文
  3. 03识别连接研究聚类的论文
  4. 04为 Gephi 或 Obsidian 准备图数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill research-knowledge-graph

安装后在 Claude Code 中输入/research-knowledge-graph确认已加载。

附带文件scripts/build_graph.py

详细介绍

研究知识图谱

文献综述本质上是一个图问题:哪些论文是大家共同的基础,哪些研究群体各说各话,哪些研究连接了不同群体,以及研究空白在哪里。此技能会根据参考文献库构建这张图,并交由用户偏好的图工具使用。

构建

# Offline: authors, venues and keywords from the .bib itself
python scripts/build_graph.py references.bib --out kg/

# Enriched: disambiguated authors (OpenAlex IDs, ORCID), venues, topics, and
# citation edges between papers in the library
python scripts/build_graph.py references.bib --out kg/ --openalex --mailto [email protected]

也支持将 CSL-JSON(.json,由 Zotero 或 reference-manager-interop 导出)作为输入。

输出用途
graph.json用于 NetworkX:nx.node_link_graph(json.load(f), edges="links"),或任何 JS 图形库
graph.graphml用于 Gephi、yEd、Cytoscape、igraph、nx.read_graphml
nodes.csv、edges.csv用于 Neo4j(neo4j-admin database import full --nodes=nodes.csv --relationships=edges.csv)或 Gephi 电子表格导入
vault/用于 Obsidian(图谱视图),以及 graphify 等 Markdown 图工具;这类工具会将 [[wikilinks]] 读取为边

模式。 节点 type ∈ {paper、author、venue、topic}。边 type ∈ {authored_by、published_in、about、cites}。已知时,论文节点会包含 doi、year、 openalex、cited_by_count。

扩展到参考文献库之外(滚雪球法)

引文边只连接你已有的论文。要绘制某个领域的图谱:

  1. 选取 5-20 篇核心论文作为种子。
  2. 向后追溯:从 OpenAlex 收集每篇种子的 referenced_works。向前追溯:查询 https://api.openalex.org/works?filter=cites:W123...,获取引用这些论文的作品。
  3. 保留至少被 2 篇种子论文引用的候选论文(共被引),将其导出为 .bib,然后重建图谱。
  4. 当某轮只新增少量高度连接的论文时停止。报告轮次和阈值(以确保可复现)。

分析(NetworkX)

import json, networkx as nx
g = nx.node_link_graph(json.load(open("kg/graph.json")), edges="links")
papers = [n for n, d in g.nodes(data=True) if d["type"] == "paper"]
cit = g.edge_subgraph([(u, v) for u, v, d in g.edges(data=True) if d["type"] == "cites"]).copy()

influential = sorted(cit.in_degree(), key=lambda x: -x[1])[:10]            # most cited within corpus
bridges = sorted(nx.betweenness_centrality(cit.to_undirected()).items(), key=lambda x: -x[1])[:10]
communities = nx.community.louvain_communities(cit.to_undirected(), seed=0)  # research clusters

解读指南:

  • 高入度表示该论文是这批文献的基础(而非全球范围内的重要论文)。
  • 高中介中心性表示论文连接了不同群体,通常是撰写综述综合分析部分时最值得阅读的论文。
  • 社群可作为综述小节的候选主题。根据每个社群的主要主题和被引最多的论文为其命名。
  • 主题相近的社群之间连接稀疏,可能意味着值得阐述(并验证)的研究空白。
  • 合著关系的连通分量可显示研究团队。若没有 --openalex,请谨慎处理基于姓名的作者合并。

可视化

  • Gephi:打开 graph.graphml → ForceAtlas2 → 按入度调整大小 → 按模块度类别着色。
  • Obsidian:将 kg/vault 作为知识库打开,并使用图谱视图,按文件夹(论文/作者/主题)筛选。
  • 文档中的小型图谱:将引文子图转换为 Mermaid(flowchart LR,每条 cites 关系对应一条边)。

完整性规则

  • 切勿虚构边或论文。每个节点和边都必须来自参考文献库或 OpenAlex 记录。
  • 在提出看似明显的研究空白等结论前,先阅读论文进行核实。

撰写时需说明的注意事项

覆盖范围取决于 OpenAlex/Crossref 元数据;引文边的完整程度取决于 referenced_works。关键词/主题节点较为粗略。务必报告数据来源、 检索日期和筛选阈值。

相关技能

paper-corpus-rag(对同一批论文进行全文问答)、literature-review、 systematic-review-prisma、networkx、reference-manager-interop、citation-verification。

评论

支持 Markdown