OrientDB在知識圖譜中的應用(一)
阿新 • • 發佈:2019-02-13
以笑傲江湖(SwordsMan)中簡單的人物關係為例,描述如何利用orientDB圖資料庫表達構建知識圖譜
這裡預設大家都是瞭解OrientDB基本語法,瞭解NoSql和圖形資料庫的小夥伴,不瞭解的可以自行查閱資料。廢話不多說,我們開始吧。
建立一個名為SwordsMan的資料庫:
create database plocal:/home/wangtd/local/orientdb/databases/SwordsMan
#登入操作
connect plocal:/home/wangtd/local/orientdb/databases/SwordsMan admin admin
實體/關係梳理
我們假定一個簡單的實體、關係模型,其中包括點(Vertex)和邊(Edge),這兩種型別是OrientDB中圖資料庫的重要型別。
- 實體:
人物(令狐沖,嶽不群,甯中則,任盈盈)
教派(華山派,日月神教)
功夫(華山劍法,獨孤九劍,玉女十三劍)- 關係:情侶,師徒,門徒,技能
建立類物件
create class Person extends V
create class Group extends V
create class KungFu extends V
create class Lover extends E
create class Student extends E
create class Teacher extends E
create class Disciple extends E
create class Skill extends E
建立Vertex/Edge
建立基本實體
create vertex Person set name="令狐沖",sex="男",age="25",group="華山派",kungfu="獨孤九劍"
create vertex Person set name="任盈盈",sex="女",age="18",group="日月神教",kungfu="長經雙刀"
create edge Lover from(select from Person where name="令狐沖") to (select from Person where name="任盈盈")
create edge Lover from(select from Person where name="任盈盈") to (select from Person where name="令狐沖")
create vertex Person set name="嶽不群",sex="男",age="40",group="華山派",kungfu="辟邪劍譜"
create vertex Person set name="甯中則",sex="女",age="35",group="華山派",kungfu="玉女十三劍"
create edge Lover from(select from Person where name="嶽不群") to (select from Person where name="甯中則")
create edge Lover from(select from Person where name="甯中則") to (select from Person where name="嶽不群")
建立邊關係
create vertex Group set name="華山派",addr="華山"
create vertex Group set name="日月神教",addr="黑木崖"
create edge Disciple from(select from Person where group="華山派") to (select from Group where name="華山派")
create edge Disciple from(select from Person where group="日月神教") to (select from Group where name="日月神教")
create edge Teacher from(select from Person where name="令狐沖") to(select from Person where name="嶽不群")
create edge Teacher from(select from Person where name="令狐沖") to(select from Person where name="甯中則")
create edge Student from(select from Person where name="嶽不群") to(select from Person where name="令狐沖")
create edge Student from(select from Person where name="甯中則") to(select from Person where name="令狐沖")
更新/維護關係
create vertex KungFu set name="華山劍法"
create vertex KungFu set name="玉女十三劍"
create vertex KungFu set name="長經雙劍"
create edge Skill from(select from Person where name="令狐沖") to(select from KungFu where name="華山劍法")
create edge Skill from(select from Person where name="嶽不群") to(select from KungFu where name="華山劍法")
create edge Skill from(select from Person where name="甯中則") to(select from KungFu where name="玉女十三劍")
create edge Skill from(select from Person where name="任盈盈") to(select from KungFu where name="長經雙劍")
體會
- 因為orientDB本身支援sql語法,所以資料的增刪改查比較方便
- 圖資料庫重要的兩種型別Vertex和Edge
- 構建知識圖譜前,要先定義Vertex和Edge的物件,要確定出Vertex的型別有哪些,Edge的型別有哪些
- 圖譜關係是以In/Out代表的雙向關係,一條邊定義了有向的出度和入度
方向
圖譜的構建是最基礎的一步,在圖譜構建之後:
- 完善圖譜
- 使用java api query
- 達到知識圖譜應用的效果