JSON-LD
정의
JSON-LD(JavaScript Object Notation for Linked Data)는 링크드 데이터(Linked Data)를 표현하기 위해 JSON 형식을 확장한 표준 문서 포맷이다. RDF(Resource Description Framework) 트리플을 인간이 읽기 쉬운 JSON 구조로 직렬화함으로써, 웹 애플리케이션과 서버 사이에서 시맨틱 데이터를 손쉽게 교환할 수 있도록 설계되었다.
배경 및 역사
- W3C가 2014년 1월에 첫 번째 공식 권고안(Recommendation)인 *“JSON‑LD 1.0”*을 발표하였다.
- 이전에는 RDF를 XML(RDF/XML)이나 Turtle 등 전용 문법으로 표현했으나, 웹 개발자들이 친숙한 JSON을 활용하고 싶어 하는 요구가 커지면서 JSON-LD가 제안되었다.
- 2022년에는 JSON‑LD 1.1이 발표돼
@type과@id의 단축 형태,@container옵션 개선 등 여러 기능이 추가되었다.
핵심 개념
| 용어 | 설명 |
|---|---|
@context |
용어(키)와 IRI(Internationalized Resource Identifier) 사이의 매핑을 정의한다. 이를 통해 JSON 키를 전역적으로 고유한 식별자로 해석한다. |
@id |
리소스의 고유 식별자(IRI)를 지정한다. 동일한 @id 를 가진 객체는 같은 개념을 가리킨다. |
@type |
RDF 클래스(예: schema:Person)를 지정한다. |
@value, @language, @type(속성값) |
리터럴 값에 대한 데이터 타입·언어를 명시한다. |
@list, @set, @index |
컬렉션 구조와 순서를 제어한다. |
@reverse |
역방향 관계(예: authorOf ← author)를 표현한다. |
문법 구조 예시
{
"@context": {
"name": "http://schema.org/name",
"homepage": {"@id": "http://schema.org/url", "@type": "@id"},
"image": {"@id": "http://schema.org/image", "@type": "@id"},
"Person": "http://schema.org/Person"
},
"@type": "Person",
"@id": "https://example.com/person/123",
"name": "홍길동",
"homepage": "https://example.com/hong",
"image": "https://example.com/hong.jpg"
}
위 예시는 schema.org 어휘를 활용해 한 사람(Person)에 대한 정보를 JSON-LD 형식으로 기술한 것이다.
활용 분야
- 검색 엔진 최적화(SEO) – 구글, 빙 등은 JSON‑LD를 사용해 구조화된 데이터를 인덱싱하고 풍부한 검색 결과(리치 스니펫)를 제공한다.
- 웹 API – RESTful API에서 메타데이터와 비즈니스 로직을 동시에 전달할 때 JSON‑LD를 채택하면 클라이언트가 의미론적 관계를 자동으로 해석할 수 있다.
- 지식 그래프 – 기업·기관에서 내부 데이터베이스를 RDF 기반 지식 그래프로 통합할 때 JSON‑LD가 중간 포맷으로 널리 사용된다.
- IoT·스마트 시티 – 디바이스 메타데이터를 표준화된 형태로 교환하기 위해 JSON‑LD가 적용된다.
관련 표준·기술
- RDF 1.1 – JSON‑LD는 RDF 1.1 모델과 호환된다.
- SPARQL – JSON‑LD 문서를 RDF 트리플스토어에 로드하면 SPARQL 쿼리로 조회 가능.
- schema.org – 검색 엔진이 권장하는 어휘와 JSON‑LD의 조합이 가장 일반적인 활용 사례이다.
- Hydra, OpenAPI – API 문서화와 하이퍼미디어 제어를 위해 JSON‑LD를 메타데이터 포맷으로 선택한다.
표준화 현황
- W3C: 현재 JSON‑LD 1.1 가 정식 권고안이며, 지속적인 확장 작업이 진행 중이다.
- JSON‑LD 커뮤니티 그룹: 구현 가이드, 베스트 프랙티스, 라이브러리(예: jsonld.js, PyLD 등)를 제공한다.
주요 구현체·라이브러리
| 언어 | 라이브러리 |
|---|---|
| JavaScript | jsonld.js (W3C 공식) |
| Python | PyLD, rdflib-jsonld |
| Java | jsonld-java |
| Ruby | json-ld |
| .NET | Newtonsoft.Json.Linq + JsonLD.Net |
참고 문헌 및 링크
- W3C Recommendation – JSON‑LD 1.1 (2022) – https://www.w3.org/TR/json-ld11/
- “Linked Data Platform 1.0” – W3C Recommendation, JSON‑LD 적용 사례 포함.
- “Schema.org” – 구글·마이크로소프트·야후·빙 협업 어휘, JSON‑LD와 결합해 사용.
- “JSON‑LD: A JSON-based Serialization for Linked Data”, Manu Sporny 등, 2014.
JSON‑LD는 읽기 쉬운 JSON과 시멘틱 웹의 RDF를 연결하는 다리 역할을 하며, 현대 웹·데이터 생태계에서 구조화된 정보를 교환하는 핵심 표준으로 자리 잡고 있다.