APP下载

基于neo4j的课程知识图谱系统设计

2023-04-27朱家乐陈锐

电脑知识与技术 2023年8期
关键词:知识图谱

朱家乐 陈锐

关键词:知识图谱;neo4j;VUE;G6;SpringBoot

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)08-0040-03

0 引言

随着大数据、云计算、互联网等信息技术的发展,人工智能的技术应用迎来了爆发性的增长。知识图谱作为人工智能的重要分支,可以构建复杂的行业知识库,在教育、医疗、金融和政府管理等领域有着广泛的应用。以教育领域为例,知识图谱可有效辅助教师授课并帮助学生实现个性化学习,知识图谱教学方法能够显著提高教学效果[1]。课程知识图谱包含课程领域的所有知识点及知识点间的关系,可以很好地进行知识点和学习路径的相关推理[2]。随着系统解耦的需要,前后端分离技术已成为移动互联网领域不可或缺的技术[3]。基于微服务的知识图谱平台架构,通过合理的微服务划分,可以保证平台的可用性和可扩展性[4]。综上所述,知识图谱在教育领域已经有着广泛的应用,同时和互联网技术开始深入融合。本文设计了一种基于neo4j的课程知识图谱系统,能够进行课程知识图谱的管理和查看。系统采用前后端分离架构,并完成开发环境搭建和原型系统开发。

1 知识图谱介绍

知识图谱(Knowledge Graph) 是人工智能的重要分支技术,是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系。其基本组成单位是“实体—关系—实体”三元组[5]。如图1所示:

知识图谱可以用图数据库来进行数据存储和查询分析。传统的关系型数据库在进行图数据的查询时,需要进行多张表的关联,效率非常低。图数据库是一种NoSQL数据库,以点、边为基础存储单元,以高效存储、查询图数据为设计原理,非常适用于进行知识图谱数据的存储和查询分析。neo4j是业界主流的图数据库,分为社区版和企业版,其中社区版是免费版,基于GPLv3 协议开源,但功能受限。本文采用neo4j社区版,其三元组模型如下:

1) 節点:用于描述领域的实体。可以有零个或多个标签,来定义它们是什么类型的节点。

2) 关系:描述源节点和目标节点之间的连接,总是有一个方向。关系必须具有一种类型来定义它们是什么类型的关系。

3) 节点和关系可以具有属性,这些属性是键值对,可以进一步描述它们。

各个云服务厂商也提供了各自的图数据库云服务,可在线使用。阿里云开发的图数据库(Graph Data⁃base,简称GDB) ,是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。华为云开发的知识图谱服务(Knowl⁃edge Graph,简称KG) ,提供一站式知识图谱全生命周期管理服务。

2 系统功能设计

系统的主要功能包括5个模块,分别为系统首页、课程管理、图谱管理、账号管理和关于。系统首页是系统的主体部分,用户通过点击菜单进入不同的功能模块。课程管理负责课程信息的管理和维护,包括课程列表的展示、查看单个课程和课程的增删改。图谱管理负责课程图谱的管理和维护,包括图谱列表的展示、查看单个图谱和图谱的增删改。图谱管理模块和课程管理模块通过课程数据联系起来,即图谱的课程数据来源于课程管理模块。账号管理负责用户的注册、登录、退出和认证等。关于模块主要维护系统的帮助信息和系统的版本信息等。系统功能如图2所示:

3 系统架构设计

系统整体架构包括4个部分:用户端、系统前端、系统后端、数据库。系统采用前后端分离架构,前端负责页面展示,后端负责数据处理并提供接口,前后端数据交互采用HTTP协议和JSON数据格式。前后端可以独立部署,有利于系统功能的分解和解耦。系统架构如图3所示。

3.1 系统前端

用户使用浏览器访问系统前端,支持PC、移动终端等多种设备。系统前端采用响应式布局技术,针对不同尺寸的屏幕采用适合的页面布局,从而支持多种类型终端访问。系统前端使用当前流行的VUE作为前端Web基础开发框架。VUE是一套构建用户界面的渐进式Web开发框架,具有丰富的生态系统,可以整合大量的前端组件。VUE 使用MVVM(Model-View-ViewModel) 开发模式,支持数据在视图和模型之间双向绑定;使用VUE Router进行路由管理,根据URL分配到对应的处理程序,完成URL到组件的绑定;选用Element UI作为页面开发的UI组件库,提供了配套设计UI资源,包括基础布局、导航、表格、表单、文件上传等基础组件,开箱即用;使用G6 作为图可视化引擎,提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力,可以快速搭建自己的图分析或图编辑应用;使用VUE AXOS进行HTTP接口的请求,封装前端依赖的所有HTTP接口,与系统后端进行交互。

