【注意】 このドキュメントは、W3CのSPARQL Query Results XML Format W3C Recommendation 15 January 2008の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2008年3月22日
このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。
翻訳版も参照してください。
Copyright ©2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
RDFは、WWW資源に関する情報を表すための、柔軟で、拡張可能な手段です。これは、とりわけ、個人情報、ソーシャル・ネットワーク、音楽や画像のようなデジタル加工品に関するメタデータを表現し、異なるソースの情報を統合する手段を提供するために用いられます。複数の実装を有するRDFデータ用の標準クエリ言語は、開発者やエンドユーザに、この広範囲な分野にわたる情報のクエリ結果を記述し利用する方法を提供します。
このドキュメントでは、アクティビティ声明で記述されているように、セマンティック・ウェブ・アクティビティの一部であるW3CのRDFデータ・アクセス・ワーキンググループ(DAWG)によって開発された、RDF用のクエリ言語SPARQLで提供される変数バインディングのためのXMLフォーマットおよびブール結果フォーマットについて説明します。
この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。
これは、W3C勧告です。
このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。
このドキュメントに関するコメントは、公開アーカイブ付きのメーリングリスト、public-rdf-dawg-comments@w3.orgにお送りください。拡張や機能を含むこの仕様とは関連のないSPARQLに関する質問とコメントは、メーリングリストpublic-sparql-dev@w3.org(公開アーカイブ)で議論できます。
このドキュメントは、RDFデータ・アクセス・ワーキンググループが作成したもので、W3Cセマンティック・ウェブ・アクティビティの一部です。このドキュメントの草案としての最初の公開は2004年12月21日で、ワーキンググループは、それ以後に受け取った多くのコメントと課題に取り組んで来ました。メディア・タイプapplication/sparql-results+xmlは、2007年11月の勧告案の公表以後に承認されています。
ワーキンググループのSPARQLクエリ結果XMLフォーマット実装報告書は、2007年9月の勧告候補で設定された相互運用可能な実装という目標が達成されたことを示しています。
データ・アクセス・ワーキンググループは、集約関数、および更新言語を含む12の課題を先送りしました。
このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。
RDF用クエリ言語SPARQL [SPARQL-QUERY]では、いくつかのQuery Result Forms(SPARQLクエリの10項)が定義されています。このドキュメントは、SELECTクエリ(SPARQLクエリの10.2項)の変数バインディング・クエリ結果と、ASKクエリのブールクエリ結果(SPARQLクエリの10.5項)をXML [XML]でコード化するSPARQL結果ドキュメントを定義します。
定義: SPARQL結果ドキュメント
SPARQL結果ドキュメントは、4項のRELAX NG XMLスキーマまたはW3C XMLスキーマのどちらかに対して有効なXMLドキュメントです。
SPARQL結果ドキュメントは、次のように記述された名前空間http://www.w3.org/2005/sparql-results#のsparqlというドキュメント要素で始まります。
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
sparql要素内には、headと結果要素(resultsまたはbooleanのどちらか)という2つの下位要素があり、これらは、この順序で出現しなければなりません。
head要素は、sparql要素の最初の子要素です。
変数バインディング・クエリ結果では、headは、ソリューション・シーケンス内のクエリ変数名の集合を記述した要素のシーケンスを含まなければなりません(ここでは、クエリ結果と呼びます)。
シーケンス内の変数名の順序は、SPARQLクエリにおけるSELECTステートメントの引数に与えられた変数名の順序です。SELECT *を用いた場合は、名前の順序は定義されません。
head要素内では、選択された変数名の順序付きシーケンスは、name属性の値として変数名を持つvariableという空の子要素を作成するために用いられ、次のようなドキュメントを出力します。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
<variable name="name"/>
<variable name="mbox"/>
<variable name="blurb"/>
</head>
...
</sparql>
ブール・クエリ結果には、head内では要素は必要なく、variableは存在してはなりません。
また、任意のクエリ結果では、headには、クエリ結果に関する何らかの追加メタデータへのリンクを提供する相対URIを含んだhref属性を有するlink子供要素を含むこともできます。相対URIは、通常はクエリ結果フォーマット・ドキュメントURIである、スコープ内の基底URIに対して解決されます。link要素は、存在する任意のvariable要素の後で出現しなければなりません。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
...
<link href="metadata.rdf"/>
</head>
...
</sparql>
sparqlの2番目の子要素は、headの後で出現しなければならず、resultsかbooleanのどちらかです。クエリ結果が空であっても、これは記述されます。
results要素には、クエリ結果の完全なシーケンスが含まれます。
クエリ結果内の各クエリ・ソリューションに対し、resultsのresult子要素が追加され、次のようなドキュメントを出力します。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
... head ...
<results>
<result>...
</result>
<result>...
</result>
...
</results>
</sparql>
各result要素は、結果の中の1つのクエリ・ソリューションに対応しており、ソリューションに出現する各クエリ変数に対する子要素を含んでいます(特定の順序ではなく)。これは、クエリ変数がどのようにRDF用語にバインドするかを記録するために用いられます。
ソリューション内の各バインディングは、name属性の値としてクエリ変数名を持つresultの子供としてのbinding要素として記述されます。そのため、2つの変数xとhpageをバインドした結果は、次のようなものになるでしょう。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
</head>
<results>
<result>
<binding name="x"> ... </binding>
<binding name="hpage"> ... </binding>
</result>
<result>
<binding name="x"> ... </binding>
<binding name="hpage"> ... </binding>
</result>
...
</results>
</sparql>
RDF用語であるクエリ変数バインディングの値は、下記のbindingの内容として含まれています。
<binding><uri>U</uri></binding><binding><literal>S</literal></binding><binding><literal
xml:lang="L">S</literal></binding><binding><literal
datatype="D">S</literal></binding><binding><bnode>I</bnode></binding>特定のソリューションに対し、変数がバインドされていない場合、result要素には、その変数に対するbinding要素もは含まれていません。
注意: 空白ノード・ラベルIは、結果集合XMLドキュメントで有効で、クエリ・グラフの当該RDF用語に対する空白ノード・ラベルといかなる関連性も持つ必要はありません。
このフォーマットでコード化されたクエリ・ソリューションの例は、下記の通りです。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
<variable name="name"/>
<variable name="age"/>
<variable name="mbox"/>
<variable name="friend"/>
</head>
<results>
<result>
<binding name="x">
<bnode>r2</bnode>
</binding>
<binding name="hpage">
<uri>http://work.example.org/bob/</uri>
</binding>
<binding name="name">
<literal xml:lang="en">Bob</literal>
</binding>
<binding name="age">
<literal datatype="http://www.w3.org/2001/XMLSchema#integer">30</literal>
</binding>
<binding name="mbox">
<uri>mailto:bob@work.example.org</uri>
</binding>
</result>
...
</results>
</sparql>
ブール結果は、下記の通り、headの直後に、sparql要素のboolean子要素の要素内容としてtrueまたはfalseで記述されます。
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... head ... <boolean>true</boolean> </sparql>
クエリ・グラフTurtle/N3データdata.n3で動作し、XMLで記述された順序付き変数バインディング・クエリ結果output.srxをもたらす、SPARQLクエリSELECTの例example.rq。
このXMLは、output-xquery.htmlを出力するサンプルXMLクエリ・スクリプトresult-to-html.xqを用いるか、output-xslt.htmlを出力するXSLTシートresult-to-html.xslを用いてXHTMLに変換できます。
クエリ・グラフTurtle/N3データdata.n3で動作し、XMLで記述されたブール・クエリ結果output2.srxをもたらす、ASK SPARQLクエリの例example2.rq。
このXMLは、output-xquery2.htmlを出力するサンプルXMLクエリ・スクリプトresult-to-html.xqを用いるか、output-xslt2.htmlを出力するXSLTシートresult-to-html.xslを用いてXHTMLに変換できます。
次のフォーマットで提供される規範的なXMLスキーマがあります。
W3C XMLスキーマを用いる場合、次のように、xsi:schemaLocation属性を用いてスキーマを示すことができます。
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2007/SPARQL/result.xsd">
...
</sparql>
SPARQLクエリ結果XMLフォーマットのインターネット・メディア・タイプ/MIMEタイプは、「application/sparql-results+xml」です。
結果ファイルは、全てのプラットホーム上で拡張子「.srx」(全て小文字)であることが推奨されます。
マッキントッシュHFSファイル・システム上に保存された結果ファイルには、ファイル・タイプ「テキスト」が付与されていることが推奨されます。
下記のこの情報は、IANAでのレビュー、承認、および登録のためにIESGに提出されました。このドキュメントの公開日現在、IESGからの回答はありません。
To: ietf-types@iana.org
Subject: Registration of media type application/sparql-results+xml
SPARQLクエリ結果は、URIを用います。[RFC3986]の7項を参照してください。
SPARQLクエリ結果は、IRIを用います。[RFC3987]の8項を参照してください。。
このメディア・タイプが「+xml」という慣習を用いるため、[RFC3023]の10項で記述されるのと同じセキュリティ上の問題を共有します。
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.
[RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, January 2005.