RDF 1.2 入門

W3Cグループノート草案

この文書についての詳細
このバージョン:
https://www.w3.org/TR/2026/DNOTE-rdf12-primer-20260416/
最新公開バージョン:
https://www.w3.org/TR/rdf12-primer/
最新の編集者草案:
https://w3c.github.io/rdf-primer/spec/
履歴:
https://www.w3.org/standards/history/rdf12-primer/
コミット履歴
最新の勧告:
https://www.w3.org/TR/rdf11-primer
編集者:
Pierre-Antoine Champin
Niklas Lindström
旧編集者:
Guus Schreiber
Yves Raimond
Frank Manola
Eric Miller
Brian McBride
フィードバック:
GitHub w3c/rdf-primer (プルリクエスト, 新しい課題, 未解決の課題)
public-rdf-star-wg@w3.org に、件名行を [rdf12-primer] … メッセージのトピック … として送信してください(アーカイブ

概要

この入門書は、読者が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 Concepts and Abstract Data Model 文書 [RDF12-CONCEPTS] を参照してください。

この文書は、RDF & SPARQLワーキング グループによって、 ノートトラックを使用して グループノート草案として公開されました。

グループノート草案は、 W3Cまたはそのメンバーによって承認されたものではありません。

これは草案文書であり、いつでも他の文書によって更新、置換、または廃止される可能性があります。 この文書を進行中の作業以外のものとして引用することは不適切です。

W3C 特許 ポリシーは、 この文書に対していかなるライセンス要件またはコミットメントも課しません。

この文書は、 2025年8月18日版 W3Cプロセス文書に従います。

1. はじめに

Resource Description Framework(RDF)は、 リソースに関する情報を表現するための フレームワークです。 リソースは、文書、人、物理的な物体、抽象的な 概念など、何でもかまいません。

RDFは、Web上の情報を人に表示するだけでなく、 アプリケーションによって処理する必要がある状況を対象としています。 RDFは、この情報を表現するための共通フレームワークを提供し、 意味を失うことなくアプリケーション間で交換できるようにします。 それが共通フレームワークであるため、アプリケーション設計者は、 共通のRDFパーサーおよび処理ツールを利用できます。 異なるアプリケーション間で情報を交換できるということは、 その情報を、もともと作成対象であったアプリケーション以外の アプリケーションでも利用可能にできることを意味します。

特に、RDFはWeb上でデータを公開し、相互にリンクするために使用できます。 たとえば、http://www.example.org/bob#meを取得すると、 Bobに関するデータを提供でき、その中には、Aliceを 彼女のIRI(IRIは「Internationalized Resource Identifier」です。詳細は3.2 IRIを参照してください)によって識別して、Bobが彼女を知っているという事実も含まれます。 その後AliceのIRIを取得すると、彼女についてのさらに多くのデータ、 友人、関心事などに関する他のデータセットへのリンクを含むデータを提供できます。 人または自動化されたプロセスは、そのようなリンクをたどり、これら さまざまなものに関するデータを集約できます。RDFのこのような使用は、しばしば Linked Data [LINKED-DATA] と呼ばれます。

この文書は規範的なものではなく、RDF 1.2の完全な 説明を提供するものでもありません。RDFの規範的な 仕様は、次の文書にあります。

2. なぜRDFを使用するのか?

次は、異なる実践コミュニティを対象とした、RDFのさまざまな使用法を示しています。

3. RDFデータモデル

3.1 トリプル

RDFを使用すると、リソースに関する文を作成できます。 これらの文の形式は単純です。文は常に 次の構造を持ちます:

<subject> <predicate> <object>

RDF文は、2つのリソース間の関係を表します。 主語目的語は、 関連付けられる2つのリソースを表し、 述語はそれらの関係の性質を表します。 この関係は方向性を持つ形(主語から目的語へ)で表現され、 RDFではプロパティと呼ばれます。 RDF文は3つの要素で構成されるため、 トリプルと呼ばれます。

次に、RDFトリプルの例を示します(擬似コードで非形式的に表現):

1: サンプル トリプル(非形式)
<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は4つのトリプルの主語であり、Mona Lisaは 1つのトリプルの主語で、2つのトリプルの目的語です。同じリソースが あるトリプルの主語位置と別のトリプルの目的語位置の両方に現れることができる というこの能力により、トリプル間のつながりを見つけることが可能になり、 これはRDFの力の重要な一部です。

トリプルの集合はグラフと呼ばれます。 トリプルの集合は、連結グラフとして視覚化できます。 グラフはノードと弧から構成されます。トリプルの主語と 目的語がグラフのノードを構成し、 述語が弧を形成します。図 1は、 サンプルトリプルから得られるグラフを示しています。

サンプルトリプルの非形式的なグラフ
1 サンプルトリプルの非形式的なグラフ

このようなグラフがあれば、SPARQL [SPARQL12-CONCEPTS] を使用して、 たとえばLeonardo da Vinciによる絵画に関心を持つ人々を クエリできます。

RDFデータモデルは、この節で 「抽象構文」、すなわち特定の具象構文(テキストファイルに格納された トリプルを表現するために使用される構文)に依存しないデータモデルとして 説明されています。異なる具象構文は、 抽象構文の観点からはまったく同じグラフを 生成することがあります。RDFグラフのセマンティクス [RDF12-SEMANTICS] は、 この抽象構文の観点から定義されています。具象的なRDF構文は、 後の5. RDF グラフの記述で紹介されます。

次の4つの小節では、トリプルに現れる4種類の RDF 用語、 すなわちIRI、リテラル、空白ノード、トリプル項について説明します。

3.2 IRI

IRIという略語は「Internationalized Resource Identifier」の略です。IRIは リソースを識別します。人々がWebアドレスとして使用するURL (Uniform Resource Locators)は、IRIの一形態です。他の形態のIRIは、 リソースの場所やそれにアクセスする方法を暗示することなく、 リソースの識別子を提供します。IRIの概念は、 URI(Uniform Resource Identifier)の一般化であり、 IRI文字列で非ASCII文字を使用できるようにします。IRIは RFC 3987 [RFC3987] で規定されています。

IRIは、トリプルの3つすべての位置に現れることができます。

前述のとおり、IRIは文書、人、物理的な物体、抽象概念などの リソースを識別するために使用されます。 たとえば、DBpediaにおけるLeonardo da VinciのIRIは次のとおりです:

2: Leonardo da VinciのIRI
http://dbpedia.org/resource/Leonardo_da_Vinci

INAによるMona Lisaについての動画で、Europeanaにある 'La Joconde à Washington' と題されたもののIRIは次のとおりです:

3: Mona Lisaについての動画のIRI
http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619

IRIはグローバルな識別子であるため、他の人々はこの IRIを再利用して同じものを識別できます。たとえば、次のIRIは、 人々の間の知人関係を述べるためのRDFプロパティとして 多くの人々に使用されています:

4: foaf:knowsのIRI
http://xmlns.com/foaf/0.1/knows

RDFは、IRIが何を表すかについて不可知です。しかし、 IRIには特定の語彙や慣習によって意味が与えられることがあります。 たとえば、 DBpediahttp://dbpedia.org/resource/Nameという形式のIRIを使用して、 対応するWikipedia記事によって説明されるものを指し示します。

3.3 リテラル

リテラルは、 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アルゴリズムによって右から左と認識される アラビア文字が続くためです。より多くの例は、 記事 Webにおけるbidiおよび 言語メタデータのユースケースにあります。

リテラルは、トリプルの目的語位置にのみ現れることができます。

RDF Concepts文書は、(網羅的ではない) データ型の一覧を提供しています。 これには、string、boolean、integer、decimal、dateなど、XML Schemaで定義される多くのデータ型が含まれます。

3.4 空白ノード

IRIとリテラルは、RDF文を書き下すための基本的な素材を ともに提供します。加えて、グローバル識別子を使用する手間をかけずに リソースについて語れると便利な場合があります。 たとえば、Mona Lisaの絵画の背景に、名前は不明だが ヒノキであることが分かっている木がある、と述べたい場合があります。 絵画のヒノキのような、グローバル識別子を持たないリソースは、RDFでは 空白ノードによって表すことができます。 空白ノードは代数における単純な変数のようなもので、 値が何であるかを述べずに、何らかのものを表します。

空白ノードは、トリプルの主語および目的語 位置に現れることができます。空白ノードは、 IRIで明示的に名前を付けることなくリソースを示すために 使用できます。

空白ノードの例: ヒノキ
2 非形式的な空白ノードの例: Mona Lisaの背景には、 ヒノキのクラスに属する名前のないリソースが描かれている。

3.5 トリプル項

RDFにおける記述の基本単位として、トリプルは2つのリソース間の単純で 方向性のある関係を述べます。ときには、そのような関係の背後にある より詳細な状況を記述する必要があります。概念的には、 文により詳細な何かを注釈付けできます:

Bob is interested in The Mona Lisa is an Interest since 4th of October 1998
3 非形式的なトリプル注釈の例: 独自の特性をもつものとして記述された 文の具体化。

関係を表す弧とともに、その下の紫色の 円はリファイアを表します。これはBobの関心であり、 型と発生日時をもつ、BobがMona Lisaに関心を持っているという事実の 具体的な状況です。

形式的には、この注釈は4つのトリプルで構成されます:

<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> .

2番目のトリプルは具体化トリプルと呼ばれ、 最初のトリプルによって述べられた命題の具体化を表します。 具体化トリプルの目的語はトリプル項です。それは、 主語、述語、目的語という構成要素を通じて識別される、 論理的で抽象的なオブジェクトとしての命題そのものを表します。

トリプル項は目的語位置にのみ現れることができ、 具体化トリプルの特別なreifies述語とともに使用されるべきです。

注記
注記

3.6 複数のグラフ

RDFは、RDF文を複数のグラフにまとめ、そのようなグラフをIRIに 関連付けるための仕組みを提供します。複数のグラフは、 RDF 1.1によってRDFデータモデルに導入されました。実際には、RDFツールの構築者やデータ管理者は、 トリプルの集合の部分集合について語るための仕組みを 必要としていました。複数のグラフは、最初にRDFクエリ 言語であるSPARQLに導入されました。そのためRDFデータモデルは、 SPARQLと密接に整合する複数グラフの概念によって拡張されました。

RDF文書内の複数のグラフは、 RDFデータセットを構成します。 RDFデータセットは、複数の名前付きグラフと、 最大1つの名前のない(「デフォルト」)グラフを持つことができます。

たとえば、 例 1の文は、 2つの名前付きグラフにまとめることができます。 最初のグラフはソーシャルネットワーキング サイトによって提供され、http://example.org/bobによって識別されるものとします:

6: サンプルデータセット内の最初のグラフ
<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は、 グラフ名と呼ばれます。

2番目のグラフはWikidataによって提供され、 https://www.wikidata.org/wiki/Special:EntityData/Q12418によって 識別されるものとします:

7: サンプルデータセット内の2番目のグラフ
<Leonardo da Vinci> <is the creator of> <the Mona Lisa>.
<The video 'La Joconde à Washington'> <is about> <the Mona Lisa>

次は、名前のないグラフの例です。これは、 グラフ名<http://example.org/bob>を 主語とする2つのトリプルを含みます。これらのトリプルは、 このグラフIRIに発行者およびライセンス情報を関連付けます。

8: サンプルデータセット内の名前のないグラフ
<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>を取得することで、そのグラフ内の4つのトリプルに アクセスできるとします。

注記

RDFは、このセマンティックな仮定 (すなわち、グラフ名がRDFデータのソースを表すということ)を データセットの他の読者に伝える標準的な方法を提供していません。 それらの読者は、確立されたコミュニティの慣行などの 帯域外の知識に依存して、データセットを意図された方法で 解釈する必要があります。データセットの可能なセマンティクスは、別のノート [RDF11-DATASETS] で説明されています。

サンプルデータセットの非形式的なグラフ
4 サンプルデータセットの非形式的なグラフ

図 4はサンプルデータセットを示しています。 5.1.3 TriGは、 このデータセットの具象構文の例を 提供します。

4. RDF語彙

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によって提供される主なモデリング 構成要素を、次の表にまとめます:

1 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(クラス)です
注記

構文上のトリプル形式(第2列)は接頭辞記法であり、 これについては 5. RDFグラフの 記述でより詳しく説明します。 構成要素が2つの異なる接頭辞 (rdf:rdfs:)を持つという事実は、やや厄介な 歴史的産物であり、後方互換性のために保持されています。

RDF Schemaの助けを借りて、RDFデータのモデルを構築できます。 簡単な非形式的な例を示します:

9: RDF Schemaトリプル(非形式)
<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>は、それにtype、domain、rangeの値を 割り当てるトリプルの主語であり、また <is a good friend of>プロパティについて何かを記述する トリプルの目的語でもあります。

世界中で使用された最初期のRDF語彙の1つは、 ソーシャルネットワークを記述するための "Friend of a Friend"(FOAF) 語彙でした。RDF語彙のその他の例は次のとおりです:

Dublin Core
Dublin Core Metadata Initiativeは、幅広いリソースを記述するための メタデータ要素集合を維持しています。この語彙は 「creator」「publisher」「title」などのプロパティを提供します。
schema.org
Schema.orgは、主要な検索プロバイダーのグループによって開発された語彙です。 その考え方は、ウェブマスターがこれらの用語を使ってWebページをマークアップし、 検索エンジンがそのページの内容を理解できるようにするというものです。
SKOS
SKOSは、用語集やシソーラスなどの分類体系を Web上で公開するための語彙です。SKOSは2009年以降、 W3C 勧告であり、図書館分野で広く使用されています。米国議会図書館は、 その件名標目をSKOS 語彙として公開しました。

語彙の価値は再利用から生まれます。語彙IRIが他者によって 再利用されるほど、そのIRIを使用することの価値が高まります (いわゆるネットワーク効果)。つまり、新しいIRIを発明する代わりに、 他者のIRIを再利用することを優先すべきです。

RDF Schema構成要素のセマンティクスの正式な仕様については、 RDF Semantics文書 [RDF12-SEMANTICS] を参照してください。 RDFデータのより包括的な意味モデリングに関心のあるユーザーは、OWL [OWL2-OVERVIEW] の使用を 検討できます。 OWLはRDF語彙であるため、 RDF Schemaと組み合わせて使用できます。

5. RDFグラフの記述

RDFグラフを書き下すために、いくつかの異なる直列化形式が存在します。 しかし、同じグラフを書き下す異なる方法は、 まったく同じトリプルを生じさせるため、論理的に等価です。

この節では、注釈付きの例を通じて、次の形式を簡単に紹介します:

  1. RDF言語のTurtleファミリー (N-TriplesTurtleTriGおよび N-Quads);
  2. JSON-LD(JSONベースのRDF構文);
  3. RDFa(HTMLおよびXMLへの埋め込み用);
  4. RDF/XML(RDFのXML構文)。
注記

読み方のヒント: 第5.1節(Turtle など)では、 RDFを直列化するためのすべての基本概念を説明します。 JSON-LD、RDFa、RDF/XMLに関する節は、その特定のRDFの使い方に 関心がある場合にのみ読むことをお勧めします。

5.1 RDF言語のTurtleファミリー

この小節では、密接に関連する4つのRDF言語を 紹介します。まずN-Triplesから始めます。これは RDFトリプルを書き下すための基本構文を提供するためです。 Turtle構文は、この基本構文をさまざまな形式の構文糖で拡張し、 可読性を向上させます。続いて、複数のグラフをエンコードするために TurtleおよびN-Triplesをそれぞれ拡張した TriGとN-Quadsについて説明します。これら4つを合わせて 「RDF言語のTurtleファミリー」と呼びます。

5.1.1 N-Triples

N-Triples [RDF12-N-TRIPLES] は、RDFグラフを直列化するための 単純な行ベースのプレーンテキスト形式を提供します。 図 1の非形式的なグラフは、 次のようにN-Triplesで表せます:

10: 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> .

各行は1つのトリプルを表します。完全なIRIは山括弧 (<>)で囲まれます。行末のピリオドは トリプルの終わりを示します。3行目では、リテラルの例、この場合は日付を確認できます。 データ型は^^区切り文字を通じてリテラルに付加されます。日付の 表現は、XML Schemaデータ型 dateの慣習に従います。

文字列リテラルは非常に一般的であるため、N-Triplesでは、 文字列リテラルを書くときにユーザーがデータ型を省略できます。 したがって、5行目の"Mona Lisa""Mona Lisa"^^xsd:stringと等価です。 言語タグ付き文字列の場合、タグは文字列の直後に、 @記号で区切って現れます。例: "La Joconde"@fr(Mona Lisaのフランス語名)。

注記

技術的な理由により、言語タグ付き 文字列のデータ型はxsd:stringではなく rdf:langStringです。 言語タグ付き文字列のデータ型が明示的に指定されることはありません。

下の図は、この例から得られるトリプルを示しています:

サンプルトリプルのグラフ
5 N-Triplesの例から得られるRDFグラフ

N-Triplesの例における7行は、上の図の7本の弧に対応することに注意してください。

N-Triplesは、大量のRDFの交換や、行指向のテキスト処理 ツールによる大規模なRDFグラフの処理によく使用されます。

5.1.2 Turtle

Turtle [RDF12-TURTLE] は、N-Triplesの拡張です。 Turtleは、基本的なN-Triples構文に加えて、 名前空間接頭辞、リスト、データ型付きリテラルの省略記法など、 いくつかの構文上のショートカットを導入しています。 Turtleは、書きやすさ、解析しやすさ、可読性の間の トレードオフを提供します。 図 5に示したグラフは、 Turtleでは次のように表せます:

11: 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に関する人間の 直感に合うよう意図されています。

5.1.2.1 言語と方向を伴う文字列の表現

次は、言語タグ付き文字列(7行目)と方向付き 言語タグ付き文字列(8行目)を使用して、英語と アラビア語の両方のタイトルを持つ本を記述しています:

12: Turtle
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 .
5.1.2.2 空白ノードの 表現

以下では、先ほどのヒノキの例を使用して、空白ノードを書き下すための 2つの構文上の変種を示します。

13: 空白ノード
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のような構文を使用する必要のない、 空白ノードの代替記法もあります:

14: 空白ノード(代替記法)
@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> ] .

