

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar o SPARQL UPDATE UNLOAD para excluir dados do Neptune
<a name="sparql-api-reference-unload"></a>

O Neptune também oferece uma operação SPARQL personalizada, `UNLOAD`, para remover dados especificados em uma fonte remota. `UNLOAD` pode ser considerado uma contrapartida da operação `LOAD`. A sintaxe é:

```
UNLOAD SILENT {{(URL of the remote data to be unloaded)}} FROM GRAPH {{(named graph from which to remove the data)}}
```
+ **`SILENT`**: (*opcional*) faz com que a operação seja bem-sucedida mesmo que tenha ocorrido um erro durante o processamento dos dados.

  Isso pode ser útil quando uma única transação contém várias declarações, como `"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"` e você deseja que a transação seja concluída mesmo que alguns dos dados remotos não possam ser processados.
+ {{URL of the remote data to be unloaded}}— (*Obrigatório*) Especifica um arquivo de dados remoto contendo dados a serem descarregados de um gráfico.

  O arquivo remoto deve ter uma das seguintes extensões (são os mesmos formatos compatíveis com UPDATE-LOAD):
  + `.nt`para NTriples.
  + `.nq`para NQuads.
  + `.trig` para Trig.
  + `.rdf` para RDF/XML.
  + `.ttl` para Turtle.
  + `.n3` para N3.
  + `.jsonld` para JSON-LD.

  Todos os dados que esse arquivo contém serão removidos do cluster de banco de dados pela operação `UNLOAD`.

  Qualquer autenticação do Amazon S3 deve ser incluída no URL para que os dados sejam descarregados. É possível pré-assinar um arquivo do Amazon S3 e depois usar o URL resultante para acessá-lo com segurança. Por exemplo:

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

  Em seguida:

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

  Para obter mais informações, consulte [Autenticação de solicitações: usando parâmetros de consulta](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html).
+ **`FROM GRAPH `**{{(named graph from which to remove the data)}}— (*Opcional*) Especifica o gráfico nomeado do qual os dados remotos devem ser descarregados.

  O Neptune associa cada triplo a um grafo nomeado. É possível especificar o grafo nomeado padrão usando o URI do grafo nomeado de fallback, `http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph`, da seguinte forma:

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

Da mesma forma que `LOAD` corresponde a `INSERT DATA { {{(inline data)}} }`, `UNLOAD` corresponde a `DELETE DATA { {{(inline data)}} }`. Como `DELETE DATA`, `UNLOAD` não funciona em dados com nós em branco.

Por exemplo, se um servidor web local fornecer um arquivo denominado `data.nt` que contenha estes dois triplos:

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

O seguinte comando `UNLOAD` excluirá esses dois triplos do grafo nomeado, `<http://example.org/graph1>`:

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

Isso terá o mesmo efeito que usar o seguinte comando `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> .
  }
}
```

**Exceções lançadas pelo comando `UNLOAD`.**
+ **`InvalidParameterException`**: havia nós em branco nos dados. *Status HTTP*: 400 Solicitação inválida.

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

   
+ **`InvalidParameterException`**: havia uma sintaxe rompida nos dados. *Status HTTP*: 400 Solicitação inválida.

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

   
+ **`UnloadUrlAccessDeniedException `**: acesso negado. *Status HTTP*: 400 Solicitação inválida.

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

   
+ **`BadRequestException `**: os dados remotos não podem ser recuperados. *Status HTTP*: 400 Solicitação inválida.

  *Mensagem*: *(depende da resposta HTTP).*