1. 程式人生 > >OrientDB在知識圖譜中的應用(一)

OrientDB在知識圖譜中的應用(一)

以笑傲江湖(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
  • 達到知識圖譜應用的效果