brunch

You can make anything
by writing

C.S.Lewis

by 에디의 기술블로그 Dec 26. 2018

링크드 데이터(Linked Data) 기본개념

- 링크드 데이터 기본 개념 정리,  사례연구 등 잡다한 정리...

이번, 크리스마스 연휴에는 남는 시간에 틈틈히 "링크드 데이터"에 대해서 정리를 해보겠다. 가능하면 객관적인 내용과 주관적인 필자의 의견을 잘 분리할려고 노력해보겠다. 왜냐면, 필자가 이쪽 분야를 잘 몰라서 잘못된 내용을 전달하고 싶지 않다. 필자의 내용 중 잘못된 내용이 있다면 꼭 피드백을 해주길 바란다. 또한, 국내 각종 자료(책, 블로그) 등 저작권에 문제가 될만한 자료는 추가하지 않았다. 일부 참고한 관련 자료에 대해서는 링크를 남겨 놓았으니 레퍼런스를 참고하길 바란다. 참고로 Manning 출판사의 "Linked Data" 라는 원서를 추천한다. 번역은 "공존이 미학"이라는 출판사에서 "링크드 데이터" 라는 번역서를 출판하였다.


연휴에 공부할 내용은 아래와 같다. 


1. 링크드 데이터(Linked Data) 기본 개념 정리, 사례연구, Jena 라이브러리 검토

2. Spring Reactive Elasticsearch


이번 글에서는 링크드 데이터의 기본 개념에 대해서 정리한다. 


1. 기본 개념 공부

Linked Data

Linked Data Platform

RDF

SPARQL

OWL

Reasoning

STORING LINKED DATA


2. 사례 연구

공공 오픈 링크드 데이터 구축 사례


3. Jena 라이브러리 검토

Jena API , TDB 등 핵심 라이브러리 검토


[필자의 생각]

링크드 데이터는 블로그 글 몇개로 정리할 수 있는 개념이 절대 아닙니다. 필자의 글은 대략적인 정리 수준이므로, 더 상세한 내용은 관련 논문, 원서를 찾아보셔야 합니다. 


1. 링크드 데이터 기본 개념 정리

가볍게 동영상 한편 보고 시작해보자.

https://www.youtube.com/watch?v=4x_xzT5eF5Q

 

링크드 데이터(Linked Data)


링크드 데이터란?

링크드 데이터(linked data)는 웹 상에 존재하는 데이터를 개별 URI(Uniform Resource Identifier)로 식별하고, 각 URI에 링크 정보를 부여함으로써 상호 연결된 웹을 지향하는 모형이다. 링크 기능이 강조된 시맨틱웹의 모형에 속한다고 볼 수 있으며 팀 버너스 리의 W3C를 중심으로 발전하고 있다.


링크드 데이터는 4가지 원칙을 만족하는 데이터 모형이다.

1. URI의 사용: 링크드 데이터는 웹문서의 위치를 나타내는 URL 중심의 식별체계를 지양한다. 즉, 개별 문서에 존재하는 개별 객체에 각각 URI를 부여하는 것이다.

2. HTTP URI의 사용: 링크드 데이터는 URI 중에서도 HTTP 프로토콜을 통해 접근할 수 있는 URI를 제안하고 있다. 이는 링크드 데이터에 대한 접근성을 강화하려는 목적이다.

3. RDF의 사용: 링크드 데이터는 RDF와 같이 트리플 모형으로 구조화된 데이터를 사용해야 한다. 웹의 데이터를 정형화된 구조로 나타내고, 연계하기 위해서이다.

4. 링크정보의 부여: 위의 세 가지 원칙을 지켰다고 해도, 풍부한 링크정보가 없다면 웹에 존재하는 데이터를 연결하기는 어려울 것이다. 기존의 시맨틱웹에서도 링크 정보를 부여할 수는 있었으나, 그 보다는 구조화된 표현(3번과 같이)을 주로 강조했었다. 링크드 데이터에서는 보다 발전된 시맨틱웹을 위해 링크정보를 부여하는 것이 매우 중요하다.


간단하게 한줄로 정리하면..

사물 이름으로 URI 를 사용해야 한다.

사람들이 이름을 찾아볼 수 있도록 HTTP URI 를 사용해야 한다.

누군가 URI 를 찾아볼 때, 표준 스펙(RDF, SPARQL)을 이용해 정보를 제공해야 한다.