ここでは、角括弧が空白ノードを表します。角括弧内の 述語-目的語ペアは、その空白ノードを主語とするトリプルとして 解釈されます。「#」で始まる行は コメントを表します。

5.1.2.3 具体化トリプルの表現

Turtleは、トリプルを具体化し注釈付けするための簡潔な記法を 提供します。これにより、トリプル項に関する節の例、 すなわちBobがMona Lisaに関心を持っているという単純な事実に、 より具体的な状況を注釈付けした例をエンコードできます。

名前のない注釈を使用して、その関心自体がいつ始まったかを 述べることができます:

15: 名前のない注釈
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がかつてその単純な主張を行ったことも記述できます。ここでは、 それを真であると含意せずに参照する、具体化トリプルの構文を 使用します:

16: 名前のないリファイア
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> .

前の2つの記述は、1つの文に対する2つの注釈として 組み合わせることもできます。ここでは、リファイアをIRIで 識別しています:

17: 名前付き注釈
<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] を参照してください。

5.1.3 TriG

Turtleの構文は、単一のグラフを指定することだけをサポートし、 それらに「名前」を付ける手段はありません。TriG [RDF12-TRIG] は Turtleの拡張であり、RDFデータセットの形式で 複数のグラフを指定できるようにします。

注記

RDF 1.2では、合法的なTurtle文書はすべて合法的なTriG 文書です。1つの言語と見ることもできます。TurtleとTriGという名称は、 歴史的理由により依然として存在しています。

