[Knowledge Graph] 5. RDFa란?
이 글은 Linked Data(공존의 미학, 단행본)과 W3C의 RDFa 1.1 Primer을 기반으로 작성된 포스트이다. 정확한 내용은 책을 확인하길 바라고, 언제든 댓글은 환영한다🤚
- 지식 표현 연구 시리즈
1. RDFa란? HTML 내 RDF
Schema.org를 들락날락 하다 보면 자주 보게되는 말이 있다.
Schema.org vocabulary can be used with many different encodings, including RDFa, Microdata and JSON-LD.
Schema.org 어휘는 RDFa와 마이크로데이터, JSON-LD를 포함한 다양한 인코딩 방식으로 사용된다는 것이다. Schema.org는 웹 문서 속의 단순한 텍스트로 표현된 정보의 일부(e.g., 사람 이름, 이메일, 전화번호, 주소 등)를 쉽게 RDF로 표현할 수 있도록 해준다.
RDFa는 HTML 내 RDF로, 웹 페이지의 요소를 마크업해 구조화해야 할 데이터를 표현할 수 있도록 하는 단순한 HTML이다. 웹 페이지는 구조화된 데이터가 아니라 문서로 구성된다. 이 문서 안의 전화번호, 주소, 사람 이름, 제품 설명 등의 데이터 요소를 기계가 읽고 처리할 수 있는 구조화된 데이터 형식으로 추출할 수 있도록 해주는 것이 RDFa의 역할이다. 즉, “(HTML) 속성(Attributes) 속 RDF”라는 뜻으로 RDFa라고 한다1.
2. HTML을 RDFa와 함께 발행하기
나의 HTML 문서에 RDFa 파싱을 하기 위해서는 어떻게 해야할까? HTML DOCTYPE
을 선언해주면 된다. 문서 타입에 따라 HTML DOCTYPE
을 선언해주는 방식이 다르다. 대표적으로 XHTML+RDFa 1.1
은 아래처럼 선언하면 된다. 자세한 설명은 위키피디아의 XHTML+RDFa에 잘 설명되어 있다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">
XHTML+RDFa의 예시 문서는 아래와 같이 표현된다.
3. 웹 페이지 속 정보를 RDFa로 표현하기
3.1 RDFa의 대표적 예시: Creative Commons License
가장 대표적으로 RDFa가 사용되는 영역은 Creative Commons 라이센스 정보다. 일반적으로 웹페이지가 Creative Commons 3.0 라이센스를 따른다고 할 때, 문서의 footer에 아래와 같이 표기된다.
<p>All content on this site is licensed under
<a href="http://creativecommons.org/licenses/by/3.0/">
a Creative Commons License</a>. ©2011 Alice Birpemswick.</p>
인간은 위의 태그를 읽고 홈페이지가 Creative Commons 라이센스를 따른다고 해석할 수 있지만, 안타깝게도 기계는 href 링크를 단순한 링크로 인식한다. 따라서 해당 링크를 기계가 라이센스라고 읽고 처리하도록 하려면, 아래와 같이 property
로 표현하면 된다. 간단히 속성만 부여하는 방식은 RDFa Lite 방식이다.
3.2 Contant Information 표현하기
개인의 이름, 이메일, 연락처도 RDFa로 많이 표현되는 요소이다. 개인정보는 html 태그로 아래와 같이 표현될 것이다.
<div>
<p>
Alice Birpemswick,
Email: <a href="mailto:alice@example.com">alice@example.com</a>,
Phone: <a href="tel:+1-617-555-7332">+1 617.555.7332</a>
</p>
</div>
이 또한 인간만 해석할 수 있는 태그이므로, 기계도 이해할 수 있도록 RDFa로 표현해보자.
div
속의 vocab
을 사용해 FOAF 어휘를 사용한다고 선언해주고, typeof
를 사용해 해당 자원 유형이 사람으로 인식되게 한다. 어휘를 선언해주면, p
태그 속 속성(property)를 간단히 표현할 수 있다. 따라서 기계는 Alice Birpemswick은 사람으로 인식하고, 이름과 Email과 Phone 정보도 인식하게 된다. 그래프로 그리면, 아래와 같다.
그런데 왜 주어(subject)가 blank node로 표현되는 것일까? 당연하게도 자원(resource)를 지정해주지 않았기 때문이다. 명확히 resource를 선언해주는 방법은 아래와 같다. div
태그 안에 resource를 넣어주면 된다.
조금의 정보를 더 추가해주면, 아래의 그림처럼 blank node가 없는 그래프가 만들어진다.
3.3 트리플 표현하기
트리플 구조는 RDFa로 어떻게 표현할 수 있을까? 아래의 트리플 구조를 RDFa로 표현해보자.
자원(resource) | 속성(Attribute) | 값(Value) |
---|---|---|
dbpedia:Bonobo | rdf:type | dbpedia-owl:Mammal |
http://dbpedia.org/resource/San_Diego_Zoo | rdfs:label | “San Diego Zoo”@en |
첫번째 트리플은 아래와 같이 표현된다.
<span resource='http://dbpedia.org/resource/Bonobo'
typeof='http://dbpedia.org/ontology/Mammal'>
Here are some things we know about Bonobos
</span>
단순한 텍스트 값인 두번째 트리플은 아래와 같이 표현된다.
<span resource='http://dbpedia.org/resource/San_Diego_Zoo'>
<span lang='en' property='http://www.w3.org/2000/01/rdf-schema#label'
xml:lang="en">San Diego Zoo</span>
</span>
간단하게 웹 페이지 안의 정보를 구조화된 데이터로 표현할 수 있게 하는 RDFa에 대해 알아보았다. RDFa의 풍부한 정보는 W3C의 RDFa 1.1 Primer - Third Edition에서 확인할 수 있다.
-
링크드 데이터(공존의 미학) 52쪽. ↩
Leave a comment