官术网_书友最值得收藏!

  • 精通Neo4j
  • 龐國明等
  • 894字
  • 2023-07-17 19:00:59

3.1.2 模式(Patterns)

Neo4j圖由節(jié)點和關(guān)系構(gòu)成。節(jié)點可能還有標(biāo)簽和屬性,關(guān)系可能還有類型和屬性。節(jié)點表達(dá)的是實體,關(guān)系連接一對節(jié)點。節(jié)點可以看作類似關(guān)系數(shù)據(jù)庫中的表,但又不完全一樣。節(jié)點的標(biāo)簽可以理解為不同的表名,屬性類似關(guān)系數(shù)據(jù)庫中表的列。一個節(jié)點的數(shù)據(jù)類似關(guān)系數(shù)據(jù)庫中表的一行數(shù)據(jù)。擁有相同標(biāo)簽的節(jié)點通常具有類似的屬性,但不必完全一樣,這一點與關(guān)系數(shù)據(jù)庫中一張表中的行數(shù)據(jù)擁有相同的列是不一樣的。

然而,節(jié)點和關(guān)系都是簡單的低層次的構(gòu)建塊。單個節(jié)點或者關(guān)系只能編碼很少的信息,但模式可以將很多節(jié)點和關(guān)系編碼為任意復(fù)雜的想法。

Cypher查詢語言很依賴于模式。只包含一個關(guān)系的簡單模式連接了一對節(jié)點。例如,一個人LIVES_IN在某個城市或者某個城市PART_OF一個國家。使用了多個關(guān)系的復(fù)雜模式能夠表達(dá)任意復(fù)雜的概念,可以支持各種有趣的使用場景。例如,下面的Cypher代碼將兩個簡單的模式連接在一起:

像關(guān)系數(shù)據(jù)庫中的SQL一樣,Cypher是一種文本的聲明式查詢語言。它使用ASCII art(4)的形式來表達(dá)基于圖的模式。采用類似SQL的語句,如MATCH、WHERE和DELETE,來組合這些模式以表達(dá)所預(yù)期的操作。

3.1.2.1 節(jié)點語法

Cypher采用一對圓括號來表示節(jié)點,如:()、(foo)。下面是一些常見的節(jié)點表示法:

簡單的()表達(dá)了一個匿名節(jié)點。如果想在其他地方引用這個節(jié)點,可以添加一個變量,如(matrix)。此變量的可見范圍局限于單個語句。

Movie標(biāo)簽聲明了節(jié)點的類型。Neo4j節(jié)點索引也會使用到標(biāo)簽,每個索引都是建立在一個標(biāo)簽和屬性的組合上。節(jié)點的屬性以key/value列表的形式存在,并外加一對大括號。屬性可以存儲信息和(或)限制模式。

3.1.2.2 關(guān)系語法

Cypher使用一對短橫線(即--)表示一個無方向關(guān)系。有方向的關(guān)系在其中一段加上一個箭頭(即<--或-->)。方括號表達(dá)式[…]可用于添加詳情。里面可以包含變量、屬性和(或者)類型信息。關(guān)系的常見表達(dá)方式如下:

關(guān)系的方括號內(nèi)的語法和語義與節(jié)點類似,定義了可以在別處引用的變量,關(guān)系的類型類似于節(jié)點的標(biāo)簽,關(guān)系的屬性等同于節(jié)點的屬性。注意,屬性的值可以是數(shù)組。

3.1.2.3 模式語法

將節(jié)點和關(guān)系的語法組合在一起可以表達(dá)模式。下面是一個簡單的模式:

3.1.2.4 模式變量

為了增強模塊性和減少重復(fù),Cypher允許將模式賦給一個變量。這使得匹配到的路徑可以用于其他表達(dá)式。如:

主站蜘蛛池模板: 武邑县| 贵港市| 南昌县| 池州市| 宁阳县| 湄潭县| 周宁县| 乳源| 林甸县| 武邑县| 平遥县| 丰都县| 班戈县| 南汇区| 庆云县| 壶关县| 亳州市| 康定县| 花莲县| 苍溪县| 沙坪坝区| 克拉玛依市| 庆城县| 莱州市| 临颍县| 黄石市| 宜春市| 福州市| 仁怀市| 毕节市| 沂源县| 德兴市| 牟定县| 长沙县| 土默特左旗| 敦化市| 凌海市| 延安市| 会昌县| 凌海市| 三台县|