この例の複数グラフ版は、 TriGでは次のように指定できます:

18: 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データセットには2つの名前付きグラフが含まれます。8行目と17行目は これら2つのグラフの名前を列挙しています。名前付きグラフ内のトリプルは、 対応する波括弧の間(9行目と15行目、18行目と 25行目)に置かれます。任意で、グラフ名の前にキーワード GRAPHを置くことができます。これは可読性を向上させる場合がありますが、主に SPARQL Update [SPARQL12-UPDATE] との整合性のために 導入されています。

トリプルおよび先頭のディレクティブの構文は、 Turtle構文に準拠しています。

27~29行目で指定された2つのトリプルは、どの名前付き グラフにも属しません。これらは合わせて、このRDFデータセットの 名前のない(「デフォルト」)グラフを構成します。

下の図は、この例から得られるトリプルを示しています。

TriGの例から得られるトリプル
6 TriGの例から得られるトリプル

5.1.4 N-Quads

N-Quads [RDF12-N-QUADS] は、RDFデータセットの交換を可能にするための N-Triplesの単純な拡張です。N-Quadsでは、1行に4番目の要素を追加し、 その行で記述されたトリプルのグラフIRIを捕捉できます。 上のTriG例のN-Quads版は次のとおりです:

19: 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の例の9行は、 図 6の9本の弧に対応します。1~7行目はクワッドを表し、最後の 要素がグラフIRIを構成します。グラフIRIより前のクワッド部分は、 N-Triplesの構文規則に従って、 文の主語、述語、目的語を指定します。8行目と9行目は、名前のない(デフォルト) グラフ内の文を表し、4番目の要素を欠くため通常のトリプルを構成します。

