Copyright © 2003-2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 입문서는 독자가 RDF를 효과적으로 사용하는 데 필요한 기본 지식을 제공하도록 설계되었습니다. RDF의 기본 개념을 소개하고 RDF 사용의 구체적인 예를 보여줍니다. 3-5절은 RDF의 핵심 요소에 대한 최소한의 소개로 사용할 수 있습니다. RDF 1.1과 RDF 1.2 사이의 변경 사항은 별도 문서에 요약되어 있습니다: RDF 1.2의 새로운 기능 [RDF12-NEW].
이 절은 이 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 출판물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있습니다.
이 문서는 RDF 1.2 문서 모음의 일부입니다. 이는 RDF의 핵심 개념에 대한 정보 제공용 노트입니다. RDF 1.2의 규범적 명세는 독자가 RDF 1.2 개념 및 추상 데이터 모델 문서를 [RDF12-CONCEPTS] 참조하기 바랍니다.
이 문서는 RDF & SPARQL Working Group에 의해 노트 트랙을 사용하여 그룹 노트 초안으로 발행되었습니다.
그룹 노트 초안은 W3C 또는 그 회원들의 승인을 받은 것이 아닙니다.
이는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 부적절합니다.
W3C 특허 정책은 이 문서에 대해 어떠한 라이선스 요구 사항이나 약정도 부과하지 않습니다.
이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받습니다.
Resource Description Framework(RDF)는 리소스에 관한 정보를 표현하기 위한 프레임워크입니다. 리소스는 문서, 사람, 물리적 객체, 추상 개념을 포함하여 무엇이든 될 수 있습니다.
RDF는 웹의 정보가 사람에게 단순히 표시되는 데 그치지 않고 애플리케이션에 의해 처리되어야 하는 상황을 위해 고안되었습니다. RDF는 이러한 정보를 표현하기 위한 공통 프레임워크를 제공하므로, 의미 손실 없이 애플리케이션 간에 교환될 수 있습니다. 공통 프레임워크이기 때문에 애플리케이션 설계자는 공통 RDF 파서와 처리 도구의 가용성을 활용할 수 있습니다. 서로 다른 애플리케이션 간에 정보를 교환할 수 있다는 것은 그 정보가 원래 만들어진 애플리케이션 이외의 애플리케이션에서도 사용 가능해질 수 있음을 의미합니다.
특히 RDF는 웹에서 데이터를 게시하고 서로 연결하는 데 사용할 수 있습니다.
예를 들어, http://www.example.org/bob#me를 가져오면
Bob에 관한 데이터를 제공할 수 있으며, 여기에는 Alice가 자신의 IRI로
식별되는 Bob의 지인이라는 사실도 포함될 수 있습니다(IRI는 "Internationalized
Resource Identifier"입니다. 자세한 내용은 3.2
IRI를 참조하십시오).
그런 다음 Alice의 IRI를 가져오면 그녀에 관한 더 많은 데이터를 제공할 수 있으며, 여기에는
그녀의 친구, 관심사 등에 대한 다른 데이터셋으로 이어지는 링크가 포함될 수 있습니다. 사람 또는
자동화된 프로세스는 이러한 링크를 따라가며 이러한
다양한 항목에 관한 데이터를 집계할 수 있습니다. RDF의 이러한 사용은 흔히
Linked Data [LINKED-DATA]라고 불립니다.
이 문서는 규범적이지 않으며 RDF 1.2에 대한 완전한 설명을 제공하지 않습니다. RDF의 규범적 명세는 다음 문서에서 확인할 수 있습니다.
다음은 서로 다른 실무 공동체를 대상으로 한 RDF의 다양한 사용 사례를 보여줍니다.
RDF는 리소스에 관한 문장을 만들 수 있게 합니다. 이러한 문장의 형식은 단순합니다. 문장은 항상 다음 구조를 가집니다.
<subject> <predicate> <object>
RDF 문장은 두 리소스 사이의 관계를 표현합니다. 주어와 목적어는 관계를 맺는 두 리소스를 나타내며, 술어는 그 관계의 성격을 나타냅니다. 이 관계는 방향성을 가진 방식(주어에서 목적어로)으로 표현되며, RDF에서는 속성이라고 불립니다. RDF 문장은 세 요소로 구성되므로 트리플이라고 불립니다.
다음은 RDF 트리플의 예입니다(의사 코드로 비형식적으로 표현됨).
<Bob> <is a> <person>.
<Bob> <is a friend of> <Alice>.
<Bob> <is born on> <the 4th of July 1990>.
<Bob> <is interested in> <the Mona Lisa>.
<the Mona Lisa> <was created by> <Leonardo da Vinci>.
<the video 'La Joconde à Washington'> <is about> <the Mona Lisa>.
동일한 리소스는 여러 트리플에서 자주 참조됩니다. 위 예에서 Bob은 네 개 트리플의 주어이고, Mona Lisa는 하나의 트리플에서는 주어이며 두 개의 트리플에서는 목적어입니다. 같은 리소스가 한 트리플에서는 주어 위치에 있고 다른 트리플에서는 목적어 위치에 있을 수 있는 이러한 능력은 트리플 사이의 연결을 찾을 수 있게 하며, 이는 RDF의 힘을 이루는 중요한 부분입니다.
트리플의 집합은 그래프라고 합니다. 트리플 집합은 연결된 그래프로 시각화할 수 있습니다. 그래프는 노드와 아크로 구성됩니다. 트리플의 주어와 목적어가 그래프의 노드를 이루며, 술어가 아크를 형성합니다. 그림 1은 샘플 트리플로부터 얻어지는 그래프를 보여줍니다.
이와 같은 그래프가 있으면 SPARQL [SPARQL12-CONCEPTS]을 사용하여 예를 들어 Leonardo da Vinci의 그림에 관심 있는 사람들을 질의할 수 있습니다.
RDF 데이터 모델은 이 절에서 "추상 구문"의 형태로 설명됩니다. 즉, 텍스트 파일에 저장된 트리플을 표현하는 데 사용되는 특정 구체 구문과 독립적인 데이터 모델입니다. 서로 다른 구체 구문도 추상 구문의 관점에서는 정확히 같은 그래프를 생성할 수 있습니다. RDF 그래프의 의미론 [RDF12-SEMANTICS]은 이 추상 구문을 기준으로 정의됩니다. 구체적인 RDF 구문은 나중에 5. RDF 그래프 작성에서 소개합니다.
다음 네 하위 절에서는 트리플에 나타나는 네 종류의 RDF 용어, 즉 IRI, 리터럴, 빈 노드, 트리플 용어를 논의합니다.
약어 IRI는 "Internationalized Resource Identifier"의 줄임말입니다. IRI는 리소스를 식별합니다. 사람들이 웹 주소로 사용하는 URL(Uniform Resource Locators)은 IRI의 한 형태입니다. IRI의 다른 형태는 리소스의 위치나 접근 방법을 함의하지 않고도 리소스에 대한 식별자를 제공합니다. IRI라는 개념은 URI(Uniform Resource Identifier)를 일반화한 것으로, IRI 문자열에 비ASCII 문자를 사용할 수 있게 합니다. IRI는 RFC 3987 [RFC3987]에 명시되어 있습니다.
IRI는 트리플의 세 위치 모두에 나타날 수 있습니다.
앞서 언급했듯이 IRI는 문서, 사람, 물리적 객체, 추상 개념과 같은 리소스를 식별하는 데 사용됩니다. 예를 들어, DBpedia에서 Leonardo da Vinci의 IRI는 다음과 같습니다.
http://dbpedia.org/resource/Leonardo_da_Vinci
INA의 Mona Lisa 관련 비디오 'La Joconde à Washington'에 대한 Europeana의 IRI는 다음과 같습니다.
http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619
IRI는 전역 식별자이므로 다른 사람들이 동일한 것을 식별하기 위해 이 IRI를 재사용할 수 있습니다. 예를 들어, 다음 IRI는 많은 사람들이 사람들 사이의 지인 관계를 나타내는 RDF 속성으로 사용합니다.
http://xmlns.com/foaf/0.1/knows
RDF는 IRI가 무엇을 나타내는지에 대해 관여하지 않습니다. 하지만
IRI는 특정 어휘나 규약에 의해 의미를 부여받을 수 있습니다.
예를 들어,
DBpedia는
http://dbpedia.org/resource/Name 형식의 IRI를 사용하여
해당 Wikipedia 문서가 설명하는 대상을 나타냅니다.
리터럴은
값을 IRI로 식별하는 대신 값을 인코딩하는 데 사용됩니다.
리터럴의 예에는 "La Joconde"와 같은 문자열,
1990-07-04와 같이 ISO-8601에 따라 형식화된 날짜,
3.14159와 같은 숫자가 포함됩니다.
리터럴은 항상
데이터형과 연결되며, 이를 통해 올바르게
구문 분석되고 해석될 수 있습니다.
문자열은 선택적으로 언어 태그와 연결될 수 있습니다.
예를 들어, "Leonardo da Vinci"라는 이름이 그의 이름의 영어
버전임을 명확히 하기 위해 이 문자열을 en
언어 태그와 연결할 수 있고, "Léonard de Vinci"는 fr 언어 태그(프랑스어)와,
"李奥纳多·达·文西"는 zh 언어 태그(중국어)와 연결할 수 있습니다.
이러한 리터럴은
언어 태그가 붙은 문자열이라고 합니다.
문자열은 또한 선택적으로 기본
방향과 연결될 수 있으며, 값은 각각 왼쪽에서 오른쪽 및 오른쪽에서 왼쪽을 의미하는
ltr 또는 rtl 중 하나입니다. 예를 들어, 영어
제목 HTML & CSS: Designing and Creating Websites
는
en 언어 태그와 연결되고 왼쪽에서 오른쪽으로 쓰인 것으로
인식되며, 아랍어 번역에서는 오른쪽에서
왼쪽으로 다음과 같이 쓰일 것입니다.
HTML و CSS: تصميم و إنشاء مواقع الويب
,
이때 ar 언어 태그 및
rtl 초기 텍스트 방향과 연결됩니다. 이러한 리터럴은
방향성이 있는 언어 태그 문자열이라고
합니다.
기본 방향은
BIDI [I18N-Glossary] 처리에 도움을 주는 데 사용됩니다.
초기 기본 방향이 없으면 위의 예제 제목은 다음과 같이 잘못 렌더링될 것입니다.
HTML و CSS: تصميم و إنشاء مواقع الويب
.
이는 인코딩된 형태에서 뒤따르는 아랍 문자가 BIDI 알고리즘에 의해
오른쪽에서 왼쪽으로 인식되기 전에, 초기 문자가 왼쪽에서 오른쪽
방향성을 가지기 때문입니다. 더 많은 예는
웹에서 bidi와
언어 메타데이터를 사용하는 사례 문서에서 확인할 수 있습니다.
리터럴은 트리플의 목적어 위치에만 나타날 수 있습니다.
RDF Concepts 문서는 (완전하지는 않은) 데이터형 목록을 제공합니다. 여기에는 문자열, 불리언, 정수, 십진수 및 날짜와 같이 XML Schema에서 정의한 많은 데이터형이 포함됩니다.
IRI와 리터럴은 함께 RDF 문장을 작성하기 위한 기본 재료를 제공합니다. 또한 전역 식별자를 사용하는 수고 없이 리소스에 대해 말할 수 있으면 편리한 경우가 있습니다. 예를 들어, Mona Lisa 그림의 배경에 식별되지 않은 나무가 있으며, 우리가 그것이 사이프러스 나무임을 알고 있다고 말하고 싶을 수 있습니다. 그림 속 사이프러스 나무와 같이 전역 식별자가 없는 리소스는 RDF에서 빈 노드로 표현할 수 있습니다. 빈 노드는 대수의 단순 변수와 같으며, 그 값이 무엇인지 말하지 않고 어떤 것을 나타냅니다.
빈 노드는 트리플의 주어와 목적어 위치에 나타날 수 있습니다. 빈 노드는 IRI로 명시적으로 이름을 붙이지 않고 리소스를 나타내는 데 사용할 수 있습니다.
RDF에서 설명의 기본 단위로서, 트리플은 두 리소스 사이의 단순하고 방향성 있는 관계를 진술합니다. 때로는 그러한 관계의 기저에 있는 더 자세한 상황을 설명해야 합니다. 개념적으로 우리는 어떤 진술에 더 상세한 내용을 주석으로 달 수 있습니다.
관계를 표현하는 아크와 함께, 아래의 보라색 원은 구체화자를 표현합니다. 이는 Bob의 관심이며, Bob이 Mona Lisa에 관심이 있다는 사실의 구체적인 상황으로서 유형과 발생 날짜를 가집니다.
형식적으로 이 주석은 네 개의 트리플로 구성됩니다.
<Bob> <is interested in> <the Mona Lisa> . <Bob's interest> <is a concretization of> <<( <Bob> <is interested in> <the Mona Lisa> )>> . <Bob's interest> <is an> <Interest> . <Bob's interest> <since> <4th of October 1998> .
두 번째 트리플은 구체화 트리플이라고 하며, 첫 번째 트리플이 진술하는 명제의 구체화를 표현합니다. 구체화 트리플의 목적어는 트리플 용어입니다. 이는 그 명제 자체를, 구성하는 주어, 술어, 목적어 구성 요소를 통해 식별되는 논리적이고 추상적인 객체로 나타냅니다.
트리플 용어는 목적어 위치에만 나타날 수 있으며, 구체화 트리플의 특별한 reifies 술어와 함께 사용해야 합니다.
RDF는 RDF 문장을 여러 그래프로 그룹화하고 이러한 그래프를 IRI와 연결하는 메커니즘을 제공합니다. 다중 그래프는 RDF 1.1에 의해 RDF 데이터 모델에 도입되었습니다. 실제로 RDF 도구 제작자와 데이터 관리자는 트리플 모음의 부분집합에 대해 말할 수 있는 메커니즘이 필요했습니다. 다중 그래프는 RDF 질의 언어인 SPARQL에서 처음 도입되었습니다. 따라서 RDF 데이터 모델은 SPARQL과 밀접하게 정렬된 다중 그래프 개념으로 확장되었습니다.
RDF 문서의 다중 그래프는 RDF 데이터셋을 구성합니다. RDF 데이터셋은 여러 개의 이름 있는 그래프와 최대 하나의 이름 없는("기본") 그래프를 가질 수 있습니다.
예를 들어,
예제 1의 문장은
두 개의 이름 있는
그래프로 그룹화될 수 있습니다. 첫 번째 그래프는 소셜 네트워킹
사이트에서 제공되고 http://example.org/bob으로 식별될 수 있습니다.
<Bob> <is a> <person>.
<Bob> <is a friend of> <Alice>.
<Bob> <is born on> <the 4th of July 1990>.
<Bob> <is interested in> <the Mona Lisa>.
그래프와 연결된 IRI는 그래프 이름이라고 합니다.
두 번째 그래프는 Wikidata에서 제공되고
https://www.wikidata.org/wiki/Special:EntityData/Q12418로
식별될 수 있습니다.
<Leonardo da Vinci> <is the creator of> <the Mona Lisa>.
<The video 'La Joconde à Washington'> <is about> <the Mona Lisa>
아래는 이름 없는 그래프의 예입니다. 이는 그래프 이름
<http://example.org/bob>을
주어로 가지는 두 개의 트리플을 포함합니다. 이 트리플들은
이 그래프 IRI와 발행자 및 라이선스 정보를 연결합니다.
<http://example.org/bob> <is published by> <http://example.org>.
<http://example.org/bob> <has license> <http://creativecommons.org/licenses/by/3.0/>.
이 예제 데이터셋에서 우리는 그래프 이름이
해당 그래프 안에 보유된 RDF 데이터의 출처를 나타낸다고
가정합니다. 즉,
<http://example.org/bob>을 가져오면 그 그래프의 네 개 트리플에
접근할 수 있다고 가정합니다.
RDF는 이러한 의미론적 가정 (즉, 그래프 이름이 RDF 데이터의 출처를 나타낸다는 것)을 데이터셋의 다른 독자에게 전달하는 표준 방법을 제공하지 않습니다. 이러한 독자들은 데이터셋을 의도한 방식으로 해석하기 위해, 확립된 공동체 관행과 같은 대역 외 지식에 의존해야 합니다. 데이터셋의 가능한 의미론은 별도의 노트 [RDF11-DATASETS]에서 설명됩니다.
그림 4는 샘플 데이터셋을 묘사합니다. 5.1.3 TriG는 이 데이터셋을 위한 구체 구문의 예를 제공합니다.
RDF 데이터 모델은 리소스에 관한 문장을 만들 수 있는 방법을 제공합니다. 앞서 언급했듯이, 이 데이터 모델은 리소스 IRI가 무엇을 나타내는지에 대해 어떠한 가정도 하지 않습니다. 실제로 RDF는 일반적으로 이러한 리소스에 관한 의미 정보를 제공하는 어휘 또는 다른 규약과 함께 사용됩니다.
어휘의 정의를 지원하기 위해 RDF는
RDF Schema 언어
[RDF12-SCHEMA]를 제공합니다. 이 언어는
RDF 데이터의 의미적 특성을 정의할 수 있게 합니다.
예를 들어, IRI
http://www.example.org/friendOf를 속성으로 사용할 수 있으며
http://www.example.org/friendOf 트리플의 주어와 목적어는
http://www.example.org/Person 클래스의 리소스여야 한다고 명시할 수 있습니다.
RDF Schema는 리소스를 분류하는 데 사용할 수 있는 범주를 지정하기 위해 클래스 개념을 사용합니다. 인스턴스와 해당 클래스 사이의 관계는 type 속성을 통해 명시됩니다. RDF Schema를 사용하면 클래스와 하위 클래스, 속성과 하위 속성의 계층을 만들 수 있습니다. 특정 트리플의 주어와 목적어에 대한 타입 제한은 domain 및 range 제한을 통해 정의할 수 있습니다. domain 제한의 예는 위에서 제시되었습니다. "friendOf" 트리플의 주어는 "Person" 클래스여야 합니다.
RDF Schema가 제공하는 주요 모델링 구성 요소는 아래 표에 요약되어 있습니다.
| 구성 요소 | 구문적 트리플 형식 | 설명 |
|---|---|---|
| Class (클래스) | C rdf:type rdfs:Class |
C(리소스)는 RDF 클래스입니다 |
| Property (클래스) | P rdf:type rdf:Property |
P(리소스)는 RDF 속성입니다 |
| type (속성) | I rdf:type C |
I(리소스)는 C(클래스)의 인스턴스입니다 |
| subClassOf (속성) | C1 rdfs:subClassOf C2 |
C1(클래스)는 C2(클래스)의 하위 클래스입니다 |
| subPropertyOf (속성) | P1 rdfs:subPropertyOf P2 |
P1(속성)은 P2(속성)의 하위 속성입니다 |
| domain (속성) | P rdfs:domain C |
P(속성)의 domain은 C(클래스)입니다 |
| range (속성) | P rdfs:range C |
P(속성)의 range는 C(클래스)입니다 |
구문적 트리플 형식(두 번째 열)은 접두사
표기법으로 되어 있으며,
5. RDF
그래프 작성에서 더 자세히 논의됩니다.
구성 요소가 두 가지 서로 다른 접두사
(rdf:와 rdfs:)를 갖는다는 사실은 다소 성가신
역사적 산물이며, 하위 호환성을 위해 보존됩니다.
RDF Schema의 도움으로 RDF 데이터의 모델을 구축할 수 있습니다. 간단한 비형식 예는 다음과 같습니다.
<Person> <type> <Class>
<is a friend of> <type> <Property>
<is a friend of> <domain> <Person>
<is a friend of> <range> <Person>
<is a good friend of> <subPropertyOf> <is a friend of>
<is a friend of>는 일반적으로 트리플의 술어로
사용되는 속성(예제 1에서처럼)이지만,
이와 같은 속성 자체도 트리플로 설명될 수 있거나 다른
리소스의 설명에서 값을 제공할 수 있는 리소스라는 점에 유의하십시오.
이 예에서 <is a friend of>는 타입, domain, range 값을
할당하는 트리플들의 주어이며, <is a good friend of>
속성에 관해 어떤 것을 설명하는 트리플의 목적어입니다.
전 세계적으로 사용된 최초의 RDF 어휘 중 하나는 소셜 네트워크를 설명하기 위한 "Friend of a Friend" (FOAF) 어휘였습니다. RDF 어휘의 다른 예는 다음과 같습니다.
어휘의 가치는 재사용에서 나옵니다. 어휘 IRI가 다른 사람들에 의해 더 많이 재사용될수록, 그 IRI를 사용하는 것의 가치가 더 커집니다 (이른바 네트워크 효과). 이는 새 IRI를 발명하는 대신 다른 사람의 IRI를 재사용하는 것을 선호해야 함을 의미합니다.
RDF Schema 구성 요소의 의미론에 대한 형식 명세는 RDF Semantics 문서 [RDF12-SEMANTICS]를 참조하십시오. RDF 데이터의 더 포괄적인 의미 모델링에 관심이 있는 사용자는 OWL [OWL2-OVERVIEW] 사용을 고려할 수 있습니다. OWL은 RDF 어휘이므로 RDF Schema와 함께 사용할 수 있습니다.
RDF 그래프를 기록하기 위한 여러 가지 직렬화 형식이 존재합니다. 그러나 같은 그래프를 기록하는 서로 다른 방식은 정확히 같은 트리플로 이어지므로 논리적으로 동등합니다.
이 절에서는 주석이 달린 예를 통해 다음 형식을 간략히 소개합니다.
읽기 팁: 5.1절(Turtle 등)은 RDF를 직렬화하기 위한 모든 기본 개념을 논의합니다. JSON-LD, RDFa 및 RDF/XML에 관한 절은 해당 RDF 사용 방식에 관심이 있는 경우에만 읽는 것을 권장합니다.
이 하위 절에서는 서로 밀접하게 관련된 네 가지 RDF 언어를 소개합니다. N-Triples는 RDF 트리플을 기록하기 위한 기본 구문을 제공하므로, 여기에서 시작합니다. Turtle 구문은 가독성을 높이기 위해 이 기본 구문을 다양한 형태의 구문적 설탕으로 확장합니다. 이어서 TriG와 N-Quads를 논의하는데, 이들은 각각 Turtle과 N-Triples를 확장하여 다중 그래프를 인코딩합니다. 이 네 가지는 함께 "RDF 언어의 Turtle 계열"이라고 불립니다.
N-Triples [RDF12-N-TRIPLES]는 RDF 그래프를 직렬화하기 위한 단순한 행 기반의 일반 텍스트 방식을 제공합니다. 그림 1의 비형식 그래프는 다음과 같은 방식으로 N-Triples로 표현할 수 있습니다.
01 <http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
02 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> .
03 <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date> .
04 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> .
05 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "Mona Lisa" .
06 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator> <http://dbpedia.org/resource/Leonardo_da_Vinci> .
07 <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418> .
각 행은 하나의 트리플을 나타냅니다. 전체 IRI는 꺾쇠괄호
(<>)로 감쌉니다. 행 끝의 마침표는
트리플의 끝을 나타냅니다. 3행에서는 리터럴의 예, 이 경우 날짜를 볼 수 있습니다.
데이터형은 ^^ 구분자를 통해 리터럴에 덧붙여집니다. 날짜
표현은 XML Schema 데이터형
date의 규약을
따릅니다.
문자열 리터럴은 매우 흔하므로 N-Triples는 사용자가
문자열 리터럴을 작성할 때 데이터형을 생략할 수 있게 합니다. 따라서
5행의 "Mona
Lisa"는
"Mona Lisa"^^xsd:string과 동등합니다.
언어 태그가 붙은 문자열의 경우 태그는
문자열 바로 뒤에 @ 기호로 구분되어 나타납니다.
예: "La Joconde"@fr (Mona
Lisa의 프랑스어 이름).
기술적인 이유로 언어 태그가 붙은 문자열의 데이터형은
xsd:string이 아니라
rdf:langString입니다. 언어 태그가 붙은 문자열의
데이터형은 명시적으로 지정되지 않습니다.
아래 그림은 예에서 생성된 트리플을 보여줍니다.
N-Triples 예의 일곱 행은 위 다이어그램의 일곱 아크에 대응한다는 점에 유의하십시오.
N-Triples는 대량의 RDF를 교환하거나 행 지향 텍스트 처리 도구로 대규모 RDF 그래프를 처리하는 데 자주 사용됩니다.
Turtle [RDF12-TURTLE]은 N-Triples의 확장입니다. 기본 N-Triples 구문에 더하여, Turtle은 네임스페이스 접두사, 목록, 데이터형이 지정된 리터럴의 축약 표기 지원과 같은 여러 구문적 단축 표현을 도입합니다. Turtle은 작성의 용이성, 파싱의 용이성, 가독성 사이의 절충점을 제공합니다. 그림 5에 표시된 그래프는 다음과 같이 Turtle로 표현할 수 있습니다.
01 BASE <http://example.org/>
02 PREFIX foaf: <http://xmlns.com/foaf/0.1/>
03 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
04 PREFIX schema: <http://schema.org/>
05 PREFIX dcterms: <http://purl.org/dc/terms/>
06 PREFIX wd: <http://www.wikidata.org/entity/>
07
08 <bob#me>
09 a foaf:Person ;
10 foaf:knows <alice#me> ;
11 schema:birthDate "1990-07-04"^^xsd:date ;
12 foaf:topic_interest wd:Q12418 .
13
14 wd:Q12418
15 dcterms:title "Mona Lisa" ;
16 dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> .
17
18 <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>
19 dcterms:subject wd:Q12418 .
Turtle 예는 N-Triples
예와 논리적으로 동등합니다. 1-6행에는 IRI를
기록하기 위한 축약 표현을 제공하는 여러 지시문이 포함되어 있습니다.
상대 IRI(예: 8행의 bob#me)는
여기 1행에 지정된 기본 IRI를 기준으로 해석됩니다.
2-6행은 IRI 접두사(예: foaf:)를 정의하며,
이는 전체 IRI 대신 접두사 이름(예: foaf:Person)에
사용할 수 있습니다. 해당 IRI는 접두사를 그에 대응하는 IRI로
대체하여 구성됩니다(이 예에서 foaf:Person은
<http://xmlns.com/foaf/0.1/Person>을 의미합니다).
8-12행은 Turtle이 같은 주어를 가진 트리플 집합에 대한
단축 표현을 제공하는 방식을 보여줍니다. 9-12행은
<http://example.org/bob#me>를
주어로 가지는 트리플의 술어-목적어 부분을 지정합니다.
9-11행 끝의 세미콜론은 그 뒤에 오는 술어-목적어 쌍이
데이터에서 가장 최근에 표시된 주어, 이 경우
bob#me를 사용하는 새 트리플의 일부임을 나타냅니다.
9행은 특별한 종류의 구문적 설탕의 예를 보여줍니다. 이 트리플은
비형식적으로 "Bob (is) a Person"으로 읽어야 합니다.
a 술어는 인스턴스 관계를 모델링하는
rdf:type 속성의 단축 표현입니다
(표 1 참조).
a 단축 표현은 rdf:type에 대한
사람의 직관과 맞도록 의도되었습니다.
다음은 언어 태그가 붙은 문자열(7행)과 방향성이 있는 언어 태그 문자열(8행)을 사용하여, 제목을 영어와 아랍어 모두로 가진 책을 설명합니다.
01 BASE <http://example.org/>
02 PREFIX bibo: <http://purl.org/ontology/bibo/>
03 PREFIX dct: <http://purl.org/dc/terms/>
05
06 <books/html_and_css> a bibo:Book ;
07 dct:title "HTML & CSS: Designing and Creating Websites"@en ,
08 "HTML و CSS: تصميم و إنشاء مواقع الويب"@ar--rtl .
아래에서는 앞서의 사이프러스 나무 예를 사용하여 빈 노드를 기록하는 두 가지 구문 변형을 볼 수 있습니다.
PREFIX lio: <http://purl.org/net/lio#>
<http://dbpedia.org/resource/Mona_Lisa> lio:shows _:x .
_:x a <http://dbpedia.org/resource/Cypress> .
_:x라는 용어는 빈 노드입니다. 이는
Mona Lisa 그림에 묘사된 이름 없는 리소스를 나타내며,
그 이름 없는 리소스는 Cypress 클래스의 인스턴스입니다.
위 예는 그림 2의 비형식 그래프에 대한
구체 구문을 제공합니다.
Turtle에는 _:x와 같은 구문을 사용할 필요가 없는
빈 노드의 대체 표기법도 있습니다.
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Some resource (blank node) is interested in some other resource
# entitled "Mona Lisa" and created by Leonardo da Vinci.
[] foaf:topic_interest [
dcterms:title "Mona Lisa" ;
dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> ] .
여기에서 대괄호는 빈 노드를 나타냅니다. 대괄호 안의 술어-목적어 쌍은 빈 노드를 주어로 하는 트리플로 해석됩니다. '#'로 시작하는 행은 주석을 나타냅니다.
Turtle은 트리플을 구체화하고 주석을 달기 위한 간결한 표기법을 제공합니다. 이를 통해 트리플 용어에 관한 절의 예, 즉 Bob이 Mona Lisa에 관심이 있다는 단순한 사실에 더 구체적인 상황을 주석으로 붙인 예를 인코딩할 수 있습니다.
이 관심 자체가 언제 시작되었는지 명시하기 위해 이름 없는 주석을 사용할 수 있습니다.
PREFIX prov: <http://www.w3.org/ns/prov#>
<bob#me> foaf:topic_interest wd:Q12418 {| a prov:Influence ;
dcterms:date "1998-10-04"^^xsd:date |} .
Alice가 한때 그 단순한 주장을 했다는 것도 설명할 수 있습니다. 여기서는 그 진실성을 함의하지 않고 참조하는 구체화 트리플의 구문을 사용합니다.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
<< <bob#me> foaf:topic_interest wd:Q12418 >>
a rdf:Statement ;
dcterms:date "2004-01-12"^^xsd:date ;
dcterms:creator <alice#me> .
앞의 두 설명은 하나의 진술에 대한 두 개의 주석으로 결합할 수도 있습니다. 여기서는 구체화자도 IRI로 식별합니다.
<bob#me> foaf:topic_interest wd:Q12418 ~ <bob#interest-1>
~ <alice#claim-1> .
<bob#interest-1>
a prov:Influence ;
dcterms:date "1998-10-04"^^xsd:date .
<alice#claim-1>
a rdf:Statement ;
dcterms:date "2004-01-12"^^xsd:date ;
dcterms:creator <alice#me> .
Turtle 구문에 대한 자세한 내용은 Turtle 명세 [RDF12-TURTLE]를 참조하십시오.
Turtle의 구문은 그래프를 "이름 붙이는" 수단 없이 단일 그래프를 지정하는 것만 지원합니다. TriG [RDF12-TRIG]는 RDF 데이터셋의 형태로 다중 그래프를 지정할 수 있게 하는 Turtle의 확장입니다.
RDF 1.2에서는 모든 유효한 Turtle 문서가 유효한 TriG 문서입니다. 이를 하나의 언어로 볼 수도 있습니다. Turtle과 TriG라는 이름은 역사적 이유로 여전히 존재합니다.
우리 예의 다중 그래프 버전은 다음과 같이 TriG로 지정할 수 있습니다.
01 BASE <http://example.org/>
02 PREFIX foaf: <http://xmlns.com/foaf/0.1/>
03 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
04 PREFIX schema: <http://schema.org/>
05 PREFIX dcterms: <http://purl.org/dc/terms/>
06 PREFIX wd: <http://www.wikidata.org/entity/>
07
08 GRAPH <http://example.org/bob>
09 {
10 <bob#me>
11 a foaf:Person ;
12 foaf:knows <alice#me> ;
13 schema:birthDate "1990-07-04"^^xsd:date ;
14 foaf:topic_interest wd:Q12418 .
15 }
16
17 GRAPH <https://www.wikidata.org/wiki/Special:EntityData/Q12418>
18 {
19 wd:Q12418
20 dcterms:title "Mona Lisa" ;
21 dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> .
22
23 <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>
24 dcterms:subject wd:Q12418 .
25 }
26
27 <http://example.org/bob>
28 dcterms:publisher <http://example.org> ;
29 dcterms:rights <http://creativecommons.org/licenses/by/3.0/> .
이 RDF 데이터셋은 두 개의 이름 있는 그래프를 포함합니다.
8행과 17행은 이 두 그래프의 이름을 나열합니다. 이름 있는 그래프의
트리플은 서로 대응하는 중괄호(9행과 15행, 18행과
25행) 사이에 배치됩니다. 선택적으로 그래프 이름 앞에
GRAPH 키워드를 둘 수 있습니다. 이는 가독성을 향상시킬 수 있지만,
주로 SPARQL Update [SPARQL12-UPDATE]와의 정렬을 위해
도입되었습니다.
트리플의 구문과 맨 위의 지시문 구문은 Turtle 구문을 따릅니다.
27-29행에 지정된 두 트리플은 어떤 이름 있는 그래프의 일부도 아닙니다. 이들은 함께 이 RDF 데이터셋의 이름 없는("기본") 그래프를 형성합니다.
아래 그림은 이 예에서 생성된 트리플을 보여줍니다.
N-Quads [RDF12-N-QUADS]는 RDF 데이터셋의 교환을 가능하게 하기 위한 N-Triples의 단순한 확장입니다. N-Quads는 한 행에 네 번째 요소를 추가할 수 있게 하며, 그 요소는 해당 행에서 설명된 트리플의 그래프 IRI를 포착합니다. 다음은 위 TriG 예의 N-Quads 버전입니다.
01 <http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob> .
02 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> <http://example.org/bob> .
03 <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date> <http://example.org/bob> .
04 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> <http://example.org/bob> .
05 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "Mona Lisa" <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
06 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator> <http://dbpedia.org/resource/Leonardo_da_Vinci> <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
07 <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418> <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .
08 <http://example.org/bob> <http://purl.org/dc/terms/publisher> <http://example.org> .
09 <http://example.org/bob> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by/3.0/> .
N-Quads 예의 아홉 행은 그림 6의 아홉 아크에 대응합니다. 1-7행은 쿼드를 나타내며, 마지막 요소가 그래프 IRI를 구성합니다. 쿼드에서 그래프 IRI 앞의 부분은 N-Triples의 구문 규약에 따라 문장의 주어, 술어, 목적어를 지정합니다. 8행과 9행은 이름 없는(기본) 그래프의 문장을 나타내며, 네 번째 요소가 없으므로 일반 트리플을 구성합니다.
N-Triples와 마찬가지로 N-Quads는 일반적으로 대규모 RDF 데이터셋을 교환하거나 행 지향 텍스트 처리 도구로 RDF를 처리하는 데 사용됩니다.
JSON-LD [JSON-LD11]는 RDF 그래프와 데이터셋을 위한 JSON 구문을 제공합니다. JSON-LD는 최소한의 변경으로 JSON 문서를 RDF로 변환하는 데 사용할 수 있습니다. JSON-LD는 JSON 객체를 위한 보편 식별자, JSON 문서가 웹상의 다른 위치에 있는 또 다른 JSON 문서에서 설명된 객체를 참조할 수 있는 메커니즘, 그리고 데이터형 및 언어 처리를 제공합니다. 또한 JSON-LD는 @graph 키워드를 사용하여 RDF 데이터셋을 직렬화하는 방법도 제공합니다.
다음 JSON-LD 예는 그림 5의 그래프를 인코딩합니다.
01 {
02 "@context": "example-context.json",
03 "@id": "http://example.org/bob#me",
04 "@type": "Person",
05 "birthdate": "1990-07-04",
06 "knows": "http://example.org/alice#me",
07 "interest": {
08 "@id": "http://www.wikidata.org/entity/Q12418",
09 "title": "Mona Lisa",
10 "subject_of": "http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619",
11 "creator": "http://dbpedia.org/resource/Leonardo_da_Vinci"
12 }
13 }
2행의 @context 키는
문서가 RDF 그래프에 매핑될 수 있는 방법을 설명하는
JSON 문서(아래 참조)를 가리킵니다.
각 JSON 객체는 RDF 리소스에 대응합니다. 이 예에서
설명되는 주요 리소스는
http://example.org/bob#me이며,
이는 3행에서 @id 키워드를 사용하여 지정됩니다.
JSON-LD 문서에서 키로 사용될 때 @id 키워드는
현재 JSON 객체에 대응하는 리소스를 식별하는 IRI를 가리킵니다.
4행에서는 이 리소스의 타입, 5행에서는 생년월일,
6행에서는 그 친구 중 한 명을 설명합니다. 7행부터 12행까지는
그 관심사 중 하나인 Mona Lisa 그림을 설명합니다.
이 그림을 설명하기 위해 7행에서 새 JSON 객체를 만들고 8행에서 Wikidata의 Mona Lisa IRI와 연결합니다. 그런 다음 9행부터 11행까지 이 그림의 다양한 속성을 설명합니다.
이 예에서 사용된 JSON-LD 컨텍스트는 아래에 제시됩니다.
01 {
02 "@context": {
03 "foaf": "http://xmlns.com/foaf/0.1/",
04 "Person": "foaf:Person",
05 "interest": "foaf:topic_interest",
06 "knows": {
07 "@id": "foaf:knows",
08 "@type": "@id"
09 },
10 "birthdate": {
11 "@id": "http://schema.org/birthDate",
12 "@type": "http://www.w3.org/2001/XMLSchema#date"
13 },
14 "dcterms": "http://purl.org/dc/terms/",
15 "title": "dcterms:title",
16 "creator": {
17 "@id": "dcterms:creator",
18 "@type": "@id"
19 },
20 "subject_of": {
21 "@reverse": "dcterms:subject",
22 "@type": "@id"
23 }
24 }
25 }
이 컨텍스트는 JSON-LD 문서가 RDF 그래프에 매핑될 수 있는
방법을 설명합니다. 4행부터 9행은
3행에 정의된 FOAF 네임스페이스의 타입과 속성으로
Person, interest, knows를
매핑하는 방법을 지정합니다. 또한 8행에서 knows
키가 @type 및 @id 키워드 사용을 통해
IRI로 해석될 값을 가진다고 지정합니다.
10행부터 12행까지는 birthdate를
schema.org 속성 IRI에 매핑하고 그 값이
xsd:date 데이터형에 매핑될 수 있음을 지정합니다.
14행부터 23행까지는
title, creator, subject_of를
Dublin Core 속성 IRI에 매핑하는 방법을 설명합니다. 21행의
@reverse 키워드는, 이 컨텍스트를 사용하는 JSON-LD 문서에서
"subject_of": "x"를 만날 때마다, 이를 주어가 x
IRI이고, 속성이 dcterms:subject이며,
목적어가 부모 JSON 객체에 대응하는 리소스인 RDF 트리플에
매핑해야 함을 지정하는 데 사용됩니다.
RDFa [RDFA-PRIMER]는 HTML 및 XML 문서 안에 RDF 데이터를 삽입하는 데 사용할 수 있는 RDF 구문입니다. 이를 통해 예를 들어 검색 엔진은 웹을 크롤링할 때 이 데이터를 집계하고 검색 결과를 풍부하게 하는 데 사용할 수 있습니다(예: schema.org 및 Rich Snippets 참조).
아래 HTML 예는 그림 5에 묘사된 RDF 그래프를 인코딩합니다.
01 <body prefix="foaf: http://xmlns.com/foaf/0.1/
02 schema: http://schema.org/
03 dcterms: http://purl.org/dc/terms/">
04 <div resource="http://example.org/bob#me" typeof="foaf:Person">
05 <p>
06 Bob knows <a property="foaf:knows" href="http://example.org/alice#me">Alice</a>
07 and was born on the <time property="schema:birthDate" datatype="xsd:date">1990-07-04</time>.
08 </p>
09 <p>
10 Bob is interested in <span property="foaf:topic_interest"
11 resource="http://www.wikidata.org/entity/Q12418">the Mona Lisa</span>.
12 </p>
13 </div>
14 <div resource="http://www.wikidata.org/entity/Q12418">
15 <p>
16 The <span property="dcterms:title">Mona Lisa</span> was painted by
17 <a property="dcterms:creator" href="http://dbpedia.org/resource/Leonardo_da_Vinci">Leonardo da Vinci</a>
18 and is the subject of the video
19 <a href="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">'La Joconde à Washington'</a>.
20 </p>
21 </div>
22 <div resource="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">
23 <link property="dcterms:subject" href="http://www.wikidata.org/entity/Q12418"/>
24 </div>
25 </body>
위 예에는 HTML 안에서 RDF 트리플을 지정할 수 있게 하는
네 가지 특별한 RDFa 속성인 resource,
property, typeof, prefix가 포함되어 있습니다.
1행의 prefix 속성은 Turtle 접두사와 유사한 방식으로
IRI 축약 표현을 지정합니다. 엄밀히 말하면, RDFa에는 이 예에서 사용된 것들을 포함하는
미리 정의된
접두사 목록이 있으므로 이러한 특정 접두사는 생략될 수도 있었습니다.
4행과 14행의 div 요소에는 이 HTML 요소 안에서
RDF 문장을 만들 수 있는 대상 IRI를 지정하는
resource 속성이 있습니다. 4행의 typeof
속성의 의미는 Turtle의 (is) a 단축 표현과 유사합니다.
주어 http://example.org/bob#me는
foaf:Person 클래스의 인스턴스(rdf:type)입니다.
6행에서는 property 속성을 볼 수 있습니다. 이 속성의 값
(foaf:knows)은 RDF 속성 IRI로 해석되며,
href 속성의 값
(http://example.org/alice#me)은
여기서 트리플의 목적어로 해석됩니다. 따라서 6행에서 생성되는
RDF 문장은 다음과 같습니다.
<http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> .
7행에서는 목적어가 리터럴 값인 트리플을 볼 수 있습니다.
여기서는 HTML time 요소에 property
속성이 지정되어 있습니다. HTML은 time 요소의 내용이 어떤 유효한
time 값이어야 한다고
요구합니다.
HTML의 내장 time 요소 의미를 사용함으로써 RDFa는
명시적 데이터형 선언 없이도 그 값을 xsd:date로
해석할 수 있습니다.
10-11행에서는 resource 속성이 트리플의 목적어를
지정하는 데도 사용되는 것을 볼 수 있습니다. 이 방식은 목적어가
IRI이고 그 IRI 자체가 HTML 콘텐츠의 일부가 아닌 경우
(예: href 속성)에 사용됩니다. 16행에는
span 속성의 내용으로 정의된 리터럴("Mona
Lisa")의 두 번째 예가 포함되어 있습니다. RDFa가 리터럴의 데이터형을
추론할 수 없는 경우, 그 데이터형을 xsd:string으로
가정합니다.
RDF 문장을 문서의 HTML 콘텐츠 일부로 정의하는 것이
항상 가능한 것은 아닙니다. 이 경우 콘텐츠를 렌더링하지 않는 HTML
구성 요소를 사용하여 트리플을 지정할 수 있습니다. 예는
22-23행에서 볼 수 있습니다. 23행의 HTML link
요소는 여기서 Europeana 비디오(22행)의 주제가 무엇인지를 지정하는 데
사용됩니다.
이 예에서 RDFa 사용은 RDFa Lite [RDFA-LITE]로 제한됩니다. RDFa에 대한 자세한 정보는 RDFa Primer [RDFA-PRIMER]를 참조하십시오.
RDF/XML [RDF12-XML]은 RDF 그래프를 위한 XML 구문을 제공합니다. RDF가 1990년대 후반에 처음 개발되었을 때, 이것이 유일한 구문이었으며, 일부 사람들은 여전히 이 구문을 "RDF"라고 부릅니다. 2001년에 "N3"라는 Turtle의 전신이 제안되었고, 이후 여기 나열된 다른 언어들이 점차 채택되고 표준화되었습니다.
아래 RDF/XML 예는 그림 5에 묘사된 RDF 그래프를 인코딩합니다.
01 <?xml version="1.0" encoding="utf-8"?>
02 <rdf:RDF
03 xmlns:dcterms="http://purl.org/dc/terms/"
04 xmlns:foaf="http://xmlns.com/foaf/0.1/"
05 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
06 xmlns:schema="http://schema.org/">
07 <rdf:Description rdf:about="http://example.org/bob#me">
08 <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
09 <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-07-04</schema:birthDate>
10 <foaf:knows rdf:resource="http://example.org/alice#me"/>
11 <foaf:topic_interest rdf:resource="http://www.wikidata.org/entity/Q12418"/>
12 </rdf:Description>
13 <rdf:Description rdf:about="http://www.wikidata.org/entity/Q12418">
14 <dcterms:title>Mona Lisa</dcterms:title>
15 <dcterms:creator rdf:resource="http://dbpedia.org/resource/Leonardo_da_Vinci"/>
16 </rdf:Description>
17 <rdf:Description rdf:about="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">
18 <dcterms:subject rdf:resource="http://www.wikidata.org/entity/Q12418"/>
19 </rdf:Description>
20 </rdf:RDF>
RDF/XML에서 RDF 트리플은 XML 요소
rdf:RDF 안에 지정됩니다(2행과 20행).
rdf:RDF 시작 태그의 속성(3-6행)은
XML 요소와 속성의 이름을 기록하기 위한 축약 표현을 제공합니다.
XML 요소 rdf:Description
(http://www.w3.org/1999/02/22-rdf-syntax-ns#Description의 축약형)는
about 속성으로 지정된 IRI를 주어로 하는
트리플 집합을 정의하는 데 사용됩니다. 첫 번째 description
블록(7-12행)은 네 개의 하위 요소를 가집니다. 하위 요소의 이름은
RDF 속성을 나타내는 IRI입니다. 예: rdf:type(8행). 여기서
각 하위 요소는 하나의 트리플을 나타냅니다.
트리플의 목적어도 IRI인 경우
속성 하위 요소에는 내용이 없으며, 목적어 IRI는
rdf:resource 속성을 사용하여 지정됩니다(8행, 10-11행, 15행 및
18행). 예를 들어 10행은 다음 트리플에 대응합니다.
<http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> .
트리플의 목적어가 리터럴인 경우
리터럴 값은 속성 요소의 내용으로 입력됩니다(9행과 14행).
데이터형은 속성 요소의 속성으로 지정됩니다(9행).
데이터형이 생략되고(14행) 언어 태그가 없는 경우, 리터럴은
xsd:string 데이터형을 가진 것으로 간주됩니다.
이 예는 기본 구문을 보여줍니다. 구문에 대한 더 심층적인 처리는 RDF/XML 문서 [RDF12-XML]를 참조하십시오. 이러한 네임스페이스 접두사 중 일부가 정의되어 있음에도 속성 값이 전체 IRI를 포함하는 것이 이상해 보일 수 있습니다. 이는 이러한 접두사가 XML 요소와 속성 이름에만 사용될 수 있기 때문입니다.
RDF 사용의 포괄적인 목표는 여러 출처의 유용한 정보를 자동으로 병합하여, 여전히 일관되고 유용한 더 큰 모음을 형성할 수 있게 하는 것입니다. 이러한 병합의 출발점으로, 모든 정보는 위에서 설명한 것처럼 주어-술어-목적어 트리플이라는 동일한 단순한 방식으로 전달됩니다. 그러나 정보를 일관되게 유지하려면 표준 구문만으로는 충분하지 않으며, 이러한 트리플의 의미론에 대한 합의도 필요합니다.
입문서의 이 지점에 이르면, 독자는 RDF의 의미론을 직관적으로 이해하고 있을 가능성이 큽니다.
이러한 개념과 기타 개념은 RDF Semantics 문서 [RDF12-SEMANTICS]에서 수학적으로 정밀하게 명시되어 있습니다.
RDF가 이러한 선언적 의미론을 갖는 이점 중 하나는 시스템이 논리적 추론을 수행할 수 있다는 것입니다. 즉, 시스템은 참으로 받아들이는 특정 입력 트리플 집합이 주어졌을 때, 어떤 상황에서는 다른 트리플도 논리적으로 참이어야 한다고 도출할 수 있습니다. 첫 번째 트리플 집합이 추가 트리플을 "함의"한다고 말합니다. "추론기"라고 불리는 이러한 시스템은 주어진 입력 트리플들이 서로 모순된다는 것을 때때로 도출할 수도 있습니다.
RDF의 유연성, 즉 사람들이 새로운 개념을 사용하고자 할 때 새로운 어휘를 만들 수 있다는 점을 고려하면, 수행하고자 할 수 있는 추론의 종류는 매우 다양합니다. 특정 종류의 추론이 여러 다양한 애플리케이션에서 유용해 보일 때, 그것은 함의 체제로 문서화될 수 있습니다. RDF Semantics에는 여러 함의 체제가 명시되어 있습니다. 다른 몇몇 함의 체제의 기술적 설명과 이를 SPARQL과 함께 사용하는 방법은 [SPARQL12-ENTAILMENT]를 참조하십시오. 일부 함의 체제는 구현하기가 비교적 쉽고 추론을 빠르게 수행할 수 있는 반면, 다른 체제는 효율적으로 구현하기 위해 정교한 기법이 필요하다는 점에 유의하십시오.
함의의 예로 다음 두 문장을 고려하십시오.
ex:bob foaf:knows ex:alice .foaf:knows rdfs:domain foaf:Person .
RDF Semantics 문서는 이 그래프로부터 다음 트리플을 도출하는 것이 적법하다고 알려줍니다.
ex:bob rdf:type foaf:Person .
위의 도출은 RDF Schema 함의 [RDF12-SEMANTICS]의 예입니다.
RDF의 의미론은 또한 다음 트리플이
ex:bob ex:age "forty"^^xsd:integer .
논리적 불일치를 초래한다고 알려줍니다. 이는 리터럴이 XML Schema 데이터형 integer에 대해 정의된 제약을 따르지 않기 때문입니다.
RDF 도구가 모든 데이터형을 인식하지 못할 수도 있다는 점에 유의하십시오. 최소한 도구는 문자열 리터럴과 언어 태그가 붙은 리터럴을 위한 데이터형을 지원해야 합니다.
다른 많은 데이터 모델링 언어와 달리, RDF Schema는 상당한 모델링 자유를 허용합니다. 예를 들어, 같은 엔터티가 클래스와 속성 둘 다로 사용될 수 있습니다. 또한 "클래스"의 세계와 "인스턴스"의 세계 사이에 엄격한 분리가 없습니다. 따라서 RDF 의미론은 다음 그래프를 유효한 것으로 봅니다.
ex:Jumbo rdf:type ex:Elephant .ex:Elephant rdf:type ex:Species .
따라서 코끼리는 클래스(Jumbo를 샘플 인스턴스로 가짐)이면서 동시에 인스턴스(즉, 동물 종 클래스의 인스턴스)일 수 있습니다.
이 절의 예들은 RDF Semantics가 무엇을 제공하는지에 대해 독자가 어느 정도 감을 얻도록 하기 위한 것입니다. 완전한 설명은 [RDF12-SEMANTICS]를 참조하십시오.
RDF는 임의의 출처에서 온 트리플을 그래프로 결합하고, 이를 적법한 RDF로 처리할 수 있게 합니다. 많은 양의 RDF 데이터가 Linked Data [LINKED-DATA]로 제공됩니다. 데이터셋은 RDF를 사용하여 웹에 게시되고 서로 연결되며, 그중 다수는 SPARQL [SPARQL12-CONCEPTS]을 통한 질의 기능을 제공합니다. 위 예에서 사용된 이러한 데이터셋의 예는 다음과 같습니다.
Linked Data로 제공되는 데이터셋 목록은 datahub.io에서 유지관리됩니다.
RDF 데이터 출처 사이의 링크를 기록하기 위해
널리 사용되는 여러 어휘 용어가 있습니다. 예를 들면
OWL 어휘가 제공하는 sameAs 속성이 있습니다. 이
속성은 두 IRI가 실제로 같은 리소스를 가리킨다는 것을 나타내는 데
사용할 수 있습니다. 이는 서로 다른 게시자가 같은 것을 나타내기 위해
서로 다른 식별자를 사용할 수 있기 때문에 유용합니다. 예를 들어
VIAF(위 참조)도 Leonardo da Vinci를 나타내는 IRI를 가지고 있습니다.
owl:sameAs의 도움으로 이 정보를
기록할 수 있습니다.
<http://dbpedia.org/resource/Leonardo_da_Vinci>
owl:sameAs <http://viaf.org/viaf/24604287/> .
이러한 링크는 RDF 데이터 처리 소프트웨어에서 배포될 수 있습니다. 예를 들어 같은 리소스를 가리키는 IRI의 RDF 데이터를 병합하거나 비교하는 방식으로 사용할 수 있습니다.
이것으로 RDF에 대한 간략한 소개를 마칩니다. 더 자세한 정보를 얻으려면 참고 문헌을 참조하십시오. 또한 W3C Linked Data 페이지도 살펴볼 수 있습니다.
이 절은 비규범적입니다.
Antoine Isaac은 여러 예제를 제공했으며, 여기에는 다양한 구문 형식도 포함됩니다. Pierre-Antoine Champin은 JSON-LD 예제 중 하나를 제공했습니다. Andrew Wood는 다이어그램을 설계했습니다. Sandro Hawke는 RDF 의미론에 관한 절의 첫 부분을 작성했습니다.
우리는 (알파벳순으로) Gareth Adams, Thomas Baker, Dan Brickley, Pierre-Antoine Champin, Bob DuCharme, Sandro Hawke, Patrick Hayes, Ivan Herman, Kingsley Idehen, Antoine Isaac, Markus Lanthaler, David Wood가 제공한 의견에 감사드립니다.
이 문서의 소개에는 2004년 입문서 [RDF-PRIMER]의 여러 문장이 포함되어 있습니다. 그 외에는 RDF 1.1 Primer가 완전히 새로운 문서입니다.
이 절은 비규범적입니다.
편집자들 외에도 다음 사람들이 이 명세에 기여했습니다. Andy Seaborne, Dominik Tomaszuk, Gregg Kellogg, Peter F. Patel-Schneider
RDF & SPARQL Working Group Group의 구성원에는 Vladimir Alexiev, James Anderson, Amin Anjomshoaa, Julián Arenas-Guerrero, Dörthe Arndt, Bilal Ben Mahria, Erich Bremer, Dan Brickley, Kurt Cagle, Sarven Capadisli, Rémi Ceres, Pierre-Antoine Champin, David Chaves-Fraga, Souripriya Das, Daniil Dobriy, Enrico Franconi, Jeffrey Phillips Freeman, Fabien Gandon, Benjamin Goering, Damien Graux, Adrian Gschwend, Olaf Hartig, Timothée Haudebourg, Ian Horrocks, Gregg Kellogg, Mark Kim, Jose Emilio Labra Gayo, Ora Lassila, Richard Lea, Niklas Lindström, Pasquale Lisena, Thomas Lörtsch, Matthew Nguyen, Peter Patel-Schneider, Thomas Pellissier Tanon, Dave Raggett, Jean-Yves ROSSI, Felix Sasaki, Andy Seaborne, Alan Snyder, Stuart Sutton, Ruben Taelman, Ted Thibodeau Jr, Dominik Tomaszuk, Raphaël Troncy, William Van Woensel, Gregory Williams, Jesse Wright, Achille Zappa, and Antoine Zimmermann이 포함되었습니다.
Task Force 구성원을 인정할 것인가? 기여자 목록을 찾기가 쉽지 않습니다.
이 절은 비규범적입니다.