728x90
반응형

편집자 주: 이 프리젠테이션은 Jesús Barrasa가 Nodes 2019에서 발표한 내용이에요.


이 강연은 이전 버전의 Neosemantics를 다루고 있고, 현재 버전에는 많은 새로운 기능이 추가되었어요. 다음 문서와 비디오를 확인해 보세요: Neosemantics Neo4j Labs 페이지.

프레젠테이션 요약

Jesús Barrasa, Neo4j 영업 엔지니어링 이사가 NSMNTX, 즉 Neosemantics를 소개합니다. NSMNTX는 사용자가 RDF 및 연결된 데이터로 작업할 수 있도록 Neo4j를 확장하는 플러그인이에요.

Barrasa는 먼저 다양한 유형의 데이터에 대해 이야기해요. RDF는 W3C에서 정의한 표준으로, 웹에서 데이터를 교환하기 위한 표준 모델이죠. RDF는 다양한 직렬화 형식을 제공하고요.

RDF는 다른 모델이지만, 기본적으로 동일한 세계 추상화를 가지고 있고, 세계를 그래프로 바라봐요. NSMNTX를 사용하면 RDF 데이터를 Neo4j로 가져올 수 있는데, 둘 다 그래프이기 때문에 전환이 간단하답니다.

The Import and Export 프로세스는 Neo4j로 들어오고 나가는 RDF 데이터에 대해 완전히 동일하게 작동해요. 일련의 명령을 실행하고 직렬화를 생성해서 그래프를 RDF로 내보내는 거죠. 정말 간단하죠? 또한 Cypher를 실행해서 데이터베이스를 조작할 수도 있어요.

NSMNTX는 단순히 데이터를 가져오고 내보내는 것 이상의 기능들을 제공해요. 다른 Features로는 Ontology를 사용해서 그래프 내의 온톨로지를 관리하고 게시하는 기능이 있어요. .importOntology를 사용하면 존재하는 모든 곳에서 온톨로지를 가져올 수 있죠. 그리고 추론 기능도 있는데, 이는 범용 엔진이 실행하기를 원하는 명시적인 설명이나 명시적인 동작을 데이터로 정의할 수 있게 해줘요. 마지막으로, Clone 기능을 사용해서 하나의 Neo4j 인스턴스에서 다른 인스턴스로 하위 그래프를 복제할 수도 있답니다.

전체 프레젠테이션

안녕하세요, 여러분. 제 이름은 Jesús Barrasa입니다. 오늘은 Neosemantics, NSMNTX에 대해 발표할 예정이에요.

RDF 데이터, 링크된 데이터 작업을 더 쉽게 만들어주는 Neo4j 확장 플러그인에 대해 이야기해볼게요. 정말 흥미롭겠죠?

그럼 본격적으로 시작해볼까요?

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

저는 Jesús Barrasa입니다. 런던에 살고 있고, Neo4j의 필드 팀에서 지난 4년간 일해왔어요. Neo4j를 사용해서 그래프와 Property Graph 작업을 정말 많이 했죠.

그리고 RDF에 대한 배경 지식도 가지고 있어요. Semantic Technologies로 박사 학위를 받았거든요. 몇 년 동안 RDF, 온톨로지, 링크된 데이터를 사용해서 흥미로운 프로젝트들을 진행했었어요. 특히 관계형 스키마를 온톨로지로 매핑하는 데 집중했었죠. 물론 꽤 오래전 이야기지만요.

제가 오늘 NSMNTX, RDF, 연결된 데이터, 그리고 Neo4j에 대해 이야기하는 이유는 바로 제 배경 때문이에요. 게다가 제가 발표할 이 확장 기능에 대해 지난 몇 년간 작업해 왔거든요.

Neosemantix 프로젝트가 Neo4j Labs 인큐베이터에 합류했다는 소식을 전하게 되어 정말 기쁩니다!

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

정말 좋은 소식이에요!

에 모든 정보가 담긴 URL이 있어요. 더 많은 사람들에게 알려지고, 사용자가 늘어나면 좋겠네요. 이미 관련 커뮤니티는 있지만, 활용도를 높이고 더 많은 기여를 받고 싶어요.