N-Triplesと同様に、N-Quadsは通常、大規模なRDFデータセットの交換や、 行指向のテキスト処理ツールによるRDFの処理に使用されます。

5.2 JSON-LD

JSON-LD [JSON-LD11] は、 RDFグラフおよびデータセットのためのJSON構文を提供します。 JSON-LDは、最小限の変更でJSON文書をRDFへ変換するために使用できます。 JSON-LDは、JSONオブジェクトに対する普遍的な識別子、 JSON文書がWeb上の別の場所にある他のJSON文書で記述された オブジェクトを参照できる仕組み、ならびにデータ型および言語の 取り扱いを提供します。JSON-LDはまた、 @graph キーワードを使用することで、RDFデータセットを直列化する方法も 提供します。

次のJSON-LD例は、図 5のグラフをエンコードしています:

20: JSON-LD
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リソースに対応します。この例では、 記述されている主なリソースは、 @idキーワードの使用を通じて3行目で指定されている http://example.org/bob#meです。 @idキーワードは、JSON-LD文書内でキーとして使用されると、 現在のJSONオブジェクトに対応するリソースを識別するIRIを指します。 4行目ではこのリソースの型を、5行目では生年月日を、 6行目では友人の1人を記述します。7行目から12行目では、 その関心事の1つであるMona Lisaの絵画を記述します。

