知識圖譜的模式層和數據層設計
知識圖譜分為模式層和數據層兩部分:其中模式層是是知識圖譜的核心,在模式層存儲的是經過提煉的知識;數據層存儲的是具體數據信息。
我們的圖譜模式層和數據層定義如下:
(一)模式層:
我們的模式層使用mysql資料庫來存儲,設計方式如下:
1,類層次結構:有些知識圖譜採用的是樹狀的類結構,每個子類繼承其祖先節點的屬性。我們的圖譜採用的是簡單的兩層類層次結構,object_object類是根節點,其他所有類是其子節點。
2,類關係定義:類之間存在相互的關係,類之間可以定義單向的關係,也可以定義雙向的關係。如果需要定義主逆關係,需要約定其主關係及逆關係。例如歌手指向歌曲的關係是演唱歌曲,歌曲指向歌手的關係是被演唱。
3,類領域定義:為了管理方便,定義了多個領域便於將類進行分組管理。例如音樂域之下會有歌曲,專輯,歌手等類,電影域之下會有影片,導演,演員等類。
4,類屬性定義:公共類里抽取了一些非常基礎的屬性做為公共屬性,例如名稱,創建時間之類。另外每個類定義了自己的專有屬性,例如音樂時長,電影評分等。
(二)數據層:
我們的數據存儲使用了圖資料庫,存儲方式如下:
1,類層次結構:類使用圖節點存儲,關係是用圖的邊來存儲,object_object在物理上不需要單獨建立節點,所有的子節點都繼承object_object的基礎屬性。
2,類關係定義:為每種類型建立了一個節點叫做object_type,將屬於該類型的實體都增加一條指向該類型節點的邊,這樣如果需要修改類型定義,只需要修改一個節點即可。
3,類領域定義:為每種領域也定義了一個專門的節點叫object_domain,將屬於該領域的實體增加一條指向該領域節點的邊。
4,類屬性定義:對於屬性分為公共屬性和私有屬性,公共屬性即上面模式層提到的object_object根節點的屬性,私有屬性是各個類型節點自身獨有的屬性。其中公共屬性因為基本不會變化,我們存儲在節點的屬性欄位里;而私有屬性可能會經常需要增刪改,而我們的圖資料庫不是schema free的,為了方便修改,將私有屬性全部做為邊來存儲。
推薦閱讀:
※高效的關係補全——EMNLP2015 SFE論文研讀
※知識圖譜數據構建的「硬骨頭」,阿里工程師如何拿下?
※16.關於靠譜那回事
※為什麼知識圖譜終於火了?|甲子光年
※2018全國知識圖譜與語義計算大會徵文開始
TAG:知識圖譜 |