본문 바로가기
Knowlege Graph/Neo4j

Neo4j 란

by didi0di 2022. 5. 23.
728x90

Neo4j 소개

지식그래프(Knowlege Graph, KG)를 만드는 툴 중 하나로, 지식그래프 구축과 시각화가 용이하다.

데이터 조회 및 조작을 위해 Cyper라는 쿼리 언어를 사용하며, SQL과 비슷하다.

 

Neo4j는 property graph Database 모델을 사용한다.

 

그래프 데이터는 관계(relationships)를 통해 연결된 노드들로(Nodes)로 구성되어 있으며,

기본적인 그래프 데이터의 구조는 다음과 같다.

그래프 데이터

 

property praph의 예시는 다음과 같다.

 

이처럼 Neo4j 로 만드는 지식그래프의 구성 요소에는 크게 Node 와 Relationship가 있으며,

Node 와 Relationship은 추가적인 정보를 위해 Property (key-value 쌍)를 가질 수 있다.

또한, Label을 통해 Node를 그룹핑 할 수 있다.

 

 

각 구성요소에 대한 자세한 설명은 아래와 같다.

 

Neo4j 구성요소

 

상품 관련 지식그래프를 구축한다고 가정을 하고, 지식그래프의 각 구성요소를 알아보자.

 

Node

: 일반적인 지식그래프에서의 Node를 의미하며, 그래프에서 점을 의미한다.

노드는 도메인에 대한 entity를 표현하는데, 쉽게 말해 데이터에 대한 정보를 Node에 담는다고 생각하면 된다. 따라서 각 상품을 하나의 Node로 표현 할 수 있다.

Cyper 쿼리에서 (n:노드명)으로 표현한다.

 

Relationship 

 : 일반적인 지식그래프에서의 Relationship를 의미하며, 일부 그래프에서는 Edge라고도 표현한다.

relationship은 source node와 target node의 연결성을 표현하며, Node와 Node 사이의 관계를 의미한다. 

relationship은 항상 방향성을 가지고 있으며 one direction(단반향) 이다.

이를  Cyper 쿼리에서 [r: 관계명] 으로 표현한다. 

 

Label

: Node를 카테고리화 하기 위해 사용할 수 있다. 

 

Property

: Node의 속성을 의미한다. 상품에 대한 지식그래프를 구축한다고 가정했을 경우, "가격", "크기" 등을 상품 Node의 property로 설정할 수 있다.

 

"A 상품은 가격이 1,500원이며, 사은품을 포함하고 있다"
라는 데이터를 지식그래프로 저장하고 이를 Cypher 쿼리를 이용해 표현할 경우

(p:상품 A {가격 : 1500} ) -> [r: 포함한다] -> (n:사은품)

으로 나타낼 수 있다. 

여기서 상품 노드 p와 사은품 노드 n 의 Label이 각각 '상품 A' 와 '사은품' 이 되고, 상품 A는 '가격' 이라는 property를 가지고 있으며 그 값은 1500임을 알 수 있다. 또한 두 노드는 '포함한다' 라는 관계를 가지고 있는 것을 확인할 수 있다.

 

참고

 

https://neo4j.com/docs/getting-started/current/graphdb-concepts/

 

Graph database concepts - Getting Started

An introduction to graph database concepts.

neo4j.com

 

728x90

댓글