この絵画を記述するために、7行目で 新しいJSONオブジェクトを作成し、8行目でそれをWikidata内のMona Lisa IRIに 関連付けます。その後、9行目から11行目で、 その絵画のさまざまなプロパティを記述します。

この例で使用されるJSON-LDコンテキストを以下に示します。

21: 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行目は、 Personinterestknowsを、 3行目で定義されたFOAF名前空間内の型およびプロパティに マッピングする方法を指定します。また8行目では、knows キーが、@typeおよび@idキーワードの使用を 通じて、IRIとして解釈される値を持つことも指定しています。

10行目から12行目では、birthdateを schema.orgプロパティIRIにマッピングし、その値を xsd:dateデータ型にマッピングできることを指定します。

14行目から23行目では、 titlecreatorsubject_ofを Dublin CoreプロパティIRIにマッピングする方法を記述します。21行目の @reverseキーワードは、このコンテキストを使用する JSON-LD文書内で"subject_of": "x"に遭遇した場合は常に、 それを、主語がx IRIであり、プロパティが dcterms:subjectであり、目的語が親JSONオブジェクトに対応する リソースであるRDFトリプルにマッピングすべきことを指定するために使用されます。

5.3 RDFa

RDFa [RDFA-PRIMER] は、 RDFデータをHTMLおよびXML文書内に埋め込むために使用できるRDF構文です。 これにより、たとえば検索エンジンがWebをクロールする際に このデータを集約し、検索結果を充実させるために使用できます (例: schema.org およびリッチ スニペット)。

