朱家樂(lè) 陳銳
關(guān)鍵詞:知識(shí)圖譜;neo4j;VUE;G6;SpringBoot
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)08-0040-03
0 引言
隨著大數(shù)據(jù)、云計(jì)算、互聯(lián)網(wǎng)等信息技術(shù)的發(fā)展,人工智能的技術(shù)應(yīng)用迎來(lái)了爆發(fā)性的增長(zhǎng)。知識(shí)圖譜作為人工智能的重要分支,可以構(gòu)建復(fù)雜的行業(yè)知識(shí)庫(kù),在教育、醫(yī)療、金融和政府管理等領(lǐng)域有著廣泛的應(yīng)用。以教育領(lǐng)域?yàn)槔?,知識(shí)圖譜可有效輔助教師授課并幫助學(xué)生實(shí)現(xiàn)個(gè)性化學(xué)習(xí),知識(shí)圖譜教學(xué)方法能夠顯著提高教學(xué)效果[1]。課程知識(shí)圖譜包含課程領(lǐng)域的所有知識(shí)點(diǎn)及知識(shí)點(diǎn)間的關(guān)系,可以很好地進(jìn)行知識(shí)點(diǎn)和學(xué)習(xí)路徑的相關(guān)推理[2]。隨著系統(tǒng)解耦的需要,前后端分離技術(shù)已成為移動(dòng)互聯(lián)網(wǎng)領(lǐng)域不可或缺的技術(shù)[3]?;谖⒎?wù)的知識(shí)圖譜平臺(tái)架構(gòu),通過(guò)合理的微服務(wù)劃分,可以保證平臺(tái)的可用性和可擴(kuò)展性[4]。綜上所述,知識(shí)圖譜在教育領(lǐng)域已經(jīng)有著廣泛的應(yīng)用,同時(shí)和互聯(lián)網(wǎng)技術(shù)開(kāi)始深入融合。本文設(shè)計(jì)了一種基于neo4j的課程知識(shí)圖譜系統(tǒng),能夠進(jìn)行課程知識(shí)圖譜的管理和查看。系統(tǒng)采用前后端分離架構(gòu),并完成開(kāi)發(fā)環(huán)境搭建和原型系統(tǒng)開(kāi)發(fā)。
1 知識(shí)圖譜介紹
知識(shí)圖譜(Knowledge Graph) 是人工智能的重要分支技術(shù),是結(jié)構(gòu)化的語(yǔ)義知識(shí)庫(kù),用于以符號(hào)形式描述物理世界中的概念及其相互關(guān)系。其基本組成單位是“實(shí)體—關(guān)系—實(shí)體”三元組[5]。如圖1所示:
知識(shí)圖譜可以用圖數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)存儲(chǔ)和查詢分析。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在進(jìn)行圖數(shù)據(jù)的查詢時(shí),需要進(jìn)行多張表的關(guān)聯(lián),效率非常低。圖數(shù)據(jù)庫(kù)是一種NoSQL數(shù)據(jù)庫(kù),以點(diǎn)、邊為基礎(chǔ)存儲(chǔ)單元,以高效存儲(chǔ)、查詢圖數(shù)據(jù)為設(shè)計(jì)原理,非常適用于進(jìn)行知識(shí)圖譜數(shù)據(jù)的存儲(chǔ)和查詢分析。neo4j是業(yè)界主流的圖數(shù)據(jù)庫(kù),分為社區(qū)版和企業(yè)版,其中社區(qū)版是免費(fèi)版,基于GPLv3 協(xié)議開(kāi)源,但功能受限。本文采用neo4j社區(qū)版,其三元組模型如下:
1) 節(jié)點(diǎn):用于描述領(lǐng)域的實(shí)體。可以有零個(gè)或多個(gè)標(biāo)簽,來(lái)定義它們是什么類型的節(jié)點(diǎn)。
2) 關(guān)系:描述源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的連接,總是有一個(gè)方向。關(guān)系必須具有一種類型來(lái)定義它們是什么類型的關(guān)系。
3) 節(jié)點(diǎn)和關(guān)系可以具有屬性,這些屬性是鍵值對(duì),可以進(jìn)一步描述它們。
各個(gè)云服務(wù)廠商也提供了各自的圖數(shù)據(jù)庫(kù)云服務(wù),可在線使用。阿里云開(kāi)發(fā)的圖數(shù)據(jù)庫(kù)(Graph Data?base,簡(jiǎn)稱GDB) ,是一種支持Property Graph圖模型、用于處理高度連接數(shù)據(jù)查詢與存儲(chǔ)的實(shí)時(shí)、可靠的在線數(shù)據(jù)庫(kù)服務(wù)。華為云開(kāi)發(fā)的知識(shí)圖譜服務(wù)(Knowl?edge Graph,簡(jiǎn)稱KG) ,提供一站式知識(shí)圖譜全生命周期管理服務(wù)。
2 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)的主要功能包括5個(gè)模塊,分別為系統(tǒng)首頁(yè)、課程管理、圖譜管理、賬號(hào)管理和關(guān)于。系統(tǒng)首頁(yè)是系統(tǒng)的主體部分,用戶通過(guò)點(diǎn)擊菜單進(jìn)入不同的功能模塊。課程管理負(fù)責(zé)課程信息的管理和維護(hù),包括課程列表的展示、查看單個(gè)課程和課程的增刪改。圖譜管理負(fù)責(zé)課程圖譜的管理和維護(hù),包括圖譜列表的展示、查看單個(gè)圖譜和圖譜的增刪改。圖譜管理模塊和課程管理模塊通過(guò)課程數(shù)據(jù)聯(lián)系起來(lái),即圖譜的課程數(shù)據(jù)來(lái)源于課程管理模塊。賬號(hào)管理負(fù)責(zé)用戶的注冊(cè)、登錄、退出和認(rèn)證等。關(guān)于模塊主要維護(hù)系統(tǒng)的幫助信息和系統(tǒng)的版本信息等。系統(tǒng)功能如圖2所示:
3 系統(tǒng)架構(gòu)設(shè)計(jì)
系統(tǒng)整體架構(gòu)包括4個(gè)部分:用戶端、系統(tǒng)前端、系統(tǒng)后端、數(shù)據(jù)庫(kù)。系統(tǒng)采用前后端分離架構(gòu),前端負(fù)責(zé)頁(yè)面展示,后端負(fù)責(zé)數(shù)據(jù)處理并提供接口,前后端數(shù)據(jù)交互采用HTTP協(xié)議和JSON數(shù)據(jù)格式。前后端可以獨(dú)立部署,有利于系統(tǒng)功能的分解和解耦。系統(tǒng)架構(gòu)如圖3所示。
3.1 系統(tǒng)前端
用戶使用瀏覽器訪問(wèn)系統(tǒng)前端,支持PC、移動(dòng)終端等多種設(shè)備。系統(tǒng)前端采用響應(yīng)式布局技術(shù),針對(duì)不同尺寸的屏幕采用適合的頁(yè)面布局,從而支持多種類型終端訪問(wèn)。系統(tǒng)前端使用當(dāng)前流行的VUE作為前端Web基礎(chǔ)開(kāi)發(fā)框架。VUE是一套構(gòu)建用戶界面的漸進(jìn)式Web開(kāi)發(fā)框架,具有豐富的生態(tài)系統(tǒng),可以整合大量的前端組件。VUE 使用MVVM(Model-View-ViewModel) 開(kāi)發(fā)模式,支持?jǐn)?shù)據(jù)在視圖和模型之間雙向綁定;使用VUE Router進(jìn)行路由管理,根據(jù)URL分配到對(duì)應(yīng)的處理程序,完成URL到組件的綁定;選用Element UI作為頁(yè)面開(kāi)發(fā)的UI組件庫(kù),提供了配套設(shè)計(jì)UI資源,包括基礎(chǔ)布局、導(dǎo)航、表格、表單、文件上傳等基礎(chǔ)組件,開(kāi)箱即用;使用G6 作為圖可視化引擎,提供了圖的繪制、布局、分析、交互、動(dòng)畫等圖可視化的基礎(chǔ)能力,可以快速搭建自己的圖分析或圖編輯應(yīng)用;使用VUE AXOS進(jìn)行HTTP接口的請(qǐng)求,封裝前端依賴的所有HTTP接口,與系統(tǒng)后端進(jìn)行交互。
3.2 系統(tǒng)后端
系統(tǒng)后端使用Java、SpringBoot作為基礎(chǔ)框架,便于集成常用的開(kāi)源組件。SpringBoot是基于Spring開(kāi)發(fā)的全新框架,擁有豐富的生態(tài)系統(tǒng),可以方便第三方軟件集成,最大的特點(diǎn)是約定優(yōu)于配置,自動(dòng)配置,簡(jiǎn)化了軟件初始搭建以及開(kāi)發(fā)過(guò)程,支持Spring原生的依賴注入、控制反轉(zhuǎn)特性。后端接口全部定義在Controller文件中,同時(shí)使用Swagger完成接口文檔的定義,支持在線查閱接口文檔、在線調(diào)測(cè)。系統(tǒng)使用Spring Data完成數(shù)據(jù)庫(kù)的相關(guān)操作。Spring Data是基于Spring框架的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),可以方便地操作關(guān)系型數(shù)據(jù)庫(kù)如MySQL、非關(guān)系型數(shù)據(jù)庫(kù)如neo4j。用戶只需聲明持久層的接口,即可進(jìn)行數(shù)據(jù)庫(kù)的基本操作,Spring Data會(huì)自動(dòng)完成對(duì)象關(guān)系映射。
3.3 數(shù)據(jù)庫(kù)
系統(tǒng)根據(jù)不同業(yè)務(wù)模塊的數(shù)據(jù)特點(diǎn),使用了不同的數(shù)據(jù)庫(kù),包括關(guān)系型數(shù)據(jù)庫(kù)MySQL和非關(guān)系型數(shù)據(jù)庫(kù)neo4j。系統(tǒng)使用MySQL存儲(chǔ)關(guān)系型數(shù)據(jù),比如:用戶賬號(hào)信息、課程信息等;使用neo4j存儲(chǔ)圖數(shù)據(jù)庫(kù),如課程圖譜。MySQL 和系統(tǒng)后端采用TCP/IP 協(xié)議進(jìn)行通信,neo4j 和系統(tǒng)后端采用bolt協(xié)議進(jìn)行交互。Bolt 是一種二進(jìn)制協(xié)議(protocol) ,是專為數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)的高效、輕量級(jí)的客戶端-服務(wù)器協(xié)議,是訪問(wèn)遠(yuǎn)程neo4j服務(wù)器的首選方式。
4 系統(tǒng)開(kāi)發(fā)驗(yàn)證
基于上述系統(tǒng)架構(gòu),進(jìn)行了開(kāi)發(fā)環(huán)境的搭建和系統(tǒng)初步開(kāi)發(fā)。整個(gè)系統(tǒng)啟動(dòng)主要包括如下組件:系統(tǒng)前端、系統(tǒng)后端、MySQL、neo4j,系統(tǒng)啟動(dòng)過(guò)程及命令如下:
1) 啟動(dòng)MySQL數(shù)據(jù)庫(kù)
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) 啟動(dòng)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) 啟動(dòng)系統(tǒng)后端
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) 啟動(dòng)系統(tǒng)前端
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) 核心功能頁(yè)面
訪問(wèn)網(wǎng)址http://localhost:8080/ 即可查看系統(tǒng)頁(yè)面。以計(jì)算思維課程為例,可以直觀地展示出各個(gè)章節(jié)、知識(shí)點(diǎn)及其之間的聯(lián)系。課程知識(shí)圖譜如圖4所示。
5 結(jié)束語(yǔ)
本文在知識(shí)圖譜在教育領(lǐng)域的應(yīng)用越來(lái)越重要的背景下,結(jié)合現(xiàn)代互聯(lián)網(wǎng)技術(shù)的發(fā)展趨勢(shì),完成了一種基于neo4j的課程知識(shí)圖譜系統(tǒng)設(shè)計(jì)。文章討論了系統(tǒng)的整體架構(gòu),描述了系統(tǒng)前端、系統(tǒng)后端、數(shù)據(jù)庫(kù)及各組件之間的交互方式。系統(tǒng)采用前后端分離架構(gòu),保證了系統(tǒng)解耦。經(jīng)過(guò)開(kāi)發(fā)環(huán)境搭建和系統(tǒng)的初步開(kāi)發(fā),實(shí)現(xiàn)了課程知識(shí)圖譜的展示和管理,驗(yàn)證了該架構(gòu)的可行性,對(duì)于知識(shí)圖譜在教育領(lǐng)域的應(yīng)用有一定的參考意義。下一步計(jì)劃進(jìn)一步完善系統(tǒng)功能,提高系統(tǒng)的易用性,探索前端頁(yè)面圖可視化引擎的性能優(yōu)化。