본문 바로가기
카테고리 없음

[Cypher] 그래프 질의하기(Querying Graph)

by 열정주니어 2023. 1. 10.
반응형

이전 포스팅들을 통해 GDB에 그래프와 레이블을 생성한 후, 노드&엣지를 생성하였다.

Cypher - 노드&엣지 생성/제거하기

 

Cypher - 노드&엣지 생성/제거하기(CREATE/DELETE Node&Edge)

GDB를 사용하기 위해서는 그래프를 생성하고, 레이블을 생성한 후, 노드&엣지를 생성해야 한다. 이전 포스팅들을 통해 그래프와 레이블을 생성하고 삭제하는 방법까지 알아보았다. Cypher - 레이블

jobdahan-tech.tistory.com

이제 GDB에 노드&엣지가 생성이 잘 되었는지 질의를 통해 조회 해보도록 한다.

 

그래프 질의(Querying Graph)

그래프를 대상으로 질의를 한다는 것찾고자 하는 그래프를 패턴으로 표기하여 찾아낸 뒤 해당 그래프 내에서 원하는 정보를 추출해내는 것이다.

 

그래프를 조회하는 쿼리는 다음과 같다.

MATCH (:vlabel_name{property:'property_name'})-[:elabel_name]->(v:vlabel_name)
RETURN v.property;

property
-------------
property_name
(1 row)

MATCH 절해당 절에 표기된 패턴에 부합하는 그래프 데이터를 찾아낸다. 그리고 찾은 그래프에서 반환하고자 하는 요소만RETURN 절에 명시한다.

 

패턴을 표기하는 방법은 다음의 포스팅을 참고하도록 한다.

Cypher - 그래프 표현 방법, 패턴(Pattern)

 

Cypher - 그래프 표현 방법, 패턴(Pattern)

이전 포스팅들을 통해 간단하게 Cypher를 이용하여 그래프를 다루는 법을 알아보았다. 이번 시간에는 그래프를 표현하는 방법인 패턴에 대해 알아보도록 한다. 패턴은 하나이상의 노드 or 엣지의

jobdahan-tech.tistory.com

 

예시

이전 포스팅에서 사용자 정보를 노드, 팔로우 정보를 엣지로 생성하였다.

우선 생성한 노드 정보를 질의해보도록 한다.

-- 모든 속성 정보 조회
MATCH (v:n_user)
RETURN *

-- 노드의 이름 정보만 조회
MATCH (v:n_user)
RETURN v.name

MATCH절로 노드의 패턴에 부합하는 그래프 데이터를 찾은 뒤 RETURN 절로 원하는 요소를 반환한다.

RETURN 절 뒤의 *는 모든 요소(속성)를 반환함을 의미하고 v.name은 v라는 변수를 부여한 n_user레이블 노드의 이름 속성을 반환함을 의미한다.

 

쿼리의 결과는 다음과 같다.

위의 쿼리를 실행하면 노드의 모든 정보가 조회됨을 알 수 있다.

밑의 쿼리를 실행하면 노드의 이름 정보만 조회됨을 알 수 있다.

 

다음으로 엣지 정보를 질의해보도록 한다.

-- 엣지의 모든 속성 정보 조회
MATCH (v:n_user)-[r:e_follow]->(v2:n_user)
RETURN r;

-- 노드&엣지의 모든 속성 정보 조회
MATCH (v:n_user)-[r:e_follow]->(v2:n_user)
RETURN *;

MATCH절로 패턴에 부합하는 그래프 데이터를 찾으므로 RETURN절로 전체 속성을 반환(*)하게 되면 노드와 엣지의 모든 정보가 조회가 된다. 따라서, 엣지의 정보만 질의하기 위해서는 RETURN절에 엣지의 변수 r만 반환해야 한다.

 

쿼리의 결과는 다음과 같다.

위의 쿼리를 실행하면 엣지의 정보만 조회가 된다.

밑의 쿼리를 실행하면 패턴에 부합하는 모든 노드와 엣지의 정보가 조회가 된다.

 

이것으로 이번 포스팅에서는 Cypher를 이용하여 질의를 하는 방법을 알아보았다.

 

다음 포스팅에서는 그래프를 수정하는 방법에대해서 알아보도록 한다.

 

참고

https://bitnine.net/ko/documentation/ (아젠스그래프 개발자 메뉴얼 가이드)

 

문서 ⋆ Bitnine Global Inc.

문서 ⋆ Bitnine Global Inc.

bitnine.net

 

반응형