사람들이 더 많은 것을 발견 할 수 있도록 다른 URI 에 대한 링크를 포함해야 한다.


W3C Linked Data Related Specs 

링크드 데이터는, 기본적으로 HTTP 프로토콜을 사용하며 RDF 를 데이터 모델로 사용한다. RDF 를 지원하는 직렬화 스펙으로 RDF/XML, Turtle, RDFa, JSON-LD 등을 사용할 수 있다. 조회 쿼리로 SPARQL 을 사용한다. 아래 표를 참고하자.  

[필자의 생각]

필자가 검토 초기에 JSON-LD 가 RDF 를 대체할 수 있는 개념으로 잘못 이해를 하였는데, RDF는 좀 더 상위의 데이터모델 개념이고, RDF 를 지원하는 직렬화 포맷 중 하나가 JSON-LD 이다.


링크드 데이터이 얼마나 효율적인지, 아래와 같이 체계를 줄 수 있다. [링크드 데이터 - 5page] 를 참고하였다. 


☆ 어떤 형식이든 데이터가 웹에 공개되어 있다.

☆ 데이터가 기계가 읽을 수 있는 구조화된 데이터로 공개 되어 있다. 

☆ 데이터가 비독점적 형식으로 공개되어 있다.

☆ 데이터가 월드 와이드 웹 컨소시엄의 개방형 데이터 표준을 사용해 발행되어 있다. (예. RDF 등)

☆ 위 모든 사항이 적용되고, 내 데이터가 다른 사람의 데이터에 링크되어 있다. (예. LOD)


링크드 데이터는 "어떻게 다른 사람과 지식을 공유할 수 있는가?" 라는 오랜 질문에 새로운 해답을 제시한다.


왜 링크드 데이터 기술을 검토 중인가?

링크드 데ㅐ이터는 웹 표준을 바탕으로 데이터를 연결하고 공유하기 위한 기술이다. 링크드 데이터를 구축하는 과정을 통해 데이터는 구조화가 되어 기계가 처리할 수 있는 형식으로 변환이 된다. 궁극적으로는 링크드 데이터 기술은 데이터 연결에 대한 것이다. 그러나, 많은 데이터가 구조가 없거나 데이터의 관계를 제대로 담고 있지 않기 때문에 링크드 데이터를 만드는 과정에서 데이터의 정제, 구조화, 의미적인 연계를 모두 포함한다.[1]


[레퍼런스]

https://www.slideshare.net/HaklaeKim/linked-data-27694957

https://ko.wikipedia.org/wiki/%EB%A7%81%ED%81%AC%EB%93%9C_%EB%8D%B0%EC%9D%B4%ED%84%B0

https://www.w3.org/wiki/LinkedData


Linked Data Platform 1.0 


링크드 데이터 플랫폼은 웹에서 링크드 데이터를 읽고, 쓰기 위한 아키텍처를 제공하기 위한 작업에 대한 규칙 집합을 정의한다. w3c에서 공식 스펙을 정의하였다. 

https://www.w3.org/TR/ldp/

영어라서 이해하기가 쉽지 않다. 일단, 필자는 대충 한번 훑어 봤지만 글로 정리하기가 쉽지 않다. 잘 정리된 좋은 자료가 있다면 댓글로 알려주길 바란다.


RDF


링크드 데이터는 기초를 이루는 일관된 데이터 모델 없이 존재 할 수 없다. RDF(Resource Description Framework)는 링크드 데이터를 위한 기본 데이터 모델이며, 구조화된 데이터이다. 초기에 RDF는 복잡하다는 이유로 필자를 포함한, 몇몇 개발자들에게 부정적인 의견이 존재 했었지만 최근에 RDF를 사용하기 쉽게 만들어 준 다양한 직렬화 형식이 있다. 즉, RDF는 형식이 아니라 데이터 모델이다. 가장 널리 사용하는 네 가지 형식은 아래와 같다. 

Turtle : 사람이 읽을 수 있는 형식의 RDF

RDF/XML : XML 로 작성된 최초의 RDF

RDFa : HTML 태그에 내장 된 RDF 

JSON-LD : 웹서비스를 위한 JSON 형식의 RDF

RDF 데이터가 다른 출처의 RDF 데이터와 쉽게 결합할 수 있어야 한다. 즉, 데이터를 결합하고자 한다면 RDF 직렬화 형식을 사용해야 한다. 다양한 직렬화 방법 중 필자는 JSON-LD 에 대해서 자세히 검토할 예정이다. 