해당 URL로 이동하면 프로젝트 페이지를 볼 수 있어요. 이렇게 생겼답니다.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

오늘 이야기할 내용을 간단하게 요약해 드릴게요. Neoemantics가 무엇인지, 이걸로 뭘 할 수 있는지, 그리고 몇 가지 흥미로운 링크들을 소개해 드릴 거예요.

페이지 하단에 버튼이 있는데, Neosemantix와 Neo4j 사용에 대한 문서와 블로그 게시물을 볼 수 있어요. 시작할 때 도움이 될 만한 비디오 프레젠테이션과 웹 세미나도 준비되어 있답니다.

더 중요한 건, Neo4j Labs의 모든 프로젝트는 오픈 소스라는 점이에요! 소스 코드 링크가 있으니, 한번 살펴보시고 기여도 해주시면 좋겠어요. 그리고 Mark Needham이 여러분을 위해 준비한 멋진 문서 링크도 있답니다.

그럼 시작해 볼까요?

NSMNTX란 무엇인가요?

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

대부분의 사람들은 Neo4j와 RDF에 대해 알고 있을 거예요.

RDF는 W3C에서 정의한 표준이에요. RDF는 웹에서 데이터를 교환하기 위한 표준 모델이죠. RDF는 다양한 직렬화 형식을 제공하는데, 한번 살펴볼까요?

흥미로운 점은 RDF가 연결된 객체의 관점에서 세상의 모델을 나타낸다는 거예요. RDF는 트리플(Triple) 개념을 사용하는데, 이게 바로 세상을 표현하는 방식이랍니다.

트리플은 술어를 통해 목적어에 연결된 주어에요. Neo4j에서는 이게 그래프의 edge가 되겠죠. 결국, 트리플을 결합하면 그래프가 만들어지는 거예요.

흥미로운 점은 또 다른 모델인 RDF가 동일한 기본적인 세계 추상화를 가지고 있다는 거예요. 세상을 그래프로 보는 거죠. NSMNTX를 통해 RDF로 할 수 있는 작업 중 하나는 RDF 데이터를 Neo4j로 가져오는 거예요. 그래프니까 간단해야겠죠?

RDF 데이터를 가져올 수 있어요. 이 RDF 데이터는 결과를 RDF로 보여주는 서비스에서 가져올 수도 있고, RDF로 게시된 기존 데이터 세트일 수도 있고, 아니면 그냥 파일일 수도 있죠. NSMNTX를 사용하면 어떤 종류의 RDF 데이터든 손실 없이 Neo4j로 가져올 수 있다는 점이 중요해요. NSMNTX는 RDF 데이터를 있는 그대로 저장하거든요.

저희는 RDF 데이터를 Property Graph로 저장하는데요. 잠시 후에 Neo4j에서 이게 어떻게 가능한지 살펴볼게요. Property Graph 형태로 저장하면서, 단 하나의 트리플도 손실 없이 RDF로 다시 생성할 수 있도록 하는 거죠. 이게 바로 데이터의 무손실 가져오기/내보내기를 의미해요.

이것이 NSMNTX 확장의 두 가지 핵심 기능이고, 모든 것의 시작점이었답니다.

제 생각에 Neo4j는 W3C에서 정의한 데이터 게시 및 가져오기 메커니즘으로 볼 수 있어요. 데이터 교환을 위한 모델이고, 저희도 그렇게 사용하고 있죠. 기본적으로 Neo4j는 원하는 스토리지를 자유롭게 사용할 수 있고, RDF는 표준 형식을 통해 애플리케이션 간의 상호 운용성을 단순화하고 활성화하는 레이어라고 생각하면 돼요. 중요한 건 가져오기(import)와 내보내기(export)라는 두 가지 기능이죠.

모델 매핑 기능도 제공하는데요. 이걸 사용하면 Neo4j 그래프를 기존의 공개 어휘에 매핑하고, 해당 어휘에 따라 데이터를 노출할 수 있어요. 기본적인 추론 기능도 약간 제공하고요. 물론 이건 시작에 불과해요.

추론 기능은 Neo4j에 내장된 기능은 아니지만, NSMNTX가 약간의 기능을 제공하고 있어요. RDF 위에 구축된 언어 중 일부인 OWL이나 RDFS 같은 것들이죠. 이것도 정말 강력한 기능이랍니다.