下のHTML例は、図 5に描かれた RDFグラフをエンコードしています:

22: RDFa
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トリプルを指定できるようにするための 4つの特別なRDFa属性、 resourcepropertytypeofprefixが含まれています。

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行目では、リテラル値を目的語とするトリプルが見られます。 property属性は、ここではHTMLの time要素に指定されています。HTMLでは、time要素の内容が 何らかの有効な time値であることを要求します。 time要素に組み込まれたHTMLセマンティクスを使用することで、 RDFaは明示的なデータ型宣言なしに、 その値をxsd:dateとして解釈できます。

10~11行目では、トリプルの目的語を指定するためにも resource属性が使用されているのが見られます。 この方法は、目的語がIRIであり、そのIRI自体がHTMLコンテンツの一部 (href属性など)ではない場合に使用されます。16行目には、 リテラル(「Mona Lisa」)の2つ目の例があり、ここでは span属性の内容として定義されています。RDFaがリテラルのデータ型を 推論できない場合、データ型はxsd:stringであると仮定します。

RDF文を文書のHTMLコンテンツの一部として定義することが常に 可能であるとは限りません。その場合、内容をレンダリングしないHTML 構成要素を使用してトリプルを指定できます。その例は 22~23行目にあります。23行目のHTML link要素は、 ここではEuropeana動画(22行目)の主題が何であるかを指定するために 使用されています。

この例におけるRDFaの使用は、RDFa Lite [RDFA-LITE] に限定されています。 RDFaの詳細については、RDFa Primer [RDFA-PRIMER] を参照してください。

5.4 RDF/XML

RDF/XML [RDF12-XML] は、RDFグラフのためのXML構文を 提供します。RDFが1990年代後半に最初に開発されたとき、これは唯一の構文であり、 いまだにこの構文を「RDF」と呼ぶ人もいます。2001年には、 「N3」と呼ばれるTurtleの前身が提案され、徐々にここに挙げた他の 言語が採用され標準化されてきました。

下のRDF/XML例は、 図 5に描かれたRDFグラフをエンコードしています:

23: RDF/XML
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:Descriptionhttp://www.w3.org/1999/02/22-rdf-syntax-ns#Descriptionの略)は、 about属性によって指定されたIRIを主語とする トリプルの集合を定義するために使用されます。最初のdescription ブロック(7~12行目)は4つのサブ要素を持ちます。サブ要素の名前は、 RDFプロパティを表すIRIです。例: rdf:type(8行目)。ここでは、各 サブ要素が1つのトリプルを表します。 トリプルの目的語も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要素名および属性名にしか使用できないためです。

6. RDFグラフのセマンティクス

RDFを使用するうえでの包括的な目標は、複数のソースから 有用な情報を自動的にマージして、それでもなお一貫性があり有用な より大きな集合を形成できるようにすることです。このマージの 出発点として、すべての情報は、上で説明したように、 主語-述語-目的語のトリプルという同じ単純なスタイルで伝えられます。 しかし、情報の一貫性を保つには、標準構文だけでは不十分であり、 これらのトリプルのセマンティクスについての合意も必要です。

入門書のこの時点までに、読者はRDFのセマンティクスについて 直感的な理解を得ている可能性が高いでしょう:

  1. 主語、述語、目的語の名前付けに使用されるIRIはスコープが「グローバル」であり、 使用されるたびに同じものを名前付けします。
  2. 各トリプルは、述語関係が実際に主語と目的語の間に存在するとき、 かつそのときに限り「真」です。
  3. RDFグラフは、その中のすべてのトリプルが「真」であるとき、 かつそのときに限り「真」です。

これらの概念およびその他の概念は、RDF Semantics文書 [RDF12-SEMANTICS] で数学的な精密さをもって規定されています。

RDFがこのような宣言的セマンティクスを持つ利点の1つは、 システムが論理的な推論を行えることです。つまり、真であると受け入れる 入力トリプルの特定の集合が与えられた場合、システムは状況によっては、 他のトリプルも論理的に真でなければならないと推論できます。 最初のトリプル集合が追加のトリプルを「含意する」といいます。 「推論器」と呼ばれるこれらのシステムは、与えられた入力トリプルが 互いに矛盾していることを推論できる場合もあります。

