

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di SPARQL UPDATE UNLOAD per eliminare i dati da Neptune
<a name="sparql-api-reference-unload"></a>

Neptune fornisce anche un'operazione SPARQL personalizzata, `UNLOAD`, per rimuovere i dati specificati in un'origine remota. `UNLOAD` può essere considerata una controparte dell'operazione `LOAD`. La sintassi è:

```
UNLOAD SILENT (URL of the remote data to be unloaded) FROM GRAPH (named graph from which to remove the data)
```
+ **`SILENT`**: (*facoltativo*) fa sì che l'operazione restituisca un esito positivo anche se si è verificato un errore durante l'elaborazione dei dati.

  Ciò può essere utile quando una singola transazione contiene più istruzioni come `"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"` e si desidera che la transazione venga completata anche se non è stato possibile elaborare alcuni dati remoti.
+ *URL of the remote data to be unloaded*— (*Obbligatorio*) specifica un file di dati remoto contenente dati da scaricare da un grafico.

  Il file remoto deve avere una delle seguenti estensioni (sono gli stessi formati supportati da UPDATE-LOAD):
  + `.nt`per. NTriples
  + `.nq`per NQuads.
  + `.trig` per Trig.
  + `.rdf` per RDF/XML.
  + `.ttl` per Turtle.
  + `.n3` per N3.
  + `.jsonld` per JSON-LD.

  Tutti i dati contenuti in questo file verranno rimossi dal cluster database dall'operazione `UNLOAD`.

  Qualsiasi autenticazione Amazon S3 deve essere inclusa nell'URL affinché i dati vengano scaricati. Puoi prefirmare un file Amazon S3 e quindi utilizzare l'URL risultante per accedervi in modo sicuro. Esempio:

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

  Quindi:

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

  Per ulteriori informazioni, consulta [Autenticazione delle richieste: utilizzo dei parametri di query](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html).
+ **`FROM GRAPH `***(named graph from which to remove the data)*— (*Facoltativo*) Speciifica il grafico denominato da cui devono essere scaricati i dati remoti.

  Neptune associa ogni tripla a un grafo nominato. È possibile specificare il grafo nominato predefinito utilizzando l'URI di fallback del grafo nominato, `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`, in questo modo:

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

Nello stesso modo in cui `LOAD` corrisponde a `INSERT DATA { (inline data) }`, `UNLOAD` corrisponde a `DELETE DATA { (inline data) }`. Analogamente a `DELETE DATA`, `UNLOAD` non funziona su dati che contengono nodi vuoti.

Ad esempio, se un server Web locale serve un file denominato `data.nt` che contiene le seguenti 2 triple:

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

Il comando `UNLOAD` seguente eliminerà queste due triple dal grafo nominato `<http://example.org/graph1>`:

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

Ciò avrà lo stesso effetto dell'utilizzo del comando `DELETE DATA` seguente:

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

**Eccezioni generate dal comando `UNLOAD`**
+ **`InvalidParameterException`**: sono presenti nodi vuoti nei dati. *Stato HTTP*: 400 Richiesta non valida.

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

   
+ **`InvalidParameterException`**: sintassi non corretta nei dati. *Stato HTTP*: 400 Richiesta non valida.

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

   
+ **`UnloadUrlAccessDeniedException `**: accesso negato. *Stato HTTP*: 400 Richiesta non valida.

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

   
+ **`BadRequestException `**: non è possibile recuperare i dati remoti. *Stato HTTP*: 400 Richiesta non valida.

  *Messaggio*: *(dipende dalla risposta HTTP).*