Neo4J中的关系

时间:2015-04-15 15:59:12

标签: csv neo4j

我有两个csv文件,即:file1.csv {包含字段:Gene,Tumor,Totalpatients,Level}和file2.csv {Gene,Sample,Value,Abundance}

我需要创建两个文件之间的关系,例如:Gene连接到Tumor并创建为采样等等(类似关系)

我正在尝试以下内容,但它向我显示了所需的结果(在代码下面解释)

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS 
FROM 'file///home/file1.csv' AS row 
LOAD CSV WITH HEADERS 
FROM 'file///home/file2.csv' AS line




MERGE (genes:Genes { name: 'Genes' })
MERGE (cancer:Cancer { name: 'Cancer' })
MERGE (rna:RNA {name: 'RNA'})

MERGE (gene:Gene {name: UPPER(row.Gene)})
MERGE (tumor:Tumor {name: UPPER(row.Tumor)})
MERGE (patient:Patients { name: 'Patients' })
MERGE (total:Totalpatients {name: UPPER(row.Totalpatients)})
MERGE (level:Level {name: UPPER(row.Level)})
MERGE (count:Countpatients {name: UPPER(row.Countpatients)})
MERGE (sample:Sample{name: UPPER(line.Sample)})


MERGE (genes)-[:GENES]->(gene)
MERGE (genes)-[:TUMOR]->(tumor)
MERGE (gene)-[:RNA]->(Sample)


RETURN row;

执行后,关系RNA显示与空节点连接的基因,即没有要显示的属性。

如何纠正?

1 个答案:

答案 0 :(得分:0)

如果没有详细了解.csv文件的内容,并假设上面发布的Cypher与您正在执行的内容完全相同...

我认为这可能是一个简单的套管问题。发现差异:

MERGE (sample:Sample{name: UPPER(line.Sample)})

MERGE (gene)-[:RNA]->(Sample)

您的标识符sample以小写字母'开头。但在关系MERGE声明中,它是一个大写的' S',即Sample

可以通过检查来自:RNA的{​​{1}}关系另一端的节点是否有标签来确认。

gene:Gene

如果没有,则MERGE语句在原始语句中创建了MATCH (gene:Gene)-[:RNA]-(sample) RETURN labels(sample) 节点,因为该模式不存在。当然,Sample没有标签也没有属性 - 因此你的观察。