데이터 가져오기

이제 Neo4j로 데이터를 가져오는 방법을 자세히 알아볼까요?

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

이 다이어그램은 세 가지 기본 단계로 표현된 구조인데요. SPARQL endpoint처럼 RDF를 생성하는 이전 RD에서 제공되는 RDF 데이터가 있을 수 있고, 아니면 그냥 RDF의 정적 덤프일 수도 있죠.

이 RDF 소스를 가지고 NSMNTX를 통해 RDF 가져오기 절차를 사용해서 이 모든 트리플을 Neo4j로 가져올 수 있어요. 그러면 여러분이 익숙하고 좋아하는 멋진 그래프를 가질 수 있게 되죠. 그리고 Cypher를 사용해서 데이터를 쿼리할 수도 있고요. Neo4j에 데이터를 보관하면 얻을 수 있는 추가적인 이점도 있는데요. 예를 들어, 환상적인 알고리즘 라이브러리에 액세스하고 빠른 순회를 할 수 있다는 점이에요.

이런 일이 어떻게 효과적으로 일어날까요?

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

주요 절차는 딱 하나인데요. 왜냐하면 이 확장 기능들은 대부분 프로시저로 구현되어 있기 때문이에요.

가져오기(import) 프로시저는 .importRDF이고, 잠시 후에 필요한 매개변수를 살펴볼게요. 하지만 실제로 그래프에 RDF 데이터를 유지하기 전에 RDF 데이터를 분석하는 유틸리티 프로시저인 .streamRDF.previewRDF라는 두 가지 추가 항목이 있어요. 가져오기(import)는 지속적인 방식으로 Neo4j 그래프에 RDF를 저장하고, 다른 두 개는 RDF를 구문 분석하고 시각화 목적으로 직렬화를 생성하지만, 데이터를 유지하지는 않아요.

앞서 말씀드렸듯이 이 프로시저에는 두 가지 주요 매개변수가 사용되는데요. 항상 있어야 하는 두 가지가 있어요. 하나는 데이터가 존재하는 지점이고, HTTP endpoint가 될 수 있는 URL이죠.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

RDF는 어디에든 있을 수 있고, 다양한 형식을 가지고 있어요. W3C 표준인 직렬화 형식은 여러 가지가 있는데, 그 중 일부를 살펴볼까요? 파서가 데이터를 제대로 처리하려면 소스 데이터가 어떤 형식을 사용하는지 지정해야 해요. 아주 컴팩트한 Turtle 같은 일반적인 형식도 있고, JSON-LD도 꽤 유명하죠. 전통적인 형식으로는 XML을 직렬화한 RDF/XML이나, 기본적으로 일반 텍스트로 된 명령문 목록인 N-Triples도 있답니다.

URL, RDF 소스 위치, 형식이 필수 정보이고, 몇 가지 선택적인 매개변수도 있어요. 첫 번째 예시에서는 매개변수 없이 실행해서 어떤 일이 일어나는지 한번 살펴볼게요.

한번 해볼까요!

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

먼저 이 가져오기 기능을 살펴볼게요. Neo4j Browser를 실행해 볼게요.

여기 빈 데이터베이스가 있어요. 아직 아무 요소도 없고, 이 데모에 사용할 몇 가지 쿼리를 준비해 뒀답니다.

첫 번째 import 문은 다음과 같아요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

보시다시피 아주 간단하죠? CALL은 설치된 프로시저를 호출하는 Cypher 키워드예요. 여기서는 이전에 언급했던 .importRDF를 호출하고 있고, 매개변수로는 RDF 파일의 위치를 전달하고 있어요. 보여드리는 RDF 조각의 URL이고, Turtle 형식으로 직렬화되어 있다는 것을 지정하고 있답니다.

실제로 해당 RDF 내용을 보여드리는 게 좋을 것 같네요. 여기 Cypher 코드가 있어요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

Turtle에 익숙하신 분들은 여기서 직렬화를 사용하고 있다는 걸 아실 거예요. 그리고 설명되는 네 가지 설명과 리소스가 있네요.

