[Knowledge Graph] 1. What is RDF? RDF란 무엇인가?

이 글은 2021년 대학원 수업 지식 표현 연구를 중심으로 작성된 포스트이다. 수업시간에 이해한 내용을 복습하는 차원에서 적는 글이니 언제든 댓글은 환영한다🙌

  • 지식 표현 연구 시리즈
  1. 🤚 What is RDF? RDF란 무엇인가?
  2. From XML to RDF (XML에서 RDF로)
  3. RDF Schema
  4. SPARQL
  5. RDFa란?

1. RDF in General

RDF란 무엇일까? RDF는 Resource Decription Framework의 약자이다. 아주 간단히 표현하면, 자원을 표현하는 틀(구조)라는 것을 의미한다. 해석은 어렵지 않지만, 실제 자원, 표현, 틀이 무엇을 의미하는지 이해하기는 쉽지 않다. 하나씩 의미를 들여다보자.

1.1 Resource

자원이란 무엇일까? 자원은 ‘웹 상에 존재하는 모든 것’을 의미한다. 웹 안에 있는 모든 자료들을 의미하는데, 이것이 추상적인 개념(intangible)일지라도 자원이라 부른다. 이러한 자원은 온톨로지(Ontology)에서 Entity로 표현된다.

1.2 Description

그렇다면 자원을 ‘기술’한다는 것의 의미는 무엇일까? 자원은 AttributesRelationship로 표현된다. 즉, Entity가 가지는 특성이 Attributes로 표현되고, EntityEntity 사이의 관계를 표현하는 것이 Relationships이다.

1.3 Framework

마지막으로 프레임워크는 공학적 언어로 표현된 Resource Description을 기계가 읽고 이해할 수 있는 방식으로 구조를 제공한다는 것이다. 첫번째로 이 프레임워크는 Graph 구조를 따른다. nodeedge로 구성된 그래프이나 1) 방향성이 존재하고(directed) 2) 방향에 의미가 붙여진(labeled) 그래프 구조를 사용한다. 두번째로 데이터 모델을 읽어들일 수 있는 언어(languages)가 필요하고, 이 언어를 위해 문법(syntax)가 존재한다.

정리하면, RDF는 아래와 같이 정리할 수 있다.

명칭 한글 설명
Resource 자원 웹 상에 존재하는 모든 것
Description 기술 AttributesRelationships로 표현
Framework Graph 구조와 Languages & syntax를 따름

2. RDF Data Model

그래프를 구성하는 최소 단위는 a set of triples이다. 여기서 말하는 triplesubject, predicate, object로 구성된다.

명칭 한글 설명
subject 주어 resources로 표현
predicate 서술어 properties로 표현
object 목적어 resources이나 literals으로 표현

아래의 문장을 가지고 triples로 표현해보자.

  • Saoirse Ronan was born in April 12, 1994.

image

여기에서 주목해야 할 점은 3가지이다.

  • triples는 방향이 있는 edge로 표현된다. (Triples as directed edges)
  • 주어와 목적어는 node로 표현된다. (Subjects and Objects as vertices)
  • edge는 서술어에 의해 이름이 붙여진 형태로 표현된다. (Edges labeled by predicate)

3. URI

더 깊이 데이터 모델을 설명하기위해 URI를 알아야 한다. URIUniform Resource Identifier의 약자로, URL의 개념을 확장한 것이다. 형태가 URL과 상당히 비슷한데, 큰 차이가 있다면 URI는 Globally Unique한 특성을 지닌다. 즉, 웹을 사용하는 공간에서 특정 자원을 가리키는 URI는 유일하다는 것이다.

4. 다시 RDF Data Model로!

URI를 붙인 형태로 다시 RDF Data Model을 이해해보자. Saoirse Ronan은 자원이므로, 유일하게 표현할 수 있는 URI로 표현된다. 태어난 날을 의미하는 birthdateproperty 또한 URI로 표현된다. 그러나 1994-04-12와 같은 DataTimeliterals로 표현된다.1

image

이러한 RDF 표현 방식은 N-triples, N3, Turtle, JSON, XML 등의 여러가지 syntax로 표현할 수 있다.

5. Compact URI (CURIE)

URI를 Compact하게 표현하기위해 NAME SPACE를 활용한다. 내가 사용하는 어휘와 속성을 모두 넣어 하나의 name space로 묶어두고, URI로 해당 어휘에 접근할 수 있다. 앞서 나타낸 https://dbpedia.org/page/Saoirse_Ronandbpedia:Saoirse_Ronan으로 간단히 축약하여 사용할 수 있다.

6. Turtle: 사람이 읽을 수 있는 형태로 RDF 표현하기

  • Saoirse Ronan was born in April 12, 1994.

이 문장을 가지고 Turtle로 표현해보자.

@prefix dbpedia: https://dbpedia.org/resource/ .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

dbpedia:Saoire_Ronan p:birthdate "1994-04-12"^^xsd:integer .

7. Blank Nodes

  • Saoirse Ronan who was born in April 12, 1994, was grown up in New York.

위의 문장은 2가지 정보를 담고있다. 1) Saoirse Ronan이 1994년 4월 12일에 태어났다는 것과 2) 미국 여성 배우라는 것이다. 따라서 원래라면 서로 다른 2개의 triples를 만들어주어야 한다.

그러나 여기에서 사용된 주어 Saoirse Ronan은 두 정보에서 모두 같은 인물이므로 이를 표현하기 위해 blank node를 사용한다. blank node는 동시조건을 만들어주는 것이다. 아무런 의미가 존재하지 않지만, 그래프적으로 이를 표현해줄 뿐이다. 따라서 blank node를 만들어주는 것을 Reification 구체화라고 한다.2

image

  1. Literal은 파이썬에서 말하는 숫자를 의미하지만은 않는다. 숫자나 문자 등이 모두 될 수 있으며, 이는 Resource처럼 다른 Resource로 파생될 수 없다는 것을 의미한다. 즉, 그래프의 종단점이다. 

  2. Reification은 의미를 가지지 않기 때문에 자칫하면 의미없는 질문을 할 수 있다. 따라서 가능한 Reification을 하지 않는 모델로 만드는 것이 좋다. 

Leave a comment