🕸️ 知识图谱驱动

基于 PostgreSQL 闭包表构建教程库与课件库的关联网络,打通 STEM 知识体系

← 返回首页

技术架构

OpenMTSciEd 使用 PostgreSQL 闭包表(Closure Table)存储和管理 STEM 知识点之间的复杂关系,实现跨学科、跨学段的知识关联。通过递归 CTE 查询,可在毫秒级完成任意深度的依赖路径计算。

                    ┌─────────────┐      ┌──────────────┐      ┌─────────────┐
                    │ 教程库单元   │─────▶│  过渡项目     │─────▶│ 课件库章节   │
                    │ OpenSciEd   │      │ Blockly编程  │      │ OpenStax    │
                    └─────────────┘      └──────────────┘      └─────────────┘
                           │                      │                      │
                           ▼                      ▼                      ▼
                    ┌─────────────┐      ┌──────────────┐      ┌─────────────┐
                    │ 硬件项目     │◀─────│  理论映射     │─────▶│ AI虚拟导师   │
                    │ Arduino     │      │ MiniCPM      │      │ 解释逻辑     │
                    └─────────────┘      └──────────────┘      └─────────────┘
                    

核心数据

5
节点类型
7
关系类型
90%
跨学科准确率
500+
知识节点目标

图谱设计

节点类型

关系类型

代码示例

SQL 递归 CTE - 查找前置依赖路径

-- 查询"生态系统能量流动"的所有前置依赖知识点 SELECT c.id, c.name, cp.depth FROM concept_path cp JOIN concept c ON cp.ancestor_id = c.id WHERE cp.descendant_id = $target_concept_id AND cp.path_type = 'required' AND cp.depth > 0 ORDER BY cp.depth DESC

TypeScript API 调用 (Prisma ORM)

import { getPrerequisites, findRoute } from '@/lib/concept-path'; // 获取目标知识点的所有前置依赖 const prereqs = await getPrerequisites(conceptId, 'required'); // 查找从起点到终点的完整学习路径 const route = await findRoute(fromId, toId, 'required'); // route.concepts → [{ id: 3, name: '基础代数' }, ...]

技术栈

相关文档