첫 번째는 NSMNTX, 두 번째는 프로시저 라이브러리인 APOC, 세 번째는 Neo4j-GraphQL, 마지막 네 번째는 Neo4j에요.

저는 세 가지 플러그인을 설명하고 있는데, 이 세 가지 플러그인 모두 Neo4j 플러그인이라고 말하고 있어요. 하단에는 Neo4j가 있고, 그래프 플랫폼으로 설명되어 있죠. 정말 멋진 플랫폼이에요. 모두 버전을 설명하는 속성을 가지고 있네요. 모든 리소스에는 버전이 있고, 플러그인의 경우에는 출시 날짜와 실행되는 Neo4j 버전도 있어요. 이는 이 RDF 그래프의 링크를 효과적으로 구현한 거죠.

제가 할 일은 이 URL을 가져와서 GitHub에 게시하고, 의미론 가져오기 호출에 사용하는 거예요. 그게 제가 Turtle에서 해야 할 전부랍니다.

저는 처형 요약과 그곳에서 무슨 일이 일어났는지 알아냈어요. 물론, 이건 작은 세트의 트리플이에요. 거기에는 단지 19개의 트리플만 있답니다.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

이제 트리플을 가져왔고, 일부 네임스페이스가 생성되었어요. 이게 어떻게 보이는지 보여 드릴게요.

모든 요소를 ​​얻으려면 여기를 클릭할게요. 세 가지 플러그인이 있네요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

GraphQL, Neo4j, APOC 및 NSMNTX가 있네요. 이 모든 진술과 트리플은 손실되지 않아요. 그들이 대표되었음을 알 수 있죠. 그 중 하나를 Node의 속성으로 선택하면 Neo4j에 RDF를 입력할 때 발생하는 변환이 된답니다.

본질적으로 리터럴 속성이라고 불리는 것이 문, 트리플 또는 리소스의 속성으로 속성으로 변환돼요. 이름, 출시 날짜, 버전 및 고유 식별자인 URI가 포함된 GraphQL이 있네요. APOC와 NSMNTX에 대해서도 동일해요. 그들은 다음을 통해 연결됩니다.runsOn관계. 모든 항목에는 접두사가 붙지만 그렇지 않다는 것을 알 수 있어요.runsOn but ns0_runsOn. 이것이 네임스페이스를 인코딩하는 방식이에요.

표현된 모든 것이 URI로 식별되기 전에 제가 보여준 RDF를 보면 알 수 있어요. 이것이 RDF의 구성 요소 중 하나랍니다. 저는 그것을 재생성할 수 있기를 원해요. Neo4j에서는 그게 필요하지 않지만, 우리가 그것을 재생성하려면 그렇게 할 수 있어야 해요. 이것ns0실제로는 생성된 이 네임스페이스 목록의 참조랍니다.

이제 Neo4j에 RDF 데이터가 있어요. 이제 Cypher로 쿼리를 시작하고 모든 종류의 작업을 수행할 수 있답니다.

어떤 분들은 이렇게 말씀하실 수도 있을 것 같아요. "잠깐만요. 저는 이런 식으로 네임스페이스를 사용하는 걸 별로 안 좋아해요. 그렇게 하면 제 Cypher 쿼리에 영향을 미치거든요." 그래프를 쿼리하려면 매번 ns_0을 입력해야 한다고 생각하시는 거죠. 하지만 저희가 가져오는 RDF 데이터는 그저 데이터 소스일 뿐이에요. 저는 Neo4j에 RDF 데이터가 자연스럽게 저장되길 원해요. 이건 문제가 되지 않으니까, 입력 프로세스에 추가할 수 있는 구성 매개변수에 대한 아이디어를 소개할게요.

다시 임포트 구문으로 돌아가 볼게요. 지금 하려는 건 이전과 똑같아요. 핸들 어휘 속성을 추가할 거예요. 이렇게 하면 나중에 URI나 RDF를 재현하고 싶을 때 URI를 어디에 보관해야 할지 알 수 있겠죠. 아니면 다른 소스에서 RDF를 가져와서 충돌을 피하고 싶을 수도 있으니까요. 이걸 유지하는 게 중요할 수도 있어요. 다양한 옵션은 다양한 사용자에게 중요하죠. 유지할 수도 있고, 단축할 수도 있고, 그냥 무시할 수도 있어요.