더 자세한 내용은 [링크드 데이터 47page~56page] 를 참고하길 바란다.


SPARQL


SPARQL은 링크드 데이터를 위한 W3C 표준 질의 언어이다. 

https://www.w3.org/TR/sparql11-query/


OWL


공부 중(일단 생략)


Reasoning


공부 중(일단 생략)


STORING LINKED DATA


링크드 데이터를 저장하기 위한 데이터베이스(저장소) 에는 크게 아래와 같이 선택하여 구성할 수 있다. 

RDBMS Data Stores

RDF Data Stores

NoSQL Data Sotres


[필자의 생각]

싸늘하다. 며칠을 봤는데, 쉽게 이해가 되지 않는다. 아무래도, 링크드 데이터 는 러닝커브가 좀 있어 보인다. 아니면, 필자가 관심 없는 기술이라서 그런지 눈에 잘 안들어오는것 같다. 아무래도 사례 연구를 통해서 이해를 하는게 좀 더 재미가 있을 듯 하다.  


2. 사례 연구



사례 1 - 공공 LOD 프로젝트


좀 오래 되었지만, 2013년에 링크드 데이터를 구축할 수 있는 방향을 제시하는 서울시 공공 프로젝트가 진행되었다. 서울시 시험과제이며, 프로젝트 진행시 작성한 문서가 구글 드라이브에 공유가 되어있다. 공공 프로젝트 이므로 따로 허락없이 참고를 해도 될 것으로 생각이 되어서 적극적으로 참고를 하겠다. (저작권? 등에 문제가 발생한다면 바로 지울 예정이다.)


http://lod.datahub.kr/linkeddata.html

https://drive.google.com/drive/u/0/folders/0B4Gswzvw-8nLdkdQRHZmdkdZS0E


[필자의 생각]

공유 드라이브에는 데이모델링,세미나 발표 자료, RDF 등 다양한 문서가 있다.


[레퍼런스]

https://drive.google.com/drive/u/0/folders/0B338U1exnnvvaWpXVi0xSDdqZGs


개발 프로세스 및 예상 시스템

 아키텍처


더 많은 내용을 알고 싶지만, 웹에 공유된 자료는 PPT 슬라이드 문서만이라서, 대략적으로 추측할 수 밖에 없다. 


사례 2 - 대용량 Linked Data 검색 서비스 현황 


좀 오래전 자료이지만, 다음 포털에서 검토헀던 사례이다. 저작권으로 인해서, 발표 링크만 남기겠다. 관심 있는 사람은 들어가서 보길 바란다. 

https://www.youtube.com/watch?v=eJbTtrsSvSM


[필자의 생각]

필자가 진행한 프로젝트가 아닌데, 필자의 블로그에 자세히 남기는 것이 예의가 아닌것 같아서, 이정도로 소개만 하고 넘어가겠다. 개인적으로 구글, 네이버, 다음 검색 구현 사례가 너무 궁금한데, 혹시 외부에 공개 가능한 발표 자료가 있다면 피드백을 해주길 바란다. 



3. Apache Jena 프레임워크 검토


링크드 데이터를 구축하는 오픈소스 자바 프레임워크 인 Apache Jena 를 검토해보자. 

http://jena.apache.org/

하지만...

생각보다 레퍼런스 문서가 별로 없어서 하루이틀에 테스트로 구현하기가 쉽지 않다.


힘들다... 이정도로 마무리하고, 좀더 완벽하게 이해가 된 이후에 다음 글을 쓰겠다! 




레퍼런스


[1] http://lod.datahub.kr/linkeddata.html#background

https://ko.wikipedia.org/wiki/%EB%A7%81%ED%81%AC%EB%93%9C_%EB%8D%B0%EC%9D%B4%ED%84%B0

https://www.w3.org/standards/semanticweb/data

https://www.w3.org/standards/techs/linkeddata#w3c_all

https://drive.google.com/drive/u/0/folders/0B338U1exnnvvaWpXVi0xSDdqZGs

https://openlibrary.org

http://lod.datahub.kr/

http://data.riss.kr/?fbclid=IwAR2cdxgD-70cTRKzMbxS6zvZqQmyIA0S_BQR2UcOON2RinMsGxUrBi8-C3s

작가의 이전글 스프링 부트 2.1.RELEASE 
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari