

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan SPARQL UPDATE UNLOAD untuk menghapus data dari Neptune
<a name="sparql-api-reference-unload"></a>

Neptune juga menyediakan operasi SPARQL kustom, `UNLOAD`, untuk menghapus data yang ditentukan dalam sumber remote. `UNLOAD` dapat dianggap sebagai mitra untuk operasi `LOAD`. Sintaksnya adalah:

```
UNLOAD SILENT {{(URL of the remote data to be unloaded)}} FROM GRAPH {{(named graph from which to remove the data)}}
```
+ **`SILENT`**   –   (*Opsional*) Menyebabkan operasi mengembalikan sukses bahkan jika ada kesalahan selama pemrosesan data.

  Hal ini dapat berguna ketika transaksi tunggal berisi beberapa pernyataan seperti `"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"` dan Anda ingin transaksinya selesai bahkan jika beberapa data jarak jauh tidak dapat diproses.
+ {{URL of the remote data to be unloaded}}- (*Wajib*) Menentukan file data jarak jauh yang berisi data yang akan diturunkan dari grafik.

  File jarak jauh harus memiliki salah satu ekstensi berikut (ini adalah format yang sama yang didukung UPDATE-LOAD):
  + `.nt`untuk NTriples.
  + `.nq`untuk NQuads.
  + `.trig` untuk Trig.
  + `.rdf` untuk RDF/XML.
  + `.ttl` untuk Turtle.
  + `.n3` untuk N3.
  + `.jsonld` untuk JSON-LD.

  Semua data yang berisi file ini akan dihapus dari klaster DB Anda oleh operasi `UNLOAD`.

  Otentikasi Amazon S3 harus disertakan dalam URL untuk data yang akan batal dimuat. Anda dapat melakukan pre-sign pada file Amazon S3 lalu menggunakan URL yang dihasilkan untuk mengaksesnya dengan aman. Contoh:

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

  Kemudian:

  ```
  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)}}'
  ```

  Untuk informasi lebih lanjut, lihat [Melakukan Autentikasi Permintaan: Menggunakan Parameter Kueri](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html).
+ **`FROM GRAPH `**{{(named graph from which to remove the data)}}— (*Opsional*) Menentukan grafik bernama dari mana data jarak jauh harus diturunkan.

  Neptune mengasosiasikan setiap tripel dengan grafik bernama. Anda dapat menentukan grafik bernama default menggunakan URI grafik bernama fallback, `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`, seperti ini:

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

Dengan cara yang sama saat `LOAD` sesuai dengan `INSERT DATA { {{(inline data)}} }`, `UNLOAD` sesuai dengan `DELETE DATA { {{(inline data)}} }`. Seperti halnya `DELETE DATA`, `UNLOAD` tidak berfungsi pada data yang berisi simpul kosong.

Sebagai contoh, jika server web lokal melayani file bernama `data.nt` yang berisi 2 triple berikut:

```
<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> .
```

Perintah `UNLOAD` berikut akan menghapus dua triple tersebut dari grafik bernama, `<http://example.org/graph1>`:

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

Hal ini akan memiliki efek yang sama seperti menggunakan perintah `DELETE DATA` berikut:

```
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> .
  }
}
```

**Pengecualian yang dilemparkan oleh perintah `UNLOAD`**
+ **`InvalidParameterException`**   –   Ada simpul kosong dalam data. *Status HTTP*: 400 Permintaan Buruk.

  *Pesan*: ` Blank nodes are not allowed for UNLOAD`

   
+ **`InvalidParameterException`**   –   Ada sintaks yang rusak dalam data. *Status HTTP*: 400 Permintaan Buruk.

  *Pesan*: `Invalid syntax in the specified file.`

   
+ **`UnloadUrlAccessDeniedException `**   –   Akses ditolak. *Status HTTP*: 400 Permintaan Buruk.

  *Pesan*: `Update failure: Endpoint {{(Neptune endpoint)}} reported access denied error. Please verify access.`

   
+ **`BadRequestException `**   –   Data jarak jauh tidak dapat diambil. *Status HTTP*: 400 Permintaan Buruk.

  *Pesan*: *(tergantung respons HTTP).*