天天看點

初探Neo4J中的Cypher

       由于RDF資料庫需要,需要調研圖形資料庫,選擇了Neo4J進行嘗試,發現它包含了一個名為“Cypher”的操作語言,使用了一下感覺非常不錯,所有有寫點東西的必要。        從官網上盜個圖:

初探Neo4J中的Cypher

     其實,這個圖也就辨別了cypher語言的基本功能,節點a到節點b,關系是LIKES,其操作的方法與sql的select一樣選擇符合某種條件的實體,由此強烈建議大家使用網頁版進行熟悉操作,比較直覺,可以直接得到圖形。       閑話少說,我們姑且成上面的為萬能公式,該萬能公式大體上分為兩個部分()與[],其中()表示某個節點可以當作是關系資料庫中的某條記錄或者RDF中的實體,[]表是某種關系,進而建立了實體與實體之間的關系;      之後根據萬能公式完成比對和其他的操作,關鍵詞Match Return。      Match(a) Return a,含義表示傳回所有的節點,其中a就是定義變量的方式;      Match(a:Person) Return a,傳回所有Person類别的節點,其中Person類型在節點建立的過程中進行指定;       Match(a:Person:Teacher) Return a,傳回所有Teacher同時屬于Person類别的節點(例子有點不恰當),從這個例子我們可以看出例子我們可以看出隻要你想的到多少類别都可以;      除此之外,我們可以通過create建立節點;      create (:Person {name:"李晨"}),建立一個名為李晨的節點;      create (fan:Person {name:"範冰冰"}) return fan,建立一個名為範冰冰的節點,并傳回,從這個裡面我們可以看到類型前面可以變量,需要說明的是即使你不加類型依然可以進行聲明;      Match(li:Person {name:"李晨"}) Match(fan:Person {name:"範冰冰"})  create (fan) -[:搞定]->(li) return fan,li,完成了關系,範冰冰 搞定 李晨;     最後,還需要說明的一個是shortestPath,顧名思義查找最短路徑,熟悉RDF的大概都能了解Relfinder功能,兩者功能類似,白話來講就是,找到一個小A和小B,他們之間有沒有關系呢,就是通過shortestPath方法來實作,起就是都過關系來規定幾度關系來進行推斷;     Match(a:Person {name:"小A"}) Match(b:Person {name:"小B"})  p= shortpath((a) -[:朋友*..2]->(b)) return a,b,p,傳回所有小A和小B之間能産生二度以内好友關系的可能路徑。