티스토리 뷰

J:::SemanticWeb

J_16. RDF-star

joyHong 2024. 12. 30. 23:24

RDF는 데이터를 표현하고 교환하기 위한 데이터 모델로 설계된 표준 형식이다.

RDF는 주어, 술어, 목적어 형태의 트리플을 통해 자원(데이터), 자원과 자원간의 관계를 명확하게 표현하는 것에 탁월한 장점을 가지고 있다.

주어, 술어, 목적어는 고유 자원 식별자(URI, 예: 잘 알려진 URL)로 표시되는 자원, 리터럴 또는 공백 노드를 통해 표현한다. 주어와 목적어는 그래프에서의 노드와 유사하며, 술어는 엣지와 유사하다.

RDF Graph는 이러한 노드와 엣지로 표현되는 그래프로써 트리플들의 집합이다.

RDF는 1999년에 W3C 권고안으로 채택되어 2004년에 RDF 1.0 명세가 발표되었고, 2014년에 RDF 1.1 명세가 발표되었다.

RDF 1.0을 확장하여 유연한 데이터 표현을 가능하게 했으며, 다양한 문법을 지원하도록 함으로써 기존의 RDF/XML 문법 뿐만 아니라 Turple, JSON-LD, N-Triples 문법이 사용 가능해졌다.

또한 1.1에서는 기존의 단일 그래프에서 확장하여 다중 그래프를 지원하게 되었다.

다중 그래프를 사용하기 위해 RDF Dataset 개념을 도입하였는데, RDF Dataset은 RDF Graph의 집합이고,

RDF Graph는 위에서 언급한 바와 같이 트리플들의 집합이다.

 

RDF Dataset 개념이 도입되면서 RDF Graph를 여러개 사용함으로 각 그래프의 내용을 분리하여 사용이 가능해졌다. 그래프는 기본적으로 Default 그래프가 1개 존재하고 나머지는 Named 그래프가 0개 이상 존재하게 된다.

여러개의 그래프를 표현하기 위해 TriG, N-Quads 문법도 생겨나게 되었다. TriG는 Turtle의 확장이고, N-Quards는 N-Triples의 확장이다.

https://joyhong.tistory.com/194 에서 사용하고 있는 Named Graph 도 RDF Dataset의 개념을 사용하여 여러개의 그래프를 나누어 구성하고 각각 독립적인 그래프를 구성하도록 한 것이다.

 

RDF는 자원을 기술하기 위해 트리플 형태를 사용한다. 따라서 “철수와 영희는 친구이다”는 정보를 “철수-친구-여희” 이런 형태로 표현을 하여 모든 정보들을 기술하게 된다.

이렇게 주어,술어,목적어를 사용함으로 모든 정보들을 표현할 수 있으나 그래프 단위나 문장 단위의 추가적인 정보를 표현하고자 할 때 약간의 복잡함이 발생하게 된다.

‘“철수와 영희가 친구관계가 인 것”은 2024년부터이다’ 라는 정보와 같은 형태를 표현하고자 할 때 표현의 복잡함이 발생한다.

실제 예시를 그림으로 표현하며 살펴보면 아래와 같다.

이 예시에서는 kim이 lee를 도왔고 리는 LeCompany를 다니고 있으며 영화를 좋아한다는 내용을 표현하고 있다. 또한 me도 영화를 좋아한다는 정보를 표현하고 있다.

여기에서 me가 “kim이 lee를 도왔다”는 것을 목격했다는 정보를 표현하려고 한다면, 우리가 일반적으로 그래프를 그린다고 생각했을 때 아래와 같이 표현하면 될 것이다.

“kim이 lee를 도왔다”는 것을 me이 보았다는 내용을 Property Graph를 통해 표현을 간단하게 생성할 수 있다.

그러나 RDF에서는 이 방식을 취하는 것이 아니라 Reification을 통해 추가 정보를 표현해야 한다.

:me :saw _:st1 .

_:st1 rdf:type rdf:Statement .

