2017-01-23 1 views
1

이름이 같은 두 열의 엔티티를 결합하려고합니다. 다음은 내 데이터 세트 샘플이며 하나의 노드 만 만들고이 노드와 관련된 모든 관계가 필요합니다.사이퍼에서 같은 이름의 엔티티 결합하기

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

병합을 사용하면 각 열에서 고유 한 것을 선택하고 4 개의 노드 대신 2 개의 노드를 만들 수 있습니다. 하지만 제이미 먼 (Jamie Dimon)을 위해 하나의 노드 만 생성하면됩니다. 지금까지

내 쿼리 구조 :


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

대신 단 하나의 당신의 엔티티에 대한 두 개의 서로 다른 라벨을 사용하고 어떤 이유가 있습니까? 하나의 레이블 만 사용하고 엔터티를 정의하는 최소한의 속성 집합에서 MERGE를 사용하면 중복을 피할 수 있습니다. 또한 노드, 엔티티 및 신뢰 특성이 무엇인지 설명하고 어떤 특성이 고유 : 엔터티를 나타내는 지 알려주십시오. – InverseFalcon

답변

1

첫째는, 고유 Entity 노드를 식별하는 속성에 대한 고유성 제약 조건을 정의합니다. 이제 name를 사용하자 :

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

이 스키마 제약 조건을 생성하고 (재산 name에 대해 같은 값이 레이블 Entity 두 노드에 정의 된대로) 중복 노드가 데이터베이스에 추가 할 수 없음을 보장합니다.

그런 때 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 절차의 관계를 사용하려면 APOC 절차의 [addLabels()] (https://neo4j-contrib.github.io/neo4j-aprib-procedures/#_creating_data) 기능을 고려하는 것이 유용 할 수 있습니다. 매우 일반적인 : REL 관계 유형의 이름 속성 대신 관계 유형에 대한 CSV. – InverseFalcon

+0

효과가있었습니다! 그것은 일했습니다 .. 정말 고마워요. –

관련 문제