??主要是知識的存儲和數(shù)據(jù)庫的選型
??其實這部分的內容我在學習的時候覺得挺枯燥的,其實主要用到的是Neo4j圖數(shù)據(jù)庫,也就是第3部分往后的內容,其他的感覺不是很重要
綜述

1.知識存儲模型
1.知識存儲模型

- 關系型數(shù)據(jù)庫——適用于體量比較小的知識圖譜的存儲
- 三元組——因語義網(wǎng)而產生的,適用于體量比較小的,網(wǎng)頁的
- 圖數(shù)據(jù)庫——體量比較大的知識圖譜的存儲
2.存儲模型選擇原則一


??注:如果一個對象本身,沒有研究它與其他對象之間的關系,那就沒有必要進行圖譜存儲; 統(tǒng)計類的,常規(guī)需要去計算的內容沒有必要存儲在圖譜中,也就是不需要基于知識存儲的模型來進行存儲;
3.1.關系型數(shù)據(jù)庫:三元組表

??S為對象,P為屬性,O為取值
讀取對象多個屬性的時候,會有大量的自連接操作
3.2.關系型數(shù)據(jù)庫:屬性表

??屬性表的優(yōu)點:RDF的靈活性;缺點:要查詢一個人(屬性未定時),需要遍歷所有的表
3.3.關系型數(shù)據(jù)庫:垂直分割

??垂直分割的缺點:一個屬性就需要一個數(shù)據(jù)表;刪除一個對象需要遍歷所有的表
??以上三種傳統(tǒng)型數(shù)據(jù)庫存儲知識圖譜,小數(shù)量的情況下沒有問題,但是數(shù)據(jù)量規(guī)模大就不適用了
4.RDF三元組
RDF三元組是基于XML進行描述的



5.圖數(shù)據(jù)庫

2.圖數(shù)據(jù)庫選型
1.RDF數(shù)據(jù)庫排行
https://db-engines.com/en/ranking/rdf+store

??MarkLogic商用,Jena是基于Java的開源框架
2.Jena:開源Java框架,本體處理工具

??通常使用Protege和Jena相結合來處理本體對象;基于本體對象構建知識圖譜時,使用Protege進行本體對象的設計,用Jena進行開發(fā)
3.Neo4j:嵌入式、基于磁盤、可視化的圖數(shù)據(jù)庫

4.Titan:分布式圖形數(shù)據(jù)庫

工業(yè)級的應用或者大量級數(shù)據(jù)的應用一般使用Titan
3.Neo4j開發(fā)環(huán)境
官網(wǎng)下載客戶端,本地啟動服務即可

Hello World
收藏中有Hello World示例

??database和message為兩個節(jié)點,r為關系
-
Graph
-
Table
-
Text
-
Code
4.Neo4j-CQL語法基礎
1.概念

實例

??同一個類型的節(jié)點的屬性可以是不一樣的
2.關鍵字詞匯表


3.DDL-創(chuàng)建節(jié)點

4.DDL-創(chuàng)建關系

5.語法實踐
1.調出CQL語法
:play cypher

2.創(chuàng)建

// 創(chuàng)建一個人的節(jié)點,對他的屬性賦值
CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
??最后加RETURN和不加會有顯示的區(qū)別


3.查詢

// 查詢名字叫Emil的人
MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

如果想創(chuàng)建唯一的節(jié)點對象
// Create unique property constraint
// Replace:
// 'LabelName' with node label
// 'propertyKey' with property that should be unique
CREATE CONSTRAINT ON (n:<LabelName>) ASSERT n.<propertyKey> IS UNIQUE
4.創(chuàng)建多個節(jié)點

MATCH (ee:Person) WHERE ee.name = "Emil"
CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
(ir:Person { name: "Ian", from: "England", title: "author" }),
(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)
6.案例操作
1.內置案例movie graph

2.開始示例


- Movie Graph 如何系統(tǒng)性地創(chuàng)建圖譜的
- Northwind Graph 如何從其他形式的內容轉換過來的
3.創(chuàng)建各個節(jié)點和關系

// 創(chuàng)建節(jié)點
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
// 創(chuàng)建關系
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix)

4.1.查詢

??查詢所得對象的屬性在下面顯示

4.2.查詢

7.系統(tǒng)監(jiān)控(暫時沒有用到)





