Skip to content

kgdiff 是什么? ​

kgdiff 是知识图谱的 git diff。给它一张图的两个版本(一次本体发布、一次 GraphRAG 抽取、一张数据血缘 DAG),它会按审阅者的思路告诉你发生了什么:某个术语合并进了另一个,某个类挪到了新的父类下,某条关系改为指向别处,某个标签改了名。结果可以输出在终端里,可以作为 Pull Request 评论,也可以放进交互式查看器:两个版本画在同一张稳定的地图上。

kgdiff 查看器逐组回放企业信用知识图谱本体两个版本之间的变化

sh
npx @kgdiff/cli before.json after.json
kgdiff  企业信用知识图谱本体 v12 → v13                                节点 74 · 关系 171

  +1 新增   −1 删除   ~6 修改   ⇄4 结构调整                            12 组共 23 处变化
  ++++−−−~~~~~~~⇄⇄⇄⇄⇄⇄⇄⇄⇄

  删除 1
  − 删除「抽查检查」及 2 条关系                                 删除 · 类型 事件 · 原关…
  结构调整 4
  ⊕ 「法人代表」合并入「法定代表人」                            身份 · 依据替代声明 ·…
  ⇄ 「股权出质」移至「股权投资」下                              结构 · 原属「经营风险」
  …
  修改 6
  ~ 「高管任职」改名为「董监高任职」                            内容 · 别名 +1
  …

为什么不用文本 diff? ​

文本 diff 比较的是文件。在 Turtle 里给一个类改名,所有提到它的行都会变;把两个术语合并,看到的是一处删除加上散落在文件各处的修改;把同一张图重新序列化一遍,看起来就像全都变了。kgdiff 比较的是图本身:

  • 跨版本匹配节点:按 id,按替代声明(例如 OBO 的 replaced_by),或者在 id 没有意义时(例如两次 LLM 抽取的结果)按标签和邻居结构匹配。
  • 给变化分类:改名、更换 id、类型、同义词、属性、废弃、在层级中迁移、合并、拆分、关系改指向和谓词变化。
  • 把变化分组:每组对应审阅者要做的一次判断,按便于阅读的顺序排列:先清理(删除),再重组(结构调整),再细化(修改),最后生长(新增)。
  • 忽略无关的差别:同一张图写成 Turtle 还是 N-Triples,语句按什么顺序排列,比较结果都完全相同。

用法一览 ​

你想要……用什么
看两个文件之间变了什么命令行:快速开始
在每个修改图谱的 PR 上说明变化GitHub Action,或在其他 CI 中运行命令行
直观地浏览差异HTML 报告(-o report.html)或 Playground
在自己的应用里展示差异<kgdiff-viewer> Web 组件
在代码里比较图各个库

kgdiff 读取 RDF(Turtle、N-Triples、N-Quads、TriG、RDF/XML、JSON-LD)、OBO 和常见的 JSON 图格式(格式)。一切都在本地运行:命令行在你的机器上,Playground 和查看器在你的浏览器里,不会上传任何数据。

下一步 ​

  • 快速开始:安装命令行工具,读懂第一份 diff。
  • Playground:在浏览器里试试示例数据或你自己的文件。
  • Architecture(英文):kgdiff 如何匹配、分类和绘制变化。

基于 MIT 许可证发布。示例数据采用 CC0-1.0。