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