Copyright © 2008-2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
SPARQL Protocol and RDF Query Language(SPARQL)は、RDFのためのクエリ言語およびプロトコルです。この文書はSPARQLプロトコルを規定します。これは、 SPARQLクエリおよび更新をSPARQL処理サービスへ伝達し、その結果をHTTP経由で、 それらを要求したエンティティへ返す手段を説明します。このプロトコルは、W3C SPARQL Working Groupによって開発されました。これは、Semantic Web Activityの一部であり、 活動声明で説明されています。
この節では、公開時点におけるこの 文書のステータスを説明します。現在のW3C 公開物およびこの技術報告の最新改訂の一覧は、 W3C標準および草案 インデックスで確認できます。
この仕様は、 RDF Star Working Groupにより、形式および正誤表に関する 仕様更新の一部として公開されています。
この文書は、RDF & SPARQL Working Groupにより、 勧告 トラックを使用する作業草案として公開されました。
作業草案としての公開は、 W3Cおよびそのメンバーによる承認を意味しません。
これは草案文書であり、いつでも他の文書によって更新、置換、または廃止される可能性があります。 この文書を作業中のもの以外として引用することは不適切です。 今後予定される勧告への更新には、 新機能が組み込まれる可能性があります。
この文書は、 W3C 特許 ポリシーの下で運営されるグループによって作成されました。 W3Cは、 グループの成果物に関連して行われた特許 開示の公開一覧を管理しています。 そのページには、特許を開示するための手順も含まれています。個人が、 その個人が必須クレームを含むと考える 特許について実際の知識を有する場合、その情報を W3C特許ポリシーの第6節に従って 開示しなければなりません。
この文書は、 2025年8月18日版W3Cプロセス文書に準拠します。
この文書は、SPARQL 1.2プロトコル、すなわちSPARQLクエリおよび更新をクライアントから SPARQLプロセッサへ伝達する手段について説明します。SPARQLプロトコルは、 SPARQL 1.2クエリ言語および SPARQL 1.2 更新との互換性を考慮して設計されています。この文書は主に、 SPARQLクエリおよび更新サービスならびにクライアントの実装に関心のあるソフトウェア開発者を対象としています。
SPARQLプロトコルは、2つのHTTP操作から構成されます。SPARQLクエリ言語のクエリを実行するための クエリ操作と、SPARQL更新言語のリクエストを実行するための更新 操作です。SPARQLプロトコル・クライアントはHTTPリクエストを SPARQLプロトコル・サービスへ送信し、そのサービスがリクエストを処理して、送信元クライアントへ HTTPレスポンスを返します。
別の文書では、RESTアーキテクチャスタイルにおいてグラフの集合を管理する目的で HTTP操作を使用する方法を説明するSPARQL 1.2グラフストア プロトコルについて説明しています。
この文書でmust、must not、 should、should not、 およびmayという語を使用し、それらの語が強調テキストとして現れる場合、 それらは[RFC2119]で説明されているように 解釈されなければなりません。
SPARQLプロトコルは、queryおよびupdateの2つの操作から構成されます。プロトコル操作は、次の組み合わせを定義します:
SPARQL 1.2プロトコルはHTTPの上に構築されています。リクエストおよびレスポンスに関するすべてのHTTP要件に must従わなければなりません。
クエリまたは更新操作をエンドポイントへ送信する場合、この操作のバージョンは、
構文上のversionディレクティブを使用するか、
またはversionパラメーター(使用されるHTTPメソッドに依存します)を渡すことによって告知MAYできます。
バージョンが構文とパラメーターの両方で示される場合、 それらは同じであることが期待されます。 それらが異なる場合、 パーサーはパラメーターからのバージョンを使用し、不一致に関する警告を発することがあります。
古いパーサーとの互換性を可能な限り広く維持するため、 SPARQL 1.2固有の機能を使用するクエリのみが バージョンを告知することを推奨されます(すなわち、SPARQL 1.2固有の機能を 使用しないクエリについては、バージョンを告知することは推奨されません)。
操作へのレスポンスも、バージョン告知を含むことがMAYあります。 SPARQL結果バージョンまたはRDFバージョンは、リクエストで指定された 操作バージョンと必ずしも同じではありません。 代わりに、バージョン告知は、レスポンスとその形式、たとえばSPARQL 1.2クエリ結果JSON 形式またはRDF 1.2 Turtleに依存します。
バージョン文字列の値については、RDF 1.2 Concepts and Abstract Data Modelで説明されています。
query操作は、SPARQLクエリをサービスへ送信し、そのクエリの結果を受け取るために使用されます。
query操作は、HTTP GETまたはHTTP POSTメソッドのいずれかで呼び出されなければなりません。
この操作に対するクライアントリクエストは、SPARQLクエリ文字列を正確に1つ
(パラメーター名: query)含まなければならず、
また、バージョン(パラメーター名: version)、
0個以上のデフォルトグラフURI(パラメーター名: default-graph-uri)および名前付きグラフ
URI(パラメーター名: named-graph-uri)を含むことができます。
クエリリクエストへのレスポンスは、クエリ形式および コンテンツネゴシエーション [RFC9110]に応じて、 SPARQL ResultsまたはRDFに対応する形式でなければなりません。 そのような形式の例は次のとおりです:
| HTTPメソッド | クエリ文字列パラメーター | リクエストのContent Type | リクエストメッセージ本文 | |
|---|---|---|---|---|
| GETによるquery | GET | query(正確に1)version(0または1)default-graph-uri(0以上)named-graph-uri(0以上)
|
なし | なし |
| URLエンコードPOSTによるquery | POST | なし | application/x-www-form-urlencoded |
URLエンコードされ、アンパサンドで区切られたクエリパラメーター。query(正確に1)version(0または1)default-graph-uri(0以上)named-graph-uri(0以上)
|
| 直接POSTによるquery | POST | default-graph-uri(0以上)named-graph-uri(0以上)
|
application/sparql-query(任意のversionメディア型
パラメーター付き) |
エンコードされていないSPARQLクエリ文字列 |
queryリクエストのパラメーターは、次の3つの選択肢のいずれかに従って送信されなければなりません:
プロトコル・クライアントは、HTTP GETメソッドを介してプロトコルリクエストを送信mayできます。GETメソッドを使用する場合、 クライアントはすべてのパラメーターをURL パーセントエンコード し、それらを上記で与えられた名前のクエリパラメーター文字列 [RFC3986] として含めなければなりません。
HTTPクエリ文字列パラメーターは、アンパサンド
(&)文字で区切られなければなりません。クライアントはクエリ文字列パラメーターを任意の順序で含めてもよいです。
HTTPリクエストはメッセージ本文を含んではなりません。
プロトコル・クライアントは、パラメーターをURLエンコードすることにより、HTTP POSTメソッドを介して
プロトコルリクエストを送信mayできます。この方法を使用する場合、クライアントはすべてのパラメーターをURL
パーセントエンコード [RFC3986] し、
上記で与えられた名前を用いて、application/x-www-form-urlencodedメディア型を介して
リクエスト本文内のパラメーターとして含めなければなりません。パラメーターは
アンパサンド(&)文字で区切られなければなりません。クライアントは
パラメーターを任意の順序で含めてもよいです。HTTPリクエストのContent-Typeヘッダーは
application/x-www-form-urlencodedに設定されなければなりません。
プロトコル・クライアントは、クエリをHTTPリクエストメッセージ本文として直接かつエンコードせずに含めることにより、
HTTP POSTメソッドを介してプロトコルリクエストを送信mayできます。この
方法を使用する場合、クライアントはSPARQLクエリ文字列をエンコードせずに含め、それ以外は何も
リクエストのメッセージ本文に含めてはなりません。クライアントはHTTPリクエストのContent-Type
ヘッダーをapplication/sparql-queryに設定しなければならず、任意の
versionメディア型パラメーターを付けてもよいです。クライアントは、任意の
default-graph-uriおよびnamed-graph-uri
パラメーターを、リクエストURI内のHTTPクエリ文字列パラメーターとして含めてもよいです。ここで有効な
charsetはUTF-8のみであることに注意してください。
SPARQLクエリはRDFデータセットに対して実行されます。
クエリのRDFデータセットは、SPARQLプロトコル内の
default-graph-uriおよびnamed-graph-uriパラメーターを介して指定するか、
SPARQLクエリ文字列内でFROMおよびFROM NAMED
キーワードを使用して指定できます。異なるRDFデータセットがプロトコルリクエストとSPARQLクエリ
文字列の両方で指定された場合、SPARQLサービスはプロトコルリクエストで与えられたRDF
データセットを使用してクエリを実行しなければなりません。
サービスがプロトコル・クライアントによるRDFデータセットの指定を許可しない場合、 サービスはHTTPレスポンスコード400でクエリを拒否してもよいことに注意してください。
RDFデータセットがプロトコルリクエストまたはSPARQLクエリ文字列のいずれでも指定されていない場合、 実装は実装定義のデフォルトRDFデータセットに対してクエリを実行してもよいです。
プロトコル・クライアントは、クライアントが処理できるレスポンス形式を要求するために、HTTP コンテンツネゴシエーション [RFC9110] を 使用すべきです。潜在的なレスポンス形式の詳細については下記を参照してください。
SPARQLプロトコルは、操作の成功または失敗を示すためにHTTPで定義されたレスポンスステータスコードを使用します。 各ステータスコードの詳細な定義については、HTTP仕様 [RFC9110] を参照してください。 プロトコル・サービスは、成功したクエリに対して2XX HTTPレスポンスコードを使用 shouldしますが、HTTPに従って代わりに3XXレスポンスコードを使用することを 選択mayできます。
2XXレスポンスを伴う成功したクエリ操作のレスポンス本文は、次のいずれかです:
成功したクエリ操作へのレスポンスのContent-Typeは、レスポンス本文の形式に対して定義されたメディア型でなければなりません。
失敗したクエリ操作に適用されるHTTPレスポンスコードには、次のものが含まれます:
失敗したクエリリクエストのレスポンス本文は実装定義です。実装は HTTPコンテンツネゴシエーションを使用して、失敗したクエリリクエストに関する、人間可読または機械処理可能な (またはその両方の)情報を提供してもよいです。
プロトコル・サービスは、HTTPに従って、その他の失敗条件に対して他の4XXまたは5XX HTTPレスポンスコードを使用してもよいです。
update操作は、SPARQL更新リクエストをサービスへ送信するために使用されます。update
操作は、HTTP POSTメソッドを使用して呼び出されなければなりません。この操作に対する
クライアントリクエストは、SPARQL更新リクエスト文字列を正確に1つ(パラメーター名:
update)含まなければならず、バージョン(パラメーター名:
version)ならびに0個以上のデフォルトグラフ
URI(パラメーター名: using-graph-uri)および名前付きグラフURI(パラメーター名:
using-named-graph-uri)を含むことができます。更新リクエストへのレスポンスは、
HTTPレスポンスステータスコードを介してリクエストの成功または失敗を示します。
| HTTPメソッド | クエリ文字列パラメーター | リクエストのContent Type | リクエストメッセージ本文 | |
|---|---|---|---|---|
| URLエンコードPOSTによるupdate | POST | なし | application/x-www-form-urlencoded |
URLエンコードされ、アンパサンドで区切られたクエリパラメーター。version(0または1)update(正確に1)using-graph-uri(0以上)using-named-graph-uri(0以上)
|
| 直接POSTによるupdate | POST | using-graph-uri(0以上)using-named-graph-uri(0以上)
|
application/sparql-update(任意のversionメディア型
パラメーター付き) |
エンコードされていないSPARQL更新リクエスト文字列 |
updateリクエストのパラメーターは、次の2つの選択肢のいずれかに従って送信されなければなりません:
プロトコル・クライアントは、パラメーターをURLエンコードすることにより、HTTP POSTメソッドを介して
更新プロトコルリクエストを送信mayできます。この方法を使用する場合、クライアントはすべてのパラメーターをURL
パーセント
エンコードし、上記で与えられた名前を用いて、
application/x-www-form-urlencodedメディア型を介してリクエスト本文内のパラメーターとして含めなければなりません。
パラメーターはアンパサンド(&)文字で区切られなければなりません。クライアントは
パラメーターを任意の順序で含めてもよいです。HTTPリクエストのContent-Typeヘッダーは
application/x-www-form-urlencodedに設定されなければなりません。
プロトコル・クライアントは、更新リクエストをHTTPリクエストメッセージ本文として直接かつエンコードせずに含めることにより、
HTTP POSTメソッドを介して更新プロトコルリクエストを送信mayできます。
この方法を使用する場合、クライアントはSPARQL更新リクエスト文字列を
エンコードせずに含め、それ以外は何もリクエストのメッセージ本文に含めてはなりません。クライアントは
HTTPリクエストのContent-Typeヘッダーをapplication/sparql-updateに設定しなければならず、
任意のversionメディア型パラメーターを付けてもよいです。クライアントは、
任意のusing-graph-uriおよび
using-named-graph-uriパラメーターを、リクエストURI内のHTTPクエリ文字列パラメーターとして含めてもよいです。
SPARQL更新リクエストは、SPARQLサービスによって管理されるRDFグラフの可変コンテナーであるGraph Storeに対して実行されます。
SPARQL更新DELETE/INSERT操作のWHERE句は、
Graph StoreのサブセットであるRDFデータセット内のデータに対して照合されます。
更新操作のRDFデータセットは、操作文字列自体の中でUSING、USING NAMED、および/または
WITHキーワードを使用して指定することも、
using-graph-uriおよびusing-named-graph-uriパラメーターを介して指定することもできます。
USING、USING NAMED、またはWITH句を使用する
操作を含むSPARQL 1.2更新リクエストをこのプロトコルで伝達する場合に、
using-graph-uriまたはusing-named-graph-uri
パラメーターを供給することはエラーです。
SPARQL更新プロセッサは、更新プロトコル操作におけるusing-graph-uri=g
パラメーターの各出現を、SPARQL 1.2更新リクエスト内のすべての操作に
USING <g>句が含まれているかのように扱うべきです。同様に、SPARQL更新プロセッサは、
更新プロトコル操作におけるusing-named-graph-uri=gパラメーターの各出現を、
SPARQL 1.2更新リクエスト内のすべての操作にUSING NAMED <g>句が含まれているかのように
扱うべきです。
SPARQLプロトコルは、操作の成功または失敗を示すためにHTTPで定義されたレスポンスステータスコードを使用します。
各ステータスコードの詳細な定義については、HTTP仕様
[RFC9110] を参照してください。
プロトコル・サービスは、
正常に処理された更新リクエストに対して2XX HTTPレスポンスコードを使用
shouldしますが、HTTPに従って代わりに3XX
レスポンスコードを使用することを選択mayできます。
成功した更新リクエストのレスポンス本文は実装定義です。実装は HTTPコンテンツネゴシエーションを使用して、完了した更新リクエストに関する人間可読および 機械処理可能な情報の両方を提供してもよいです。
失敗した更新リクエストに対するHTTPレスポンスコードは、次のとおりであるべきです:
失敗した更新リクエストのレスポンス本文は実装定義です。実装は HTTPコンテンツネゴシエーションを使用して、失敗した更新リクエストに関する人間可読または機械処理可能な (またはその両方の)情報を提供してもよいです。
プロトコル・サービスは、HTTPに従って、その他の失敗条件に対して他の4XXまたは5XX HTTPレスポンスコードを使用してもよいです。
SPARQLクエリまたはSPARQL更新リクエスト文字列内のBASEキーワードは、
Uniform
Resource Identifier (URI): Generic
Syntax第5.1.1節「Base URI Embedded in Content」に従って相対IRIを解決するために使用される
基底IRIを定義します。SPARQLプロトコルはクエリURIを逆参照しないため、第5.1.3節は適用されません。
最後に、第5.1.4節に従って、SPARQLプロトコル・サービスは独自の基底URIを定義しなければならず、
それはサービスエンドポイントであってもよいです。
以下のHTTPトレース例は、いくつかの異なるシナリオにおけるqueryおよびupdate
操作の呼び出しを示します。一部のトレース例は、
完全なHTTPトレースから次の方法で抽象化されています:
query操作の例では、クエリ結果を含むレスポンス本文の一部のみを
表示しています。このSPARQLクエリ
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?book ?who
WHERE { ?book dc:creator ?who }
は、このHTTPトレースに示すように、HTTP GET経由でSPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=PREFIX%20dc%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%20%0ASELECT%20%3Fbook%20%3Fwho%20%0AWHERE%20%7B%20%3Fbook%20dc%3Acreator%20%3Fwho%20%7D%0A HTTP/1.1 Host: www.example User-agent: my-sparql-client/0.1
そのSPARQLクエリサービスによって実行される、サービス提供のRDFデータセットに対するこのクエリは、 次のクエリ結果を返します:
HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="book"/>
<variable name="who"/>
</head>
<results>
<result>
<binding name="book"><uri>http://www.example/book/book5</uri></binding>
<binding name="who"><bnode>r29392923r2922</bnode></binding>
</result>
...
</sparql>
このSPARQLクエリ
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?book ?who
WHERE { ?book dc:creator ?who }
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.other.example/sparql/へ伝達されます:
GET /sparql/?query=PREFIX%20dc%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%20%0ASELECT%20%3Fbook%20%3Fwho%20%0AWHERE%20%7B%20%3Fbook%20dc%3Acreator%20%3Fwho%20%7D%0A&default-graph-uri=http%3A%2F%2Fwww.other.example%2Fbooks HTTP/1.1 Host: www.other.example User-agent: my-sparql-client/0.1
そのSPARQLクエリサービスによって実行される、
default-graph-uriパラメーターの値
http://www.other.example/booksで識別されるRDFデータセットに対するこのクエリは、
次のクエリ結果を返します:
HTTP/1.1 200 OK Date: Fri, 06 May 2005 20:55:12 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="book"/> <variable name="who"/> </head> ... </sparql>
このSPARQLクエリ
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX myfoaf: <http://www.example/jose/foaf.rdf#>
CONSTRUCT { myfoaf:jose foaf:depiction <http://www.example/jose/jose.jpg>.
myfoaf:jose foaf:schoolHomepage <http://www.edu.example/>.
?s ?p ?o.}
WHERE { ?s ?p ?o. myfoaf:jose foaf:nick "Jo".
FILTER ( ! (?s = myfoaf:kendall && ?p = foaf:knows && ?o = myfoaf:edd )
&& ! ( ?s = myfoaf:julia && ?p = foaf:mbox && ?o = <mailto:julia@mail.example> )
&& ! ( ?s = myfoaf:julia && ?p = rdf:type && ?o = foaf:Person))
}
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fjose-foaf.rdf HTTP/1.1 Host: www.example User-agent: sparql-client/0.1 Accept: text/turtle, application/rdf+xml
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:11 GMT
Server: Apache/1.3.29 (Unix)
Connection: close
Content-Type: text/turtle
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX myfoaf: <http://www.example/jose/foaf.rdf#>
myfoaf:jose foaf:name "Jose Jimeñez";
foaf:depiction <http://www.example/jose/jose.jpg>;
foaf:nick "Jo";
...
このSPARQLクエリ
PREFIX dc: <http://purl.org/dc/elements/1.1/>
ASK WHERE { ?book dc:creator "J.K. Rowling"}
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fbooks HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK Date: Fri, 06 May 2005 20:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head></head> <boolean>true</boolean> </sparql>
このSPARQLクエリ
PREFIX books: <http://www.example/book/> DESCRIBE books:book6
は、ここに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fbooks HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/rdf+xml
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:books="http://www.example/book/"
xmlns:dc="http://purl.org/dc/elements/1.1/" >
<rdf:Description rdf:about="http://www.example/book/book6">
<dc:title>Example Book #6 </dc:title>
</rdf:Description>
</rdf:RDF>
このSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?who ?g ?mbox
WHERE { ?g dc:publisher ?who .
GRAPH ?g { ?x foaf:mbox ?mbox }
}
は、ここに示すように(読みやすくするため改行を含めて)、SPARQLクエリサービス http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fpublishers &default-graph-uri=http%3A%2F%2Fwww.example%2Fmorepublishers&named-graph-uri=http%3A%2F%2Fyour.example%2Ffoaf-alice &named-graph-uri=http%3A%2F%2Fwww.example%2Ffoaf-bob&named-graph-uri=http%3A%2F%2Fwww.example%2Ffoaf-susan &named-graph-uri=http%3A%2F%2Fthis.example%2Fjohn%2Ffoaf Host: www.example User-agent: sparql-client/0.1
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="who"/>
<variable name="g"/>
<variable name="mbox"/>
</head>
...
</sparql>
このSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?who ?g ?mbox
FROM <http://www.example/publishers>
FROM NAMED <http://www.example/alice>
FROM NAMED <http://www.example/bob>
WHERE { ?g dc:publisher ?who .
GRAPH ?g { ?x foaf:mbox ?mbox }
}
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
このSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?who ?g ?mbox
FROM <http://www.example/publishers>
FROM NAMED <http://www.example/john>
FROM NAMED <http://www.example/susan>
WHERE { ?g dc:publisher ?who .
GRAPH ?g { ?x foaf:mbox ?mbox }
}
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fmorepublishers &named-graph-uri=http%3A%2F%2Fwww.example%2Fbob&named-graph-uri=http%3A%2F%2Fwww.example%2Falice HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
このプロトコル操作には曖昧なRDFデータセットが含まれています。すなわち、クエリで指定されたデータセットは、
プロトコルで(default-graph-uriおよびnamed-graph-uriパラメーターを通じて)
指定されたデータセットとは異なります。適合するSPARQLプロトコルサービスは、
プロトコルで指定されたRDFデータセットに対してクエリを実行することで、この曖昧さを解決しなければなりません:
HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="who"/>
<variable name="g"/>
<variable name="mbox"/>
</head>
<results>
<result>
<binding name="who">
<literal>Bob Hacker</literal>
</binding>
<binding name="g">
<uri>http://www.example/bob</uri>
</binding>
<binding name="mbox">
<uri>mailto:bob@oldcorp.example</uri>
</binding>
</result>
<result>
<binding name="who">
<literal>Alice Hacker</literal>
</binding>
<binding name="g">
<uri>http://www.example/alice</uri>
</binding>
<binding name="mbox">
<uri>mailto:alice@work.example</uri>
</binding>
</result>
</results>
</sparql>
この構文的に無効なSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE { ?x foaf:name ?name
ORDER BY ?name }
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fwww.example%2Fmorepublishers HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
エラーレスポンスはここに示すとおりです:
HTTP/1.1 400 Bad Request Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: text/plain; charset=UTF-8 4:syntax error, unexpected ORDER, expecting '}'
このSPARQLクエリ
PREFIX bio: <http://bio.example/schema/#>
SELECT ?valence
FROM <http://another.example/protein-db.rdf>
WHERE { ?x bio:protein ?valence }
ORDER BY ?valence
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=EncodedQuery&default-graph-uri=http%3A%2F%2Fanother.example%2Fprotein-db.rdf HTTP/1.1 Host: www.example User-agent: sparql-client/0.1
エラーレスポンスはここに示すとおりです:
HTTP/1.1 500 Internal Server Error Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: text/plain SPARQL Processing Service: Query Request Refused Your request could not be processed because http://another.example/protein-db.rdf could not be retrieved within the time alloted.
一部のSPARQLクエリは、おそらく機械生成されたもので、2.1.1 GETによるqueryで説明されている HTTP GETバインディングによって確実に伝達できる長さを超える場合があります。 そのような場合には、2.1.2 URLエンコードされたパラメーターを伴うPOSTによるqueryで説明されている POSTバインディングを使用できます。このSPARQLクエリ
PREFIX : <http://www.w3.org/2002/12/cal/icaltzd#>
PREFIX Chi: <http://www.w3.org/2002/12/cal/test/Chiefs.ics#>
PREFIX New: <http://www.w3.org/2002/12/cal/tzd/America/New_York#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?summary
WHERE {
{
Chi:D603E2AC-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-09-08T16:00:00"^^New:tz;
:dtstamp "2002-09-06T03:09:27Z"^^xsd:dateTime;
:dtstart "2002-09-08T13:00:00"^^New:tz;
:summary ?summary;
:uid "D603E2AC-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D603E90B-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-09-15T16:00:00"^^New:tz;
:dtstamp "2002-09-06T03:10:19Z"^^xsd:dateTime;
:dtstart "2002-09-15T13:00:00"^^New:tz;
:summary ?summary;
:uid "D603E90B-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D603ED6E-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-09-22T16:00:00"^^New:tz;
:dtstamp "2002-09-06T03:11:05Z"^^xsd:dateTime;
:dtstart "2002-09-22T13:00:00"^^New:tz;
:summary ?summary;
:uid "D603ED6E-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D603F18C-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-09-29T16:00:00"^^New:tz;
:dtstamp "2002-09-06T03:15:46Z"^^xsd:dateTime;
:dtstart "2002-09-29T13:00:00"^^New:tz;
:summary ?summary;
:uid "D603F18C-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D603F5B7-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-11-04"^^xsd:date;
:dtstamp "2002-09-06T03:12:53Z"^^xsd:dateTime;
:dtstart "2002-11-03"^^xsd:date;
:summary ?summary;
:uid "D603F5B7-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D603F9D7-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-11-10T20:15:00"^^New:tz;
:dtstamp "2002-09-06T03:14:12Z"^^xsd:dateTime;
:dtstart "2002-11-10T17:15:00"^^New:tz;
:summary ?summary;
:uid "D603F9D7-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D604022C-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-11-17T17:00:00"^^New:tz;
:dtstamp "2002-09-06T03:14:51Z"^^xsd:dateTime;
:dtstart "2002-11-17T14:00:00"^^New:tz;
:summary ?summary;
:uid "D604022C-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D604065C-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-10-06T19:05:00"^^New:tz;
:dtstamp "2002-09-06T03:16:54Z"^^xsd:dateTime;
:dtstart "2002-10-06T16:05:00"^^New:tz;
:summary ?summary;
:uid "D604065C-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6040A7E-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-10-13T19:15:00"^^New:tz;
:dtstamp "2002-09-06T03:17:51Z"^^xsd:dateTime;
:dtstart "2002-10-13T16:15:00"^^New:tz;
:summary ?summary;
:uid "D6040A7E-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6040E96-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-10-20T16:00:00"^^New:tz;
:dtstamp "2002-09-06T03:18:32Z"^^xsd:dateTime;
:dtstart "2002-10-20T13:00:00"^^New:tz;
:summary ?summary;
:uid "D6040E96-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6041270-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-10-27T17:00:00"^^New:tz;
:dtstamp "2002-09-06T03:19:15Z"^^xsd:dateTime;
:dtstart "2002-10-27T14:00:00"^^New:tz;
:summary ?summary;
:uid "D6041270-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6041673-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-11-24T20:05:00"^^New:tz;
:dtstamp "2002-09-06T03:22:09Z"^^xsd:dateTime;
:dtstart "2002-11-24T17:05:00"^^New:tz;
:summary ?summary;
:uid "D6041673-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6041A73-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-12-01T17:00:00"^^New:tz;
:dtstamp "2002-09-06T03:22:52Z"^^xsd:dateTime;
:dtstart "2002-12-01T14:00:00"^^New:tz;
:summary ?summary;
:uid "D6041A73-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D60421EF-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-12-08T17:00:00"^^New:tz;
:dtstamp "2002-09-06T03:24:04Z"^^xsd:dateTime;
:dtstart "2002-12-08T14:00:00"^^New:tz;
:summary ?summary;
:uid "D60421EF-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6042660-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-12-15T20:05:00"^^New:tz;
:dtstamp "2002-09-06T03:25:03Z"^^xsd:dateTime;
:dtstart "2002-12-15T17:05:00"^^New:tz;
:summary ?summary;
:uid "D6042660-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6042A93-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-12-22T17:00:00"^^New:tz;
:dtstamp "2002-09-06T03:25:47Z"^^xsd:dateTime;
:dtstart "2002-12-22T14:00:00"^^New:tz;
:summary ?summary;
:uid "D6042A93-C1C9-11D6-9446-003065F198AC" .
}
UNION
{
Chi:D6042EDF-C1C9-11D6-9446-003065F198AC a :Vevent;
:dtend "2002-12-28T21:00:00"^^New:tz;
:dtstamp "2002-09-06T03:26:51Z"^^xsd:dateTime;
:dtstart "2002-12-28T18:00:00"^^New:tz;
:summary ?summary;
:uid "D6042EDF-C1C9-11D6-9446-003065F198AC" .
}
}
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
POST /sparql/ HTTP/1.1 Host: www.example User-agent: sparql-client/0.1 Content-Type: application/x-www-form-urlencoded Content-Length: 9461 query=EncodedQuery&default-graph-uri=http%3A%2F%2Fanother.example%2Fcalendar.rdf
レスポンスはここに示すとおりです:
HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="summary"/>
</head>
<results>
<result>
<binding name="summary">
<literal>Chiefs vs. Cleveland @ Cleveland Stadium</literal>
</binding>
</result>
<result>
<binding name="summary">
<literal>Chiefs vs. Jacksonville @ Arrowhead Stadium</literal>
</binding>
</result>
<result>
<binding name="summary">
<literal>Chiefs vs. New England @ Gillette Stadium</literal>
</binding>
</result>
...
<result>
<binding name="summary">
<literal>Chiefs vs. Oakland @ Network Associates Coliseum</literal>
</binding>
</result>
</results>
</sparql>
SPARQLクエリは、2.1.3
直接POSTによるqueryで説明されているように、URLエンコードせずに直接POSTすることもできます。前の例で使用したものと同じクエリが、SPARQLクエリサービス
http://www.example/sparql/へ、このHTTPトレースに示すように伝達されます:
POST /sparql/?default-graph-uri=http%3A%2F%2Fanother.example%2Fcalendar.rdf HTTP/1.1 Host: www.example User-agent: sparql-client/0.1 Content-Type: application/sparql-query UnencodedQuery
レスポンスは前の例と同じです。
SPARQLクエリには、国際化された文字または文字集合を含めることができます。このSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX 食: <http://www.w3.org/2001/sw/DataAccess/tests/data/i18n/kanji.ttl#>
SELECT ?name ?food
WHERE { [ foaf:name ?name ; 食:食べる ?food ] . }
は、このHTTPトレースに示すように、SPARQLクエリサービス
http://www.example/sparql/へ伝達されます:
GET /sparql/?query=PREFIX%20foaf%3A%20%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX%20%E9%A3%9F%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2Fsw%2FDataAccess%2Ftests%2Fdata%2Fi18n%2Fkanji.ttl%23%3E%0ASELECT%20%3Fname%20%3Ffood%20%0AWHERE%20%7B%20%5B%20foaf%3Aname%20%3Fname%20%3B%20%E9%A3%9F%3A%E9%A3%9F%E3%81%B9%E3%82%8B%20%3Ffood%20%5D%20.%20%7D Host: www.example User-agent: sparql-client/0.1
HTTP/1.1 200 OK Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
SPARQLクエリは具象化トリプルを対象にできます。このSPARQLクエリ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ex: <http://example.org/>
SELECT ?name ?person
WHERE { << _:a foaf:name ?name >> ex:statedBy ?person . }
は、SPARQLクエリサービスhttp://www.example/sparql/へ伝達されます。このクエリは
SPARQL 1.2構文を使用しており、クエリが1.2バージョンを構文的に告知していないため、
GETリクエストはversion=1.2パラメーターを使用して発行されます。これは、この
HTTPトレースに示されています:
GET /sparql/?query=PREFIX%20foaf%3A%20%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX%20ex%3A%20%3Chttp%3A%2F%2Fexample.org%2F%3E%0ASELECT%20%3Fname%20%3Fperson%0AWHERE%20%7B%20%3C%3C%28%20_%3Aa%20foaf%3Aname%20%3Fname%20%29%3E%3E%20ex%3AstatedBy%20%3Fperson%20.%20%7D&version=1.2 Host: www.example User-agent: sparql-client/0.1
HTTP/1.1 200 OK Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
以下のクエリはisTRIPLE関数を使用します。これはSPARQL 1.2の機能であるため、
構文的にそのバージョンを告知します:
VERSION "1.2"
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ex: <http://example.org/>
SELECT ?statement ?person
WHERE { ?statement ex:statedBy ?person . FILTER (isTRIPLE(?statement)) }
クエリは構文的にそのバージョンを告知していますが、SPARQLクライアントは
version=1.2メディア型を使用して直接POSTリクエストを送信することを決定します。これは、
バージョンがすでに構文的に告知されている場合には許可されていますが必須ではありません。これは、このHTTPトレースに示されています:
POST /sparql HTTP/1.1 Host: www.example User-agent: sparql-client/0.1 Content-Type: application/sparql-query; version=1.2 UnencodedQuery
レスポンスにはRDF 1.2トリプル項が含まれるため、サーバーは
version=1.2メディア型パラメーター付きで応答します:
HTTP/1.1 200 OK Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) Connection: close Content-Type: application/sparql-results+xml; version=1.2 <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
クエリ
INSERT DATA { <a> <p> <b> }のために
http://localhost:8888/testへ送信されたリクエストのシリアライズである
リクエスト例を、URLエンコードされたパラメーター形式を使用して以下に示します。
POST /test HTTP/1.1 Host: localhost:8888 Accept: text/plain Content-Length: 62 Content-Type: application/x-www-form-urlencoded update=INSERT%20DATA%20%7B%20%3Ca%3E%20%3Cp%3E%20%3Cb%3E%20%7D
更新リクエストは、Content-Typeが
application/sparql-updateであるPOSTリクエストとして送信できます:
POST /test HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Type: application/sparql-update
Content-Length: 27
INSERT DATA { <a> <p> <b> }
更新リクエストのデータセットは、using-graph-uriおよび
using-named-graph-uriパラメーターを使用して指定できます。
http://localhost:8888/testへ送信され、デフォルトグラフ
http://localhost:8888/peopleを持つデータセットを指定するリクエスト例のシリアライズを以下に示します。
POST /test?using-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Fpeople HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Type: application/sparql-update
Content-Length: 136
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
DELETE { ?person ?property ?value }
WHERE { ?person ?property ?value ; foaf:givenName 'Fred' }
複数の操作の列は、「;」
(セミコロン)で区切って、1つのリクエストに含めることができます。クエリ
http://localhost:8888/testへ送信されたリクエスト例のシリアライズ
DELETE DATA { <a> <p> <old> } ;
INSERT DATA { <a> <p> <new> }
を、URLエンコードされたパラメーター形式を使用して以下に示します。
POST /test HTTP/1.1 Host: localhost:8888 Accept: */* Content-Type: application/x-www-form-urlencoded Content-Length: 130 update=DELETE%20DATA%20%7B%20%3Ca%3E%20%3Cp%3E%20%3Cold%3E%20%7D%20%3B%0AINSERT%20DATA%20%7B%20%3Ca%3E%20%3Cp%3E%20%3Cnew%3E%20%7D
URLエンコードされたパラメーターを伴って更新リクエストをPOSTする場合、データセットパラメーター
using-graph-uriおよびusing-named-graph-uriは、シリアライズされたリクエストとともに
POST本文内で指定されます。クエリ
http://localhost:8888/testへ送信されたリクエスト例のシリアライズ
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
INSERT { GRAPH <http://localhost:8888/people> { ?person ?property ?value } }
WHERE { GRAPH ?g { ?person ?property ?value ; foaf:givenName 'Fred' } }
および名前付きグラフhttp://localhost:8888/alice/foaf.rdfと
http://localhost:8888/eve/foaf.rdfを持つデータセットの指定を以下に示します。
POST /test HTTP/1.1 Host: localhost:8888 Accept: */* Content-Type: application/x-www-form-urlencoded Content-Length: 130 using-named-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Falice%2Ffoaf.rdf&using-named-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Feve%2Ffoaf.rdf&update=PREFIX%20foaf%3A%20%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0AINSERT%20%7B%20GRAPH%20%3Chttp%3A%2F%2Flocalhost%3A8888%2Fpeople%3E%20%7B%20%3Fperson%20%3Fproperty%20%3Fvalue%20%7D%20%7D%0AWHERE%20%7B%20GRAPH%20%3Fg%20%7B%20%3Fperson%20%3Fproperty%20%3Fvalue%20%3B%20foaf%3AgivenName%20%27Fred%27%20%7D%20%7D
http://localhost:8888/testへ送信され、名前付きグラフ
http://localhost:8888/alice/foaf.rdf
およびhttp://localhost:8888/eve/foaf.rdfを持つデータセットを指定するリクエスト例のシリアライズを以下に示します。
POST /test?using-named-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Falice%2Ffoaf.rdf&using-named-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Feve%2Ffoaf.rdf HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Type: application/sparql-update
Content-Length: 190
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
INSERT { GRAPH <http://localhost:8888/people> { ?person ?property ?value } }
WHERE { GRAPH ?g { ?person ?property ?value ; foaf:givenName 'Fred' } }
SPARQLプロトコル・サービスに対するサービス拒否攻撃には、少なくとも2つの可能な発生源があります。 第1に、制約が不十分なクエリは非常に大量の結果を生じさせる可能性があり、 それらを処理、組み立て、または返すために大量の計算資源を必要とすることがあります。もう1つの可能な 発生源は、資源サイズ、取得すべき資源数、またはサイズと数の組み合わせのために非常に複雑な RDFデータセット記述を含むクエリであり、 サービスは帯域幅、CPU、または二次記憶装置を含む相当な資源消費なしにはそれらを組み立てられない可能性があります。 場合によっては、そのような消費は実質的に サービス拒否攻撃を構成することがあります。SPARQLプロトコル・サービスは、取得する資源、 または外部資源が取得される速度に制限を設けることがmayあります。 SPARQLクエリ処理サービスに対するサービス拒否攻撃には、他の発生源も存在する可能性があります。
SPARQLプロトコル・サービスはクライアントに代わって他のオリジンサーバーへHTTPリクエストを行う場合があるため、 他のサイトまたはサービスに対する攻撃の媒介として使用される可能性があります。したがって、SPARQL プロトコル・サービスは、実質的に第三者クライアントのプロキシとして機能することがあります。そのようなサービスは、 取得する資源または外部資源を取得できる速度に制限を設けることが mayあります。SPARQLプロトコル・サービスは、第三者のオリジンサーバーまたは サービスに関して追跡を容易にするような方法で、クライアントリクエストを記録することが mayあります。
SPARQLプロトコル・サービスは、これらおよびその他の高コストまたはその他の点で 安全でないクエリを検出し、クエリに時間またはメモリ制限を課し、またはその他の制限を課して、 サービス(および他のサービス)のサービス拒否攻撃に対する脆弱性を低減することを選択してもよいです。また、 そのようなクエリ リクエストの処理を拒否することもmayあります。
SPARQLプロトコル・サービスは、更新操作を介して基礎となるデータを削除、挿入、および変更できます。 悪意ある更新または破壊的な更新から保護するため、実装は更新操作を実装しないことを 選択してもよいです。あるいは、実装はHTTP認証メカニズムまたはその他の実装定義のメカニズムを使用して、 更新操作の無許可の呼び出しを防止することを選択してもよいです。
異なるIRIが同じ外観を持つことがあります。異なる用字の文字が似て見えることがあります(キリル文字の "о" はラテン文字の "o" に似て見えることがあります)。結合文字が後続する文字は、 別の文字と同じ視覚表現を持つことがあります(COMBINING ACUTE ACCENTが後続するLATIN SMALL LETTER Eは、 LATIN SMALL LETTER E WITH ACUTEと同じ視覚表現を持ちます)。SPARQLの利用者は、 データ内のIRIと一致するIRIを用いてクエリを構築するよう注意しなければなりません。類似文字の照合に関する詳細情報は、 Unicode Security Considerations およびInternationalized Resource Identifiers (IRIs)第8節にあります。
非規範的とマークされた節に加えて、この仕様内のすべての作成ガイドライン、図、例、および注記は 非規範的です。それ以外のこの仕様内のすべては規範的です。
この文書におけるキーワードMAYは、 ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] で説明されているように解釈されるものとします。
SPARQL 1.2プロトコル(この文書)の各部分のステータスは次のとおりです:
適合するSPARQLプロトコル サービス:
query操作またはupdate操作のいずれかを実装mustしなければなりません;
query操作とupdate操作の両方を実装することがmayあります;この節は非規範的です。
この仕様は、2013年3月のSPARQL 1.1プロトコルを拡張および更新します。 重要な変更点は 次のとおりです:
この節は非規範的です。
この仕様は、2008年1月のRDF向けSPARQLプロトコルを拡張および更新します。 重要な変更点は 次のとおりです:
TODO
TODO
TODO
Referenced in: