技术知识库 · 技术指南 · · 国科智飞 Gavin
os-taxonomy:用 DAG 建一套知识图谱的方法论
1,590 个微知识点、3,221 条前置依赖:这份开源小学课标图谱的价值不在数据量,而在把知识拆成可计算结构的方法。
做知识图谱最难的从来不是存图,而是决定「节点切到多细、边凭什么连」。Marble 开源的 os-taxonomy(仓库 withmarbleapp/os-taxonomy)给了一份可以直接抄作业的答案:把小学阶段要学的全部内容拆成 1,590 个微知识点,再用 3,221 条前置依赖边连成一张有向无环图(DAG)。项目 2026 年 7 月发布,两个月 star 超过 4,000,采用 ODbL 1.0 加 CC BY-SA 4.0 双许可证。
它是什么
它是一份纯数据集,没有运行时依赖。8 个学科的小学阶段知识点全部以 JSON 存放:
- topics.json:1,590 个节点;
- dependencies.json:3,221 条边;
- curriculum-standards.json:知识点对齐的原始课标;
- clusters.json:183 条按学科、领域、年龄段组织的通俗摘要;
- manifest.json:数量统计与每个文件的 SHA-256 校验和,配 schema/ 目录做结构校验。
每个知识点包含稳定 ID、类型、学科、领域、名称、描述、适龄范围、图中心度(centrality)、掌握证据清单、带占位符的自然语言评估提示,以及对应的课标编号。类型分五种:概念、程序、表征、语言、元认知。课标对齐覆盖 NGSS、Common Core、英国国家课程等,用「课标:编号」的格式引用。
它想解决的问题很典型:大多数课程数据要么是一张平的课标清单,要么锁在某个产品里。平清单能查「要学什么」,回答不了「先学什么」;锁在产品里的数据更没法复用。这张图把「依赖关系」显式建模出来,让知识排序变成可计算的问题。
能力与亮点
知识点带掌握证据,才能被评估。 每个节点不只有一句描述,还有「怎样算学会」的证据清单和评估提示。这一点把「资料库」和「可教学的知识图谱」区分开了——只有描述的知识点,到了 Agent 手里没法判断学生会不会。
边才是真正的资产。 3,221 条前置依赖每条都标 hard 或 soft,并附一行理由,比如「先理解振动产生声音,才能找音量的规律」。硬依赖是不过就学不动,软依赖是有了会更顺。这行理由逼作者把领域判断写出来,也让后来者可以审计。
课标锚点保证可追溯。 每个知识点都能指回它从哪条课标提炼而来,数据来源和推导链可查。做教育产品,这种可追溯性直接影响可信度。
中心度是隐藏的引擎。 centrality 字段度量节点在图里的枢纽程度,用它可以先补「堵点」知识点,比逐节点刷题高效。把中心度和依赖边放在一起,就能回答两个不同的问题:先补哪个影响面最大,以及为了学会目标知识点必须打通哪条路径。
数据工程做得干净。 schema、manifest、校验和、CITATION.cff 一应俱全,没有运行时依赖,任何语言都能读。作为数据集,它像一份正式出版物,而不是一个随手导出的表格。
许可证为采用而设计。 数据库结构层用 ODbL 1.0,文本内容层用 CC BY-SA 4.0:基于它做产品不必开源,只有修改分类学本身才需要回馈。这个边界是商用友好的,也是它容易被产品团队接受的原因。
拆解粒度给了一个可参照的标尺。 1,590 个知识点对应小学阶段全部学科,平均每个学科的颗粒度细到「一节内容一个点」。自己在别的领域建图时,「多细算细」这个最常见的争论,可以直接拿它当参照系。
局限与坑
v1 且社区贡献几乎为零。 仓库 7 月 8 日发布后到 9 月没有新的提交,1,590 个知识点由 Marble 团队自己审核,带有明显的单一团队视角。star 涨得快,不等于内容已经过大规模检验。
学科分布不均。 Science 有 547 个知识点、Mathematics 有 503 个,而 Computing 只有 21、Learning to Learn 只有 18。想用后两个学科做试点可以,想靠它做完整课程覆盖不行。
英语世界课标。 它以美国、英国课标为锚,中文场景需要自己完成课标映射——翻译不等于对齐,中国的教材体系和课标编号要另建。
数据不等于产品。 它没有路径算法、没有界面、没有经过校准的测评题目。assessmentPrompt 是模板,不是题库;学习路径、缺口诊断、难度模型都要自己实现。
字段值是英文。 学科、领域、类型这些枚举值都是英文命名,做中文产品要自己做一层术语映射,别指望直接展示给用户。
只覆盖小学阶段。 中学、高等教育、职业培训不在范围内。
双许可证有细节。 ODbL 的 share-alike 条款针对数据库本身。把数据嵌进自有分类体系之前,建议让法务确认边界。
适用场景
- 做自适应学习、AI 辅导产品的团队:把它当「学生知识缺口诊断」的骨架,沿依赖边逆向推导补课路径;
- 教育内容团队:参考它的拆解粒度设计自己的课程结构,或者用它做内容覆盖度检查——哪些前提知识点还没讲;
- 评估与出题团队:用 evidence 清单和 assessmentPrompt 设计形成性评估,检查一个知识点是否被真正掌握;
- 任何要建知识图谱的团队:入职培训、岗位认证、内部课程体系,都可以套用「原子知识点 + 前置依赖 + 掌握证据 + 标准锚点」这套模板。
不适合想要现成测评系统的团队、中文课标开箱即用的场景,以及非小学阶段的知识域。
选型建议
先读 schema 和 manifest,确认字段设计与数据版本管理方式,再决定怎么接入。评估阶段建议抽样检查:随机挑几十个知识点,看掌握证据是否可观察、依赖边的方向是否符合你的领域直觉,特别是 hard 与 soft 的标注是否合理。这一步比看 README 更能判断数据能不能用。
如果是要给 Agent 用,基本流程是:载入 DAG,从目标知识点反向遍历找缺口,拓扑排序生成学习路径,再用 centrality 决定优先补哪个知识块。实现时注意处理「多路径」的情况——同一目标节点往往有多条前置链,需要定义好补齐规则;软依赖可以先跳过,硬依赖必须阻断。
中文场景别急着整体翻译。更务实的做法是把它当建模模板:选一个垂直学科(比如 Computing 的 21 个知识点),用自己的课标和内容复刻同样的结构,跑通后再扩大。这样既验证了方法,也避开了课标错配。
最后记住这套方法论的四个要件:原子化的知识点、有理由的前置依赖、可观察的掌握证据、可追溯的标准来源。四样凑齐,图谱才不只是好看。