_:st1 rdf:subject :kim .

_:st1 rdf:predicate :helped .

_:st1 rdf:object :lee .

 

위와 같이 별도의 자원을 하나 만들고 그 자원을 통해 주어, 술어, 목적어를 표현하도록 해야 한다.

이러한 reification을 통해 정보를 표현할 수 있지만 복잡하다. 위의 내용은 RDF 1.0 버전에서 설명하고 있는 표준적인 방법이고, 2014년에는 single-triple named graphs 방법, singleton properties 방법들이 제안되긴 하였다.

 

single-triple named graphs 방법은 이름에서와 같이 named graph를 사용하는 방식이다. “kim이 lee를 도왔다” 와 같은 정보를 하나의 named 그래프로 만들고 DEFAULT 그래프에 해당 그래프 URI를 연결함으로 정보를 표현한다.

singleton properties 방법은 “kim이 lee를 도왔다”에서 도왔다는 프로퍼티를 싱글톤 프로퍼티로 기술하고 이 프로퍼티에 부가적인 정보를 연결하는 방식이다.

이러한 방식들은 표준 방법론에 비해 간단하게 정보를 표현할 수 있지만 named 그래프가 극단적으로 증가한다거나 성능상의 이슈를 발생하게 되는 단점이 존재한다.

이러한 점에 대해서 다른 방법으로 연구를 진행해오다 2012년 4월에 Dagstuhl seminar에서 한가지 아이디어를 제안하였고, 2014년에 새로운 방법론이 RDF*라는 이름으로 발표되었다.

이 방법론은 “kim이 lee를 도왔다” 라는 정보를 하나의 자원으로 취급하여 주어나 목적어로 사용하자는 것이다.

이 때 다른 자원과 구분을 하기 위해 << >> 를 사용하여 감싸는 것이다.

위에서 예시를 RDF*(RDF-Star) 로 표현하면 아래와 같이 한줄로 정리가 된다.

:me :saw << :kim :helped :lee >> .

 

기존의 reification 에 비하면 정말 간단해지는 문법이다. 이렇게 표현된 정보에 대해 질의를 하기 위해 SPARQL* 라는 문법으로 질의도 가능하다.

RDF* 는 현재 W3C의 표준은 아니지만 2019년 베를린에서 웹 표준 워크샵에서 논의가 되었고, RDF 계열의 다양한 트리플스토어에서 이 개념을 받아들여 구현되었다.

 

최근 2024년 12월 19일에는 RDF1.2 개념과 추상 문법(https://www.w3.org/TR/rdf12-concepts/)이 발표되었는데 여기서 RDF*의 개념을 받아들여 Triple Terms 라는 개념을 소개하고 있다. 이는 트리플 자체를 개별 자원으로 사용할 수 있도록 함으로 특정 트리플에 추가 정보나 메타데이터를 연결할 수 있도록 한다.

 

RDF*를 통해 PG에서와 같이 프로퍼티에 속성정보를 표현할 수 있는 장점을 가지게 된다. 아래의 그림과 같이 비교를 해보면 간결하면서도 성능상의 이슈를 회피할 수 있다는 장점을 알 수 있다.

 

 

이미 여러 솔루션에서 RDF*를 지원을 하고 있긴 하지만 RDF1.2이 빨리 발표되었으면 한다. 2014년 이후 10년이 지났다..

몇년 전에 그려놓은 그림이긴한데 조만간 RDF*를 지원하는 스토어를 업무에서 사용할 것을 기대하며 공유합니다.

'J:::SemanticWeb' 카테고리의 다른 글

J_15.웹페이지로부터 지식그래프 생성  (0) 2022.05.06
J_14. 온톨로지 언어  (0) 2022.05.06
J_13. 시맨틱 웹과 온톨로지  (0) 2022.02.27
J_12. 지식표현과 온톨로지  (0) 2022.02.07
J_11. RDF 1.1 Primer  (0) 2014.11.26
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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
글 보관함