SPARQL API 仕様書

open	  data	  platform目次
1. SPARQL API について ...................................................................... 1
1-1 SPARQL API の概要 ............................................................................ 1
1-2. SPARQL Based-Command との差異 ..................................................... 1

2. コマンド ......................................................................................... 2
2-1. SARQL GET Command ........................................................................ 2
2-2. SARQL POST Command ...................................................................... 6
2-3. RDF グラフの閲覧の代替クエリ ................................................................ 7
2-1. Triple の閲覧の代替クエリ ...................................................................... 8

1. SPARQL API について
SPARQL API は「SPARQL Based-Command」に基づく実装である。ただし一部実装に差異がある
外部仕様書は以下で参照が可能である。

1-1

SPARQL API の概要

SPARQL のクエリ文字列の解析、レスポンスの組み立てを行う API を提供する。

1-2. SPARQL Based-Command との差異!

外部からのデータ登録の流れは、データの整合性、個人情報の保護、匿名化等の要件などから、自治体職員によるデータ内容のチェックの後、自治体職員が登録ツールにて行うことを想定している。そのため、登録・更新に関連する SPARQL-based command(外部仕様書 3.1.4 RDF グラフの追加, 3.1.5
RDF グラフの更新, 3.1.6 RDF グラフの削除, 3.1.8 Triple の追加, 3.1.9 Triple の更新、3.1.10
Triple の削除) の提供は行わない。

!

本基盤で公開されるデータはオープンデータであり、誰でも閲覧可能であることから、アクセス制限や認証の機能は設けない。

!

外部仕様書 3.1 SPARQL -based command に定義されている 3.1.3 RDF グラフの閲覧、3.1.7
Triple の閲覧 に関しては、3.1.1 SPARQL1.1 準拠のクエリ発行（GET メソッド）にて代替可能なため、本基盤では実装しない。そのため、本仕様書にて、外部仕様書の 3.1.3 RDFグラフの閲覧、3.1.7
Triple の閲覧が規定するクエリの代替方法を示す。

!

本基盤はデータの削除、更新をデータファイルの単位を基準として行うため、ファイルごとにグラフを作成する。

open	  data	  platform

2. コマンド2-1. SPARQL GET Command
HTTP GET メソッドを利用して，SPARQL1.1 準拠のクエリを発行するコマンド

項目機能名機能メソッド
URL パス
パラメタ

リクエストヘッダ内容
SPARQL GETHTTP GET メソッドを利用して，SPARQL1.1 準拠のクエリを発行する．
GET/data/sparql
項番

パラメタ名

1

query

内容
URL エンコードした SPARQL クエリ

要求するレスポンスの形式をリクエストヘッダの Accept で設定する。
SELECT オペレーションを発行する場合に指定できるパラメタを以下に示す。
項番

Accept ヘッダ値

説明1

application/sparql-re

SPARQL Query Results XML

sults+xml

Format に基づくレスポンス

application/sparql-re

SPARQL Query Results JSON

sults+json

Format に基づくレスポンス

2

CONSRUCT または DESCRIBE オペレーションを発行する場合に指定できるパラメタを以下に示す。
項番

Accept ヘッダ値

説明1

application/rdf+xml

RDF/XML2

text/plain

N-Triples3

text/turtle

TurtleASK オペレーションを発行する場合に指定できるパラメタを以下に示す。
項番

Accept ヘッダ値説明

1

application/sparql-re

SPARQL Query Results XMLsults+xml

Format に基づくレスポンス

text/plain

テキスト表現(yes/no)2

open	  data	  platform

項目

内容

レスポンス

SELECT オペレーションのレスポンスは，accept ヘッダ値に基づき，以下のいずれかである．
・SPARQL Query Results JSON Format に基づくレスポンス
・SPARQL Query Results XML Format に基づくレスポンス

CONSTRUCT，DESCRIBE オペレーションのレスポンスは，RDF グラフデータである．フォーマットは，accept ヘッダ値で指定した通りである．

ASK オペレーションのレスポンスは，accept ヘッダ値に基づき，以下のいずれかである．
・SPARQL Query Results XML Format に基づくレスポンス
・ yes または no の文字列

ステータスコード項番

内容レスポンス

備考コード
1

正常終了

200

2

クエリ、パラメタ不正

500

3

システム内エラー

500

4

プロクシエラー

502

SPARQL API の処理のタイムアウト時に発生する。

open	  data	  platform

項目内容

利用例	  本基盤に投入されたドキュメントのタイトルと作成者の組を取得する
SPARQL クエリを発行するリクエストとリクエストヘッダ、レスポンスを示す。なお、GET メソッドの query パラメタ値は、下記 SPARQL クエリを URLエンコードしたものである。

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT?title ?name

