CINXE.COM
RDF 1.1入門
<!DOCTYPE html> <html lang="ja" typeof="bibo:Document " about="" property="dcterms:language" content="ja" prefix="bibo: http://purl.org/ontology/bibo/ w3p: http://www.w3.org/2001/02pd/rec54#" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>RDF 1.1入門</title> <style type="text/css"> figure { text-align: center; } img.graph { width: 66%; } table td, table th { border: 1px solid #ddd; padding: 0.2em 0.5em; } .linenum {color: grey} </style> <style>/***************************************************************** * ReSpec 3 CSS * Robin Berjon - http://berjon.com/ *****************************************************************/ /* --- INLINES --- */ em.rfc2119 { text-transform: lowercase; font-variant: small-caps; font-style: normal; color: #900; } h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym, h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr { border: none; } dfn { font-weight: bold; } a.internalDFN { color: inherit; border-bottom: 1px solid #99c; text-decoration: none; } a.externalDFN { color: inherit; border-bottom: 1px dotted #ccc; text-decoration: none; } a.bibref { text-decoration: none; } cite .bibref { font-style: normal; } code { color: #ff4500; } /* --- TOC --- */ .toc a, .tof a { text-decoration: none; } a .secno, a .figno { color: #000; } ul.tof, ol.tof { list-style: none outside none; } .caption { margin-top: 0.5em; font-style: italic; } /* --- TABLE --- */ table.simple { border-spacing: 0; border-collapse: collapse; border-bottom: 3px solid #005a9c; } .simple th { background: #005a9c; color: #fff; padding: 3px 5px; text-align: left; } .simple th[scope="row"] { background: inherit; color: inherit; border-top: 1px solid #ddd; } .simple td { padding: 3px 10px; border-top: 1px solid #ddd; } .simple tr:nth-child(even) { background: #f0f6ff; } /* --- DL --- */ .section dd > p:first-child { margin-top: 0; } .section dd > p:last-child { margin-bottom: 0; } .section dd { margin-bottom: 1em; } .section dl.attrs dd, .section dl.eldef dd { margin-bottom: 0; } @media print { .removeOnSave { display: none; } } </style><style>/* --- EXAMPLES --- */ div.example-title { min-width: 7.5em; color: #b9ab2d; } div.example-title span { text-transform: uppercase; } aside.example, div.example, div.illegal-example { padding: 0.5em; margin: 1em 0; position: relative; clear: both; } div.illegal-example { color: red } div.illegal-example p { color: black } aside.example, div.example { padding: .5em; border-left-width: .5em; border-left-style: solid; border-color: #e0cb52; background: #fcfaee; } aside.example div.example { border-left-width: .1em; border-color: #999; background: #fff; } aside.example div.example div.example-title { color: #999; } </style><style>/* --- ISSUES/NOTES --- */ div.issue-title, div.note-title { padding-right: 1em; min-width: 7.5em; color: #b9ab2d; } div.issue-title { color: #e05252; } div.note-title { color: #2b2; } div.issue-title span, div.note-title span { text-transform: uppercase; } div.note, div.issue { margin-top: 1em; margin-bottom: 1em; } .note > p:first-child, .issue > p:first-child { margin-top: 0 } .issue, .note { padding: .5em; border-left-width: .5em; border-left-style: solid; } div.issue, div.note { padding: 1em 1.2em 0.5em; margin: 1em 0; position: relative; clear: both; } span.note, span.issue { padding: .1em .5em .15em; } .issue { border-color: #e05252; background: #fbe9e9; } .note { border-color: #52e052; background: #e9fbe9; } </style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-WG-NOTE" /> <!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--> </head> <body class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader"> <p><a href="../../index.html"><img src="../../images/logo.gif" alt="CyberLibrarian" width="105" height="19" /></a></p> <p>【注意】 このドキュメントは、W3Cの<a href="http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/">RDF 1.1 Primer W3C Working Group Note 25 February 2014</a>の和訳です。<br /> このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、<a href="../../mail.html">訳者</a>までお願い致します。</p> <p>First Update: 2014年3月14日 | Last Update: 2014年3月18日</p> <hr /> <p><a href="http://www.w3.org/"><img width="72" height="48" alt="W3C" src="https://www.w3.org/Icons/w3c_home" /></a></p> <h1 property="dcterms:title" id="title" class="title p-name">RDF 1.1入門</h1> <h2 content="2014-02-24T23:00:00.000Z" datatype="xsd:dateTime" property="dcterms:issued" id="w3c-working-group-note-25-february-2014"><abbr title="World Wide Web Consortium">W3C</abbr>ワーキンググループ・ノート <time datetime="2014-02-25" class="dt-published">2014年2月25日</time></h2> <dl> <dt>本バージョン:</dt> <dd><a href="http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/" class="u-url">http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/</a></dd> <dt>最新公開バージョン:</dt> <dd><a href="http://www.w3.org/TR/rdf11-primer/">http://www.w3.org/TR/rdf11-primer/</a></dd> <dt>旧バージョン:</dt> <dd><a href="http://www.w3.org/TR/2013/WD-rdf11-primer-20131217/" rel="dcterms:replaces">http://www.w3.org/TR/2013/WD-rdf11-primer-20131217/</a></dd> <dt>最新勧告:</dt> <dd><a href="http://www.w3.org/TR/rdf-primer">http://www.w3.org/TR/rdf-primer</a></dd> <dt>編集者:</dt> <dd inlist="" rel="bibo:editor" class="p-author h-card vcard"><span typeof="foaf:Person"><a href="http://www.cs.vu.nl/~guus/" content="Guus Schreiber" property="foaf:name" rel="foaf:homepage" class="u-url url p-name fn">Guus Schreiber</a>, <a href="http://www.vu.nl/" class="p-org org h-org h-card" rel="foaf:workplaceHomepage">VU University Amsterdam</a></span></dd> <dd inlist="" rel="bibo:editor" class="p-author h-card vcard"><span typeof="foaf:Person"><a href="http://raimond.me.uk/" content="Yves Raimond" property="foaf:name" rel="foaf:homepage" class="u-url url p-name fn">Yves Raimond</a>, <a href="http://www.bbc.co.uk" class="p-org org h-org h-card" rel="foaf:workplaceHomepage">BBC</a></span> </dd> <dt>旧編集者:</dt> <dd>Frank Manola</dd> <dd>Eric Miller</dd> <dd>Brian McBride</dd> </dl> <p>公開以後に報告されたエラーや問題がないか<a href="http://www.w3.org/2014/rdf1.1-errata"><strong>正誤表</strong></a>を確認してください。</p> <p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2003-2014 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved. <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p> <hr /> </div> <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h2 aria-level="1" role="heading" id="h2_abstract">要約</h2> <p>この入門は、RDFを効果的に利用するために必要な基礎知識を読者に提供することを目指しています。RDFの基本概念を紹介し、RDF利用の具体例を示します。3~5項は、RDFの重要要素に対する必要最低限の入門として使用できます。RDF 1.1とRDF 1.0(2004年のバージョン)の間の変更点については、「RDF 1.1の新機能」[<cite><a class="bibref" href="#bib-RDF11-NEW">RDF11-NEW</a></cite>]という別のドキュメントで要約しています。</p> </section><section class="introductory" id="sotd" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h2 aria-level="1" role="heading" id="h2_sotd">このドキュメントのステータス</h2> <p><em>この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行の<abbr title="World Wide Web Consortium">W3C</abbr>の刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/の<a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr>技術報告インデックス</a>にあります。</em></p> <p>このドキュメントは、RDF 1.1ドキュメント群の一部です。それは、RDFの重要概念に関する参考情報となるメモです。RDF 1.1の規範的な仕様については、読者はRDF 1.1概念および抽象構文ドキュメント[<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]を参照してください。</p> <p>このドキュメントは、<a href="http://www.w3.org/2011/rdf-wg/">RDFワーキンググループ</a>によってワーキンググループ・ノートとして発表されました。このドキュメントに関してコメントを行いたい場合には、<a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>(<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">購読</a>、<a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">アーカイブ</a>)にお送りください。どのようなコメントでも歓迎します。</p> <p>ワーキンググループ・ノートとしての公開は、<abbr title="World Wide Web Consortium">W3C</abbr>メンバーによる承認を意味するものではありません。これは草案ドキュメントであるため、他のドキュメントによって、随時更新されたり、置き換えられたり、廃止されることもありえます。このドキュメントを「作業中」以外のものとして引用することは適当ではありません。</p> <p>このドキュメントは、<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/" rel="w3p:patentRules" about="" id="sotd_patent">2004年2月5日の<abbr title="World Wide Web Consortium">W3C</abbr>特許方針</a>の下で活動しているグループによって作成されました。<abbr title="World Wide Web Consortium">W3C</abbr>は、このグループの成果物に関連する<a rel="disclosure" href="http://www.w3.org/2004/01/pp-impl/46168/status">あらゆる特許の開示の公開リスト</a>を維持し、このページには特許の開示に関する指示も含まれています。<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">不可欠な請求権</a>(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure"><abbr title="World Wide Web Consortium">W3C</abbr>特許方針の6項</a>に従って情報を開示しなければなりません。</p> </section><section id="toc"> <h2 class="introductory" aria-level="1" role="heading" id="h2_toc">目次</h2> <ul class="toc" role="directory" id="respecContents"> <li class="tocline"><a href="#section-Introduction" class="tocxref"><span class="secno">1. </span>はじめに</a></li> <li class="tocline"><a href="#section-use-cases" class="tocxref"><span class="secno">2. </span>なぜRDFを使用する?</a></li> <li class="tocline"><a href="#section-data-model" class="tocxref"><span class="secno">3. </span>RDFデータ・モデル</a> <ul class="toc"> <li class="tocline"><a href="#section-triple" class="tocxref"><span class="secno">3.1 </span>トリプル</a></li> <li class="tocline"><a href="#section-IRI" class="tocxref"><span class="secno">3.2 </span>IRI</a></li> <li class="tocline"><a href="#section-literal" class="tocxref"><span class="secno">3.3 </span>リテラル</a></li> <li class="tocline"><a href="#section-blank-node" class="tocxref"><span class="secno">3.4 </span>空白ノード</a></li> <li class="tocline"><a href="#section-multiple-graphs" class="tocxref"><span class="secno">3.5 </span>複数のグラフ</a></li> </ul> </li> <li class="tocline"><a href="#section-vocabulary" class="tocxref"><span class="secno">4. </span>RDF語彙</a></li> <li class="tocline"><a href="#section-graph-syntax" class="tocxref"><span class="secno">5. </span>RDFグラフの記述</a> <ul class="toc"> <li class="tocline"><a href="#section-turtle-family" class="tocxref"><span class="secno">5.1 </span>RDF言語のTurtleファミリー</a> <ul class="toc"> <li class="tocline"><a href="#section-n-triples" class="tocxref"><span class="secno">5.1.1 </span>N-Triples</a></li> <li class="tocline"><a href="#section-turtle" class="tocxref"><span class="secno">5.1.2 </span>Turtle</a></li> <li class="tocline"><a href="#section-trig" class="tocxref"><span class="secno">5.1.3 </span>TriG</a></li> <li class="tocline"><a href="#section-n-quads" class="tocxref"><span class="secno">5.1.4 </span>N-Quads</a></li> </ul> </li> <li class="tocline"><a href="#section-json-ld" class="tocxref"><span class="secno">5.2 </span>JSON-LD</a></li> <li class="tocline"><a href="#section-rdfa" class="tocxref"><span class="secno">5.3 </span>RDFa</a></li> <li class="tocline"><a href="#section-rdfxml" class="tocxref"><span class="secno">5.4 </span>RDF/XML</a></li> </ul> </li> <li class="tocline"><a href="#section-semantics" class="tocxref"><span class="secno">6. </span>RDFグラフのセマンティクス</a></li> <li class="tocline"><a href="#section-data" class="tocxref"><span class="secno">7. </span>RDFデータ</a></li> <li class="tocline"><a href="#section-conclusion" class="tocxref"><span class="secno">8. </span>さらなる情報</a></li> <li class="tocline"><a href="#section-Acknowledgments" class="tocxref"><span class="secno">A. </span>謝辞</a></li> <li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>参考文献</a><ul class="toc"> <li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.1 </span>参考情報の参考文献</a></li> </ul> </li> </ul> </section> <section id="section-Introduction" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-Introduction"><span class="secno">1. </span>はじめに</h2> <p>RDF(Resource Description Framework)は、<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#resources-and-statements">資源</a>に関する情報を表わすための枠組みです。資源は、ドキュメント、人間、物体、抽象的な概念を含む何ものでもありえます。</p> <p>RDFは、人間に表示するだけではなく、アプリケーションがウェブ上の情報を処理する必要のある状況を目的としています。RDFは、この情報を表現するための共通の枠組みを提供するため、意味を損なわずにアプリケーション間で情報交換が行えます。共通の枠組みであるため、アプリケーションの設計者は共通のRDFパーサや処理ツールを有効利用できます。異なるアプリケーション間で情報交換できるということは、情報が元々作成された以外のアプリケーションでその情報を利用できることを意味します。</p> <p>RDFはとりわけ、ウェブ上のデータを公開し連結するために使用できます。例えば、<code>http://www.example.org/bob#me</code>を検索すると、ボブに関するデータを提供できます。ボブはアリスのIRI(IRIは「International Resource Identifier」。<a href="#section-IRI">3.2項</a>を参照)で識別されるため、これには、ボブが彼女のことを知っているという事実が含まれます。次に、アリスのIRIを検索すると、彼女の友達や関心などに関するその他のデータセットへのリンクを含む、彼女に関するより多くのデータを提供できます。その後、人または自動プロセスが、そのようなリンクをたどって、これらの様々な事物に関するデータを集約できます。RDFのこのような利用は、しばしばリンクト・データ[<cite><a class="bibref" href="#bib-LINKED-DATA">LINKED-DATA</a></cite>]に適しています。</p> <p>このドキュメントは規範的ではなく、RDF 1.1を完全に説明するものでもありません。RDFの規範的な仕様は、次のドキュメントで見ることができます。</p> <ul> <li>RDFの基礎となる基本的な概念と抽象構文を記述したドキュメント(「RDF概念および抽象構文」)[<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]</li> <li>RDFの形式モデル理論セマンティクスを記述したドキュメント(「RDFセマンティクス」)[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]</li> <li>RDFのシリアル化フォーマットの仕様: <ul> <li>Turtle[<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]とTriG[<cite><a class="bibref" href="#bib-TRIG">TRIG</a></cite>]</li> <li>JSON-LD[<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>](JSONベース)</li> <li>RDFa[<cite><a class="bibref" href="#bib-RDFA-PRIMER">RDFA-PRIMER</a></cite>](HTML組み込み用)</li> <li>N-Triples[<cite><a class="bibref" href="#bib-N-TRIPLES">N-TRIPLES</a></cite>]とN-Quads[<cite><a class="bibref" href="#bib-N-QUADS">N-QUADS</a></cite>](行ベースの交換フォーマット)</li> <li>RDF/XML[<cite><a class="bibref" href="#bib-RDF11-XML">RDF11-XML</a></cite>](2004年の元の構文をRDF 1.1用に更新したもの)</li> </ul> </li> <li>RDFスキーマを記述したドキュメント[<cite><a class="bibref" href="#bib-RDF11-SCHEMA">RDF11-SCHEMA</a></cite>]。これはRDFデータにデータ・モデリング語彙を提供する。</li> </ul> </section> <section id="section-use-cases" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-use-cases"><span class="secno">2. </span>なぜRDFを使用する?</h2> <p>下記は、様々な実践コミュニティーを対象としたRDFの様々な異なる用途を説明しています。</p> <ul> <li>例えば、よく知られている<a href="http://schema.org">schema.org</a>語彙を用いて、ウェブ・ページに機械可読情報を追加し、改善されたフォーマットでウェブ・ページを検索エンジンに表示したり、サード・パーティーのアプリケーションによる自動処理を可能にする。</li> <li>サード・パーティーのデータセットにリンクすることによりデータセットを拡充する。例えば、絵に関するデータセットは、<a href="http://www.wikidata.org">Wikidata</a>の対応する芸術家にリンクすることにより拡充することができ、したがって、それらや関連する資源に関する幅広い情報にアクセス可能となる。</li> <li>APIフィードを連結し、より多くの情報に対するアクセス方法をクライアントが容易に発見できるようにする。</li> <li>現在公開されているデータセットをリンクト・データ[<cite><a class="bibref" href="#bib-LINKED-DATA">LINKED-DATA</a></cite>]として用いる。例えば、特定のトピック周辺のデータの集約を構築する。</li> <li>複数のウェブサイトにわたって人々のRDF記述を連結することにより、分散型のソーシャル・ネットワークを構築する。</li> <li>データベース間でデータ交換を行うために、標準に準拠した方法を提供する。</li> <li>組織内の様々なデータセットを連結し、SPARQL[<cite><a class="bibref" href="#bib-SPARQL11-OVERVIEW">SPARQL11-OVERVIEW</a></cite>]を用いてデータセット間のクエリの実行を可能にする。</li> </ul> </section> <section id="section-data-model" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-data-model"><span class="secno">3. </span>RDFデータ・モデル</h2> <section id="section-triple" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-triple"><span class="secno">3.1 </span>トリプル</h3> <p>RDFにより、資源について記述することが可能となります。このステートメントの形式はシンプルです。ステートメントは、常に次の構造を持っています。</p> <pre> <主語> <述語> <目的語></pre> <!-- <p>The <strong>subject</strong> represents the resource we like to make a statement about. The <strong>predicate</strong> represents a property of the subject. The <strong>object</strong> represents a value of the property for this subject. Because RDF statements consist of three elements they are called <strong>triples</strong>.</p> --> <p>RDFステートメントは、2つの資源の間の関係を表わします。<strong>主語</strong>と<strong>目的語</strong>は関連付けられる2つの資源を表わし、<strong>述語</strong>はこれらの関係の性質を表わします。関係は、方向性を持った方法(主語から目的語への)で表現され、RDFではそれを<strong>プロパティー</strong>と呼びます。RDFステートメントは3つの要素で構成されるため、<strong>トリプル</strong>と呼びます。</p> <p>以下にRDFトリプルの例を示します(非形式的に擬似コードで表現)。</p> <div class="example"><div class="example-title"><span>例1</span>: トリプルの例(非形式的)</div> <pre id="example1" class="example"><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></pre> </div> <p>複数のトリプルが同じ資源を参照することがしばしばあります。上の例では、ボブ(Bob)は4つのトリプルの主語で、モナ・リザ(Mona Lisa)は1つのトリプルの主語と2つのトリプルの目的語です。同じ資源を、あるトリプルでは主語の位置に、別のトリプルでは目的語の位置に持つことができるこの能力により、トリプル間の関係性を発見でき、そのことはRDFの能力の重要要素となっています。</p> <p>トリプルは、連結<strong>グラフ</strong>として視覚化できます。グラフは、ノードとアークで構成されます。トリプルの主語と目的語はグラフのノードを構築し、述語はアークを形成します。<a href="#fig1" class="fig-ref">図1</a>は、上記のトリプルの例を基に作成されるグラフを示します。</p> <figure id="fig1"> <img alt="トリプルの例の非形式的なグラフ" src="example-graph.jpg" class="graph" /> <figcaption>図<span class="figno">1</span> <span class="fig-title">トリプルの例の非形式的なグラフ</span></figcaption> </figure> <p>一度このようなグラフが得られれば、SPARQL[<cite><a class="bibref" href="#bib-SPARQL11-OVERVIEW">SPARQL11-OVERVIEW</a></cite>]を用いて、例えば、レオナルド・ダ・ヴィンチの絵に関心を持っている人に関するクエリを行うことができます。</p> <p>この項では、RDFデータ・モデルは、「抽象構文」、つまり、特定の具象構文(テキスト・ファイルで格納されているトリプルを表わすために用いられる構文)に依存しないデータ・モデルの形式で記述しています。異なる具象構文は、抽象構文から見れば全く同じグラフを生成するかもしれません。RDFグラフ[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]のセマンティクスは、この抽象構文の観点で定義されます。具象RDF構文については、後ほど<a href="#section-graph-syntax">5項</a>で紹介します。</p> <p>次の3つの小項目では、IRI、リテラル、空白ノードという、トリプルに現れる3種類のRDFデータについて論じます。</p> </section> <section id="section-IRI" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-IRI"><span class="secno">3.2 </span>IRI</h3> <p>IRIという略語は「International Resource Identifier」の省略形です。<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-IRIs">IRI</a>は資源を識別します。Webのアドレスとして用いられているURL(Uniform Resource Locators)は、IRIの1つの形式です。その他のIRIの形式は、その位置や、それにアクセスする方法を示唆することなく、資源に識別子を提供します。IRIという概念はURI(Uniform Resource Identifier)を一般化したもので、非ASCII文字をIRIの文字列で使用できます。IRIは、RFC 3987[<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]で規定されています。</p> <p>IRIは、トリプルの<strong>3つの位置すべて</strong>に出現できます。</p> <p>前に述べたように、IRIは、ドキュメント、人間、物体、抽象的な概念などの資源を識別するために用いられます。例えば、<a href="http://dbpedia.org">DBpedia</a>内のレオナルド・ダ・ヴィンチのIRIは次のとおりです。</p> <div class="example"><a href="http://dbpedia.org/resource/Leonardo_da_Vinci">http://dbpedia.org/resource/Leonardo_da_Vinci</a></div> <p><a href="http://www.europeana.eu">Europeana</a>の「La Joconde à Washington」と題するモナ・リザに関する<a href="http://www.ina.fr">INA</a>のビデオのIRIは、次のとおりです。</p> <div class="example"><a href="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619</a></div> <p>IRIはグローバルな識別子です。したがって、他の人々が、同じものを識別するためにこのIRIを再利用できます。例えば、人々の間の知り合い関係を記述するために、多くの人が次のIRIをRDFプロパティーとして用いています。</p> <div class="example"><a href="http://xmlns.com/foaf/0.1/knows">http://xmlns.com/foaf/0.1/knows</a></div> <p>RDFは、IRIが何を表わすかに依存しません。しかし、特定の語彙や規定でIRIに意味を与えることができます。例えば、<a href="http://wiki.dbpedia.org/Datasets#h338-3">DBpedia</a>は、対応するウィキペディアの記事で記述されているものを示すために<code>http://dbpedia.org/resource/Name</code>という形式のIRIを用いています。</p> </section> <section id="section-literal" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-literal"><span class="secno">3.3 </span>リテラル</h3> <p><a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-Graph-Literal">リテラル</a>は、IRIでない基本的な値です。リテラルの例には、「La Joconde」のような文字列、「the 4th of July, 1990」のような日付、「3.14159」のような数が含まれます。リテラルは、<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-Datatypes">データ型</a>に関連付けることで、その値を正確に解析、解釈できるようになります。文字列のリテラルは、オプションで<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-Graph-Literal">言語タグ</a>に関連付けることができます。例えば、「Léonard de Vinci」は「fr」という言語タグに、「李奥纳多·达·文西」は「zh」という言語タグに関連付けることができます。</p> <!-- <p class="note">The 2004 version of RDF contained the notion of a "plain literal" with no datatype. This feature has been removed, as the distinction between "plain" literals and literals with datatype <code>string</code> was confusing. RDF languages such as Turtle allow writing of literals without an explicit datatype and treat this as syntactic sugar for a <code>string</code> datatype. The special datatype <code>rdf:langString</code> is assigned to language-tagged literals.</p> --> <p>リテラルは、トリプルの<strong>目的語の位置</strong>にのみ出現できます。</p> <p>RDF概念のドキュメントは、(完全ではない)<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-Datatypes">データ型のリスト</a>を提供します。これには、文字列、ブール値、整数、10進数、日付などのXMLスキーマで定義されている多くのデータ型が含まれています。</p> </section> <section id="section-blank-node" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-blank-node"><span class="secno">3.4 </span>空白ノード</h3> <p>IRIとリテラルはともに、RDFステートメントを記述するための基本的な材料となります。それに加えて、グローバルな識別子を用いずに資源を記述できると便利なことがあります。例えば、モナ・リザの絵の背景にヌマスギ(cypress tree)として知られている未確認の木が描かれていると述べたいとします。絵のヌマスギのようなグローバルな識別子のない資源は、RDFでは<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-blank-nodes">空白ノード</a>で表わすことができます。空白ノードは、代数の単純変数に似ています。つまり、その値が何なのかを述べずに事物を表わします。</p> <p>空白ノードは、トリプルの<strong>主語と目的語の位置</strong>に出現できます。これを使用すれば、明示的にIRIで指定せずに、資源を示すことができます。</p> <figure id="fig2"> <img alt="空白ノードの例: ヌマスギ" src="example-blank-node.jpg" class="graph" /> <figcaption>図<span class="figno">2</span> <span class="fig-title">非形式的な空白ノードの例: モナ・リザの背景には、ヌマスギのクラスに属する名前のない資源が描かれている。</span></figcaption> </figure> </section> <section id="section-multiple-graphs" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-multiple-graphs"><span class="secno">3.5 </span>複数のグラフ</h3> <p>RDFは、複数のグラフのRDFステートメントをグループ化し、そのようなグラフをIRIに関連付ける方法を提供します。複数のグラフは、RDFデータ・モデルの最近の拡張です。実際のところ、RDFツールの開発者やデータの管理者には、トリプルの集合のサブセットについて記述する方法が必要でした。複数のグラフは、RDFクエリ言語SPARQLで最初に導入されました。したがって、RDFデータ・モデルは、SPARQLと緊密に関連する複数のグラフの概念で拡張されました。</p> <p>RDFドキュメントの複数のグラフは、<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-dataset">RDFデータセット</a>を構成します。RDFデータセットは、複数の名前付きグラフと、高々1つの名前のない(「デフォルト」)グラフを持つことができます。</p> <p>例えば、<a href="#example1">例1</a>のステートメントは、2つの名前付きグラフにグループ化できます。最初のグラフは、ソーシャル・ネットワーキングのサイトで提供します。これは<code>http://example.org/bob</code>で識別できます。</p> <div class="example"><div class="example-title"><span>例2</span>: データセットの例の最初のグラフ</div> <pre class="example"><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>.</pre> </div> <p>グラフに関連付けられたIRIを<a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-dataset">グラフ名</a>と呼びます。</p> <p>2番目のグラフは<a href="http://www.wikidata.org/">Wikidata</a>で提供します。これは<code>https://www.wikidata.org/wiki/Special:EntityData/Q12418</code>で識別できます。</p> <div class="example"><div class="example-title"><span>例3</span>: データセットの例の2番目のグラフ</div> <pre class="example"><Leonardo da Vinci> <is the creator of> <the Mona Lisa>. <The video 'La Joconde à Washington'> <is about> <the Mona Lisa></pre> </div> <p>下記は名前のないグラフの例です。これには、グラフ名<code><http://example.org/bob></code>を主語として持つ2つのトリプルが含まれています。このトリプルは、公開者とライセンスの情報をこのグラフIRIに関連付けています。</p> <div class="example"><div class="example-title"><span>例4</span>: データセットの例の名前のないグラフ</div> <pre class="example"><http://example.org/bob> <is published by> <http://example.org>. <http://example.org/bob> <has license> <http://creativecommons.org/licenses/by/3.0/>.</pre> </div> <p>このデータセットの例では、グラフ名は、対応するグラフ内で保持されているRDFデータの情報源を表わすと考えられます。つまり、<code><http://example.org/bob></code>を検索すると、そのグラフ内の4つのトリプルにアクセスすることになるでしょう。</p> <div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_1"><span>注</span></div> <p class="">RDFには、データセットの他の利用者にこのセマンティックな仮定(つまり、グラフの名前はRDFデータの情報源を表わすという仮定)を伝える標準的な方法がありません。意図されているとおりに利用者がデータセットを解釈するためには、コミュニティーの定着した慣習のようなの帯域外の知識(out-of-band knowledge)に頼る必要があるでしょう。考えられるデータセットのセマンティクスに関しては、別のノート[<cite><a class="bibref" href="#bib-RDF11-DATASETS">RDF11-DATASETS</a></cite>]で記述しています。</p></div> <figure id="fig3"> <img alt="データセットの例の非形式的なグラフ" src="example-multiple-graphs.jpg" class="graph" /> <figcaption>図<span class="figno">3</span> <span class="fig-title">データセットの例の非形式的なグラフ</span></figcaption> </figure> <p><a href="#section-trig">5.1.3項</a>は、このグラフの具象構文の例を提供します。</p> </section> </section> <section id="section-vocabulary" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-vocabulary"><span class="secno">4. </span>RDF語彙</h2> <p>RDFデータ・モデルは、資源について記述する方法を提供します。前に述べたように、このデータ・モデルは、IRIがどのような資源を表わすかに関していかなる仮定も行いません。実際には、RDFは一般的に、これらの資源に関してセマンティックな情報を提供する語彙やその他の規定と組み合わせて用いられます。</p> <p>語彙の定義をサポートするために、RDFはRDFスキーマ言語[<cite><a class="bibref" href="#bib-RDF11-SCHEMA">RDF11-SCHEMA</a></cite>]を提供しています。この言語によって、RDFデータのセマンティックな特性の定義が可能となります。例えば、<code>http://www.example.org/friendOf</code>というIRIはプロパティーとして使用でき、<code>http://www.example.org/friendOf</code>のトリプルの主語と目的語は、<code>http://www.example.org/Person</code>というクラスの資源でなければならないと述べることができます。</p> <p>RDFスキーマは、資源の分類に使用できるカテゴリーを指定するために<strong>クラス</strong>の概念を用います。そのクラスとインスタンスとの関係は<strong>型</strong>プロパティーで記述します。RDFスキーマで、クラスとサブクラスの階層およびプロパティーとサブプロパティーの階層を作ることができます。特定のトリプルの主語と目的語に対する型の制限は、<strong>定義域</strong>と<strong>値域</strong>の制限で定義できます。定義域制限の一例として、「friendOf」トリプルの主語はクラス「Person」に属しているべきである、という例を上記に示しました。</p> <p>RDFスキーマで提供される主要なモデリング構成子を次の表で要約しています。</p> <table id="table-rdf-schema"> <caption>表1: RDFスキーマ構成子</caption> <tbody> <tr> <th>構成子</th> <th>構文形式</th> <th>説明</th> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_classes">クラス</a>(Class) - (クラス)</td> <td><strong>C</strong> <code>rdf:type rdfs:Class</code></td> <td><strong>C</strong>(資源)はRDFクラス</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_property">プロパティー</a>(Property) - (クラス)</td> <td><strong>P</strong> <code>rdf:type rdf:Property</code></td> <td><strong>P</strong>(資源)はRDFプロパティー</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_type">型</a>(type) - (プロパティー)</td> <td><strong>I</strong> <code>rdf:type</code> <strong>C</strong></td> <td><strong>I</strong>(資源)は<strong>C</strong>(クラス)のインスタンス</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_subclassof">~のサブクラス</a>(subClassOf) - (プロパティー)</td> <td><strong>C1</strong> <code>rdfs:subClassOf</code> <strong>C2</strong></td> <td><strong>C1</strong>(クラス)は<strong>C2</strong>(クラス)のサブクラス</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_subpropertyof">~のサブプロパティー</a>(subPropertyOf) - (プロパティー)</td> <td><strong>P1</strong> <code>rdfs:subPropertyOf</code> <strong>P2</strong></td> <td><strong>P1</strong>(プロパティー)は<strong>P2</strong>(プロパティー)のサブプロパティー</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_domain">定義域</a>(domain) - (プロパティー)</td> <td><strong>P</strong> <code>rdfs:domain</code> <strong>C</strong></td> <td><strong>P</strong>(プロパティー)の定義域は<strong>C</strong>(クラス)</td> </tr> <tr> <td><a href="http://www.w3.org/TR/rdf-schema/#ch_range">値域</a>(range) - (プロパティー)</td> <td><strong>P</strong> <code>rdfs:range</code> <strong>C</strong></td> <td><strong>P</strong>(プロパティー)の値域は<strong>C</strong>(クラス)</td> </tr> </tbody> </table> <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_2"><span>注</span></div> <p class="">構文形式(2列目)は接頭辞表記法で記述しています。これについては<a href="#section-graph-syntax">5項</a>でより詳細に論じます。構成子には2つの異なる接頭辞(<code>rdf:</code>と<code>rdfs:</code>)があるという事実は、多少やっかいな歴史的産物ですが、これは下位互換性のために残されています。</p></div> <p>RDFスキーマのおかげで、RDFデータのモデルを構築できます。下記はシンプルで非形式的な例です。</p> <div class="example"><div class="example-title"><span>例5</span>: RDFスキーマ・トリプル(非形式的)</div> <pre id="rdfs-example" class="example"><Person> <<strong>type</strong>> <Class> <is a friend of> <<strong>type</strong>> <Property> <is a friend of> <<strong>domain</strong>> <Person> <is a friend of> <<strong>range</strong>> <Person> <is a good friend of> <<strong>subPropertyOf</strong>> <is a friend of></pre> </div> <p><code><is a friend of></code>は一般的に、トリプルの述語として用いられる(<a href="#example1">例1</a>でそうであったように)プロパティーですが、このようなプロパティー自体は、トリプルで記述したり、他の資源の記述に値を提供したりできる資源であるということに注意してください。この例では、<code><is a friend of></code>は、型、定義域、値域の値が割り当てられているトリプルの主語であり、さらに、<code><is a good friend of></code>というプロパティーに関して何かを記述しているトリプルの目的語です。</p> <p>世界的に用いられている初期のRDF語彙の1つは、ソーシャル・ネットワークを記述するための<a href="http://www.foaf-project.org/">「Friend of a Friend」</a>(FOAF)の語彙でした。その他のRDF語彙の例は次のとおりです。</p> <dl> <dt><a href="http://dublincore.org/documents/dcmi-terms/">ダブリン・コア</a></dt> <dd>Dublin Core Metadata Initiativeは、広範囲な資源を記述するためのメタデータ要素セットを維持しています。この語彙は「作成者」(creator)、「公開者」(publisher)、「タイトル」(title)などプロパティーを提供します。</dd> <dt><a href="http://schema.org/">schema.org</a> </dt><dd>Schema.orgは、主要な検索プロバイダのグループによって開発された語彙です。その発想は、ウェブマスターがこれらの用語を用いてウェブ・ページをマークアップできるようにするというもので、その結果、検索エンジンは何に関するページなのかを理解できるようになります。</dd> <dt><a href="http://www.w3.org/2004/02/skos/">SKOS</a></dt> <dd>SKOSは、ウェブで用語やシソーラスなどの分類表を公開するための語彙です。SKOSは2009年以来、<abbr title="World Wide Web Consortium">W3C</abbr>勧告となっており、図書館界で広く利用されています。米国議会図書館(Library of Congress)は、自身の件名標目を<a href="http://id.loc.gov/authorities/subjects.html">SKOSの語彙</a>として公開しています。</dd> </dl> <p>語彙は再利用によって価値を持ちます。つまり、IRIは、他者から語彙を再利用されればされるほど、IRIの利用価値が高まります(いわゆるネットワーク効果)。これは、新しいIRIを作り出すのではなく、だれか他の人のIRIを再利用する方が良いということを意味します。</p> <p>RDFスキーマ構成子のセマンティクスの形式的な仕様については、RDFセマンティクスのドキュメント[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]を参照してください。RDFデータのより包括的なセマンティック・モデリングに興味を持っているユーザは、OWL[<cite><a class="bibref" href="#bib-OWL2-OVERVIEW">OWL2-OVERVIEW</a></cite>]を使用することも考えられます。OWLはRDF語彙であるため、RDFスキーマと組み合わせて使用できます。</p> </section> <section id="section-graph-syntax" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-graph-syntax"><span class="secno">5. </span>RDFグラフの記述</h2> <p>RDFグラフを記述するために、多数の様々なシリアル化形式が存在しています。しかし、同じグラフを別の方法で記述してもまったく同じトリプルになりえ、したがって、それらは論理的に同等です。</p> <p>この項では、例に注釈を付しながら、次の形式について簡潔に紹介します。</p> <ol> <li>RDF言語のTurtleファミリー(<a href="#section-n-triples">N-Triples</a>、<a href="#section-turtle">Turtle</a>、<a href="#section-trig">TriG</a>、<a href="#section-n-quads">N-Quads</a>)</li> <li><a href="#section-json-ld">JSON-LD</a>(JSONベースのRDF構文)</li> <li><a href="#section-rdfa">RDFa</a>(HTMLとXML組み込み用)</li> <li><a href="#section-rdfxml">RDF/XML</a>(RDF用XML構文) </li> </ol> <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_3"><span>注</span></div><p class="">読むにあたってのヒント: 5.1項(Turtle<em>など</em>)では、RDFをシリアル化するためのすべての基本概念について論じています。RDFの特定の利用に興味がある場合にのみ、JSON-LD、RDFa、RDF/XMLの項を読まれることをお勧めします。</p> </div> <section id="section-turtle-family" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-turtle-family"><span class="secno">5.1 </span>RDF言語のTurtleファミリー</h3> <p>この小項目では、密接な関連性を有する4つのRDF言語を紹介します。N-Triplesは、RDFトリプルを記述するための基本的な構文を提供するため、N-Triplesの紹介から始めます。Turtle構文は、読みやすさを改善するために、様々な糖衣構文形式でこの基本的な構文を拡張します。続いて、TriGとN-Quadsについて論じます。これらはそれぞれTurtleとN-Triplesの拡張で、複数のグラフをエンコードするためのものです。これらの4つを合わせて「RDF言語のTurtleファミリー」と呼びます。</p> <section id="section-n-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h4 aria-level="3" role="heading" id="h4_section-n-triples"><span class="secno">5.1.1 </span>N-Triples</h4> <p>N-Triples[<cite><a class="bibref" href="#bib-N-TRIPLES">N-TRIPLES</a></cite>]は、シンプルな行ベースのプレーン・テキストでRDFグラフをシリアル化する方法を提供します。<a href="#fig1" class="fig-ref">図1</a>の非形式的なグラフは、次の方法でN-Triplesで表わすことができます。</p> <div class="example"><div class="example-title"><span>例6</span>: N-Triples</div> <pre id="n-triples-example" class="example"><span class="linenum">01</span> <http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . <span class="linenum">02</span> <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> . <span class="linenum">03</span> <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date> . <span class="linenum">04</span> <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> . <span class="linenum">05</span> <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "Mona Lisa" . <span class="linenum">06</span> <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator> <http://dbpedia.org/resource/Leonardo_da_Vinci> . <span class="linenum">07</span> <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418> .</pre> </div> <p>各行はトリプルを表わします。フル形式のIRIは、山括弧(<code><></code>)で囲んでいます。行末のピリオドは、トリプルの終わりを示します。3行目には、リテラルの例があります。この場合、それは日付です。データ型は、<code>^^</code>という区切り記号でリテラルに付記されます。日付の表現は、XMLスキーマ・データ型の<a href="http://www.w3.org/TR/xmlschema11-2/#date">日付</a>の規定に従います。</p> <p>文字列のリテラルは至る所に出現するため、N-Triplesでは、文字列のリテラルを書く場合には、ユーザはデータ型を省略できます。したがって、5行目の<code>"Mona Lisa"</code>は、<code>"Mona Lisa"^^xsd:string</code>と同等です。言語タグ付き文字列の場合には、<code>"La Joconde"@fr</code>(モナ・リザのフランス語名)のように、タグは、<code>@</code>という記号で区切って文字列の直後に出現します。</p> <div class="note"><div class="note-title" aria-level="4" role="heading" id="h_note_4"><span>注</span></div><p class="">技術的な理由で、言語タグ付き文字列のデータ型は<code>xsd:string</code>ではなく<code>rdf:langString</code>です。言語タグ付き文字列のデータ型は、決して明示的に指定されません。</p></div> <p>下の図は、例の結果のトリプルを示します。</p> <figure id="fig4"> <img alt="トリプルの例のグラフ" src="example-graph-iris.jpg" style="width: 75%" /> <figcaption>図<span class="figno">4</span> <span class="fig-title">N-Triplesの例の結果作成されるRDFグラフ</span></figcaption> </figure> <p>N-Triplesの例の7行が上の図の7つのアークに相当することに注意してください。</p> <p>N-Triplesは、大量のRDFの交換や、行指向型テキスト処理ツールで大規模なRDFグラフを処理するためにしばしば用いられます。</p> </section> <section id="section-turtle" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h4 aria-level="3" role="heading" id="h4_section-turtle"><span class="secno">5.1.2 </span>Turtle</h4> <p>Turtle[<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]は、<strong>N-Triplesの拡張</strong>です。Turtleは、基本的なN-Triples構文に加えて、名前空間接頭辞、リスト、データ型リテラルの省略形のサポートなど、多くの構文の省略形を導入しています。Turtleは、記述の容易さと解析および可読性の容易さの間のトレードオフを提供します。<a href="#fig4" class="fig-ref">図4</a>で示しているグラフは、Turtleで次のように表わすことができます。</p> <div class="example"><div class="example-title"><span>例7</span>: Turtle</div> <pre id="turtle-example" class="example"><span class="linenum">01</span> BASE <http://example.org/> <span class="linenum">02</span> PREFIX foaf: <http://xmlns.com/foaf/0.1/> <span class="linenum">03</span> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> <span class="linenum">04</span> PREFIX schema: <http://schema.org/> <span class="linenum">05</span> PREFIX dcterms: <http://purl.org/dc/terms/> <span class="linenum">06</span> PREFIX wd: <http://www.wikidata.org/entity/> <span class="linenum">07</span> <span class="linenum">08</span> <bob#me> <span class="linenum">09</span> a foaf:Person ; <span class="linenum">10</span> foaf:knows <alice#me> ; <span class="linenum">11</span> schema:birthDate "1990-07-04"^^xsd:date ; <span class="linenum">12</span> foaf:topic_interest wd:Q12418 . <span class="linenum">13</span> <span class="linenum">14</span> wd:Q12418 <span class="linenum">15</span> dcterms:title "Mona Lisa" ; <span class="linenum">16</span> dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> . <span class="linenum">17</span> <span class="linenum">18</span> <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <span class="linenum">19</span> dcterms:subject wd:Q12418 .</pre> </div> <p>このTurtleの例は、<a href="#n-triples-example">N-Triples</a>の例と論理的に同等です。1~6行目には、IRI記述の省略形を提供する多くの指示子が含まれています。相対IRI(8行目の<code>bob#me</code>など)は、上記の1行目で指定されている基底IRIに対して解決されます。2~6行目では、IRI接頭辞(<code>foaf:</code>など)を定義しており、これはフル形式のIRIの代わりに接頭辞名(<code>foaf:Person</code>など)に使用できます。対応するIRIは、接頭辞をその対応するIRIに置き換えることで作成されます(この例では、<code>foaf:Person</code>は<code><http://xmlns.com/foaf/0.1/Person></code>を表わす)。</p> <p>8~12行目は、同じ主語を持つトリプルにTurtleが省略形を提供する方法を示しています。9~12行目は、<code><http://example.org/bob#me></code>を主語として持つ、述語-目的語部分を指定しています。9~11行目の末尾のセミコロンは、その後の述語-目的語のペアが、データ内で示されている最も新しい主語を用いた新しいトリプル(この場合は<code>bob#me</code>)の一部であることを示します。</p> <p>9行目は、特殊な糖衣構文の例を示しています。トリプルは、非形式的に「Bob (is) a Person」と読むべきです。<code>a</code>という述語はインスタンス関係をモデル化するプロパティー<code>rdf:type</code>の短縮形です(<a href="#table-rdf-schema">表1</a>を参照)。<code>a</code>という短縮形は、<code>rdf:type</code>に関する人間の直観と一致させることを目的としたものです。</p> <h4 id="representation-of-blank-nodes">空白ノードの表現</h4> <p>以下に、以前のヌマスギ(cypress tree)の例を用いて、空白ノードを記述するための2つの異なる構文を示します。</p> <div class="example"><div class="example-title"><span>例8</span>: 空白ノード</div> <pre class="example">PREFIX lio: <http://purl.org/net/lio#> <http://dbpedia.org/resource/Mona_Lisa> lio:shows _:x . _:x a <http://dbpedia.org/resource/Cypress> .</pre> </div> <p><code>_:x</code>という用語は空白ノードです。これは、モナ・リザの絵に描かれている名前のない資源を表わし、この名前のない資源は<code>Cypress</code>というクラスのインスタンスです。上の例は、<a href="#fig2" class="fig-ref">図2</a>の非形式的なグラフの具象構文です。</p> <p>Turtleには、空白ノード用の別の表記法もあり、<code>_:x</code>のような構文を用いる必要はありません。</p> <div class="example"><div class="example-title"><span>例9</span>: 空白ノード(別の表記法)</div> <pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> . # 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> ] .</pre> </div> <p>角括弧は、ここでは空白ノードを表わします。角括弧内の述語-目的語のペアは、空白ノードを主語として持つトリプルと解釈されます。「#」で始まる行はコメントを表わします。</p> <p>Turtleの構文に関する詳細は、Turtleの仕様[<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]を参照してください。</p> </section> <section id="section-trig" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h4 aria-level="3" role="heading" id="h4_section-trig"><span class="secno">5.1.3 </span>TriG</h4> <p>Turtleの構文は、グラフに「名前を付ける」手段がなく、1つのグラフの仕様のみをサポートします。TriG[<cite><a class="bibref" href="#bib-TRIG">TRIG</a></cite>]は、RDFデータセットの形式で複数のグラフの仕様を可能とする<strong>Turtleの拡張</strong>です。</p> <div class="note"><div class="note-title" aria-level="4" role="heading" id="h_note_5"><span>注</span></div><p class="">RDF 1.1では、あらゆる正当なTurtleドキュメントは正当なTriGドキュメントです。それを1つの言語と見ることができるでしょう。TurtleとTriGの名前は、歴史上の理由によりまだ存在しています。</p> </div> <p><a href="#section-multiple-graphs">我々の例の複数グラフのバージョン</a>は、TriGで次のように指定できます。</p> <div class="example"><div class="example-title"><span>例10</span>: TriG</div><pre id="trig-example" class="example"><span class="linenum">01</span> BASE <http://example.org/> <span class="linenum">02</span> PREFIX foaf: <http://xmlns.com/foaf/0.1/> <span class="linenum">03</span> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> <span class="linenum">04</span> PREFIX schema: <http://schema.org/> <span class="linenum">05</span> PREFIX dcterms: <http://purl.org/dc/terms/> <span class="linenum">06</span> PREFIX wd: <http://www.wikidata.org/entity/> <span class="linenum">07</span> <span class="linenum">08</span> GRAPH <http://example.org/bob> <span class="linenum">09</span> { <span class="linenum">10</span> <bob#me> <span class="linenum">11</span> a foaf:Person ; <span class="linenum">12</span> foaf:knows <alice#me> ; <span class="linenum">13</span> schema:birthDate "1990-07-04"^^xsd:date ; <span class="linenum">14</span> foaf:topic_interest wd:Q12418 . <span class="linenum">15</span> } <span class="linenum">16</span> <span class="linenum">17</span> GRAPH <https://www.wikidata.org/wiki/Special:EntityData/Q12418> <span class="linenum">18</span> { <span class="linenum">19</span> wd:Q12418 <span class="linenum">20</span> dcterms:title "Mona Lisa" ; <span class="linenum">21</span> dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> . <span class="linenum">22</span> <span class="linenum">23</span> <http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619> <span class="linenum">24</span> dcterms:subject wd:Q12418 . <span class="linenum">25</span> } <span class="linenum">26</span> <span class="linenum">27</span> <http://example.org/bob> <span class="linenum">28</span> dcterms:publisher <http://example.org> ; <span class="linenum">29</span> dcterms:rights <http://creativecommons.org/licenses/by/3.0/> .</pre></div> <p>このRDFデータセットには2つの名前付きグラフが含まれています。8行目と17行目に、これらの2つのグラフの名前を記述しています。名前付きグラフ内のトリプルは、一揃いの中括弧の間に置かれます(9行目と15行目、18行目と25行目)。オプションで、<code>GRAPH</code>というキーワードをグラフ名の前に置くことができます。これによって読みやすさが改善するかもしれませんが、これは主にSPARQL更新[<cite><a class="bibref" href="#bib-SPARQL11-UPDATE">SPARQL11-UPDATE</a></cite>]との調和のために導入されています。</p> <p>最上部のトリプルと指示子の構文は、Turtle構文に準拠しています。</p> <p>27~29行目で指定されている2つのトリプルは、名前付きグラフの一部ではありません。これらは、合わせて、このRDFデータセットの名前のない(「デフォルトの」)グラフを形成します。</p> <p>下記の図は、この例の結果として作成されるトリプルを示します。</p> <figure id="fig5"> <img alt="TriGの例の結果作成されるトリプル" src="example-multiple-graphs-iris.jpg" style="width: 75%" /> <figcaption>Fig. <span class="figno">5</span> <span class="fig-title">TriGの例の結果作成されるトリプル</span></figcaption> </figure> </section> <section id="section-n-quads" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h4 aria-level="3" role="heading" id="h4_section-n-quads"><span class="secno">5.1.4 </span>N-Quads</h4> <p>N-Quads[<cite><a class="bibref" href="#bib-N-QUADS">N-QUADS</a></cite>]は、N-Triplesをシンプルに拡張してRDFデータセットの交換を可能としたものです。N-Quadsにより、4番目の要素を行に追加することが可能となり、その行に記述されているトリプルのグラフIRIを取り入れます。下記は、上記のTriGの例のN-Quadsバージョンです。</p> <div class="example"><div class="example-title"><span>例11</span>: N-Quads</div><pre id="n-quads-example" class="example"><span class="linenum">01</span> <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> . <span class="linenum">02</span> <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> <http://example.org/bob> . <span class="linenum">03</span> <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date> <http://example.org/bob> . <span class="linenum">04</span> <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest> <http://www.wikidata.org/entity/Q12418> <http://example.org/bob> . <span class="linenum">05</span> <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title> "Mona Lisa" <https://www.wikidata.org/wiki/Special:EntityData/Q12418> . <span class="linenum">06</span> <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> . <span class="linenum">07</span> <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> . <span class="linenum">08</span> <http://example.org/bob> <http://purl.org/dc/terms/publisher> <http://example.org> . <span class="linenum">09</span> <http://example.org/bob> <http://purl.org/dc/terms/rights> <http://creativecommons.org/licenses/by/3.0/> .</pre></div> <p>N-Quadsの例の9つの行は、<a href="#fig5" class="fig-ref">図5</a>の9つのアークに相当します。1~7行目はクアッド(quad;4つ組)を表わし、その最初の要素がグラフIRIです。クアッド内のグラフIRIより後の部分は、N-Triplesの構文規定に従い、ステートメントの主語、述語、目的語を指定します。8行目と9行目は、名前のない(デフォルトの)グラフのステートメントを表わし、これには4番目の要素がなく、したがって、通常のトリプルを構成します。</p> <p>N-Triplesと同様に、N-Quadsは通常、大量のRDFデータセットの交換や行指向型テキスト処理ツールでRDFを処理するために用いられます。</p> </section> </section> <section id="section-json-ld" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-json-ld"><span class="secno">5.2 </span>JSON-LD</h3> <p>JSON-LD[<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>]は、RDFグラフとデータセットにJSON構文を提供します。JSON-LDは、変化を最小限にしつつ、JSONドキュメントをRDFに変換するために使用できます。JSON-LDは、データ型や言語の処理に加え、JSONドキュメントがウェブ上の別の場所にある別のJSONドキュメントに記述されているオブジェクトを参照できるメカニズムとしてJSONオブジェクトにユニバーサルな識別子を提供します。JSON-LDは、<code>@graph</code>というキーワードの使用によりRDFデータセットをシリアル化する方法も提供します。</p> <p>次のJSON-LDの例は、<a href="#fig4" class="fig-ref">図4</a>のグラフをエンコードしたものです。</p> <div class="example"><div class="example-title"><span>例12</span>: JSON-LD</div><pre class="example"><span class="linenum">01</span> { <span class="linenum">02</span> "@context": "example-context.json", <span class="linenum">03</span> "@id": "http://example.org/bob#me", <span class="linenum">04</span> "@type": "Person", <span class="linenum">05</span> "birthdate": "1990-07-04", <span class="linenum">06</span> "knows": "http://example.org/alice#me", <span class="linenum">07</span> "interest": { <span class="linenum">08</span> "@id": "http://www.wikidata.org/entity/Q12418", <span class="linenum">09</span> "title": "Mona Lisa", <span class="linenum">10</span> "subject_of": "http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619", <span class="linenum">11</span> "creator": "http://dbpedia.org/resource/Leonardo_da_Vinci" <span class="linenum">12</span> } <span class="linenum">13</span> }</pre> </div> <p>2行目の<code>@context</code>キーは、どのようにドキュメントをRDFグラフにマッピングできるかを記述したJSONドキュメントを指し示します(下記を参照)。個々のJSONオブジェクトは、RDF資源に相当します。この例では、3行目で<code>@id</code>キーワードを用いて指定しているように、記述されている主な資源は<code>http://example.org/bob#me</code>です。<code>@id</code>キーワードは、JSON-LDドキュメントでキーとして用いた場合、現在のJSONオブジェクトに対応する資源を識別するIRIを指し示します。4行目でこの資源の型、5行目でその生年月日、6行目でその友達の1人を記述しています。7~12行目に、関心の1つである、モナ・リザの絵について記述しています。</p> <p>この絵を記述するために、7行目で新しいJSONオブジェクトを作成し、8行目でそれをWikidataのモナ・リザのIRIに関連づけています。その後、9~11行目でその絵の様々なプロパティー(特性)を記述しています。</p> <p>この例で用いているJSON-LDのコンテキストを下記で示しています。</p> <div class="example"><div class="example-title"><span>例13</span>: JSON-LDコンテキスト仕様</div><pre class="example"><span class="linenum">01</span> { <span class="linenum">02</span> "@context": { <span class="linenum">03</span> "foaf": "http://xmlns.com/foaf/0.1/", <span class="linenum">04</span> "Person": "foaf:Person", <span class="linenum">05</span> "interest": "foaf:topic_interest", <span class="linenum">06</span> "knows": { <span class="linenum">07</span> "@id": "foaf:knows", <span class="linenum">08</span> "@type": "@id" <span class="linenum">09</span> }, <span class="linenum">10</span> "birthdate": { <span class="linenum">11</span> "@id": "http://schema.org/birthDate", <span class="linenum">12</span> "@type": "http://www.w3.org/2001/XMLSchema#date" <span class="linenum">13</span> }, <span class="linenum">14</span> "dcterms": "http://purl.org/dc/terms/", <span class="linenum">15</span> "title": "dcterms:title", <span class="linenum">16</span> "creator": { <span class="linenum">17</span> "@id": "dcterms:creator", <span class="linenum">18</span> "@type": "@id" <span class="linenum">19</span> }, <span class="linenum">20</span> "subject_of": { <span class="linenum">21</span> "@reverse": "dcterms:subject", <span class="linenum">22</span> "@type": "@id" <span class="linenum">23</span> } <span class="linenum">24</span> } <span class="linenum">25</span> }</pre> </div> <p>このコンテキストは、どのようにJSON-LDドキュメントをRDFグラフにマッピングできるかを記述しています。4~9行目では、<code>Person</code>(人)、<code>interest</code>(関心)、<code>knows</code>(知っている)を、3行目で定義しているFOAF名前空間の型とプロパティーにマッピングする方法を定めています。8行目で、<code>knows</code>キーは、<code>@type</code>と<code>@id</code>のキーワードの使用により、IRIとして解釈される値を持つこということも定めています。</p> <p>10~12行目では、schema.orgプロパティーのIRIに<code>birthdate</code>(生年月日)をマッピングし、その値を<code>xsd:date</code>データ型にマッピングできることを定めています。</p> <p>16~23行目では、ダブリン・コアのプロパティーのIRIに、<code>title</code>(タイトル)、<code>creator</code>(作成者)、<code>subject_of</code>(~のキーワード)をマッピングする方法を記述しています。21行目の<code>@reverse</code>キーワードは、このコンテキストを用いたJSON-LDドキュメントで<code>"subject_of": "x"</code>に遭遇した場合は常に、主語が<code>x</code> IRI、プロパティーが<code>dcterms:subject</code>、目的語が親のJSONオブジェクトに対応した資源であるRDFトリプルにそれをマッピングすべきであることを定めるために用いられています。</p> </section> <section id="section-rdfa" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-rdfa"><span class="secno">5.3 </span>RDFa</h3> <p>RDFa[<cite><a class="bibref" href="#bib-RDFA-PRIMER">RDFA-PRIMER</a></cite>]は、HTMLとXMLのドキュメント内にRDFデータを組み込むために使用できるRDF構文です。これにより、例えば検索エンジンは、ウェブをクローリングする際にこのデータを集約し、検索結果を拡充するためにそれを利用できます(例えば、<a href="http://schema.org">schema.org</a>と<a href="https://support.google.com/webmasters/answer/99170?hl=en">Rich Snippets</a>を参照)。</p> <p>次のHTMLの例は、<a href="#fig4" class="fig-ref">図4</a>で描かれているRDFグラフをエンコードしています。</p> <div class="example"><div class="example-title"><span>例14</span>: RDFa</div><pre id="rdfa-example" class="example"><span class="linenum">01</span> <body prefix="foaf: http://xmlns.com/foaf/0.1/ <span class="linenum">02</span> schema: http://schema.org/ <span class="linenum">03</span> dcterms: http://purl.org/dc/terms/"> <span class="linenum">04</span> <div resource="http://example.org/bob#me" typeof="foaf:Person"> <span class="linenum">05</span> <p> <span class="linenum">06</span> Bob knows <a property="foaf:knows" href="http://example.org/alice#me">Alice</a> <span class="linenum">07</span> and was born on the <time property="schema:birthDate">1990-07-04</time>. <span class="linenum">08</span> </p> <span class="linenum">09</span> <p> <span class="linenum">10</span> Bob is interested in <span property="foaf:topic_interest" <span class="linenum">11</span> resource="http://www.wikidata.org/entity/Q12418">the Mona Lisa</span>. <span class="linenum">12</span> </p> <span class="linenum">13</span> </div> <span class="linenum">14</span> <div resource="http://www.wikidata.org/entity/Q12418"> <span class="linenum">15</span> <p> <span class="linenum">16</span> The <span property="dcterms:title">Mona Lisa</span> was painted by <span class="linenum">17</span> <a property="dcterms:creator" href="http://dbpedia.org/resource/Leonardo_da_Vinci">Leonardo da Vinci</a> <span class="linenum">18</span> and is the subject of the video <span class="linenum">19</span> <a href="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619">'La Joconde à Washington'</a>. <span class="linenum">20</span> </p> <span class="linenum">21</span> </div> <span class="linenum">22</span> <div resource="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619"> <span class="linenum">23</span> <link property="dcterms:subject" href="http://www.wikidata.org/entity/Q12418"/> <span class="linenum">24</span> </div> <span class="linenum">25</span> </body></pre></div> <p>上記の例には、HTML内でRDFトリプルの仕様を有効にする、<code>resource</code>(資源)、<code>property</code>(プロパティー)、<code>typeof</code>(~の型)、<code>prefix</code>(接頭辞)の4つの特別なRDFa属性が含まれています。</p> <p>1行目の<code>prefix</code>属性は、Turtle接頭辞と同じような方法でIRIの省略形を指定します。厳密に言えば、RDFaには、この例で用いているものを含め、<a href="http://www.w3.org/2011/rdfa-context/rdfa-1.1">定義済み接頭辞</a>のリストがあるため、これらの特別な接頭辞は省略可能でした。</p> <p>4行目と14行目の<code>div</code>要素には、このHTML要素内でRDFステートメントを記述できるIRIを指定する<code>resource</code>属性があります。4行目の<code>typeof</code>属性の意味は、Turtleの<code>(is) a</code>という省略形に似ており、主語である<code>http://example.org/bob#me</code>は、<code>foaf:Person</code>というクラスのインスタンス(<code>rdf:type</code>)です。</p> <p>6行目には<code>property</code>属性があり、この属性の値(<code>foaf:knows</code>)は、RDFプロパティーIRIとして解釈されます。<code>href</code>属性の値(<code>http://example.org/alice#me</code>)は、ここではトリプルの目的語として解釈されます。したがって、6行目の結果であるRDFステートメントは次のとおりです。</p> <pre><code><http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> .</code></pre> <p>7行目には、リテラル値を目的語として持つトリプルがあります。<code>property</code>属性は、ここではHTMLの<code>time</code>要素で指定されています。HTMLでは、時間(time)要素の内容は、何らかの有効な<a href="http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element">時間の値</a>である必要があります。<code>time</code>要素の組み込み済みのHTMLセマンティクスを用いれば、RDFaは、明示的なデータ型宣言なしに、値を<code>xsd:date</code>として解釈できます。</p> <p>10~11行目には、トリプルの目的語を指定するためにも用いられている<code>resource</code>属性があります。このアプローチは、目的語がIRIで、IRI自体がHTMLコンテンツ(<code>href</code>属性など)の一部ではない場合に用いられます。16行目には、2番目のリテラルの例(「モナ・リザ」)が含まれており、ここでは<code>span</code>属性のコンテンツとして定義されています。RDFaは、リテラルのデータ型を推論できない場合には、データ型は<code>xsd:string</code>であると推測するでしょう。</p> <p>RDFステートメントをドキュメントのHTMLコンテンツの一部として定義することが可能だとは限りません。その場合、コンテンツを表示しないHTML構成子を用いてトリプルを指定できます。22~23行目にその例があります。23行目のHTMLの<code>link</code>要素は、Europeanaのビデオ(22行目)のトピックが何なのかを明示するためにここで用いられています。</p> <p>この例のRDFaの使用は、RDFa Lite[<cite><a class="bibref" href="#bib-RDFA-LITE">RDFA-LITE</a></cite>]に制限されています。RDFaに関する詳細については、RDFa入門[<cite><a class="bibref" href="#bib-RDFA-PRIMER">RDFA-PRIMER</a></cite>]をご覧ください。</p> </section> <section id="section-rdfxml" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_section-rdfxml"><span class="secno">5.4 </span>RDF/XML</h3> <p>RDF/XML[<cite><a class="bibref" href="#bib-RDF-SYNTAX-GRAMMAR">RDF-SYNTAX-GRAMMAR</a></cite>]は、RDFグラフにXML構文を提供します。RDFが最初に開発された1990年代後半には、これはRDFの唯一の構文であり、いまだにこの構文を「RDF」と呼ぶ人もいます。2001年には、「N3」と呼ばれるTurtleの前身が提案され、徐々に、ここで列挙しているその他の言語が採用され、標準化されました。</p> <p>下記のRDF/XMLの例は、<a href="#fig4" class="fig-ref">図4</a>で描かれているRDFグラフをエンコードしています。</p> <div class="example"><div class="example-title"><span>例15</span>: RDF/XML</div><pre id="rdf-xml-example" class="example"><span class="linenum">01</span> <?xml version="1.0" encoding="utf-8"?> <span class="linenum">02</span> <rdf:RDF <span class="linenum">03</span> xmlns:dcterms="http://purl.org/dc/terms/" <span class="linenum">04</span> xmlns:foaf="http://xmlns.com/foaf/0.1/" <span class="linenum">05</span> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <span class="linenum">06</span> xmlns:schema="http://schema.org/"> <span class="linenum">07</span> <rdf:Description rdf:about="http://example.org/bob#me"> <span class="linenum">08</span> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <span class="linenum">09</span> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-07-04</schema:birthDate> <span class="linenum">10</span> <foaf:knows rdf:resource="http://example.org/alice#me"/> <span class="linenum">11</span> <foaf:topic_interest rdf:resource="http://www.wikidata.org/entity/Q12418"/> <span class="linenum">12</span> </rdf:Description> <span class="linenum">13</span> <rdf:Description rdf:about="http://www.wikidata.org/entity/Q12418"> <span class="linenum">14</span> <dcterms:title>Mona Lisa</dcterms:title> <span class="linenum">15</span> <dcterms:creator rdf:resource="http://dbpedia.org/resource/Leonardo_da_Vinci"/> <span class="linenum">16</span> </rdf:Description> <span class="linenum">17</span> <rdf:Description rdf:about="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619"> <span class="linenum">18</span> <dcterms:subject rdf:resource="http://www.wikidata.org/entity/Q12418"/> <span class="linenum">19</span> </rdf:Description> <span class="linenum">20</span> </rdf:RDF></pre></div> <p>RDF/XMLではRDFトリプルは、<code>rdf:RDF</code>というXML要素内で指定します(2行目と20行目)。<code>rdf:RDF</code>開始タグの属性(3~6行目)は、XMLの要素と属性の名前を記述するための省略形を提供します。<code>rdf:Description</code>というXML要素(<code>http://www.w3.org/1999/02/22-rdf-syntax-ns#Description</code>の省略形)は、<code>about</code>属性で指定されているIRIを主語として持つトリプルの集合を定義するために用いられます。最初の記述ブロック(7~12行目)には4つの下位要素があります。下位要素の名前は、RDFプロパティーを表わすIRI(例えば<code>rdf:type</code>)です(8行目)。ここの下位要素はそれぞれ1つのトリプルを表わします。トリプルの目的語がIRIでもある場合には、プロパティー下位要素には内容がなく、その目的語のIRIは<code>rdf:resource</code>属性を用いて指定されます(8、10~11、15、18行目)。例えば、10行目は次のトリプルに相当します。</p> <pre><code><http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> .</code></pre> <p>トリプルの目的語がリテラルであれば、そのリテラルの値がプロパティーの要素のコンテンツとして入力されます(9行目と14行目)。データ型はプロパティーの要素の属性として指定されます(9行目)。データ型が省略され(14行目)、言語タグが存在しない場合、リテラルは<code>xsd:string</code>というデータ型を持つと考えられます。</p> <p>例は、ベースラインの構文を示しています。構文のより詳細な処理に関しては、RDF/XMLドキュメント[<cite><a class="bibref" href="#bib-RDF11-XML">RDF11-XML</a></cite>]をご覧ください。これらの名前空間の一部に接頭辞が定義されていたという事実にもかかわらず、属性値にフル形式のIRIが含まれているのは変だと思われるかもしれません。それは、これらの接頭辞はXML要素と属性名にのみ使用できるからという理由によります。</p> </section> </section> <section id="section-semantics" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-semantics"><span class="secno">6. </span>RDFグラフのセマンティクス</h2> <p>RDFを使用する重要な目標は、整合性と有用性を保ちつつより大きな集合を形成するために複数の情報源の有用な情報を自動的に結合できることです。この結合のための出発点として、上で述べたように、すべての情報は、主語-述語-目的語のトリプルという同じシンプルな形式で伝えられます。しかし、情報の整合性を保つためには、単なる標準構文を越えることが必要で、これらのトリプルのセマンティクスについて合意する必要もあります。</p> <p>入門仕様のこの時点までに、読者は、RDFのセマンティクスを直観的に理解できるようになっているでしょう。</p> <ol> <li>主語、述語、目的語を指定するために用いるIRIの範囲は「グローバル」で、これらを使用するたびに同じものが指定されます。</li> <li>主語と目的語の間に述語関係が実在する場合に限り、個々のトリプルは「真」です。</li> <li>RDFグラフ内のすべてのトリプルが「真」である場合に限り、そのRDFグラフは「真」です。</li> </ol> <p>これらの概念(また、他のものも)、RDFセマンティクスのドキュメント[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]では、数学的正確さで指定されます。</p> <p>これらの宣言的セマンティクスを持つRDFの利点の1つは、システムが論理的な推論を行うことができるということです。すなわち、真として受け入れたあるトリプルの入力データの集合を与えられれば、システムは、ある状況下において、論理的に他のトリプルも真であるに違いないと推定できます。我々は、最初のトリプルの集合が追加のトリプルを「含意する」といいます。「推論システム」と呼ばれるこれらのシステムは、与えられたトリプルの入力データが互いに矛盾することがあると推定することもできます。</p> <p>新しい概念を使用したい時に新しい語彙を作成できる場合、RDFの柔軟性が得られれば、実行したい異なる種類の推論がたくさんあります。特定の種類の推論が様々なアプリケーションに役立つと思われる場合には、それを<a href="http://www.w3.org/TR/rdf11-mt/#semantic-extensions-and-entailment-regimes">含意レジーム</a>(entailment regime)としてドキュメント化できます。いくつかの含意レジームがRDFセマンティクスで規定されています。他のいくつかの含意レジームと、SPARQLでこれらを用いる方法の技術的な解説については[<cite><a class="bibref" href="#bib-SPARQL11-ENTAILMENT">SPARQL11-ENTAILMENT</a></cite>]を参照してください。含意レジームには、かなり簡単に実装し素早く推論を実行できるものもありますが、効果的に実装するためには精巧な技術が必要なものもあることに注意してください。</p> <p>含意の例として、次の2つのステートメントについて考えてみてください。</p> <pre> <code>ex:bob foaf:knows ex:alice .</code> <code>foaf:knows rdfs:domain foaf:Person .</code></pre> <p>このグラフから次のトリプルを導き出すことは正当であることが、RDFセマンティクスのドキュメントから分かります。</p> <pre> <code>ex:bob rdf:type foaf:Person .</code></pre> <p>上記の導出は、RDFスキーマ含意[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]の例です。</p> <p>リテラルがXMLスキーマ・データ型の<a href="http://www.w3.org/TR/xmlschema11-2/#integer">integer</a>(整数)に対して定義されている制約に準拠していないため、RDFのセマンティクスから、</p> <pre> <code>ex:bob ex:age "forty"^^xsd:integer . </code></pre> <p>このトリプルには論理矛盾が生じることも分かります。</p> <p>RDFツールがすべてのデータ型を認識するとは限らないことに注意してください。最小限、ツールは文字列のリテラルと言語タグ付きリテラル用のデータ型をサポートする必要があります。</p> <p>他の多くのデータ・モデリング言語とは異なり、RDFスキーマはモデリングに関し相当な自由度が認められています。例えば、同じエンティティーをクラスとプロパティーの両方として使用できます。さらに、「クラス」と「インスタンス」の領域には厳密な区別はありません。したがって、RDFセマンティクスは、次のグラフを有効なものと見なします。</p> <pre> <code>ex:Jumbo rdf:type ex:Elephant .</code> <code>ex:Elephant rdf:type ex:Species .</code></pre> <p>したがって、elephant(象)は、クラス(Jumboを例のインスタンスとして持つ)とインスタンス(つまり、動物種(animal species)のクラスに属する)の両方になりえます。</p> <p>この項の例は、RDFセマンティクスによって何がもたらされるのかに関する何らかの感覚を読者に与えることだけを目的としています。完全な記述に関しては[<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>]を見てください。</p> </section> <section id="section-data" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-data"><span class="secno">7. </span>RDFデータ</h2> <p>RDFにより、任意の情報源の複数のトリプルをグラフへと結合させ、正当なRDFとして処理できるようになります。大量のRDFデータは、リンクト・データ[<cite><a class="bibref" href="#bib-LINKED-DATA">LINKED-DATA</a></cite>]として利用できます。データセットは、RDFを用いて、ウェブ上で公開され連結され、そのうちの多くは、SPARQL[<cite><a class="bibref" href="#bib-SPARQL11-OVERVIEW">SPARQL11-OVERVIEW</a></cite>]でクエリ機能を提供します。上記の例で用いているそのようなデータセットの例には、次のものが含まれます。</p> <ul> <li><a href="http://www.wikidata.org/">Wikidata</a>。無料、共同型、多言語のデータベースで、<a href="http://www.wikimedia.org/">ウィキメディア財団</a>により運営されている。</li> <li><a href="http://dbpedia.org/">DBpedia</a>。<a href="http://en.wikipedia.org/wiki/Help:Infobox">ウィキペディアinfoboxes</a>から抽出されたデータを公開している。</li> <li><a href="http://www.w3.org/2006/03/wn/wn20/">WordNet</a>。英語の用語の語彙データベースで、同義語の集合にグループ化され、さまざまなセマンティックな相互関係を持つ。他の言語用に同様のデータベースが存在している。</li> <li><a href="http://www.europeana.eu/">Europeana</a>。多くのヨーロッパの機関の文化的オブジェクトに関するデータを公開している。</li> <li><a href="http://viaf.org/">VIAF</a>。多くの国立図書館やその他の機関の、人、作品、地理的な場所に関するデータを公開している。</li> </ul> <p>リンクト・データとして利用可能なデータセットのリストが<a href="http://datahub.io/dataset">datahub.io</a>で維持されています。</p> <p>RDFデータの情報源間のリンクを記録するための語彙の用語がたくさん普及しました。次の例は、OWL語彙が提供している<code>sameAs</code>プロパティーです。このプロパティーは、2つのIRIが実際には同じ資源を指し示すことを表わすために使用できます。異なる公開者が、異なる識別子を用いて同じものを表わすことができるため、これは便利です。例えば、VIAF(上記参照)にはレオナルド・ダ・ヴィンチを示すIRIもあります。<code>owl:sameAs</code>のおかげで、我々はこの情報を次のように記録できます。</p> <div class="example"><div class="example-title"><span>例16</span>: データセット間のリンク</div><pre class="example"><http://dbpedia.org/resource/Leonardo_da_Vinci> owl:sameAs <http://viaf.org/viaf/24604287/> .</pre></div> <p>RDFデータ処理ソフトウェアは、このようなリンクを、例えば、同じ資源を指し示すIRIのRDFデータを結合したり比較することにより、展開できます。</p> </section> <section id="section-conclusion" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-conclusion"><span class="secno">8. </span>さらなる情報</h2> <p>これで、RDFに関する簡潔な紹介を終了します。より多くの詳細情報を得るためには、参考文献をご覧ください。<a href="http://www.w3.org/standards/semanticweb/data"><abbr title="World Wide Web Consortium">W3C</abbr>のリンクト・データのページ</a>もご覧になると良いでしょう。</p> </section> <section class="appendix" id="section-Acknowledgments" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_section-Acknowledgments"><span class="secno">A. </span>謝辞</h2> <p>Antoine Isaacが、様々な構文形式を含む多くの例を提供しました。Pierre-Antoine Champinは、JSON-LDの例の1つを提供しました。Andrew Woodは図を作成しました。Sandro Hawkeは、RDFセマンティクスに関する項の最初の部分を書きました。</p> <p>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(ABC順)から提供されたコメントに感謝申し上げます。</p> <p>このドキュメントの「はじめに」には、2004年の入門[<cite><a class="bibref" href="#bib-RDF-PRIMER">RDF-PRIMER</a></cite>]の文章が多く含まれています。その他の部分に関しては、RDF 1.1入門は完全に新しいドキュメントです。</p> </section> <section class="appendix" id="references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <!--OddPage--> <h2 aria-level="1" role="heading" id="h2_references"><span class="secno">B. </span>参考文献</h2> <section id="informative-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter"> <h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">B.1 </span>参考情報の参考文献</h3> <dl class="bibliography" about=""> <dt id="bib-JSON-LD">[JSON-LD]</dt> <dd rel="dcterms:references">Manu Sporny, Gregg Kellogg, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/json-ld/">JSON-LD 1.0</a></cite>. 16 January 2014. W3C Recommendation. URL: <a href="http://www.w3.org/TR/json-ld/">http://www.w3.org/TR/json-ld/</a></dd> <dt id="bib-LINKED-DATA">[LINKED-DATA]</dt> <dd rel="dcterms:references">Tim Berners-Lee. <cite><a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data</a></cite>. Personal View, imperfect but published. URL: <a href="http://www.w3.org/DesignIssues/LinkedData.html">http://www.w3.org/DesignIssues/LinkedData.html</a></dd> <dt id="bib-N-QUADS">[N-QUADS]</dt> <dd rel="dcterms:references">Gavin Carothers. <cite><a href="http://www.w3.org/TR/2014/REC-n-quads-20140225/">RDF 1.1 N-Quads</a></cite>. W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-n-quads-20140225/">http://www.w3.org/TR/2014/REC-n-quads-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/n-quads/">http://www.w3.org/TR/n-quads/</a></dd> <dt id="bib-N-TRIPLES">[N-TRIPLES]</dt> <dd rel="dcterms:references">Gavin Carothers, Andy Seabourne. <cite><a href="http://www.w3.org/TR/2014/REC-n-triples-20140225/">RDF 1.1 N-Triples</a></cite>. W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-n-triples-20140225/">http://www.w3.org/TR/2014/REC-n-triples-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/n-triples/">http://www.w3.org/TR/n-triples/</a></dd> <dt id="bib-OWL2-OVERVIEW">[OWL2-OVERVIEW]</dt> <dd rel="dcterms:references">W3C OWL Working Group. <a href="http://www.w3.org/TR/owl2-overview/"><cite>OWL 2 Web Ontology Language Document Overview (Second Edition)</cite></a>. 11 December 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/owl2-overview/">http://www.w3.org/TR/owl2-overview/</a></dd> <dt id="bib-RDF-PRIMER">[RDF-PRIMER]</dt> <dd rel="dcterms:references">Frank Manola; Eric Miller. <a href="http://www.w3.org/TR/rdf-primer/"><cite>RDF Primer</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-primer/">http://www.w3.org/TR/rdf-primer/</a></dd> <dt id="bib-RDF-SYNTAX-GRAMMAR">[RDF-SYNTAX-GRAMMAR]</dt> <dd rel="dcterms:references">Fabien Gandon; Guus Schreiber. <a href="http://www.w3.org/TR/rdf-syntax-grammar/"><cite>RDF 1.1 XML Syntax</cite></a>. 9 January 2014. W3C Proposed Edited Recommendation. URL: <a href="http://www.w3.org/TR/rdf-syntax-grammar/">http://www.w3.org/TR/rdf-syntax-grammar/</a></dd> <dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt> <dd rel="dcterms:references">Richard Cyganiak, David Wood, Markus Lanthaler. <cite><a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/">http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a></dd> <dt id="bib-RDF11-DATASETS">[RDF11-DATASETS]</dt> <dd rel="dcterms:references">Antoine Zimmermann. <cite><a href="http://www.w3.org/TR/2014/NOTE-rdf11-datasets-20140225/">RDF 1.1: On Semantics of RDF Datasets</a></cite>. W3C Working Group Note, 25 February 2014. The latest version is available at <a href="http://www.w3.org/TR/rdf11-datasets/">http://www.w3.org/TR/rdf11-datasets/</a>.</dd> <dt id="bib-RDF11-MT">[RDF11-MT]</dt> <dd rel="dcterms:references">Patrick J. Hayes, Peter F. Patel-Schneider. <cite><a href="http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/">RDF 1.1 Semantics.</a></cite> W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/">http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-mt/">http://www.w3.org/TR/rdf11-mt/</a></dd> <dt id="bib-RDF11-NEW">[RDF11-NEW]</dt> <dd rel="dcterms:references">David Wood. <cite><a href="http://www.w3.org/TR/2014/NOTE-rdf11-new-20140225/">What’s New in RDF 1.1</a></cite>. W3C Working Group Note, 25 February 2014. The latest version is available at <a href="http://www.w3.org/TR/rdf11-new/">http://www.w3.org/TR/rdf11-new/</a>.</dd> <dt id="bib-RDF11-SCHEMA">[RDF11-SCHEMA]</dt> <dd rel="dcterms:references">Dan Brickley, R. V. Guha. <cite><a href="http://www.w3.org/TR/2014/REC-rdf-schema-20140225/">RDF Schema 1.1</a></cite>. W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-rdf-schema-20140225/">http://www.w3.org/TR/2014/REC-rdf-schema-20140225/</a>. The latest published version is available at <a href="http://www.w3.org/TR/rdf-schema/">http://www.w3.org/TR/rdf-schema/</a>.</dd> <dt id="bib-RDF11-XML">[RDF11-XML]</dt> <dd rel="dcterms:references">Fabien Gandon, Guus Schreiber. <cite><a href="http://www.w3.org/TR/2014/REC-rdf-syntax-grammar-20140225/">RDF 1.1 XML Syntax</a></cite>. W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-rdf-syntax-grammar-20140225/">http://www.w3.org/TR/2014/REC-rdf-syntax-grammar-20140225/</a>. The latest published version is available at <a href="http://www.w3.org/TR/rdf-syntax-grammar/">http://www.w3.org/TR/rdf-syntax-grammar/</a>.</dd> <dt id="bib-RDFA-LITE">[RDFA-LITE]</dt> <dd rel="dcterms:references">Manu Sporny. <a href="http://www.w3.org/TR/rdfa-lite/"><cite>RDFa Lite 1.1</cite></a>. 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdfa-lite/">http://www.w3.org/TR/rdfa-lite/</a></dd> <dt id="bib-RDFA-PRIMER">[RDFA-PRIMER]</dt> <dd rel="dcterms:references">Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. <a href="http://www.w3.org/TR/rdfa-primer/"><cite>RDFa 1.1 Primer - Second Edition</cite></a>. 22 August 2013. W3C Note. URL: <a href="http://www.w3.org/TR/rdfa-primer/">http://www.w3.org/TR/rdfa-primer/</a></dd> <dt id="bib-RFC3987">[RFC3987]</dt> <dd rel="dcterms:references">M. Durst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a></dd> <dt id="bib-SPARQL11-ENTAILMENT">[SPARQL11-ENTAILMENT]</dt> <dd rel="dcterms:references">Birte Glimm; Chimezie Ogbuji. <a href="http://www.w3.org/TR/sparql11-entailment/"><cite>SPARQL 1.1 Entailment Regimes</cite></a>. 21 March 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/sparql11-entailment/">http://www.w3.org/TR/sparql11-entailment/</a></dd> <dt id="bib-SPARQL11-OVERVIEW">[SPARQL11-OVERVIEW]</dt> <dd rel="dcterms:references">The W3C SPARQL Working Group. <a href="http://www.w3.org/TR/sparql11-overview/"><cite>SPARQL 1.1 Overview</cite></a>. 21 March 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/sparql11-overview/">http://www.w3.org/TR/sparql11-overview/</a></dd> <dt id="bib-SPARQL11-UPDATE">[SPARQL11-UPDATE]</dt> <dd rel="dcterms:references">Paul Gearon; Alexandre Passant; Axel Polleres. <a href="http://www.w3.org/TR/sparql11-update/"><cite>SPARQL 1.1 Update</cite></a>. 21 March 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/sparql11-update/">http://www.w3.org/TR/sparql11-update/</a></dd> <dt id="bib-TRIG">[TRIG]</dt> <dd rel="dcterms:references">Gavin Carothers, Andy Seaborne. <cite><a href="http://www.w3.org/TR/2014/REC-trig-20140225/">TriG: RDF Dataset Language</a></cite>. W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-trig-20140225/">http://www.w3.org/TR/2014/REC-trig-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/trig/">http://www.w3.org/TR/trig/</a></dd> <dt id="bib-TURTLE">[TURTLE]</dt> <dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers. <cite><a href="http://www.w3.org/TR/2014/REC-turtle-20140225/">RDF 1.1 Turtle: Terse RDF Triple Language.</a></cite> W3C Recommendation, 25 February 2014. URL: <a href="http://www.w3.org/TR/2014/REC-turtle-20140225/">http://www.w3.org/TR/2014/REC-turtle-20140225/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a></dd> </dl> </section></section> </body> </html>