2017-01-23 6 views
1

同じ名前の2つの列のエンティティを結合しようとしています。 以下は私のデータセットのサンプルです。私はただ1つのノードを作成し、すべてのリレーションシップをこのノードにリンクします。キッパーで同じ名前のエンティティを結合する

Entity0  | Entity1 | Relationship | 
__________________________________________ 
Jamie Dimon | Mit Romney | friends 
__________________________________________ 
Jamie Dimon | Jamie Dimon | colleague 
__________________________________________ 
Mason White | Jamie Dimon | sibling 

iは、各列から一意選ぶ可能性がマージおよびジェームズ・ダイモンのための2つのノードの代わりに4つのノードを作成し使用します。しかし、私はJamie Dimonのために1つのノードを作成したいだけです。これまで

マイクエリ構造:


LOAD CSV WITH HEADERS FROM 'file:/final_neo4j.csv' AS line 
MERGE (e0:Entity0 {node: line.relation_first, name: line.entities_0_name, entity: line.entities_0_entity, confidence: toFloat(line.entities_0_confidence) }) 
WITH line, e0 
MERGE (e1:Entity1 {node: line.relation_second, name: line.entities_1_name, entity: line.entities_1_entity, confidence: toFloat(line.entities_1_confidence) }) 
WITH e0, e1, line 
MERGE (e0)-[r:Rel {name : line.relation_relation, confidence: toFloat(line.relation_confidence), url: line.url }]->(e1) 
RETURN e0,r,e1 

よろしくNrithya

+0

あなたの代わりに1つだけのあなたのエンティティのための2つの異なるラベルを使用しているいずれかの理由がありますか? 1つのラベルのみを使用し、エンティティを定義する最小限のプロパティセットでMERGEを使用すると、重複を避けることができます。また、ノード、エンティティ、および信頼のプロパティが何であるかを説明し、どのプロパティが一意であるかを教えてください:エンティティ? – InverseFalcon

答えて

1

まず、一意Entityノードを識別するプロパティの一意性制約を定義します。さんはnameを使用してみましょう:

CREATE CONSTRAINT ON (e:Entity) ASSERT e.name IS UNIQUE; 

これは、スキーマ制約を作成し、(プロパティnameに同じ値を持つラベルEntityを持つ2つのノードで定義されている)重複ノードがデータベースに追加することはできないことを保証します。

そして、あなたMERGEだけMERGE後に、そのプロパティとSETプロパティにマージ:エンティティラベル:

LOAD CSV WITH HEADERS FROM 'file:/final_neo4j.csv' AS line 
MERGE (e0:Entity {name: line.Entity0}) 
ON CREATE SET e0.confidence = toFloat(line.entities_0_confidence) 
MERGE (e1:Entity {name: line.Entity1}) 
ON CREATE SET e1.confidence = toFloat(line.entities_1_confidence) 
MERGE (e0)-[r:REL {name:line.Relationship]->(e1) 
RETURN * 
+0

APOCプロシージャの[addLabels()](https://neo4j-contrib.github.io/neo4j-aprib-procedures/#_creating_data)機能を検討することも役立ちます。非常に一般的なREL関係タイプのnameプロパティではなく、リレーションシップタイプのCSVです。 – InverseFalcon

+0

それは働いた!それは働いた..ありがとう –

関連する問題