티스토리 뷰

Neo4j

그래프 구성 설정

joyHong 2020. 6. 17. 11:02

Neo4j에 RDF 형식의 데이터를 import하기 위해서는 환경 설정이 필요하다.

이 Configuration은 그래프 내에서 데이터를 구성하는 형식에 대하여 설정을 하게 되는데 URI 저장 형식, import한 RDF 데이터 중 Property에 여러 개의 값이 있는 경우 저장하는 형식 등에 대해서 설정을 한다.

설정은  GraphConfig에 그래프의 특성을 정의하는데 초기화, 상태 확인, 업데이트, 삭제 등을 프로시저 호출을 통해 수행한다.

* 이 예제에서는  4.0버전으로 기술한다.

 

먼저 Graphconfig 초기화는 init()을 호출하면 자동으로 디폴트값이 생성되고 초기화가 된다.

CALL n10s.graphconfig.init()

 

또한 현재 상태를 확인하기 위해서는 show를 호출하면 된다.

CALL n10s.graphconfig.show

 

현재 디폴트로 초기화된 값은 위의 결과와 같다.

이러한 값들을 어떻게 바꾸는지에 따라 RDF 형식의 데이터를 import할 때 어떻게 저장되는지는 추후에 예시를 들면서 포스팅을 할 계획이다.

 

다음은 GraphConfig를 초기화 할 때 원하는 값을 parameter로 전달하여 초기화를 수행할 수 있다.

call n10s.graphconfig.init( { handleVocabUris:"KEEP", handleMultival: "ARRAY", keepLangTag: true, handleRDFTypes: "LABELS_AND_NODES" })

이 예시는 uri를 원 데이터 그대로 사용하겠다는 의미로 handleVocabUris:"KEEP" ,

object값이 여러개 인 경우 배열형태로 저장하겠다는 의미로 handleMultival: "ARRAY",

언어태그는 유지한다는 의미로 keepLangTag: true,

리소스의 rdf:type으로 연결되는 클래스 uri를 리소스의 레이블(Neo4j에서의 label, (n:Label)을 의미함)을 생성하면서 동시에 별도의 노드를 생성하고 관계로 연결하도록 만들겠다는 의미로 handleRDFTypes: "LABELS_AND_NODES" 로

설정하고 초기화시켰다.

 

Graph Config Parameter의 종류는 아래에서 가능하다.

https://neo4j.com/docs/labs/nsmntx/current/reference/#nsprefixmngmnt 



GraphConfig 의 값을 업데이트 하려면 set을 하면되는데 변경할 파라미터와 값을 전달하면 된다.

call n10s.graphconfig.set( { handleVocabUris:"SHORTEN_STRICT", handleMultival: "ARRAY", keepLangTag: true, handleRDFTypes: "LABELS_AND_NODES" })

* graphconfig.set graphconfig.init 이 먼저 되어 있어야 동작한다.

 

마지막으로 GraphConfig 삭제는 drop을 호출한다.

call n10s.graphconfig.drop

* 예시를 따라 drop을 하였으면 다음을 위해 다시 init을 호출하여 초기화를 해주도록 한다.

 

여기까지하게 되면 GraphConfig 설정을 완료한 것이라고 생각하고(파라미터는 각자의 환경에 맞춰 설정한 것으로 본다)

RDF에서는 URI가 유일한 식별자로서 작용하지만 Neo4j는 노드마다 고유한 id값이 생성되어 식별을 하게 된다.

따라서 RDF 데이터를 Neo4j에 저장하기 위해서는 제약조건이 필요하게 된다.

이는 RDF상의 uri를 유일한 값으로 인식하도록 하여 Neo4j에 저장할 때 uri가 중복되지 않도록 제약을 만들어주는 것이다.

 

이 제약사항을 만드는 쿼리는 아래와 같다.

CREATE CONSTRAINT n10s_unique_uri ON (r:Resource)
ASSERT r.uri IS UNIQUE

RDF 데이터를 Neo4j에 가져오게 되면 트리플의 Sujbect에 해당하는 노드가 생성될 때 기본적으로 노드의 레이블이 Resource로 생성이 된다. 그리고 Subject의 uri는 노드의 property로서  key가 uri이고, value가 uri 값이 되도록 된다.

여기서 이 uri 프로퍼티값이 유니크하다는 제약사항을 걸어주면 다른 노드가 생성될 때 uri가 같을 경우 노드가 중복 생성이 되지 않게 된다.

 

다음은 RDF 데이터가 Neo4j에 저장될 때 ( 다시말해 PropertyGraph 방식으로 변경될 때) 어떻게 저장이 되는지에 대해서 포스팅할 계획이다.

 


참조 :

https://neo4j.com/docs/labs/nsmntx/current/

 

'Neo4j' 카테고리의 다른 글

Import RDF  (0) 2020.06.17
RDF 데이터가 Neo4j에 저장되는 방식  (0) 2020.06.17
Neosemantics  (0) 2020.06.17
IMPORT CSV  (2) 2020.06.17
Cypher - INDEX & CONSTRAINT  (0) 2020.06.16
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함