Skip to content

常见问题 ​

kgdiff 会上传我的数据吗? ​

不会。命令行在你的机器上运行,Playground 和查看器在你的浏览器里计算。kgdiff 也不会联网获取任何内容:远程的 JSON-LD context 会被拒绝,RDF/XML 里的外部实体从不加载。报告是可以离线使用的单个文件。

图最大可以多大? ​

diff 引擎能处理几十万个节点的图:在 id 完全一致的情况下,10 万个节点、30 万条关系的预算是 2 秒以内。内存占用随图的大小和变化的多少增长,图在百万三元组左右时会用到数 GB,其中 HTML 报告最耗内存。图非常大时,--stat 和 --markdown 最省资源,查看器会以“仅看变更”视图打开。各项目标见 Architecture:budgets(英文)。

为什么一个变化被报告成合并或迁移,而不是删除加新增? ​

因为 kgdiff 跨版本匹配了节点,并判断了它们经历了什么。如果它把你认为不同的节点配成了一对,可以用 --match id 只按 id 配对,调高 --threshold,或者用 --no-merges 和 --no-splits 关闭合并和拆分检测。

为什么 kgdiff 没有把我认为相同的两个节点配成一对? ​

它们的相似度低于阈值(默认 0.82),或者另有一个候选的可能性差不多。查看器会在详情面板里把这类差一点配上的候选列为“可能是同一节点”。可以调低 --threshold,或者用替代声明明确指出配对关系(OBO 用 replaced_by,RDF 用 IAO:0100001,kgdiff JSON 用 replacedBy)。评分方式见没有稳定 id 的图。

输出是确定的吗? ​

是的。输入和选项相同,diff、增量和布局就逐字节相同。HTML 报告默认包含时间戳,加上 --reproducible 就不会写入。

kgdiff 能比较 OWL 公理吗? ​

kgdiff 比较的是本体所描述的图,存在量词约束也包括在内,但它不做推理,其他类表达式会显示为匿名节点。要在公理层面审阅,请同时使用 robot diff 这类工具。参见本体。

怎样忽略总在变的属性? ​

用 --ignore-attr <key>,每个键重复一次。被忽略的属性仍会在详情里显示,但不会算作变化。

kgdiff 支持哪些语言? ​

英文和中文:命令行和报告用 --locale zh-CN,查看器用 locale 属性。默认情况下,命令行跟随 LANG,查看器跟随浏览器的语言。

kgdiff 和其他工具有什么不同? ​

文本 diff 比较的是序列化结果;ROBOT diff 这类本体工具以文本形式列出变化的公理。kgdiff 会匹配节点、说出变化的名称(合并、拆分、迁移、改名),并把两个版本画在同一张稳定的地图上供审阅。首页的对比有更详细的说明。

kgdiff 能只看一张图吗? ​

不能。kgdiff 总是比较两个版本,它的颜色表示变化,单独一张图画出来会是一整片灰色。要浏览一张图,请使用图可视化库:用 G6 浏览单张图介绍了如何读取 kgdiff 能读的任何文件,并用 AntV G6 画出来。审阅 diff 时,查看器已经可以让你四处看看:按 / 搜索整张图,点击未变的节点查看详情,在“仅看变更”视图中扩大上下文。

运行 kgdiff 需要什么? ​

命令行和在 Node 中使用的库需要 Node.js 22 或更高版本,查看器需要主流现代浏览器。

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