• 検索結果がありません。

REST での SPARQL Update の使用

ドキュメント内 Semantics Developer’s Guide (ページ 186-190)

このセクションでは、SPARQL Updateを使用して、SPARQLエンドポイントからグラ フやトリプルデータを管理する方法について説明します。エンドポイントとは、W3C

SPARQL

プロトコルの実装です。このエンドポイントの

URL

には、次のようなアドレ

スが割り当てられます。

http://host:port/v1/graphs/sparql?

GET:/v1/graphs/sparqlまたはPOST:/v1/graphs/sparqlを使用することで、RESTで

SPARQL Update

を使用できます。

RESTSPARQL Updateを使用する方法

POSTを使用したSPARQL Update

POSTURLエンコードされたパラメータを使用したSPARQL Update

RDF

トリプルで

REST

を使用する方法の詳細については、『

REST Application Developer’s

Guide』の「

」を参照してください。

8.8.1 REST

SPARQL Update

を使用する方法

SPARQL

エンドポイントには、3種類の方法で更新を送信できます。

PREFIX dc: <http://marklogic.com/dc/elements/1.1/>

WITH <BOOKS>

DELETE {?b dc:title "A new book"}

INSERT {?b dc:title "Inside MarkLogic Server" } WHERE {

?b dc:title "A new book".

}

リクエストのボディに次の形式でクエリを埋め込み、URLに対して

POST:/v1/graphs/sparqlリクエストを実行できます。

http://host:port/v1/graphs/sparql

または、次のような更新パラメータにクエリを埋め込む形式で、POST:/v1/graphs/sparql

リクエストを実行できます。

http://host:port/v1/graphs/sparql

content-type:application/x-www-form-urlencoded

また、次の形式で更新パラメータにクエリを埋め込み、GET:/v1/graphs/sparqlリクエス トを実行することもできます。

http://host:port/v1/graphs/sparql?update=URLENCODEDQUERY

オプションは、GET:/v1/graphs/sparql?query=とPOST:/v1/graphs/sparqlです。POSTを使 用する場合は、リクエストのボディに

SPARQL

を直接配置することも、

x-www-form-urlencodedを使用して、更新形式パラメータを

URL

エンコードされた

SPARQL Update

に設定することもできます。このセクションの例では、URLエンコー

ディングなしでPOSTリクエストを使用し、content-type:application/sparql-updateを指 定しています。

REST

で使用するパラメータを指定する方法の詳細については、「パラメータの指定」

(133ページ)を参照してください。POSTおよびGETの詳細については、「サポートされ ている動詞」(139ページ)および

SPARQL Update

のグラフストアエンドポイントでサ ポートされている動詞のリストを参照してください。SPARQLエンドポイントの詳細に ついては、POST:/v1/graphs/sparqlおよびGET:/v1/graphs/sparqlを参照してください。

8.8.2 POST

を使用した

SPARQL Update

リクエストのボディに

SPARQL Update

を含めることで、POSTメソッドを使用してリク エストを送信できます。HTTPリクエストのコンテンツタイプヘッダは

application/sparql-updateに設定します。

次に例を示します。

# Windows???????????

curl --anyauth --user admin:admin -i -X POST \ -H "Content-type:application/sparql-update" \ -H "Accept:application/sparql-results+xml" \

-d "PREFIX dc: <http://marklogic.com/dc/elements/1.1/> \ WITH <BOOKS> DELETE {?b dc:title "A new book"} \

INSERT {?b dc:title "Inside MarkLogic Server" } \ WHERE {?b dc:title "A new book".}" \

http://localhost:8000/v1/graphs/sparql

注:

わかりやすくするため、長いコマンドラインは行継続文字「\」または

^

」を使用して複数の行に分割しています。

curl

コマンドを使用するとき は、行継続文字を削除してください。

SPARQL Update

はファイルに含めることもできます。この

SPARQL Update

は、

booktitle.sparqlという名前のファイルに記載されています。

PREFIX dc: <http://purl.org/dc/elements/1.1/>