RDFは柔軟であり、人々が新しい概念を使用したいときに 新しい語彙を作成できるため、行いたい推論には多くの 異なる種類があります。特定の種類の推論が多くの異なる アプリケーションで有用であると思われる場合、それは含意レジームとして文書化できます。 RDF Semanticsでは、いくつかの含意レジームが規定されています。 他のいくつかの含意レジームの技術的な説明と、それらをSPARQLで 使用する方法については、[SPARQL12-ENTAILMENT] を参照してください。 一部の 含意レジームは実装がかなり容易で、推論を 迅速に行えますが、効率的に実装するには高度な 技術を必要とするものもあることに注意してください。

含意の例として、次の2つの文を考えます:

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 .

つまり、elephantはクラス(Jumboをサンプル インスタンスとして持つ)であると同時に、インスタンス (すなわち動物種のクラスのインスタンス)でもあり得ます。

この節の例は、RDF Semanticsが何をもたらすかについて 読者にある程度の感触を与えることだけを目的としています。完全な説明については [RDF12-SEMANTICS] を参照してください。

7. RDFデータ

RDFを使用すると、任意のソースからのトリプルを1つのグラフに 結合し、それを合法的なRDFとして処理できます。大量のRDFデータが Linked Data [LINKED-DATA] として利用可能です。データセットはRDFを使用してWeb上で公開され、 相互リンクされており、その多くは SPARQL [SPARQL12-CONCEPTS] を通じたクエリ機能を提供しています。 上の例で使用されたそのようなデータセットの例には、次のものがあります:

Linked Dataとして利用可能なデータセットの一覧は、 datahub.ioで維持されています。

RDFデータソース間のリンクを記録するために、 多くの語彙用語が一般的になっています。その一例が、 OWL語彙によって提供されるsameAsプロパティです。この プロパティは、2つのIRIが実際には 同じリソースを指していることを示すために使用できます。これは、異なる公開者が 同じものを示すために異なる識別子を使用する場合があるため有用です。 たとえば、VIAF(上記参照)にもLeonardo da Vinciを示すIRIがあります。owl:sameAsの助けを借りて、この 情報を記録できます:

このようなリンクは、RDFデータ処理ソフトウェアによって、 たとえば同じリソースを指すIRIのRDFデータを マージまたは比較するために利用できます。

8. 詳細情報

これでRDFへの簡単な導入を終えます。より詳細な情報については、 参考文献を参照してください。また、 W3C Linked Dataページも見てみるとよいでしょう。

A. 謝辞

A.1 RDF 1.1への謝辞

この節は非規範的です。

Antoine Isaacは、さまざまな構文形式を含む多くの例を提供しました。 Pierre-Antoine Champinは、JSON-LDの例の1つを提供しました。 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年のPrimer [RDF-PRIMER] からの文がいくつか含まれています。それ以外の部分については、RDF 1.1 Primerは完全に 新しい文書です。

A.2 RDF 1.2への謝辞

この節は非規範的です。

編集者に加えて、次の人々がこの仕様に貢献しました: Andy Seaborne, Dominik Tomaszuk, Gregg Kellogg, and 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が含まれていました。

編集者注

タスクフォースのメンバーを認識するか? 貢献者の一覧を見つけるのは容易ではありません。

B. RDF 1.0とRDF 1.1の間の変更点

C. RDF 1.1とRDF 1.2の間の変更点

この節は非規範的です。

D. 索引

D.1 この仕様で定義される 用語

D.2 参照により定義される用語

E. 参考文献

E.1 参考文献

