基于 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")

该入口会一次性完成:

  1. 构建 MWORKS 课程体系知识图谱;
  2. 校验节点、关系和学习路径;
  3. 生成或更新 data/mworks_course_graph.json
  4. 将图谱数据同步嵌入 app/index.html
  5. 尝试使用系统默认浏览器打开交互式 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.jllayout_coordinates() 中添加坐标。

7. 如何增加新的学习路径

src/graph_query.jlbuild_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 课程体系”,周围展开课程阶段、模块、知识点、工具、案例和能力目标;可通过拖拽、缩放、点击、搜索、筛选、路径高亮和重置视图进行教学交互。