【注意】 このドキュメントは、W3CのSPARQL Query Results XML Format (Second Edition) W3C Recommendation 21 March 2013の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2013年8月7日
このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。
翻訳版も参照してください。
Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), 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技術報告インデックスにあります。
このドキュメントは、SPARQLワーキンググループが作成した以下の11のSPARQL 1.1勧告のうちの1つです。
旧バージョン以降、このドキュメントには実質的な変更はありませんでした。マイナーな編集上の変更がある場合には、変更履歴に詳細が記述されており、色分けした差分として見ることができます。
[email protected](公開アーカイブ)にコメントをお送りください。このドキュメントに対するSPARQLワーキンググループの作業は完了していますが、コメントは正誤表や今後の改定で扱われることがあります。公開討論は、 [email protected](公開アーカイブ)で歓迎します。
このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。
このドキュメントは、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結果ドキュメントを定義します。
同じような設計に従うけれども、XMLを使用しない結果フォーマットが他に2つあり、それらは、SPARQL 1.1クエリ結果JSONフォーマット [SRJ]と、SPARQL 1.1クエリ結果CSVおよびTSVフォーマット [SRC]です。
定義: SPARQL結果ドキュメント
A 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:[email protected]</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
PARQLクエリの例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ファイル・システム上に保存された結果ファイルには、ファイル・タイプ「テキスト」が付与されていることが推奨されます。
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.