[I18N-Glossary]
Internationalization Glossary. Richard Ishida; Addison Phillips. W3C. 2024年10月17日. W3Cワーキンググループノート. URL: https://www.w3.org/TR/i18n-glossary/
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020年7月16日. W3C勧告. URL: https://www.w3.org/TR/json-ld11/
[LINKED-DATA]
Linked Data Design Issues. Tim Berners-Lee. W3C. 2006年7月27日. W3C内部文書. URL: https://www.w3.org/DesignIssues/LinkedData.html
[OWL2-OVERVIEW]
OWL 2 Web Ontology Language Document Overview (Second Edition). W3C OWL Working Group. W3C. 2012年12月11日. W3C 勧告. URL: https://www.w3.org/TR/owl2-overview/
[RDF-PRIMER]
RDF Primer. Frank Manola; Eric Miller. W3C. 2004年2月10日. W3C勧告. URL: https://www.w3.org/TR/rdf-primer/
[RDF11-DATASETS]
RDF 1.1: On Semantics of RDF Datasets. Antoine Zimmermann. W3C. 2014年2月25日. W3Cワーキンググループノート. URL: https://www.w3.org/TR/rdf11-datasets/
[RDF12-CONCEPTS]
RDF 1.2 Concepts and Abstract Data Model. Andy Seaborne; Gregg Kellogg; Olaf Hartig; Pierre-Antoine Champin. W3C. 2026年4月7日. W3C候補勧告. URL: https://www.w3.org/TR/rdf12-concepts/
[RDF12-INTEROP]
RDF 1.2 Interoperability. Pierre-Antoine Champin. W3C. W3C編集者草案. URL: https://w3c.github.io/rdf-interop/spec/
[RDF12-N-QUADS]
RDF 1.2 N-Quads. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026年3月28日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-n-quads/
[RDF12-N-TRIPLES]
RDF 1.2 N-Triples. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026年4月2日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-n-triples/
[RDF12-NEW]
What’s New in RDF 1.2. The W3C RDF & SPARQL Working Group. W3C. W3C編集者草案. URL: https://w3c.github.io/rdf-new/spec/
[RDF12-SCHEMA]
RDF 1.2 Schema. Dominik Tomaszuk. W3C. 2026年3月28日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-schema/
[RDF12-SEMANTICS]
RDF 1.2 Semantics. Peter Patel-Schneider; Enrico Franconi; Dörthe Arndt. W3C. 2026年4月7日. W3C候補勧告. URL: https://www.w3.org/TR/rdf12-semantics/
[RDF12-TRIG]
RDF 1.2 TriG. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026年4月16日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-trig/
[RDF12-TURTLE]
RDF 1.2 Turtle. Gregg Kellogg; Dominik Tomaszuk. W3C. 2026年4月7日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-turtle/
[RDF12-XML]
RDF 1.2 XML Syntax. Gregg Kellogg; Jerven Bolleman. W3C. 2026年4月9日. W3C作業草案. URL: https://www.w3.org/TR/rdf12-xml/
[RDFA-LITE]
RDFa Lite 1.1 - Second Edition. Manu Sporny. W3C. 2015年3月17日. W3C勧告. URL: https://www.w3.org/TR/rdfa-lite/
[RDFA-PRIMER]
RDFa 1.1 Primer - Third Edition. Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. W3C. 2015年3月17日. W3Cワーキンググループノート. URL: https://www.w3.org/TR/rdfa-primer/
[RFC3987]
Internationalized Resource Identifiers (IRIs). M. Duerst; M. Suignard. IETF. 2005年1月. 提案標準. URL: https://www.rfc-editor.org/rfc/rfc3987
[SPARQL12-CONCEPTS]
SPARQL 1.2 Concepts. The W3C RDF & SPARQL Working Group. W3C. W3C編集者草案. URL: https://w3c.github.io/sparql-concepts/spec/
[SPARQL12-ENTAILMENT]
SPARQL 1.2 Entailment Regimes. Peter Patel-Schneider. W3C. 2026年4月9日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-entailment/
[SPARQL12-FEDERATED-QUERY]
SPARQL 1.2 Federated Query. Ruben Taelman; Gregory Williams. W3C. 2026年1月26日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-federated-query/
[SPARQL12-GRAPH-STORE-PROTOCOL]
SPARQL 1.2 Graph Store Protocol. Andy Seaborne; Thomas Pellissier Tanon. W3C. 2024年12月19日. W3C 作業草案. URL: https://www.w3.org/TR/sparql12-graph-store-protocol/
[SPARQL12-NEW]
What’s New in SPARQL 1.2. The W3C RDF & SPARQL Working Group. W3C. W3C編集者草案. URL: https://w3c.github.io/sparql-new/spec/
[SPARQL12-PROTOCOL]
SPARQL 1.2 Protocol. Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2025年8月14日. W3C作業 草案. URL: https://www.w3.org/TR/sparql12-protocol/
[SPARQL12-QUERY]
SPARQL 1.2 Query Language. Olaf Hartig; Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026年4月16日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-query/
[SPARQL12-RESULTS-CSV-TSV]
SPARQL 1.2 Query Results CSV and TSV Formats. Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026年3月28日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-results-csv-tsv/
[SPARQL12-RESULTS-JSON]
SPARQL 1.2 Query Results JSON Format. Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026年3月28日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-results-json/
[SPARQL12-RESULTS-XML]
SPARQL 1.2 Query Results XML Format. Ruben Taelman; Dominik Tomaszuk; Thomas Pellissier Tanon. W3C. 2024年12月27日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-results-xml/
[SPARQL12-SERVICE-DESCRIPTION]
SPARQL 1.2 Service Description. Ruben Taelman; Gregory Williams. W3C. 2026年3月19日. W3C作業 草案. URL: https://www.w3.org/TR/sparql12-service-description/
[SPARQL12-UPDATE]
SPARQL 1.2 Update. Ruben Taelman; Andy Seaborne; Thomas Pellissier Tanon. W3C. 2025年8月14日. W3C作業草案. URL: https://www.w3.org/TR/sparql12-update/
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 2012年4月5日. W3C勧告. URL: https://www.w3.org/TR/xmlschema11-2/