技术架构
OpenMTSciEd 使用 Neo4j 图数据库存储和管理 STEM 知识点之间的复杂关系,实现跨学科、跨学段的知识关联。
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ 教程库单元 │─────▶│ 过渡项目 │─────▶│ 课件库章节 │
│ OpenSciEd │ │ Blockly编程 │ │ OpenStax │
└─────────────┘ └──────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ 硬件项目 │◀─────│ 理论映射 │─────▶│ AI虚拟导师 │
│ Arduino │ │ MiniCPM │ │ 解释逻辑 │
└─────────────┘ └──────────────┘ └─────────────┘
核心数据
5
节点类型
7
关系类型
90%
跨学科准确率
500+
知识节点目标
图谱设计
节点类型
- CourseUnit - 教程库单元(如 OpenSciEd 生态系统能量流动)
- TextbookChapter - 课件库章节(如 OpenStax 大学物理力学)
- HardwareProject - 硬件实践项目(如 Arduino 气象站)
- KnowledgePoint - 知识点(如光合作用、欧姆定律)
- TransitionProject - 过渡项目(如 Blockly 编程模拟)
关系类型
- LEADS_TO - 递进关系(教程库→课件库)
- APPLIES_THEORY - 硬件项目应用理论
- CROSS_DISCIPLINARY - 跨学科关联
- REQUIRES - 先修知识依赖
- EXPLAINED_BY - AI 导师解释
代码示例
Cypher 查询 - 查找知识关联
// 查询"生态系统能量流动"关联的所有资源
MATCH (unit:CourseUnit {title: "生态系统能量流动"})
OPTIONAL MATCH (unit)-[:LEADS_TO]->(chapter:TextbookChapter)
OPTIONAL MATCH (unit)-[:HAS_PROJECT]->(project:HardwareProject)
RETURN unit, chapter, project
Python API 调用
from neo4j import GraphDatabase
class KnowledgeGraphService:
def __init__(self, uri, user, password):
self.driver = GraphDatabase.driver(uri, auth=(user, password))
def get_related_resources(self, unit_id):
with self.driver.session() as session:
result = session.run("""
MATCH (unit:CourseUnit {id: $unit_id})
-[:LEADS_TO*1..3]->(resource)
RETURN resource
""", unit_id=unit_id)
return [record["resource"] for record in result]
技术栈
- Neo4j 5.x - 图数据库存储
- Cypher - 图查询语言
- Python neo4j driver - 后端集成
- ECharts - 前端可视化
- APOC Plugin - 高级图算法