

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

# SPARQL HTTP API
<a name="sparql-api-reference"></a>

SPARQL HTTP リクエストは、次のエンドポイントで受け付けられます。`https://your-neptune-endpoint:port/sparql`

SPARQL を使用した Amazon Neptune への接続の詳細については、[SPARQL を使用した Neptune グラフへのアクセス](access-graph-sparql.md)を参照してください。

SPARQL プロトコルとクエリ言語の詳細については、「[SPARQL 1.1 プロトコル](https://www.w3.org/TR/sparql11-protocol/#protocol)」および「[SPARQL 1.1 クエリ言語](https://www.w3.org/TR/sparql11-query/)」仕様を参照してください。

以下のトピックでは、SPARQL RDF シリアル化形式、および Neptune で SPARQL HTTP API を使用する方法について説明します。

**Contents**
+ [HTTP REST エンドポイントを使用して Neptune DB インスタンスに接続する](access-graph-sparql-http-rest.md)
+ [マルチパートの SPARQL レスポンスのオプションの HTTP 末尾ヘッダー](access-graph-sparql-http-trailing-headers.md)
+ [Neptune の SPARQL で使用される RDF メディアタイプ。](sparql-media-type-support.md)
  + [Neptune SPARQL で使用される RDF シリアル化形式](sparql-media-type-support.md#sparql-serialization-formats)
  + [Neptune SPARQL で使用される SPARQL 結果のシリアル化形式](sparql-media-type-support.md#sparql-serialization-formats-neptune-output)
  + [Neptune が RDF データのインポートに使用できるメディアタイプ](sparql-media-type-support.md#sparql-serialization-formats-input)
  + [Neptune がクエリ結果のエクスポートに使用できるメディアタイプ](sparql-media-type-support.md#sparql-serialization-formats-output)
+ [SPARQL UPDATE LOAD を使用して Neptune にデータをインポートする](sparql-api-reference-update-load.md)
+ [SPARQL UPDATE UNLOAD を使用して Neptune からデータを削除する](sparql-api-reference-unload.md)

# HTTP REST エンドポイントを使用して Neptune DB インスタンスに接続する
<a name="access-graph-sparql-http-rest"></a>

**注記**  
Neptune は現在、REST API リクエストの HTTP/2 をサポートしていません。クライアントは、エンドポイントに接続するときに HTTP/1.1 を使用する必要があります。

次の手順は、**curl** コマンドを使用し、HTTPS を介した接続で HTTP 構文を使用して SPARQL エンドポイントに接続する方法について説明します。Neptune DB インスタンスと同じ仮想プライベートクラウド (VPC) の Amazon EC2 インスタンスからこれらの手順を実行してください。

Neptune DB インスタンスへの SPARQL クエリ用の HTTP エンドポイントは `https://your-neptune-endpoint:port/sparql` です。

**注記**  
Neptune DB インスタンスのホスト名を見つける方法については、[Amazon Neptune エンドポイントに接続する](feature-overview-endpoints.md) セクションを参照してください。

Amazon Neptune では、SPARQL クエリ用の HTTP エンドポイントが用意されています。REST インターフェイスは、SPARQL バージョン 1.1 と互換性があります。

**HTTP POST を使用したクエリ**  
次の例では、**curl** を使用して、HTTP **POST** を通じて SPARQL **`QUERY`** を送信します。

```
curl -X POST --data-binary 'query=select ?s ?p ?o where {?s ?p ?o} limit 10' https://your-neptune-endpoint:port/sparql
```

前述の例では、10 の制限がある `?s ?p ?o` クエリを使用して、グラフのトリプル (主語 - 述語 - 目的語) のうち最大 10 個を返します。その他の対象にクエリを実行するには、別の SPARQL クエリで置き換えます。

**注記**  
`SELECT` および `ASK` クエリの場合、レスポンスのデフォルトの MIME メディアタイプは `application/sparql-results+json` です。  
`CONSTRUCT` および `DESCRIBE` クエリの場合、レスポンスのデフォルトの MIME タイプは `application/n-quads` です。  
Neptune によってシリアル化に使用されるメディアタイプのリストについては、[Neptune SPARQL で使用される RDF シリアル化形式](sparql-media-type-support.md#sparql-serialization-formats)を参照してください。

**HTTP POST を使用した更新**  
次の例では、**curl** を使用して、HTTP **POST** を通じて SPARQL **`UPDATE`** を送信します。

```
curl -X POST --data-binary 'update=INSERT DATA { <https://test.com/s> <https://test.com/p> <https://test.com/o> . }' https://your-neptune-endpoint:port/sparql
```

前述の例では、次のトリプルを SPARQL デフォルトのグラフに挿入します。`<https://test.com/s> <https://test.com/p> <https://test.com/o>`

# マルチパートの SPARQL レスポンスのオプションの HTTP 末尾ヘッダー
<a name="access-graph-sparql-http-trailing-headers"></a>

SPARQL クエリと更新に対する HTTP 応答は、多くの場合、複数のパートまたはチャンクで返されます。クエリまたは更新がこれらのチャンクの送信を開始した後に発生する障害を診断するのは難しい場合があります。特に、最初のチャンクは HTTP ステータスコードが `200` であるからです。

末尾のヘッダーを明示的にリクエストしない限り、Neptune は、エラーメッセージをメッセージ本文に追加することによってのみ、そのような障害を報告しますが、通常これは破損しています。

この種の問題の検出と診断を容易にするために、転送エンコーディング (TE) トレーラーヘッダー (`te: trailers`) をリクエストに入れることができます (例として[TE リクエストヘッダーに関する MDN ページ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/TE)を参照)。これを行うと、Neptune はレスポンスチャンクの末尾ヘッダー内に 2 つの新しいヘッダーフィールドを含めます。
+ `X-Neptune-Status`— 応答コードの後ろに短い名前が続きます。たとえば、成功した場合、末尾ヘッダーは次のようになります。`X-Neptune-Status: 200 OK`。失敗の場合、応答コードは、`X-Neptune-Status: 500 TimeLimitExceededException` といった[ Neptune エンジンのエラーコード](errors-engine-codes.md)となる可能性があります。
+ `X-Neptune-Detail`— 成功したリクエストでは空です。エラーの場合は、JSON エラーメッセージが含まれます。HTTP ヘッダー値には ASCII 文字しか使用できないため、JSON 文字列は URL 符号化されます。エラーメッセージは、レスポンスメッセージ本文にも追加されます。

# Neptune の SPARQL で使用される RDF メディアタイプ。
<a name="sparql-media-type-support"></a>

Resource Description Framework (RDF) データはさまざまな方法でシリアル化することができ、そのほとんどは SPARQL が消費または出力することができます。

## Neptune SPARQL で使用される RDF シリアル化形式
<a name="sparql-serialization-formats"></a>
+ **RDF/XML**  –   RDF の XML シリアル化。[RDF 1.1 XML 構文](https://www.w3.org/TR/rdf-syntax-grammar/)で定義されています。メディアタイプ: `application/rdf+xml`。一般的なファイル拡張子: `.rdf`。
+ **N-Triples**  –   RDF グラフをエンコードするための行ベースのプレーンテキスト形式。[RDF 1.1 N-Triples](https://www.w3.org/TR/n-triples/) で定義されています。メディアタイプ: `application/n-triples`、`text/turtle`、または `text/plain`。。一般的なファイル拡張子: `.nt`。
+ **N-Quads**  –   グラフをエンコードするための行ベースのプレーンテキスト形式。[RDF 1.1 N-Quads](https://www.w3.org/TR/n-quads/) で定義されています。これは N-Triples の拡張子です。メディアタイプ: `application/n-quads`、または 7 ビットの US-ASCII でエンコードされている場合は `text/x-nquads`。一般的なファイル拡張子: `.nq`。
+ **Turtle**  –   [ RDF 1.1 Turtle](https://www.w3.org/TR/turtle/) で定義されている RDF のテキスト構文で、RDF グラフをコンパクトで自然なテキスト形式で、一般的な使用パターンとデータ型の省略形で完全に記述できるようにします。Turtle は、N-Triples 形式および SPARQL の 3 つのパターン構文との互換性を提供します。メディアタイプ: `text/turtle`一般的なファイル形式: `.ttl`。
+ **TriG**  –   [ RDF 1.1 TriG](https://www.w3.org/TR/trig/) で定義されている RDF のテキスト構文で、RDF グラフをコンパクトで自然なテキスト形式で、一般的な使用パターンとデータ型の省略形で完全に記述できるようにします。TriG は Turtle 形式の拡張子です。メディアタイプ: `application/trig`。一般的なファイル拡張子: `.trig`。
+ **N3 (Notation3)** - [Notation3 (N3): 読み取り可能な RDF 構文](https://www.w3.org/TeamSubmission/n3/) で定義されているアサーションとロジック構文。N3 は、式 (グラフ自体であるリテラル)、変数、論理的意味、および機能的述部を追加することによって RDF データモデルを拡張し、RDF/XML に代わるテキスト形式の構文を提供します。メディアタイプ: `text/n3`。一般的なファイル拡張子: `.n3`。
+ **JSON-LD**  –   [JSON-LD 1.0](https://www.w3.org/TR/json-ld/)で定義されているデータシリアル化およびメッセージング形式。メディアタイプ: `application/ld+json`。一般的なファイル拡張子: `.jsonld`。
+ **TriXX** - [TriX: XML での RDF トリプル で定義されている](https://www.hpl.hp.com/techreports/2004/HPL-2004-56.html)、XML での RDF のシリアル化。メディアタイプ: `application/trix`。一般的なファイル拡張子: `.trix`。
+ **SPARQL JSON 結果**  –   [SPARQL 1.1 クエリ結果 JSON 形式](https://www.w3.org/TR/sparql11-results-json)を使用した、RDF のシリアル化。メディアタイプ: `application/sparql-results+json`。一般的なファイル拡張子: `.srj`。
+ **RDF4J バイナリ形式** - [RDF4J バイナリ RDF 形式](https://rdf4j.org/documentation/reference/rdf4j-binary) で説明されている、RDF データをエンコードするためのバイナリ形式。メディアタイプ: `application/x-binary-rdf`。

## Neptune SPARQL で使用される SPARQL 結果のシリアル化形式
<a name="sparql-serialization-formats-neptune-output"></a>
+ **SPARQL XML 結果**  –   [SPARQL クエリ結果 XML 形式 (Second Edition)](https://www.w3.org/TR/rdf-sparql-XMLres/) で定義されている、SPARQL クエリ言語によって提供される変数バインディングおよびブール結果形式の XML 形式。メディアタイプ: `application/sparql-results+xml`。一般的なファイル拡張子: `.srx`。
+ **SPARQL CSVとTSVの結果** — カンマ区切り値とタブ区切り値を使用して、[SPARQL 1.1 クエリ結果 CSV および TSV 形式](https://www.w3.org/TR/sparql11-results-csv-tsv/)で定義される `SELECT` クエリから SPARQL クエリの結果を表現します。メディアタイプ: カンマ区切り値の `text/csv`、およびタブ区切り値の `text/tab-separated-values`。一般的なファイル拡張子: カンマ区切り値の `.csv`、およびタブ区切り値の `.tsv`。
+ **バイナリ結果テーブル**  –   SPARQL クエリの出力をエンコードするためのバイナリ形式。メディアタイプ: `application/x-binary-rdf-results-table`。
+ **SPARQL JSON 結果**  –   [SPARQL 1.1 クエリ結果 JSON 形式](https://www.w3.org/TR/sparql11-results-json/)を使用した、RDF のシリアル化。メディアタイプ: `application/sparql-results+json`。

## Neptune が RDF データのインポートに使用できるメディアタイプ
<a name="sparql-serialization-formats-input"></a>

**[Neptune bulk-loader](bulk-load.md) によってサポートされるメディアタイプ**
+ [N-Triples](https://www.w3.org/TR/n-triples/)
+ [N-Quads](https://www.w3.org/TR/n-quads/)
+ [RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/)
+ [Turtle](https://www.w3.org/TR/turtle/)

**SPARQL UPDATE LOAD がインポートできるメディアタイプ**
+ [N-Triples](https://www.w3.org/TR/n-triples/)
+ [N-Quads](https://www.w3.org/TR/n-quads/)
+ [RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/)
+ [Turtle](https://www.w3.org/TR/turtle/)
+ [TriG](https://www.w3.org/TR/trig/)
+ [N3](https://www.w3.org/TeamSubmission/n3/)
+ [JSON-LD](https://www.w3.org/TR/json-ld/)

## Neptune がクエリ結果のエクスポートに使用できるメディアタイプ
<a name="sparql-serialization-formats-output"></a>

SPARQL クエリ応答の出力形式を指定するには、クエリリクエストともに `"Accept: media-type"` ヘッダーを送信します。例: 

```
curl -H "Accept: application/nquads" ...
```

**SPARQL SELECT が Neptune から出力できる RDF メディアタイプ**
+ [SPARQL JSON 結果](https://www.w3.org/TR/sparql11-results-json) (これはデフォルトです)
+ [SPARQL XML 結果](https://www.w3.org/TR/rdf-sparql-XMLres/)
+ **バイナリ結果テーブル** (メディアタイプ: `application/x-binary-rdf-results-table`)
+ [カンマ区切り値 (CSV)](https://www.w3.org/TR/sparql11-results-csv-tsv/)
+ [タブ区切り値 (TSV)](https://www.w3.org/TR/sparql11-results-csv-tsv/)

**SPARQL ASK が Neptune から出力できる RDF メディアタイプ**
+ [SPARQL JSON 結果](https://www.w3.org/TR/sparql11-results-json) (これはデフォルトです)
+ [SPARQL XML 結果](https://www.w3.org/TR/rdf-sparql-XMLres/)
+ **Boolean** (メディアタイプ: `text/boolean`、「true」または「false」を意味します)

**SPARQL CONSTRUCT が Neptune から出力できる RDF メディアタイプ**
+ [N-Quads](https://www.w3.org/TR/n-quads/) (これはデフォルトです)
+ [RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/)
+ [JSON-LD](https://www.w3.org/TR/json-ld/)
+ [N-Triples](https://www.w3.org/TR/n-triples/)
+ [Turtle](https://www.w3.org/TR/turtle/)
+ [N3](https://www.w3.org/TeamSubmission/n3/)
+ [TriX](https://www.hpl.hp.com/techreports/2004/HPL-2004-56.html)
+ [TriG](https://www.w3.org/TR/trig/)
+ [SPARQL JSON 結果](https://www.w3.org/TR/sparql11-results-json)
+ [RDF4J バイナリ RDF形式](https://rdf4j.org/documentation/reference/rdf4j-binary)

**SPARQL DESCRIBE が Neptune から出力できる RDF メディアタイプ**
+ [N-Quads](https://www.w3.org/TR/n-quads/) (これはデフォルトです)
+ [RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/)
+ [JSON-LD](https://www.w3.org/TR/json-ld/)
+ [N-Triples](https://www.w3.org/TR/n-triples/)
+ [Turtle](https://www.w3.org/TR/turtle/)
+ [N3](https://www.w3.org/TeamSubmission/n3/)
+ [TriX](https://www.hpl.hp.com/techreports/2004/HPL-2004-56.html)
+ [TriG](https://www.w3.org/TR/trig/)
+ [SPARQL JSON 結果](https://www.w3.org/TR/sparql11-results-json)
+ [RDF4J バイナリ RDF形式](https://rdf4j.org/documentation/reference/rdf4j-binary)

# SPARQL UPDATE LOAD を使用して Neptune にデータをインポートする
<a name="sparql-api-reference-update-load"></a>

SPARQL UPDATE LOAD コマンドの構文は、[SPARQL 1.1 アップデートの推奨事項](https://www.w3.org/TR/sparql11-update/#load)に記載されています。

```
LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
```
+ **`SILENT`** — (*オプション*) 処理中にエラーが発生した場合でも、オペレーションは成功を返します。

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

  リモートファイルには、次のいずれかの拡張子を指定する必要があります。
  + NTriples 用 `.nt`。
  + NQuads 用 `.nq`。
  + Trig 用 `.trig`。
  + RDF/XML 用 `.rdf`。
  + Turtle 用 `.ttl`。
  + N3 用 `.n3`。
  + JSON-LD 用 `.jsonld`。
+ **`INTO GRAPH`***(データをロードする名前付きグラフ)* — (*オプション*) データをロードするグラフを指定します。

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

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

**注記**  
大量のデータをロードする必要がある場合は、UPDATE LOAD ではなく Neptune バルクローダーを使用することをお勧めします。バルクローダーについては、[Amazon Neptune 一括ローダーを使用したデータの取り込み](bulk-load.md)を参照してください。

`SPARQL UPDATE LOAD` を使用して、 Amazon S3 から直接データをロードすることも、セルフホストウェブサーバーから取得したファイルからデータをロードすることもできます。ロードするリソースは Neptune サーバーと同じリージョンに存在し、リソースのエンドポイントは VPC でホワイトリストに登録されている必要があります。Amazon S3 エンドポイントを作成する方法については、[Amazon S3 VPC エンドポイントの作成](bulk-load-data.md#bulk-load-prereqs-s3) を参照してください。

すべての`SPARQL UPDATE LOAD` URI は `https://` で始まる必要があります。これには Amazon S3 URL が含まれます。

バルクローダーとは対照的に、`SPARQL UPDATE LOAD` への呼び出しは完全にトランザクション型です。

**SPARQL UPDATE LOAD を使用して Amazon S3 から Neptune にファイルを直接ロードする**

Neptune では、SPARQL UPDATE LOAD を使用するときに Amazon S3 に IAM ロールを渡すことはできないため、問題の Amazon S3 バケットはパブリックであるか、LOAD クエリで[署名付き Amazon S3 URL](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)を使用する必要があります。

Amazon S3 ファイルの署名付き URL を生成するには、次のような AWS CLI コマンドを使用できます。

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

次に、結果の署名付き URL を `LOAD` コマンドで使えます。

```
curl https://(a Neptune endpoint URL):8182/sparql \
  --data-urlencode 'update=load (pre-signed URL of the remote Amazon S3 file of data to be loaded) \
                           into graph (named graph)'
```

詳細については、「[リクエストの認証: クエリパラメータの使用](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)」を参照してください。[Boto3 のドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html)に、Python スクリプトを使用して署名付き URL を生成する方法が記載されています。

また、ロードするファイルのコンテンツタイプも正しく設定する必要があります。

1. 次のように `-metadata` パラメータを使用してファイルを Amazon S3 にアップロードするときにファイルのコンテンツタイプを設定します。

   ```
   aws s3 cp test.nt s3://bucket-name/my-plain-text-input/test.nt --metadata Content-Type=text/plain
   aws s3 cp test.rdf s3://bucket-name/my-rdf-input/test.rdf --metadata Content-Type=application/rdf+xml
   ```

1. メディアタイプの情報が実際に存在することを確認してください。以下を実行します:

   ```
   curl -v bucket-name/folder-name
   ```

   このコマンドの出力には、ファイルをアップロードするときに設定したメディアタイプ情報が表示されます。

1. その後、`SPARQL UPDATE LOAD` コマンドを使用してこれらのファイルを Neptune にインポートできます。

   ```
   curl https://your-neptune-endpoint:port/sparql \
     -d "update=LOAD <https://s3.amazonaws.com/bucket-name/my-rdf-input/test.rdf>"
   ```

上記の手順は、パブリック バケット、または LOAD クエリで [署名付き Amazon S3 URL ](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)を使用してアクセスするバケットに対してのみ機能します。

 以下に示すように、プライベート Amazon S3 バケットからロードするようにウェブプロキシサーバーを設定することもできます。

**ウェブサーバーを使用して SPARQL UPDATE LOAD でファイルを Neptune にロードする**

1. Neptune とロードするファイルをホストしている VPC 内で実行されているマシンにウェブサーバーをインストールします。たとえば、Amazon Linux を使用している場合は、次のように Apache をインストールします。

   ```
   sudo yum install httpd mod_ssl
   sudo /usr/sbin/apachectl start
   ```

1. ロードしようとしている RDF ファイルコンテンツの MIME タイプを定義します。SPARQL はウェブサーバーから送信された `Content-type` ヘッダーを使用してコンテンツの入力形式を決定するため、ウェブサーバーに関連する MIME タイプを定義する必要があります。

   たとえば、ファイル形式を識別するために次のファイル拡張子を使用するとします。
   + NTriples 用 `.nt`。
   + NQuads 用 `.nq`。
   + Trig 用 `.trig`。
   + RDF/XML 用 `.rdf`。
   + Turtle 用 `.ttl`。
   + N3 用 `.n3`。
   + JSON-LD 用 `.jsonld`。

   ウェブサーバーとして Apache 2 を使用している場合は、ファイル `/etc/mime.types` を編集して次のタイプを追加します。

   ```
    text/plain nt
    application/n-quads nq
    application/trig trig
    application/rdf+xml rdf
    application/x-turtle ttl
    text/rdf+n3 n3
    application/ld+json jsonld
   ```

1. MIME タイプマッピングが機能することを確認します。ウェブサーバーを起動して実行し、選択した形式で RDFファイルをホストしたら、ローカルホストからウェブサーバーにリクエストを送信して設定をテストできます。

   たとえば、次のようなリクエストを送信します。

   ```
   curl -v http://localhost:80/test.rdf
   ```

   `curl` からの詳細な出力には、このような行が表示されるはずです。

   ```
   Content-Type: application/rdf+xml
   ```

   これは、コンテンツタイプマッピングが正常に定義されたことを示しています。

1. これで、SPARQL UPDATE コマンドを使用してデータをロードする準備が整いました。

   ```
   curl https://your-neptune-endpoint:port/sparql \
       -d "update=LOAD <http://web_server_private_ip:80/test.rdf>"
   ```

**注記**  
`SPARQL UPDATE LOAD` を使用すると、ロードされるソースファイルが大きい場合にウェブサーバーでタイムアウトが発生する可能性があります。Neptune は、ストリーミング時と、サーバーで設定したタイムアウトよりも時間がかかる大きなファイルでは、ファイルデータを処理します。これにより、サーバーが接続を閉じることがあります。その場合、Neptune がストリームで予期しない EOF を検出すると、次のエラーメッセージが表示されることがあります。  

```
{
  "detailedMessage":"Invalid syntax in the specified file",
  "code":"InvalidParameterException"
}
```
このメッセージが表示され、ソースファイルに無効な構文が含まれていると思われる場合は、ウェブサーバーのタイムアウト設定を大きくしてみてください。さらに、サーバーでデバッグログを有効にし、タイムアウトを探すことで、問題を診断することもできます。

# 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 レスポンスによって決まります)。*