3.2 系统后端

系统后端使用Java、SpringBoot作为基础框架,便于集成常用的开源组件。SpringBoot是基于Spring开发的全新框架,拥有丰富的生态系统,可以方便第三方软件集成,最大的特点是约定优于配置,自动配置,简化了软件初始搭建以及开发过程,支持Spring原生的依赖注入、控制反转特性。后端接口全部定义在Controller文件中,同时使用Swagger完成接口文档的定义,支持在线查阅接口文档、在线调测。系统使用Spring Data完成数据库的相关操作。Spring Data是基于Spring框架的数据库访问技术,可以方便地操作关系型数据库如MySQL、非关系型数据库如neo4j。用户只需声明持久层的接口,即可进行数据库的基本操作,Spring Data会自动完成对象关系映射。

3.3 数据库

系统根据不同业务模块的数据特点,使用了不同的数据库,包括关系型数据库MySQL和非关系型数据库neo4j。系统使用MySQL存储关系型数据,比如:用户账号信息、课程信息等;使用neo4j存储图数据库,如课程图谱。MySQL 和系统后端采用TCP/IP 协议进行通信,neo4j 和系统后端采用bolt协议进行交互。Bolt 是一种二进制协议(protocol) ,是专为数据库应用程序设计的高效、轻量级的客户端-服务器协议,是访问远程neo4j服务器的首选方式。

4 系统开发验证

基于上述系统架构,进行了开发环境的搭建和系统初步开发。整个系统启动主要包括如下组件:系统前端、系统后端、MySQL、neo4j,系统启动过程及命令如下:

1) 启动MySQL数据库

D:\tools\mysql-8.0.11-winx64\bin\mysqld -console mysqld (mysqld 8.0.11) starting as process 17740mysqld: ready for connections. Version: '8.0.11'socket: '' port: 3306 MySQL Community Server - GPL.

2) 启动neo4j

D: \tools\neo4j\neo4j-community-4.4.8\bin\neo4j.bat console

Starting...

This instance is ServerId{fc67b811} (fc67b811-7f62-4dec-aa0a-a100d407485b)

======== Neo4j 4.4.8 ========

Performing postInitialization step for component 'security-users' with version 3 and status CURRENT

Updating the initial password in component 'security-users'

Bolt enabled on 127.0.0.1:7687.

Remote interface available at http://localhost:7474/

id: B69DA4915E2A7C016FE4C0EF2589C04D63B 16328B2A1D4BC83E868A5285D80A4

name: system

creationDate: 2022-07-12T11:46:25.086Z Started.

3) 启动系统后端

java -jar kg-backend-0.0.1-SNAPSHOT.jar

Tomcat started on port(s): 8081 (http) with contextpath ''

Started KGBackendApplication in 1.449 seconds (JVM running for 1.747)

4) 啟动系统前端

npm run serve

DONE Compiled successfully in 16946ms

11:02:09

App running at:

- Local: http://localhost:8080/

- Network: http://10.21.26.211:8080/

5) 核心功能页面

访问网址http://localhost:8080/ 即可查看系统页面。以计算思维课程为例,可以直观地展示出各个章节、知识点及其之间的联系。课程知识图谱如图4所示。

5 结束语

本文在知识图谱在教育领域的应用越来越重要的背景下,结合现代互联网技术的发展趋势,完成了一种基于neo4j的课程知识图谱系统设计。文章讨论了系统的整体架构,描述了系统前端、系统后端、数据库及各组件之间的交互方式。系统采用前后端分离架构,保证了系统解耦。经过开发环境搭建和系统的初步开发,实现了课程知识图谱的展示和管理,验证了该架构的可行性,对于知识图谱在教育领域的应用有一定的参考意义。下一步计划进一步完善系统功能,提高系统的易用性,探索前端页面图可视化引擎的性能优化。

猜你喜欢

知识图谱
从《ET&S》与《电化教育研究》对比分析中管窥教育技术发展