1. 什麼是知識圖譜
知識圖譜(Knowledge Graph)是由谷歌公司2012年提出來的新名詞,其初衷是優化搜索殷勤返回的結果,增強用戶搜索質量及體驗。
實際上,知識圖譜並不是一個全新的概念,早在 2006 年就有文獻提出了語義網(Semantic Network)的概念,呼籲推廣、完善使用本體模型來形式化表達數據中的隱含語義,RDF(resource description framework,資源描述框架)模式和 OWL(Web ontology language,萬維網本體語言)就是基於上述目的產生的(引自知乎)。
通俗講:知識圖譜也可以叫做多關係圖(Multi-relational graph),通常包含多種類型的關係和邊。
知識圖譜中主要包含了兩個部分:實體和關係
- 實體:對應圖中的節點,指的是現實世界中的事物。
- 關係:對應圖中的邊,指的是實體之間的關係
2. 知識圖譜的計算
圖計算:G=(V, E, D), V=vertex(頂點或者節點),E=edge(邊), D=data(權重)
對於一個消費者的原始購買行爲,有兩類節點,分別是用戶和產品,邊表示購買行爲,權重是邊上的一個數據結構,可以是購買次數和最後購買時間。
對於我們面臨的物理世界的數據問題,都可以利用圖結構來抽象表達:社交網絡,網頁鏈接關係,用戶傳播網絡,用戶網絡點擊、瀏覽和購買行爲等等。
圖數據結構很好的表達了數據之間的關聯性,關聯性計算是大數據計算的核心——通過獲得數據的關聯性,可以從噪聲很多的海量數據中抽取有用的信息。比如,通過爲購物者之間的關係建模,可以很快找到喜好相似的用戶,併爲之推薦商品。
有許多新型的基於圖的計算平臺和引擎出現。例如專注於圖結構化存儲與查詢的圖數據庫Neo4j,infinitegraph等。Google的圖計算框架Pregel(基於大塊的消息傳遞機制),CMU的開源圖計算框架——GraphLab(基於內存共享機制)。Spark也有支持圖計算機器學習的模塊——GraphX,可以實現複雜的圖數據挖掘。
3. 知識圖譜的存儲
3.1 RDF存儲
(1)存儲三元組(Triple)
(2)標準的推理引擎
(3)W3C標準
(4)常用於發佈數據
(5)多數爲學術界場景
RDF三元組爲“主謂賓”的結構。
3.2 圖數據庫存儲
(1)節點和關係可以帶有屬性
(2)沒有標準的推理引擎
(3)圖的遍歷效率高
(4)事務管理(ACID)
(5)基本爲工業界場景
3.3 RDF與圖數據存儲的區別
(1)屬性存儲
RDF三元組實體和關係不包含屬性,而屬性圖中可以包含屬性。
比如實體李明的年齡是25歲,在RDF中只能表示爲兩個實體之間的關係,即李明和年齡分別作爲兩個實體,它們之間通過屬性Age_of相連。在屬性圖中,年齡可以表示爲實體李明的一個屬性。
(2)區別2:命題。
示例:李明撥打張三的電話三次。
(3)區別3:RDF主要用於學術界,易於數據的發佈、分享;圖數據庫主要來自於工業界的需求,擁有一般數據庫擁有的特性,比如事實管理、權限管理等等,圖數據庫用來做高效率的圖查詢。
關係型數據庫不能很好地處理關係。
建模難:不熟悉就不能建模和存儲數據和關係
性能低:隨着關係數量和層次的增加,數據庫尺寸的增加,性能降低
查詢難:需要JOIN操作,查詢複雜性增加
擴展難:增加新類型的數據和關係,需要重新設計模式,增加上市時間。
這些劣勢導致傳統的數據庫不適用於有實時價值的數據關係。