Neo4j中的關係/箭頭不能獲得多個類型/標籤(請參見here和here)。我有一個邊緣需要獲取標籤和(可能)屬性的數據模型。如果我決定使用Neo4j(而不是支持標籤箭頭的OriendDB),我想我會有兩種選擇來建模兩個節點A和B之間的箭頭f:將Neo4j中的箭頭/關係建模爲節點
1)將箭頭f編碼爲一個跨度,比如A < --f - > B,這樣f也是一個節點,並且 - >和< - 是箭頭。
或
2)編碼如箭頭F A - >的F - > B,使得f是再次節點和兩個 - >是箭頭。
雖然這似乎是在我的數據模型上添加unnecessary complexity,但如果我想使用Neo4j,目前似乎沒有任何其他選項。然後,我試圖看看上面的哪些編碼更適合我的查詢(查詢是我係統的核心)。爲此,我需要訴諸實例。所以,我有兩個問題:
第一個問題:
第一部分)我有標註爲個人和父親節點,並在它們之間有箭似
Person<-[:sr]-father-[:tr]->Person
以模特是誰的父親誰(tr是sr的父親)。對於一個給定的人P1,我怎麼能得到他所有的祖先。part2)如果我有
Person-[:sr]->father-[:tr]->Person
結構代替,爲建模父親關係,如何上述相同的查詢看起來像。
這回答here當父親被認爲是一個簡單的關係(而不是被編碼爲一個節點)
第二個問題:
part1的)我已標記節點作爲每個屬性爲p1的節點。我想查詢A節點,得到那些元素p1 < 5,然後創建以下結構:對於查詢結果中的每個a1,我創建
qa1<-[:sr]-isA-[:tr]->a1
,使得isA和qa1是節點。part2)如果我想創建
qa1-[:sr]->isA-[:tr]->qa1
而不是?
當isA被認爲是簡單的箭頭(而不是被建模爲節點)時,回答此問題here。
我把'(personA) - [:father] - >(personB)'作爲一個例子來看看如果我傳遞所有的箭頭,傳遞閉包查詢會是什麼樣子。所以你是對的,在這個特定的例子中,我沒有得到任何額外的點。 – qartal