

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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`는 빈 노드를 포함한 데이터에는 사용할 수 없습니다.

로컬 웹 서버가 다음 2개의 트리플이 포함된 `data.nt` 이름의 파일을 제공하는 경우를 예로 들어 보겠습니다.

```
<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>` 그래프에서 이 두 트리플을 삭제합니다.

```
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 상태*: 400 Bad Request.

  *메시지*: ` Blank nodes are not allowed for UNLOAD`

   
+ **`InvalidParameterException`**   –   데이터 구문이 깨졌습니다. *HTTP 상태*: 400 Bad Request.

  *메시지*: `Invalid syntax in the specified file.`

   
+ **`UnloadUrlAccessDeniedException `**   –   액세스가 거부되었습니다. *HTTP 상태*: 400 Bad Request.

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

   
+ **`BadRequestException `**   –   원격 데이터를 검색할 수 없습니다. *HTTP 상태*: 400 Bad Request.

  *메시지*: *(HTTP 응답에 따라 다름)*