저는 이 URI를 무시하기로 했어요. URI에는 관심이 없거든요. 왜냐하면 제가 하고 싶은 일은 데이터를 가져와서 Neo4j에서 보기 좋게 만드는 것뿐이니까요.

이걸 다시 실행하면 정확히 같은 결과가 나올 거예요. 하지만 이번에는 네임스페이스를 생성하지 않으니까 지금은 필요 없어요. 그래프를 다시 보여드리면 내용적으로는 똑같아요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

APOC에는 여전히 모든 속성이 있지만 Neo4j에서 익숙한 방식과 동일하게 보일 거예요. 접두사를 사용하지 않고도 이름을 지정할 수 있죠. 이건 임포트 프로세스에 추가할 수 있는 구성 매개변수 중 하나예요. 더 추가할 수도 있고요.

조건부 필터링을 보여 드릴게요.

가져오려는 RDF로 다시 돌아가서, 수억 개의 트리플이 포함된 데이터 세트를 로드한다고 생각해 볼게요. "나는 모든 것에 관심이 없어요. 나는 버전과 출시 날짜에는 관심이 없고, 플러그인과 플러그인이 실행되는 플랫폼과의 연결만 원해요."라고 말하고 싶을 수도 있겠죠.

명령문 및 술어 수준을 지정하고 세부적으로 지정할 수 있어요. 임포트에서 제외할 조건자를 지정할 수 있는 거죠.

다른 구성 매개변수를 추가해서 이걸 수행할 수 있어요. predicateExclusionList를 사용하는 거죠. 기본적으로 제외하려는 술어 목록을 제공하는 거예요. 이 경우에는 버전과 출시 날짜를 무시할 거예요.

임포트를 다시 수행하기 위해 그래프를 지울게요. 이번에는 두 조건자를 필터링할 거예요. 19개의 트리플이 있지만 12개만 로드된 걸 볼 수 있죠. 모두 구문 분석되었지만 Neo4j에서는 12개만 유지되었어요. 바로 우리가 방금 적용한 필터 때문이에요.

그래프를 보면 구조적으로 여전히 동일해 보인다는 걸 알 수 있을 거예요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

지금 보면 이름밖에 없잖아요. 버전이나 출시일은 없죠.

Neo4j에서 RDF 데이터 내보내기

다음으로는 RDF 데이터를 Neo4j로 내보내는 방법을 살펴볼게요. 프로세스는 완전히 동일해요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

여기에 Graph Database, 그리고 Neo4j가 있네요. Graph Database를 꼭 써야 하는 건 아니고, Neo4j 안에 있는 모든 데이터베이스나 그래프를 사용할 수 있어요. 그래프를 가져와서 일련의 명령을 실행하는 거죠.

이건 확장 기능으로 구현되어 있고, 그래프를 RDF로 내보내는 serialization을 생성해요. 이 serialization은 바로 두 번째 부분에서 보여주는 건데, 논스톱 절차랍니다.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

이런 작업을 수행하는 모든 중지 절차를 포함하고 있지만, 현재는 HTTP endpoint로 구현되어 있어요. 저는 이게 RDF 소비 애플리케이션과의 통합을 단순화하는 유용한 방법이라고 생각했어요.

그래프의 요소를 ID로 가져와서 serialization하는 등의 작업을 할 수 있어요. 속성(property)과 값에 따라 요소를 가져오는 게 아마 더 좋은 방법일 거예요. 아니면 그래프에서 임의의 Cypher를 실행하고 결과를 RDF로 serialize할 수도 있고요.

한번 해볼까요!

영화 데이터베이스를 사용해 볼게요. 초기 가이드에서 바로 접근할 수 있어요.

배우, 감독 등으로 그래프를 로드하면 영화 감독과 영화에 출연하는 모든 사람이 있다는 걸 알 수 있죠.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

위는 Neo4j로 얻는 데이터베이스예요. 간단한 Property Graph가 있죠.

