基于 MWORKS 课程体系的学习路径知识图谱示例
这是一个面向教学演示和资源建设的 Syslab 示例工程,用于展示如何把 MWORKS 课程体系拆解为课程阶段、课程模块、核心知识点、软件工具、实践案例和能力目标,并组织成可交互的学习路径知识图谱。
为保证题目中列出的阶段、模块、知识点、工具、案例和能力目标都以独立节点呈现,本示例包含 45 个节点、60 条关系。
1. 示例背景
MWORKS 课程体系涉及 Syslab 科学计算、Modelica 建模、Sysplorer 系统建模、Sysblock 框图建模、控制系统仿真、多学科系统建模和工程案例实践。传统课程目录适合线性阅读,但不容易展示“前置依赖、推荐学习、支撑工具、应用案例、能力目标”之间的网络关系。
本示例通过 Syslab / Julia 构建结构化知识图谱数据,再通过 HTML + D3.js 展示可交互网络,用于课程导航、教学讲解、资源建设和 MoHub 案例展示。
2. 工程结构
MWORKS_Course_KnowledgeGraph_Demo/
├── README.md
├── data/
│ └── mworks_course_graph.json
├── src/
│ ├── build_graph.jl
│ ├── graph_layout.jl
│ ├── graph_query.jl
│ ├── launch_demo.jl
│ └── main.jl
├── app/
│ └── index.html
└── resources/
└── screenshots/
3. 数据结构说明
data/mworks_course_graph.json 使用清晰的节点、关系和路径结构:
{
"nodes": [
{
"id": "syslab_basic",
"name": "Syslab 科学计算基础",
"type": "课程模块",
"level": "科学计算",
"description": "学习变量、函数、矩阵计算、数值求解等科学计算基础能力。",
"recommendation": "建议在完成 MWORKS 平台认知后学习。",
"tags": ["Syslab", "科学计算", "基础"]
}
],
"links": [
{
"source": "mworks_intro",
"target": "syslab_basic",
"relation": "推荐学习"
}
],
"paths": {
"zero_basic": {
"name": "零基础入门路径",
"nodes": ["mworks_course_system", "stage_intro", "mworks_intro"]
}
}
}
节点类型包括:课程阶段、课程模块、核心知识点、软件工具、实践案例、能力目标。
关系类型包括:包含、前置依赖、推荐学习、支撑工具、应用于、提升能力、进阶到。
4. 如何运行
4.1 Syslab 一键封装运行
推荐在 Syslab 中直接运行:
include("src/launch_demo.jl")
该入口会一次性完成:
- 构建 MWORKS 课程体系知识图谱;
- 校验节点、关系和学习路径;
- 生成或更新
data/mworks_course_graph.json; - 将图谱数据同步嵌入
app/index.html; - 尝试使用系统默认浏览器打开交互式 D3 图谱页面。
如果当前环境不允许自动打开浏览器,控制台会输出页面路径和 file:/// 地址,可手动打开。
如需只生成页面、不自动打开浏览器,可在运行前设置:
ENV["MWORKS_KG_AUTO_OPEN"] = "0"
include("src/launch_demo.jl")
4.2 数据生成入口
在 Syslab 中打开本工程目录,然后运行:
include("src/main.jl")
也可以在工程根目录下运行:
julia .\src\main.jl
运行成功后会生成或更新:
data/mworks_course_graph.json
同时,src/main.jl 会把同一份图谱数据嵌入 app/index.html,因此直接打开页面也能看到完整图谱。如果浏览器允许本地 JSON 读取,页面会优先读取 data/mworks_course_graph.json;如果浏览器限制本地读取,则自动使用内嵌数据。
打开页面:
app/index.html
页面使用 D3.js CDN:
https://cdn.jsdelivr.net/npm/d3@7
如需完全离线运行,可下载 D3 v7 到本地并替换 app/index.html 中的 CDN <script> 地址。
5. 主要功能
- 图谱可视化:以“MWORKS 课程体系”为中心,课程阶段、模块、知识点、工具、案例和能力目标围绕展开。
- 节点拖拽:拖动节点后位置保持稳定,便于投屏讲解时重新整理局部布局。
- 缩放和平移:支持鼠标滚轮缩放和画布拖拽平移。
- 节点详情:点击节点后查看名称、类型、简介、推荐学习说明、前置知识、应用案例和标签。
- 关键词查询:支持课程、知识点、工具、案例名称和标签搜索,命中节点高亮。
- 学习路径高亮:内置“零基础入门路径”“建模仿真进阶路径”“控制系统实践路径”。
- 类型筛选:可按课程阶段、课程模块、核心知识点、软件工具、实践案例、能力目标筛选。
- 重置视图:一键恢复完整图谱、清空搜索和路径高亮。
- Syslab 一键入口:
src/launch_demo.jl可在 Syslab 内完成数据生成和页面启动。
6. 如何扩展新的课程节点
在 src/build_graph.jl 中增加节点:
kg_node("new_topic", "新知识点", "核心知识点";
level="工程实践",
description="这里填写知识点说明。",
recommendation="这里填写推荐学习说明。",
tags=["新课程", "示例"],
importance=3)
然后增加关系:
kg_link("existing_node", "new_topic", "推荐学习"; weight=2)
如果希望新节点有更稳定的初始位置,可在 src/graph_layout.jl 的 layout_coordinates() 中添加坐标。
7. 如何增加新的学习路径
在 src/graph_query.jl 的 build_learning_paths(graph) 中新增路径定义:
"new_path" => Dict{String,Any}(
"name" => "新的学习路径",
"description" => "路径说明。",
"objective" => "路径目标。",
"nodes" => ["mworks_course_system", "stage_intro", "mworks_intro"]
)
路径中的相邻节点最好存在直接关系。脚本会自动检查路径关系是否缺失,并把可高亮的边写入 JSON。
8. 适合的教学使用场景
- 课程导学:帮助学生快速理解 MWORKS 课程体系结构。
- 前置知识讲解:展示知识点之间的依赖关系和推荐学习顺序。
- 案例教学:从知识点跳转到实践案例,讲解知识如何落地。
- 教师备课:用路径高亮组织不同专业、不同起点学生的学习路线。
- 资源建设展示:作为 MoHub 课程资源、案例资源和能力评价体系的可视化入口原型。
9. 后续可扩展方向
- 接入真实课程资源链接,点击节点打开课件、模型、视频或实验任务。
- 增加学生学习记录,把图谱扩展为个性化推荐路径。
- 引入能力评价数据,展示知识点掌握度和案例完成度。
- 将图谱数据与 MoHub 资源库打通,形成课程资产检索入口。
- 增加多学科案例分支,例如车辆热管理、液压系统、飞行器控制等。
10. 运行成功后的预期效果
运行 src/main.jl 后,Syslab 控制台会输出校验结果,正常情况下应看到:
Validation summary
ok: true
nodes: 45
links: 60
Graph JSON exported to: .../data/mworks_course_graph.json
Embedded fallback data updated in index.html: true
打开 app/index.html 后,应看到深色科技风知识图谱界面。中心节点为“MWORKS 课程体系”,周围展开课程阶段、模块、知识点、工具、案例和能力目标;可通过拖拽、缩放、点击、搜索、筛选、路径高亮和重置视图进行教学交互。