12장 리소스 설명과 연결된 데이터
표현 전략(Representation Strategy)
클라이언트가 GET 요청을 리소스의 URL로 보내고 해당 리소스의 표현을 받는 것을 말한다. 리소스가 자기 자신에 대해 말 하는 것. 이 책에서 다룬 데이터 형식지금까지 이 책에선 이걸 허용했다.
설명 전략(description strategy)
표현의 리소스보다 다른 리소스들에 대해 말하는 것
RDF(Resource Description Framework)
리소스 설명 프레임워크
설명 전략에만 집중한 형식 그룹
어떤 리소스에 대해 누가, 무엇을, 어떻게 설명했는지 구조적으로 표현하는 방식
이걸 기계가 이해할 수 있는 방식으로 정리하는 것
웹페이지 안에 “김철수는 30살”이라고 적혀 있어도, 기계는 그게 나이라는 의미인지 모르지만,
RDF로 표현하면 “김철수 — 나이 — 30”이라는 명확한 구조가 생기고, 기계도 이해할 수 있게 된다.
그래서 장점이 뭔가?
리소스 설명은 여러분이 표현을 제어하지 않는 리소스에 대해 말할 수 있게 해준다.
내가 직접 만든게 아닌 리소스에 대해 설명할때 유용하다. 내가 직접만든게 아닌 리소스는 형식이나 구조를 내가 바꿀 수 없으니까
하이퍼미디어 제어를 포함하지 않는 표현을 제공하는 API들이 많은데, 이러한 문서들에 하이퍼미디어를 추가하는 것은 기존에 존재하는 클라이언트를 망가뜨리거나 표준을 위반할지도 모른다.
기존 표현을 건드리지 않으면서도 의미를 설명할 수 있게 된다.
연결된 데이터 운동
기계가 이해할 수 있는 용어르 애플리케이션 의미체계 서술자를 표현하기에는 RDF가 최고다. 하지만 RDF만으로는 이 위에 RESTful API를 만들 수 없다. RDF는 URL 대신에 URI를 사용하기 때문이다.
기계가 이해할 수 있는 용어로 애플레케이션 의미체계를 표현한다.
- 여기서 의미체계(semantic)는 “이 리소스가 어떤 의미를 가지는가?“를 말한다.
- 예를 들어 http://example.com/book/123이라는 리소스가 있다면, 이게 책인지, 사람인지, 주문인지 기계는 모름.
- RDF는 이런 정보들을 삼중항(triple) 구조로 표현해서 이 리소스가 책이며, 제목은 무엇이며, 작가는 누구인지, 어떤 행동이 가능한지 등을 명확하고 기계가 이해 가능하게 표현할 수 있음.
하지만
- RDF는 “데이터를 설명하는 프레임워크”지, API를 설계하는 프레임워크가 아님.
- RESTful API에는 다음이 필요
- HTTP 메서드(GET, POST, PUT, DELETE)
- 리소스 경로(URL)
- 요청과 응답 처리
- 상태 전이(하이퍼미디어)
RDF는 이런 것들을 제공하지 않음. 즉, RDF는 데이터의 “무엇”을 설명하지만, “어떻게 호출하고 조작할지”는 설명하지 않음.
- URL (Uniform Resource Locator): 어디에 있는지(location)를 말함.
- 예: https://example.com/book/123 → 웹에서 리소스를 요청할 수 있는 주소
- URI (Uniform Resource Identifier): 무엇인지(identity)를 말함.
- 예: urn:isbn:0451450523 → 위치를 알 수 없는 고유한 식별자도 포함됨
연결된 데이터 운동: 웹에 존재하는 데이터를 “사람만”이 아니라 “기계도” 이해하고, 서로 연결해서 사용할 수 있게 하자!
4원칙
- 모든 것을 URL로 식별하라
- HTTP URI를 사용하라
- HTTP 프로토콜을 사용하는 URI, 즉 http://나 https://로 시작하는 URI
- URI를 열었을 때, 그 리소스에 대한 의미 있는 정보를 제공하라(구조화된 데이터)
- 다른 URI와 링크를 걸어라
JSON-LD, 히드라, XRD와 JRD, 웹 호스트 메타 데이터, 웹핑거 모두 웹 리소스를 설명하거나 연결하기 위한 기술이다.
시맨틱 웹
기계가 웹의 데이터를 이해하고, 추론하고, 연결해서 활용할 수 있는 웹
마지막 구절에 대한 설명
하지만 **연결된 데이터(Linked Data)**만으로는 전체 이야기를 담아낼 수 없다.
복잡한 의미, 의도, 컨텍스트 등은 단순한 RDF 삼중항만으로는 부족할 수 있다.
시맨틱 웹(Semantic Web)은 연결된 데이터보다 훨씬 오래전부터 존재해왔으며, 심지어 지금은 모든 사람이 연결된 데이터 방식을 따르는 것도 아니다.
있어도 안쓴다. 완벽하지 않으니까…
시맨틱 웹 기술을 사용할 때, 우리는 URL이지만 URI로 표현된 문서들을 많이 보게 된다. 나는 이런 문서들을 더 만들어야 한다고는 생각하지 않는다. 하지만 이미 존재하는 문서들을 다루려면, 그게 무슨 의미인지 이해할 필요는 있다.
하지만, 이미 많이 존재하는 그런 문서들(RDF 문서, 개체 URI들 등)을 제대로 다루고 싶다면, 그 의미는 이해해야 한다.
이러한 문서들은 ‘표현(representation)’을 갖지 않는 리소스들의 설명이다.
브라우저로 열었을 때 HTML, JSON 같은 구체적 데이터가 없는 URI
예: http://example.com/resource/kim → 아무 내용도 안 보임
하지만 RDF 삼중항에는 등장하고, 그 개체를 지칭하긴 함