이제 HTTP endpoint를 통해 RDF로 이 그래프를 있는 그대로 내보낼 수 있기를 원하는 거예요. 이걸 수행하는 가장 쉬운 방법은 작업을 설명하는 거죠.

작업을 설명하기 위해 브라우저를 사용하고 있지만, 여기서 일어나는 일은 GET 열이 해당 URL에 대한 HTTP GET 요청을 시뮬레이션하는 거예요. RDF는 서버에 마운트되어 있어요. 제 경우에는 localhost 7474에서 실행되지만, 적절한 HTTP 요청이죠.

NSMNTX에게 이 RDF를 ID별로 선택해서 serialize하도록 요청해 볼게요. 그게 가장 안전한 방법이 아닐 수도 있다는 건 알지만, 그게 제가 원하는 거예요.

톰 행크스를 보자구요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

Tom Hanks의 ID가 190이네요. 이 ID는 특정 node에 대한 Neo4j의 내부 고유 식별자이기 때문에 안전하지 않다는 의미였어요. 특정 도메인에 특화된 node를 사용하고 싶을 수도 있겠죠.

이 경우 이름이 고유 식별자가 될 수도 있고, node를 식별하는 모든 종류의 primary key가 될 수도 있어요. 이건 그냥 예시일 뿐이에요.

node를 선택하고 GET을 클릭하면 NSMNTX가 이 개별적인 RDF 직렬화를 생성하는 것을 볼 수 있을 거예요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

여기서 190은 사람으로 분류된 Tom Hanks라는 것을 알 수 있어요. Neo4j의 label을 RDF의 유형 설명으로 변환하고, property도 똑같이 변환하죠.

고유 식별자 190은 1956년생이고 Tom Hanks라는 이름을 갖고 있으며, 여러 관계를 갖고 있어요. acted indirected로 다른 사람들과 연결되는 거죠. 저는 이러한 고유 식별자를 즉시 생성하고 있어요.

저희는 임의의 그래프에서 즉석에서 RDF를 생성해요. 여러분이 할 수 있는 또 다른 일은 임의의 Cypher를 실행하고 이 Cypher의 출력을 RDF로 직렬화하는 거예요.

그 전에, 제가 실수하지 않았다면 아마도 다른 serialization이 나타날 거라고 말씀드렸죠? 원하는 serialization 유형을 선택하면 기본적으로 동일한 RDF가 Turtle로 생성되거나 RDF/XML을 생성할 수 있어요.

JSON을 사용하는 JSON 기반, RDF/XML을 사용하는 XML 기반, 또는 Turtle을 구현하는 모든 변형을 얻을 수 있지만, 이는 완전히 즉석에서 계산되는 거예요.

데이터베이스에서 Cypher 실행

데이터베이스에서 Cypher를 실행하고 결과를 RDF로 export해 볼게요.

몇 가지 parameter를 사용하여 query를 요청하기 때문에 POST 요청으로 이 작업을 수행할 거예요. serialization하려는 Cypher와 사용하려는 serialization 형식이 포함된 Cypher 요소를 보내는 거죠.

가능한 트리플을 반환하는 대신 트리플 유형을 얻습니다.directed.

이것은 directed relationship으로 연결된 node에 의해 형성된 모든 path를 반환해요. 이걸 실행하면, 제가 실수하지 않았다면 당연히 더 큰 set이 생성될 거예요. 영화에 연결된 감독이 나타내는 모든 link와 node를 반환하기 때문이죠.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

Neo4j 그래프에서 즉시 RDF를 생성할 수 있다는 점, 정말 흥미롭죠?

Neo4j 그래프가 이전에 RDF를 import한 결과라면, import한 것과 정확히 동일한 RDF를 생성할 수 있는 기능이 있어요. 이것이 바로 import의 무손실 특성이 작용하는 부분이죠.

NSMNTX로 또 무엇을 할 수 있나요?

모델 매핑

첫 번째로, 모델 매핑이 있어요.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

Neo4j 데이터베이스와 그래프가 준비되어 있다면, 그래프의 엔터티와 그래프 요소의 스키마 간의 매핑을 정의할 수 있어요.