INSERT DATA {

<http://example/book1> dc:title "book title" ; dc:creator "author name" .

}

このファイルが含まれるリクエストは、次のようになります。

curl --anyauth --user admin:admin -i -X POST \ --data-binary @./booktitle.sparql \

-H "Content-type:application/sparql-update" \ -H "Accept:application/sparql-results+xml" \ http://localhost:8000/v1/graphs/sparql

リクエスト

URI

HTTP

クエリ文字列パラメータとして、オプションの

using-graph-uri、using-named-graph-uri、およびrole-capabilityパラメータを含めるこ とができます。default-permissionsパラメータは、ロールと権限をカンマ区切りの文字 列で指定してください。

default-permissions=admin,update default-permissions=admin,execute

この例では、SPARQL Updateおよび

URL

エンコードされたパラメータを指定したPOST

を使用して、データ(およびパーミッションの集まり)をグラフC1に挿入します。パ ラメータは、アンパサンド(

&

)文字で区切ります。また、任意の順序で含めることが できます。

curl --anyauth --user admin:admin -i -X POST \ --data-urlencode update= 'PREFIX dc:

<http://purl.org/dc/elements/1.1/> \ INSERT DATA \

{<http://example/book1> dc:title "book title" ; \ dc:creator "author name" .}' \

-H "Content-type:application/sparql-update" \ -H "Accept:application/sparql-results+xml" \

'http://localhost:8000/v1/graphs/sparql?using-named-graph-uri=C1 \

&default-permissions=admin,update&default-permissions=admin,execute'

このプロトコルを使用してUSING NAMEDまたはWITH節を使用する

SPARQL 1.1 Update

リ クエストを伝達する場合、using-graph-uriまたはusing-named-graph-uriパラメータを指 定すると、この操作はエラーになります。

新しい

RDF

グラフが作成されると、サーバーは201 Createdメッセージで応答します。

更新リクエストに対する応答では、

HTTP

応答ステータスコード経由でリクエストの成 功または障害を示します(200または400)。リクエストのボディが空の場合、サーバーは

204 No Contentで応答します。

8.8.3 POST

URL

エンコードされたパラメータを使用した

SPARQL Update

パラメータを

URL

エンコードすることで、HTTP POSTメソッド経由で更新プロトコルの リクエストを送信することもできます。これを実行する場合は、URLのすべてのパラ メータをパーセント記号でエンコードし、application/x-www-form-urlencodedメディアタ イプを使用してリクエストボディ内にパラメータとして含めます。

HTTP

リクエストの コンテンツタイプヘッダはapplication/x-www-form-urlencodedに設定します。

注:

REST

を使用して、パラメータを

URL

の一部として渡すときは、常に

URL

URL

エンコードします。

この例では

curl

を使用し、URLエンコーディングが含まれる

SPARQL Update

でPOSTを 使用します。

curl --anyauth --user admin:admin -i -X POST \

-H "Content-type:application/x-www-form-urlencoded" \ -H "Accept:application/sparql-results+xml" \

--data-urlencode update='PREFIX dc: <http://purl.org/dc/elements/1.1/>

INSERT DATA{ GRAPH <C1> {http://example/book1/> dc:title "C book"} }' \ http://localhost:8321/v1/graphs/sparql?

次の例は、

SPARQL Update

とパラメータを使用するPOSTの例を示したものです。

curl --anyauth --user admin:admin -i -X POST \

--data-urlencode update='PREFIX dc: <http://purl.org/dc/elements/1.1/>

INSERT DATA{ GRAPH <C1> {http://example/book1/> dc:title "C book"} }' --data-urlencode default-permissions=rest-writer,read \

--data-urlencode default-permissions=rest-writer,update \ --data-urlencode default-permissions=rest-reader,read \ --data-urlencode default-permissions=rest-reader,update \ -H "Content-type:application/x-www-form-urlencoded" \ -H "Accept:application/sparql-results+xml" \

http://localhost:8321/v1/graphs/sparql

ドキュメント内 Semantics Developer’s Guide (ページ 186-190)