

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Neptune での SPARQL 1.1 グラフストア HTTP プロトコル (GSP) の使用
<a name="sparql-graph-store-protocol"></a>

[SPARQL 1.1 グラフストア HTTP プロトコル](https://www.w3.org/TR/sparql11-http-rdf-update/)レコメンデーションでは、W3C は RDF グラフを管理するための HTTP プロトコルを定義しました。RDF グラフコンテンツの削除、作成、および置き換え、および既存のコンテンツに RDF ステートメントを追加する操作を定義します。

グラフストアプロトコル (GSP) は、複雑な SPARQL クエリを記述することなく、グラフ全体を操作する便利な方法を提供します。

Neptune はこのプロトコルを完全にサポートしています。

グラフストアプロトコル (GSP) のエンドポイントは次のとおりです。

```
https://your-neptune-cluster:port/sparql/gsp/
```

GSP でデフォルトのグラフにアクセスするには、以下を使用します。

```
https://your-neptune-cluster:port/sparql/gsp/?default
```

GSP で名前付きグラフにアクセスするには、以下を使用します。

```
https://your-neptune-cluster:port/sparql/gsp/?graph=named-graph-URI
```

## Neptune GSP 実装の特別な詳細
<a name="sparql-graph-store-protocol-special"></a>

Neptune はGSPを定義する [W3C レコメンデーション](https://www.w3.org/TR/sparql11-http-rdf-update/)を完全に実装しています。ただし、仕様がカバーしていない状況はいくつかあります。

その 1 つは、`PUT` または `POST` リクエストが、リクエスト本文に、リクエスト URL で指定されたグラフとは異なる名前付きグラフを 1 つ以上指定する場合です。これは、リクエスト本文 RDF 形式がたとえば、`Content-Type: application/n-quads` または `Content-Type: application/trig` を使って名前付きグラフをサポートしている場合にのみ発生します。

この状況では、Neptune は、URL で指定された名前付きグラフだけでなく、本文に存在するすべての名前付きグラフを追加または更新します。

たとえば、空のデータベースから開始して、3 つのグラフにアップサートするよう `PUT` リクエストを送ります。1つの名前付き `urn:votes` は、すべての選挙年度からの全得票を含みます。他の2つ、名前付き `urn:votes:2005` および `urn:votes:2019` は、特定の選挙年の投票を含めます。リクエストとそのペイロードは次のようになります。

```
PUT "http://your-Neptune-cluster:port/sparql/gsp/?graph=urn:votes"
  Host: example.com
  Content-Type: application/n-quads

  PAYLOAD:

  <urn:JohnDoe> <urn:votedFor> <urn:Labour> <urn:votes:2005>
  <urn:JohnDoe> <urn:votedFor> <urn:Conservative> <urn:votes:2019>
  <urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes:2005>
  <urn:JaneSmith> <urn:votedFor> <urn:Conservative> <urn:votes:2019>
```

リクエストが実行されると、データベース内のデータは次のようになります。

```
<urn:JohnDoe>   <urn:votedFor> <urn:Labour>           <urn:votes:2005>
<urn:JohnDoe>   <urn:votedFor> <urn:Conservative>     <urn:votes:2019>
<urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes:2005>
<urn:JaneSmith> <urn:votedFor> <urn:Conservative>     <urn:votes:2019>
<urn:JohnDoe>   <urn:votedFor> <urn:Labour>           <urn:votes>
<urn:JohnDoe>   <urn:votedFor> <urn:Conservative>     <urn:votes>
<urn:JaneSmith> <urn:votedFor> <urn:LiberalDemocrats> <urn:votes>
<urn:JaneSmith> <urn:votedFor> <urn:Conservative>     <urn:votes>
```

別のあいまいな状況は、`PUT`、`POST`、`GET` または `DELETE` を使って、リクエストURL自体に複数のグラフが指定されている場合です。例: 

```
POST "http://your-Neptune-cluster:port/sparql/gsp/?graph=urn:votes:2005&graph=urn:votes:2019"
```

または:

```
GET "http://your-Neptune-cluster:port/sparql/gsp/?default&graph=urn:votes:2019"
```

この状況では、Neptune はリクエスト URL に指定できるグラフが 1 つだけであることを示すメッセージを含む HTTP 400 を返します。