공개 스키마나 다른 공개 스키마, 또는 온톨로지를 사용할 수도 있죠. 이 매핑을 정의하고 실행하면 즉시 적용돼요. Neo4j에서 그래프 데이터를 내보낼 때, 매핑하려는 공개 어휘 관점에서 설명할 수 있다는 점이 정말 강력한 기능이에요.

공개 어휘, 공개 스키마, 매핑 정의와 관련된 더 많은 정보는 NSMNTX 페이지에서 확인할 수 있어요. 리스팅, 삭제, 추가 등을 위한 유틸리티 기능들도 준비되어 있답니다.

온톨로지 관리

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

그래프에 온톨로지를 게시하는 것도 가능해요.

지금 다루는 것이 영화 데이터베이스이기 때문에, 어떤 종류의 모델을 가지고 있는지 알고 있잖아요? 여기에 RDF 같은 작업을 적용하면, 그래프 내 엔터티에 대한 OWL 설명인 온톨로지가 생성되는 거죠.

movie라는 카테고리와 person이라는 카테고리가 있고, 이 둘 사이에는 ACTED_IN이라는 관계가 있어서 사람과 영화를 연결해 준답니다.

OWL은 RDF 위에 어휘가 포함된 언어이기 때문에 온톨로지를 게시할 수 있어요. 여기서 중요한 점은, 수동으로 명시적인 온톨로지를 생성하는 것과는 다르다는 거예요. 이건 즉석에서 생성되는 온톨로지라는 거죠. 물론, 기존 온톨로지를 가져올 수도 있고, 이를 도와주는 방법도 준비되어 있답니다.

.importOntology

온톨로지가 어디에 있든 가져올 수 있는 `.importOntology`가 있어요. `.importOntology`는 일부 요소를 필터링해서 Neo4j에 카테고리, 하위 카테고리, 도메인 및 범위 측면에서 단순화된 표현을 가져오지만, 그 이상은 아니에요.

이건 복잡한 요소들을 명시적으로 제외하기 위한 것이에요. 하지만 결국 RDF이기 때문에, RDF를 사용해서 온톨로지의 모든 단일 명령문을 완전히 가져올 수도 있답니다.

추론

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

추론(Inferencing)은 범용 엔진이 실행하기를 원하는 데이터 명시적 설명이나 명시적 동작을 정의할 수 있게 해줘요. 즉, 실행하면서 그래프에 있는 데이터에서 파생된 데이터를 생성하는 거죠. 이 데이터는 온톨로지 또는 규칙일 수 있는 특정 규칙을 기반으로 즉석에서 계산된답니다.

Node와 Relationship 모두의 유형 계층을 기반으로 추론을 수행할 수 있어요. 여기에서 볼 수 있듯이 계층의 하위 클래스를 사용하여 Node 및 Relationship에 대한 레이블을 추론할 수 있죠.

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

트위터에서 Python으로 NSMNTX를 사용하는 방법에 대한 질문을 받았어요. There you have a great example of how to run a Cypher query on a Neo4j database. 출력을 RDF로 직렬화하고 RDF를 관리하는 Python 라이브러리인 rdflib를 사용하여 직접 가져오죠.

하위 그래프 복제

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.

최근에 하나의 Neo4j 인스턴스에서 다른 인스턴스로 그래프를 복제하는 방법으로 RDF를 사용할 가능성에 대해 글을 썼어요.

그래프에서 본 것처럼 RDF를 내보낸 다음 다른 인스턴스로 가져오는 거죠. 데이터를 교환하는 메커니즘으로 RDF를 사용하는데, 이는 원래 의도된 목적이기도 하고요.

결론

마지막으로 여러분을 커뮤니티에 초대하고 싶어요. 궁금한 점이 있다면 언제든지 질문하고, 경험을 공유하면서 이 멋진 프로젝트의 성장과 발전에 함께 기여해 주세요!

Neo4j Engineering Director, Jesús Barrasa discusses using Neosemantix with RDF data linked data and more.
이와 같은 기술적인 대화에 더 참여하고 싶으신가요? NODES 2020: Neo4j 온라인 개발자 엑스포 및 서밋이 10월 20일에 진행되니 지금 바로 자리를 확보하세요!
  • Nodes 2019
  • NSMNTX
  • RDF 데이터베이스

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts