2016-03-19 53 views
0

創建和鏈接節點的Cypher查詢我有內容產生的csv文件如下用於從csv文件

GOID   GOName     
GO:0007190  activation of adenylate cyclase activity  



DiseaseID  DiseaseName 

D058490  46 XY Disorders of Sex Development 

D000172  Acromegaly 

D049913  ACTH-Secreting,Pituitary Adenoma  

D058186  Acute Kidney Injury 

D000310  Adrenal Gland Neoplasms 

D000312  Adrenal Hyperplasia Congenital 

C537045  Albright's hereditary osteodystrophy  

D000544  Alzheimer Disease 

D019969  Amphetamine-Related Disorders 

D000855  Anorexia  

D000860  Anoxia 

D001008  Anxiety Disorders 

D001169  Arthritis Experimental 

D001171  Arthritis Juvenile 

D001172  Arthritis Rheumatoid  

D001249  Asthma 

D001254  Astrocytoma 

等。 我想通過疾病創建GOID之間的鏈接,這樣一個疾病節點連接到兩個或更多不同的GOID節點。

我的輸出應該是這樣的 enter image description here

回答

0
  1. 一次全部裝入疾病爲下:疾病的標籤。
  2. 在全局標籤下一次加載所有全局數據
  3. 使用Global-> Disease鏈接創建另一個CSV文件,並使用MERGE創建關係。

的關係CSV應該是這樣的:

goID,diseaseID 
"GO:1234","D000456" 

的命令來讀取CSV和創造之間的關係是這樣的:

USING PERIODIC COMMIT 500 
LOAD CSV WITH HEADERS FROM "file:/D:/Relationships.csv" as line 
MERGE (:Global {goID: line.goID})-[:RELATIONSHIP]->(:Disease {diseaseID: line.diseaseID}) 

一旦你的數據被加載,你可以這樣查詢它:

MATCH (g:Global {goID: "GO:0007190"})-[r:RELATIONSHIP]->(d:Disease) 
return g, r, d 

對於其中一種疾病有多個全球條件的情況下,你可以找到和創造像這樣的關係:

match (d:Disease) 
match (go1:GO)-[:RELATIONSHIP]->(d) 
match (go2:GO)-[:RELATIONSHIP]->(d) where go2 <> go1 
create (go1)-[:RELATIONSHIP]->(go2) 
create (go2)-[:RELATIONSHIP]->(go1) 

嚴格地說,你並不需要一個雙向的關係,所以創建第二個關係可能被排除在外。一個潛在的問題是如果不止一種疾病將兩個全球價值聯繫起來。如果這是一個問題,那麼在關係上設置一個「疾病」屬性將有助於確定這些全局變量是如何相關的。

+0

感謝Tim的幫助我的輸出結果顯示--->添加了9234個標籤,創建了9234個節點,創建了4617個關係,語句在244681 ms中執行,但沒有以圖形形式顯示輸出。我應該解僱任何比賽查詢.... – AnkyD90

+0

LOAD CSV是關於將數據存入您的數據庫。完成之後,您就可以使用MATCH()來查詢數據並獲取圖表。我用一個例子更新了答案。 –

+0

感謝添你的幫助,但是當我火MATCH()查詢然後輸出顯示 - >(沒有行)任何幫助? – AnkyD90