LOTS-OResearch Notes

TL;DR

  • RDF(Resource Description Framework)는 자원에 관한 진술을 그래프로 표현하는 데이터 모델이다.
  • 진술 하나는 (주어, 술어, 목적어) 트리플로 기록한다. 술어는 관계의 의미를 나타내고, 목적어에는 다른 자원이나 문자열·숫자 같은 값이 올 수 있다.
  • 여러 트리플이 같은 자원을 통해 연결되면 방향과 관계 이름을 가진 RDF 그래프가 된다. RDF는 지식그래프를 표현하는 방식 중 하나다.

RDF는 지식을 트리플로 표현한다

RDF(Resource Description Framework)는 사실을 세 칸으로 나누어 기록한다.

주어 → 관계 → 목적어

예를 들어 “강남역의 정차 노선 중 하나는 2호선이다”라는 사실은 다음처럼 표현할 수 있다.

강남역 → 정차노선 → 2호선

RDF에서는 이 세 칸을 각각 주어(subject), 술어(predicate), 목적어(object) 라고 부른다. 세 칸으로 구성된 사실 하나가 트리플(triple) 이다.1

RDF 문법으로 표현하기

위 사실을 Turtle이라는 RDF 문법으로 쓰면 다음과 같다.

@prefix : <https://example.org/metro#> .
:강남역 :정차노선 :2호선 .
  • 주어 :강남역: 무엇에 관한 사실인가
  • 술어 :정차노선: 어떤 관계인가
  • 목적어 :2호선: 무엇과 연결되는가

가운데 있는 정차노선이 관계의 의미를 드러낸다. 다른 사실도 같은 형식으로 이어 붙일 수 있다.

:강남역 :정차노선 :2호선 .
:강남역 :정차노선 :신분당선 .
:2호선 :운영기관 :서울교통공사 .

여러 트리플이 같은 대상을 공유하면 하나의 그래프가 된다. RDF는 지식그래프를 표현하는 방식 중 하나다.

일반 HTML 링크와 다른 점

강남역 웹 문서에서 2호선 문서로 가는 일반 링크는 다음과 같다.

<a href="/2호선">2호선</a>

이 코드만으로는 두 문서가 연결됐다는 사실만 알 수 있다. 강남역과 2호선이 어떤 관계인지는 드러나지 않는다. RDF 트리플은 정차노선처럼 관계를 직접 이름 붙인다.

HTML도 rel 속성으로 author, license, next 같은 일부 링크 관계를 표현할 수 있고, RDFa를 사용하면 HTML 안에 RDF 관계를 넣을 수 있다. 여기서 비교하는 대상은 별도 의미 표기가 없는 일반적인 href 링크다.23

정확한 구성 규칙

입문 단계에서는 대상 → 관계 → 대상이나 값으로 이해하면 충분하다. RDF 1.1의 정확한 구성 규칙은 다음과 같다.

  • 주어(subject): IRI(Internationalized Resource Identifier) 또는 blank node.
  • 술어(predicate): 속성을 식별하는 IRI.
  • 목적어(object): IRI, blank node 또는 리터럴.

IRI는 각 대상을 구별하는 정식 식별자다. 웹 주소처럼 생긴 고유 이름이라고 보면 된다. 위 코드의 :강남역은 https://example.org/metro#강남역을 짧게 쓴 것이다.

blank node는 외부에서 다시 찾을 고유 이름이 필요 없는 자원이다. 리터럴은 문자열·숫자·날짜 같은 값이다. 처음 읽을 때는 “주어와 관계에는 식별자가 필요하고, 목적어에는 식별자나 값이 올 수 있다”까지만 기억해도 된다.4

RDF 주변의 표준

RDF는 사실을 트리플과 그래프로 구성하는 표현 모델이다. 이 그래프를 저장하거나 전송할 수 있는 텍스트로 바꾸는 과정을 직렬화(serialization) 라고 하며 Turtle·RDF/XML·JSON-LD 같은 문법을 사용할 수 있다.

RDFS(RDF Schema)는 RDF 데이터에 기본적인 분류 체계를 붙이는 어휘다. 어떤 자원이 클래스인지, 한 클래스가 다른 클래스의 하위 클래스인지, 어떤 속성이 어느 종류의 자원을 연결하는지 표현한다. 예를 들어 환승역이 역의 하위 클래스이고 강남역이 환승역이라면, RDFS 추론으로 강남역이 역이라는 사실도 도출할 수 있다.

더 풍부한 논리 공리를 표현하는 언어가 [[OWL]]이고 RDF 그래프를 질의하는 언어가 [[SPARQL]]이다.


Connections

출처

  1. W3C (2014). RDF 1.1 Concepts and Abstract Syntax ↩︎

  2. W3C, RDFa 1.1 Primer ↩︎

  3. W3C (2014). RDF 1.1 Concepts and Abstract Syntax, 3.1 Triples ↩︎