WHERE {
GRAPH ?g{?x dc:title ?title .
?x dc:creator ?name.
}}

リクエスト:
GET/data/sparql?query=PREFIX+dc%3A+%3Chttp%3A%2F%2Fp
url.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0ASELECT++%3Ftitle+%3Fname%0D%0AWHERE+%7B%0D%0A+GRA
PH+%3Fg%0D%0A%7B%0D%0A%3Fx+dc%3Atitle+%3Ftitle+.%0D%0A%3Fx+dc%3Acreator+%3Fname.%0D%0A%7D%0
D%0A%7D%0D%0A
Host: www.example.org
Accept: application/sparql-results+xml

open	  data	  platform

項目

内容

利用例

レスポンス
<?xml version="1.0"?><sparql xmlns="http://www.w3.org/2005/sparql-results#"><head><variable name="title"/><variable name="name"/></head><results><result><binding name="title"><literal>データサンプル１</literal></binding><binding name="name"><literal>testuser</literal></binding></result></results></sparql>

open	  data	  platform

2-2. SPARQL POST Command
項目

内容

機能名

SPARQL POST

機能

HTTP POST メソッドを利用して，SPARQL1.1 準拠のクエリを発行する．

メソッド

POST

URL パス/data/sparql

パラメタ

以下に示すパラメタをメッセージボディ部に格納する。

リクエストヘッダ

項番

パラメタ名

内容

1

query

URL エンコードした SPARQL クエリ

要求するレスポンスの形式を，リクエストヘッダの Accept で設定する。GET形式と同様である。

レスポンス

GET 形式と同じである。

ステータスコードGET 形式と同じく、以下の通りである。

項番

内容

レスポンス

備考

コード
1

正常終了

200

2

クエリ、パラメタ不正

500

3

システム内エラー

500

4

プロクシエラー

502

SPARQL API の処理のタ
イムアウト時に発生する

利用例

GET とリクエスト送信方法とパラメタ格納方法が異なる以外は同様。

open	  data	  platform

2-3. RDF グラフの閲覧の代替クエリ
項目

内容

機能名

RDF グラフの閲覧の代替クエリ

機能

外部仕様書の 3.1.3 RDF グラフの閲覧の代替クエリ

代替機能

SPARQL GETURL パス/data/sparql

元パラメタ

項番

パラメタ名

内容1graph

更新対象の RDF グラフを識別する URI

項番

パラメタ名

内容

1queryURL エンコードした SPARQL クエリ

パラメタ

代替クエリのパラメタの値は以下の SPARQL クエリを URL エンコードしたものになる。ただし、URI の前後は<>で囲う。

CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <graph> { ?s ?p ?o } . }リクエストヘッダ

要求するレスポンスの形式を，リクエストヘッダの Accept で設定する。

指定できるパラメタを以下に示す。
項番

Accept ヘッダ値説明

1

application/rdf+xml

RDF/XML2

text/plain

N-Triples3

text/turtle

Turtleopen	  data	  platform

2-4. Triple の閲覧の代替クエリ
項目

内容機能名

Triple 閲覧の代替クエリ

機能

外部仕様書の 3.1.7 Triple の閲覧の代替クエリ

代替機能

SPARQL GETURL パス/data/sparql

元パラメタ

項番

1

パラメタ

ディフォル

内容名

ト値

graph

ディフォル

更新対象の RDF グラフを識別する

トのグラフ

URI

2

subject

指定なし

出力対象の Triple の主語の URI

3

predicate

指定なし

出力対象の Triple の述語の URI

4

object

指定なし

出力対象の Triple の目的語の URIまたはリテラル

代替パラメタ
項番

パラメタ名

内容

1

query

URL エンコードした SPARQL クエリ

代替クエリのパラメタの値は以下の SPARQL クエリを URL エンコードしたものになる。ただし、URI の前後は<>で囲う。

CONSTRUCT { < subject > < predicate > < object > } WHERE { GRAPH<graph> { < subject > < predicate > < object > } . }また、subject, predicate, object が省略されている場合は、それぞれ、?s, ?p, ?oで<>を含めて置き換える。

object が省略されている場合は、
CONSTRUCT { < subject > < predicate > ?o } WHERE { GRAPH <graph>{ < subject > < predicate > ?o } . }open	  data	  platformとなる。
リクエストヘッダ

要求するレスポンスの形式を，リクエストヘッダの Accept で設定する。

指定できるパラメタを以下に示す。
項番

Accept ヘッダ値

説明1

application/rdf+xml

RDF/XML2

text/plain

N-Triples3

text/turtle

Turtleopen	  data	  platform