知識圖譜----理解描述數據的模式

模式是用於描述如何搜索數據,通常用 ()標識節點,用 [] 標識關係,看一下下面的幾種模式:

1. 節點模式

節點具有屬性和標籤,Cypher爲了引用節點,需要給節點命名:

  • (n) :該模式用於描述節點,節點的變量名是n ;匿名節點是 ();
  • (n:label) :該模式用於描述節點,節點具有特定的標籤,也可以指定多個標籤;
  • (n:{name:'Brown'}) :節點具有name屬性,並且name屬性值是 Brown ,也可以指定多個屬性;
  • (n:label{name:'Brown'}):節點具有特定的標籤和name屬性,並且name屬性值是Brown;

2. 關係模式

在屬性圖中,節點之間存在關係,關係通過[]表示,節點之間的關係通過 ()-[]->()表示,例如:

  • [r]:該節點用於描述關係,關係變量名是 r;匿名關係是[];
  • [r:type]:該模式用於描述關係,關係類型是type;每一個關係必須有且僅有一個類型;
  • [t:type{name:'Bro'}]:關係的類型是type,並且name屬性是Bro;

3. 關聯節點模式

節點之間通過關係聯繫在一起,由於關係具有方向性,-->表示存在有向的關係,--表示存在關聯,不指定關係的方向,如:

  • (a)-[r]->(b):該模式用於描述節點a和b之間存在有向的關係r;
  • (a)-->(b):描述a和b之間存在有向的關係;

4. 變長路徑的模式

從一個節點,通過關係連接到另外一個節點,這個過程叫遍歷,經過的節點和關係的組合叫路徑(path),路徑是由節點和關係的有序組合。

  • (a)-->(b):是步長爲1的路徑,節點a和b之間有關係直接關聯;
  • (a)-->()-->(b):是步長爲2的路徑,從節點a經過兩個關係、1個節點到達節點b;

Cypher語言支持變長路徑的模式,變長路徑的表示方式是:[*N..M],N和M表示路徑長度最小值和最大值。

  • (a)-[*2]->(b):表示路徑長度是2,起始節點a,終止節點b;
  • (a)-[*3..5]->(b):表示路徑路徑長度最小值是3,最大值是5,起始節點是a,終止節點是b;
  • (a)-[*..5]->(b):表示路徑的最大長度是5,起始節點是a,終止節點是b;
  • (a)-[*3..]->(b):表示路徑的最小長度是3,起始節點是a,終止節點是b;
  • (a)-[*]->(b):表示不限制路徑長度,起始節點a,終止節點b;

5. 路徑變量

路徑可以指定給一個變量,該變量是路徑變量,用於引用查詢路徑:

p=(a)-[*3..5]->(b)

例子:圖中有6個節點,每個節點都有一個屬性name,節點之間的關係類型是KNOWS,

如果要根據查詢模式,查詢跟Fillpa節點有關係的人,並限制路徑長度爲1或者2,可用如下查詢模式(注意這裏關係模式沒有方向性):

match (a)-[:KNOWS*1..2]-(b)

where a.name='Fillpa'

return b.name

返回結果爲:Dilshad或者Anders。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章