

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

# SPARQL UPDATE UNLOAD を使用して Neptune からデータを削除する
<a name="sparql-api-reference-unload"></a>

Neptune はカスタム SPARQL オペレーション、`UNLOAD`、も提供し、リモートソースで指定されたデータを削除する場合に使用します。`UNLOAD` は `LOAD` オペレーションの対応物と見なすことができます。構文は次のとおりです。

```
UNLOAD SILENT {{(URL of the remote data to be unloaded)}} FROM GRAPH {{(named graph from which to remove the data)}}
```
+ **`SILENT`** — (*オプション*) データ処理中にエラーが発生した場合でも、オペレーションは成功を返します。

  これは、単一のトランザクションに `"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"` のような複数のステートメントが含まれている場合に便利です。また、リモートデータの一部が処理できない場合でも、トランザクションを完了させる必要があります。
+ {{アンロードするリモートデータの URL}} — (*必須*) グラフにロードするデータを含むリモートデータファイルを指定します。

  リモートファイルには、次のいずれかの拡張子が必要です (UPDATE-LOAD がサポートする形式と同じです)。
  + NTriples 用 `.nt`。
  + NQuads 用 `.nq`。
  + Trig 用 `.trig`。
  + RDF/XML 用 `.rdf`。
  + Turtle 用 `.ttl`。
  + N3 用 `.n3`。
  + JSON-LD 用 `.jsonld`。

  このファイルに含まれるすべてのデータは、`UNLOAD` オペレーションによって DB クラスターから削除されます。

  データをアンロードするには、Amazon S3 認証はいずれも URL に含める必要があります。Amazon S3 ファイルに事前署名し、結果の URL を使用して安全にアクセスできます。例: 

  ```
  aws s3 presign --expires-in {{(number of seconds)}} s3://{{(bucket name)}}/{{(path to file of data to unload)}}
  ```

  次に:

  ```
  curl https://{{(a Neptune endpoint URL)}}:8182/sparql \
    --data-urlencode 'update=unload {{(pre-signed URL of the remote Amazon S3 data to be unloaded)}} \
                             from graph {{(named graph)}}'
  ```

  詳細については、「[リクエストの認証: クエリパラメータの使用](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)」を参照してください。
+ **`FROM GRAPH `**{{(データを削除する名前付きグラフ)}} — (*オプション*) リモートデータのアンロード元となる名前付きグラフを指定します。

  Neptune はすべてのトリプルを名前が付いたグラフに関連付けます。フォールバック名前付きグラフ URI、`http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph` などを使用して、デフォルトの名前付きグラフを指定できます。次のようになります。

  ```
  FROM GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>
  ```

それと同じ方法で `LOAD` は `INSERT DATA { {{(inline data)}} }` に、`UNLOAD` は `DELETE DATA { {{(inline data)}} }` に対応しています。`DELETE DATA` 同様に、`UNLOAD` は空白ノードを含むデータでは機能しません。

たとえば、ローカル Web サーバーが、`data.nt` という名前のファイルを提供しているとします。これには、次の 2 つのトリプルが含まれています。

```
<http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#b> .
<http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#c> .
```

以下の `UNLOAD` コマンドは名前の付いたグラフ `<http://example.org/graph1>` から、これら 2 つのトリプルを削除します。

```
UNLOAD <http://localhost:80/data.nt> FROM GRAPH <http://example.org/graph1>
```

これは、以下の `DELETE DATA` コマンドを使用する場合と同じ結果になります。

```
DELETE DATA {
  GRAPH <http://example.org/graph1> {
    <http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#b> .
    <http://example.org/resource#a> <http://example.org/resource#p> <http://example.org/resource#c> .
  }
}
```

**`UNLOAD` コマンドによってスローされる例外**
+ **`InvalidParameterException`** — データに空のノードがありました。*HTTP status*: 400 Bad Request。

  *メッセージ*` Blank nodes are not allowed for UNLOAD`

   
+ **`InvalidParameterException`** — データ内に壊れた構文がありました。*HTTP status*: 400 Bad Request。

  *メッセージ*`Invalid syntax in the specified file.`

   
+ **`UnloadUrlAccessDeniedException `**   –   アクセスが拒否されました。*HTTP status*: 400 Bad Request。

  *メッセージ*`Update failure: Endpoint {{(Neptune endpoint)}} reported access denied error. Please verify access.`

   
+ **`BadRequestException `** — リモートデータを取得できません。*HTTP status*: 400 Bad Request。

  *メッセージ*:*(HTTP レスポンスによって決まります)。*