CyberLibrarian

【注意】 このドキュメントは、W3CのSPARQL Query Results XML Format W3C Recommendation 15 January 2008の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。

First Update: 2008年3月22日 | セマンティック・ウェブ関連用語集


W3C

SPARQLクエリ結果XMLフォーマット

W3C勧告 2008年1月15日

本バージョン:
http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115/
最新バージョン:
http://www.w3.org/TR/rdf-sparql-XMLres/
旧バージョン:
http://www.w3.org/TR/2007/PR-rdf-sparql-XMLres-20071112/
編集者:
Dave Beckett, Institute for Learning and Research Technology (ILRT), University of Bristol
Jeen Broekstra, Information Systems Group, Eindhoven University of Technology

このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。

翻訳版も参照してください。


要約

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項に従って情報を開示しなければなりません。


目次

1. はじめに

RDF用クエリ言語SPARQL [SPARQL-QUERY]では、いくつかのQuery Result FormsSPARQLクエリの10項)が定義されています。このドキュメントは、SELECTクエリ(SPARQLクエリの10.2項)の変数バインディング・クエリ結果と、ASKクエリのブールクエリ結果(SPARQLクエリの10.5項)をXML [XML]でコード化するSPARQL結果ドキュメントを定義します。

2. 定義

定義: SPARQL結果ドキュメント

SPARQL結果ドキュメントは、4項のRELAX NG XMLスキーマまたはW3C XMLスキーマのどちらかに対して有効なXMLドキュメントです。

2.1. ドキュメント要素

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つの下位要素があり、これらは、この順序で出現しなければなりません。

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

2.3. 結果

sparqlの2番目の子要素は、headの後で出現しなければならず、resultsbooleanのどちらかです。クエリ結果が空であっても、これは記述されます。

2.3.1. 変数バインディング結果

results要素には、クエリ結果の完全なシーケンスが含まれます。

クエリ結果内の各クエリ・ソリューションに対し、resultsresult子要素が追加され、次のようなドキュメントを出力します。

<?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つの変数xhpageをバインドした結果は、次のようなものになるでしょう。

<?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の内容として含まれています。

RDF URI参照U
<binding><uri>U</uri></binding>
RDFリテラルS
<binding><literal>S</literal></binding>
言語Lを持つRDFリテラルS
<binding><literal xml:lang="L">S</literal></binding>
データ型URI Dを持つRDF型付きリテラルS
<binding><literal datatype="D">S</literal></binding>
空白ノード・ラベルI
<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>

2.3.2. ブール結果

ブール結果は、下記の通り、headの直後に、sparql要素のboolean子要素の要素内容としてtrueまたはfalseで記述されます。

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  ...  head ...

  <boolean>true</boolean>

</sparql>

3. 例

3.1. 変数バインディング結果の例

クエリ・グラフ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に変換できます。

3.2. ブール結果の例

クエリ・グラフ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に変換できます。

4. XMLスキーマ

次のフォーマットで提供される規範的なXMLスキーマがあります。

  1. RELAX NG[RELAXNG] Compact[RELAXNG-COMPACT]は、result.rnc
  2. RELAX NG XMLは、result.rng
  3. W3C XML Schema[XMLSCHEMA-1]は、result.xsd
    注意: このスキーマは、RELAX NG 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>

5. インターネット・メディア・タイプ、ファイル拡張子、およびマッキントッシュ・ファイル・タイプ

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

タイプ名:
application
サブタイプ名:
sparql-results+xml
必須パラメータ:
なし
任意のパラメータ:
"charset": このパラメータは、[RFC3023]の3.2項で定められている「application/xml」メディア・タイプのcharsetパラメータと同じセマンティクスを持っています。
コード化に関する考察:
[RFC3023]の3.2項で定められている「application/xml」と同じです。
セキュリティに関する考察:

SPARQLクエリ結果は、URIを用います。[RFC3986]の7項を参照してください。

SPARQLクエリ結果は、IRIを用います。[RFC3987]の8項を参照してください。。

このメディア・タイプが「+xml」という慣習を用いるため、[RFC3023]の10項で記述されるのと同じセキュリティ上の問題を共有します。

互換性に関する考察:
互換性の問題は知られていません。
公開済み仕様書:
この仕様書。
このメディア・タイプを使用するアプリケーション:
現時点でこのメディア・タイプを使用するアプリケーションは知られていません。
追加情報:
マジック・ナンバー:
[RFC3023]の3.2項の「application/xml」で定められているとおり。
ファイル拡張子:
".srx"
フラグメント識別子:
RFC 3023 [RFC3023]の5項で記述されている「application/xml」のものと同じです。
基底URI:
[RFC3023]の6項で定められているとおり。
マッキントッシュ・ファイル・タイプ・コード:
"TEXT"
詳細情報に関する連絡先:
Dave Beckett, Eric Prud'hommeaux <public-rdf-dawg-comments@w3.org>
意図する使途:
COMMON
使用上の制限:
なし
著者/改版管理者:
SPARQL仕様は、ワールド・ワイド・ウェブ・コンソーシアム(World Wide Web Consortium)のRDFデータ・アクセス・ワーキンググループ(RDF Data Access Working Group)の作業の成果です。W3Cは、これらの仕様の変更に対する管理権を有します。

参考文献

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

6. 参考文献

[XML]
Extensible Markup Language (XML) 1.0, Third Edition, T. Bray, J. Paoli, C.M. Sperberg-McQueen, E. Maler, F. Yergeau, Editors, W3C Recommendation, 4 February 2004. This document is http://www.w3.org/TR/2004/REC-xml-20040204 . The latest version is available at http://www.w3.org/TR/REC-xml .
[SPARQL-QUERY]
SPARQL Query Language for RDF, E. Prud'hommeaux, A. Seaborne, Editors, W3C Recommendation, 15 January 2008. This document is http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/ . The latest version is available at http://www.w3.org/TR/rdf-sparql-query/ .
[RELAXNG]
RELAX NG Specification, James Clark and MURATA Makoto, Editors, OASIS Committee Specification, 3 December 2001. This document is http://www.oasis-open.org/committees/relax-ng/spec-20011203.html . The latest version is available at http://www.oasis-open.org/committees/relax-ng/spec.html .
[RELAXNG-COMPACT]
RELAX NG Compact Syntax, James Clark, Editor. OASIS Committee Specification, 21 November 2002. This document is http://www.oasis-open.org/committees/relax-ng/compact-20021121.html .
[XMLSCHEMA-1]
XML Schema Part 1: Structures Second Edition, D. Beech, N. Mendelsohn, M. Maloney, H. S. Thompson, Editors, W3C Recommendation, 28 October 2004. This document is http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ . The latest version is available at http://www.w3.org/TR/xmlschema-1/ .