

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

# Amazon Neptune 노트북에서 매직 사용
<a name="notebooks-magics"></a>

Neptune 워크벤치는 노트북을 사용하며 많은 시간과 노력을 절약할 수 있는 이른바 *매직* 명령을 여러 가지 제공합니다. 이 명령은 *라인 매직*과 *셀 매직*이라는 두 범주로 나뉩니다.

*라인 매직*은 앞에 단일 퍼센트 기호(`%`)가 오는 명령입니다. 라인 입력만 받고 나머지 셀 전체의 입력은 받지 않습니다. Neptune 워크벤치는 다음과 같은 라인 매직을 제공합니다.
+ [%seed](#notebooks-line-magics-seed)
+ [%load](#notebooks-line-magics-load)
+ [%load\$1ids](#notebooks-line-magics-load-ids)
+ [%load\$1status](#notebooks-line-magics-load-status)
+ [%cancel\$1load](#notebooks-line-magics-cancel-load)
+ [%status](#notebooks-line-magics-status)
+ [%gremlin\$1status](#notebooks-line-magics-gremlin-status)
+ [%opencypher\$1status 또는 %oc\$1status](#notebooks-line-magics-opencypher-status)
+ [`%stream_viewer`](#notebooks-line-magics-stream-viewer)
+ [%sparql\$1status](#notebooks-line-magics-sparql-status)
+ [%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config)
+ [%graph\$1notebook\$1host](#notebooks-line-magics-graph-notebook-host)
+ [%graph\$1notebook\$1version](#notebooks-line-magics-graph-notebook-version)
+ [%graph\$1notebook\$1service](#notebooks-line-magics-graph-notebook-service)
+ [%graph\$1notebook\$1vis\$1options](#notebooks-line-magics-graph-notebook-vis-options)
+ [%statistics](#notebooks-line-magics-statistics)
+ [%summary](#notebooks-line-magics-summary)
+ [%reset\$1graph](#notebooks-line-magics-reset-graph)
+ [%get\$1graph](#notebooks-line-magics-get-graph)
+ [%degreeDistribution](#notebooks-line-magics-degreeDistribution)

*셀 매직* 앞에는 1개가 아닌 2개의 퍼센트 기호(`%%`)가 붙으며, 라인 내용을 입력으로 사용할 수도 있으나 셀 내용을 입력으로 사용합니다. Neptune 워크벤치는 다음과 같은 셀 매직을 제공합니다.
+ [%%sparql](#notebooks-cell-magics-sparql)
+ [%%gremlin](#notebooks-cell-magics-gremlin)
+ [%%opencypher, or %%oc](#notebooks-cell-magics-opencypher)
+ [%%graph\$1notebook\$1config](#notebooks-cell-magics-graph-notebook-config)
+ [%%graph\$1notebook\$1vis\$1options](#notebooks-cell-magics-graph-notebook-vis-options)

또한 [Neptune 기계 학습](machine-learning.md)을 사용하여 작업하는 데 활용할 수 있는 두 매직, 즉 라인 매직과 셀 매직이 있습니다.
+ [%neptune\$1ml](#notebooks-line-magics-neptune_ml)
+ [%%neptune\$1ml](#notebooks-cell-magics-neptune_ml)

**참고**  
Neptune 매직을 사용할 때는 일반적으로 `--help` 또는 `-h` 파라미터를 사용하여 도움말 텍스트를 얻을 수 있습니다. 셀 매직을 사용하면 본문을 비워둘 수 없으므로, 도움말을 얻으려 할 때는 본문에 한 문자라도 필러 텍스트를 넣으세요. 예제:  

```
%%gremlin --help
  x
```

## 셀 매직 또는 라인 매직에 변수 주입
<a name="notebook-magics-variable-injection"></a>

노트북에 정의된 변수는 `${VAR_NAME}` 형식을 사용하여 노트북의 모든 셀 또는 라인 매직 내에서 참조할 수 있습니다.

예를 들어, 다음과 같은 변수를 정의한다고 가정하겠습니다.

```
c = 'code'
my_edge_labels = '{"route":"dist"}'
```

그러면 셀 매직의 Gremlin 쿼리는 다음과 같습니다.

```
%%gremlin -de $my_edge_labels
g.V().has('${c}','SAF').out('route').values('${c}')
```

이는 다음과 동일합니다.

```
%%gremlin -de {"route":"dist"}
g.V().has('code','SAF').out('route').values('code')
```

## 모든 쿼리 언어에 사용할 수 있는 쿼리 인수
<a name="notebook-magics-query-args"></a>

다음 쿼리 인수는 Neptune 워크벤치의 `%%gremlin`, `%%opencypher`, `%%sparql` 매직과 함께 사용할 수 있습니다.

**일반적인 쿼리 인수**
+ **`--store-to`**(또는 **`-s`**)   –   쿼리 결과를 저장할 변수 이름을 지정합니다.
+ **`--silent`**   –   있는 경우 쿼리가 완료된 후 출력이 표시되지 않습니다.

  
+ **`--group-by`**(또는 **`-g`**)   –   노드를 그룹화하는 데 사용되는 속성(예: `code` 또는 `T.region`)을 지정합니다. 버텍스는 할당된 그룹에 따라 색상이 지정됩니다.
+ **`--ignore-groups`**   –   있는 경우 모든 그룹화 옵션이 무시됩니다.
+ **`--display-property`**(또는 **`-d`**)   –   각 버텍스에 대해 값을 표시해야 하는 속성을 지정합니다.

  각 쿼리 언어의 기본값은 다음과 같습니다.
  + Gremlin의 경우:   `T.label`.
  + openCypher의 경우:   `~labels`.
  + SPARQL의 경우:   `type`.
+ **`--edge-display-property`**(또는 **`-t`**)   –   각 엣지에 대해 값을 표시해야 하는 속성을 지정합니다.

  각 쿼리 언어의 기본값은 다음과 같습니다.
  + Gremlin의 경우:   `T.label`.
  + openCypher의 경우:   `~labels`.
  + SPARQL의 경우:   `type`.
+ **`--tooltip-property`**(또는 **`-de`**)   –   각 노드에 대해 값을 도구 설명으로 표시해야 하는 속성을 지정합니다.

  각 쿼리 언어의 기본값은 다음과 같습니다.
  + Gremlin의 경우:   `T.label`.
  + openCypher의 경우:   `~labels`.
  + SPARQL의 경우:   `type`.
+ **`--edge-tooltip-property`**(또는 **`-te`**)   –   각 엣지에 대해 값을 도구 설명으로 표시해야 하는 속성을 지정합니다.

  각 쿼리 언어의 기본값은 다음과 같습니다.
  + Gremlin의 경우:   `T.label`.
  + openCypher의 경우:   `~labels`.
  + SPARQL의 경우:   `type`.
+ **`--label-max-length `**(또는 **`-l`**)   –   모든 버텍스 레이블의 최대 문자 길이를 지정합니다. 기본값은 10입니다.
+ **`--edge-label-max-length `**(또는 **`-le`**)   –   모든 엣지 레이블의 최대 문자 길이를 지정합니다. 기본값은 10입니다.

  openCypher의 경우에만 `--rel-label-max-length` 또는 `-rel`입니다.
+ **`--simulation-duration`**(또는 **`-sd`**)   –   시각화 물리 시뮬레이션의 최대 기간을 지정합니다. 기본값은 1,500ms입니다.
+ **`--stop-physics`**(또는 **`-sp`**)   –   초기 시뮬레이션이 안정화된 후 시각화 물리를 비활성화합니다.

이러한 인수의 속성 값은 단일 속성 키 또는 각 레이블 유형에 대해 다른 속성을 지정할 수 있는 JSON 문자열로 구성될 수 있습니다. JSON 문자열은 [변수 주입](#notebook-magics-variable-injection)을 사용해서만 지정할 수 있습니다.

## `%seed` 라인 매직
<a name="notebooks-line-magics-seed"></a>

`%seed` 라인 매직은 Neptune 엔드포인트에 데이터를 추가하는 편리한 방법으로, Gremlin, openCypher 또는 SPARQL 쿼리를 탐색하고 실험하는 데 사용할 수 있습니다. 탐색하려는 데이터 모델(속성 그래프 또는 RDF)을 고른 다음 Neptune이 지원하는 다양한 샘플 데이터 세트 중에서 선택할 수 있는 형식을 제공합니다.

## `%load` 라인 매직
<a name="notebooks-line-magics-load"></a>

`%load` 라인 매직은 Neptune에 대량 로드 요청을 제출하는 데 사용할 수 있는 양식을 생성합니다([Neptune 로더 명령](load-api-reference-load.md) 참조). 소스는 Neptune 클러스터와 동일한 리전에 있는 Amazon S3 경로여야 합니다.

## `%load_ids` 라인 매직
<a name="notebooks-line-magics-load-ids"></a>

`%load_ids` 라인 매직은 노트북의 호스트 엔드포인트에 제출된 로드 ID를 검색합니다([Neptune 로더 Get-Status 요청 파라미터](load-api-reference-status-requests.md#load-api-reference-status-parameters) 참조). 요청은 다음과 같은 형식을 취합니다.

```
GET https://your-neptune-endpoint:port/loader
```

## `%load_status` 라인 매직
<a name="notebooks-line-magics-load-status"></a>

`%load_status` 라인 매직은 라인 입력으로 지정된 노트북의 호스트 엔드포인트에 제출된 특정 로드 작업의 로드 상태를 검색합니다([Neptune 로더 Get-Status 요청 파라미터](load-api-reference-status-requests.md#load-api-reference-status-parameters) 참조). 요청은 다음과 같은 형식을 취합니다.

```
GET https://your-neptune-endpoint:port/loader?loadId=loadId
```

라인 매직은 다음과 같습니다.

```
%load_status load id
```

## `%cancel_load` 라인 매직
<a name="notebooks-line-magics-cancel-load"></a>

`%cancel_load` 라인 매직은 특정 로드 작업을 취소합니다([Neptune 로더 작업 취소](load-api-reference-cancel.md) 참조). 요청은 다음과 같은 형식을 취합니다.

```
DELETE https://your-neptune-endpoint:port/loader?loadId=loadId
```

라인 매직은 다음과 같습니다.

```
%cancel_load load id
```

## `%status` 라인 매직
<a name="notebooks-line-magics-status"></a>

노트북의 호스트 엔드포인트에서 [상태 정보](access-graph-status.md)를 검색합니다([%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config)에서 호스트 엔드포인트 표시).

 Neptune DB 호스트의 경우 상태 정보는 [상태 엔드포인트](https://docs.aws.amazon.com//neptune/latest/userguide/access-graph-status.html)에서 가져옵니다. Neptune Analytics 호스트의 경우 [GetGraph API](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_GetGraph.html)를 통해 상태가 검색됩니다. 자세한 정보는 [%get\$1graph](#notebooks-line-magics-get-graph)을 참조하세요.

## `%gremlin_status` 라인 매직
<a name="notebooks-line-magics-gremlin-status"></a>

[Gremlin 쿼리 상태 정보](gremlin-api-status.md)를 검색합니다.

## `%opencypher_status` 라인 매직(`%oc_status` 포함)
<a name="notebooks-line-magics-opencypher-status"></a>

openCypher 쿼리의 쿼리 상태를 검색합니다. 이 라인 매직은 필요에 따라 다음과 같은 인수를 사용합니다.
+ **`--queryId`** 또는 **`-q`**   –   상태를 표시할 실행 중인 특정 쿼리의 ID를 지정합니다.
+ **`--cancelQuery`** 또는 **`-c`**   –   실행 중인 쿼리를 취소합니다. 값을 취하지 않습니다.
+ **`--silent-cancel`** 또는 **`-s`**   –   쿼리를 취소할 때 `--silent`가 `true`로 설정되면 실행 중인 쿼리는 HTTP 응답 코드 `200`으로 취소됩니다. 그렇지 않으면 HTTP 응답 코드는 `500`이 됩니다.
+ **`--store-to`**   –   쿼리 결과를 저장할 변수 이름을 지정합니다.
+ **`-w/--includeWaiting`** – Neptune DB만 해당. true로 설정되고 다른 파라미터가 없을 경우, 실행 중인 쿼리뿐만 아니라 대기 중인 쿼리의 상태 정보도 반환됩니다. 이 파라미터는 값을 갖지 않습니다.
+ **`--state`** - Neptune Analytics만 해당. 상태를 검색할 쿼리 상태의 하위 집합을 지정합니다.
+ **`-m/--maxResults`** - Neptune Analytics만 해당. `--state` 값과 일치하는 반환된 쿼리 집합에 대한 상한을 설정합니다.
+ **`--silent`**   –   있는 경우 쿼리가 완료된 후 출력이 표시되지 않습니다.

## `%stream_viewer` 라인 매직
<a name="notebooks-line-magics-stream-viewer"></a>

`%stream_viewer` 라인 매직은 Neptune 클러스터에서 스트림이 활성화된 경우 Neptune 스트림에 기록된 항목을 대화식으로 탐색할 수 있는 인터페이스를 표시합니다. 이를 위해 아래와 같은 인수(옵션)가 허용됩니다.
+ **`language`**   –   스트림 데이터의 쿼리 언어로, `gremlin` 또는 `sparql`입니다. 이 인수를 제공하지 않는 경우 기본값은 `gremlin`입니다.
+ **`--limit`**   –   페이지당 표시할 최대 스트림 항목 수를 지정합니다. 이 인수를 제공하지 않는 경우 기본값은 `10`입니다.

  

**참고**  
`%stream_viewer` 라인 매직은 엔진 버전 1.0.5.1 이하에서만 완벽하게 지원됩니다.

## `%sparql_status` 라인 매직
<a name="notebooks-line-magics-sparql-status"></a>

[SPARQL 쿼리 상태 정보](sparql-api-status.md)를 검색합니다.

## `%graph_notebook_config` 라인 매직
<a name="notebooks-line-magics-graph-notebook-config"></a>

이 라인 매직은 노트북이 Neptune과 통신하는 데 사용하는 구성이 포함된 JSON 객체를 표시합니다. 구성에는 다음이 포함됩니다.
+ `host`: 연결하고 명령을 실행할 엔드포인트입니다.
+ `port`: Neptune에 명령을 실행할 때 사용하는 포트입니다. 기본값은 `8182`입니다.
+ `auth_mode`: Neptune에 명령을 실행할 때 사용하는 인증 모드입니다. IAM 인증을 활성화한 클러스터에 연결하는 경우 `IAM`이어야 하고, 그렇지 않으면 `DEFAULT`여야 합니다.
+ `load_from_s3_arn`: `%load` 매직에서 사용할 Amazon S3 ARN을 지정합니다. 이 값이 비어 있는 경우 `%load` 명령에서 ARN을 지정해야 합니다.
+ `ssl`: TLS를 사용하여 Neptune에 연결할지 여부를 나타내는 부울 값입니다. 기본값은 `true`입니다.
+ `aws_region`: 이 노트북이 배포된 리전입니다. 이 정보는 IAM 인증 및 `%load` 요청에 사용됩니다.

`%graph_notebook_config` 출력을 새 셀에 복사하여 구성을 수정하고, 거기에서 변경할 수 있습니다. 그런 다음 새 셀에서 [%%graph\$1notebook\$1config](#notebooks-cell-magics-graph-notebook-config) 셀 매직을 실행하면 그에 따라 구성이 변경됩니다.

## `%graph_notebook_host` 라인 매직
<a name="notebooks-line-magics-graph-notebook-host"></a>

라인 입력을 노트북의 호스트로 설정합니다.

## `%graph_notebook_version` 라인 매직
<a name="notebooks-line-magics-graph-notebook-version"></a>

`%graph_notebook_version` 라인 매직은 Neptune 워크벤치 노트북 릴리스 번호를 반환합니다. 예를 들어, 그래프 시각화는 버전 `1.27`에서 도입되었습니다.

## `%graph_notebook_service` 라인 매직
<a name="notebooks-line-magics-graph-notebook-service"></a>

`%graph_notebook_service` 라인 매직은 라인 입력을 Neptune 요청에 사용되는 서비스 이름으로 설정합니다.

## `%graph_notebook_vis_options` 라인 매직
<a name="notebooks-line-magics-graph-notebook-vis-options"></a>

`%graph_notebook_vis_options` 라인 매직은 노트북이 사용하고 있는 현재 시각화 설정을 표시합니다. 이러한 옵션은 [vis.js](https://visjs.github.io/vis-network/docs/network/#options) 설명서에 설명되어 있습니다.

출력을 새 셀에 복사하고 원하는 대로 변경한 다음 셀에서 `%%graph_notebook_vis_options` 셀 매직을 실행하여 설정을 수정할 수 있습니다.

시각화 설정을 기본값으로 복원하려면 `reset` 파라미터를 사용하여 `%graph_notebook_vis_options` 라인 매직을 실행하면 됩니다. 이렇게 하면 모든 시각화 설정이 재설정됩니다.

```
%graph_notebook_vis_options reset
```

## `%statistics` 라인 매직
<a name="notebooks-line-magics-statistics"></a>

`%statistics` 라인 매직은 DFE 엔진 통계를 검색하거나 관리하는 데 사용됩니다([Neptune DFE에서 사용할 통계 관리](neptune-dfe-statistics.md) 참조). 이 매직을 사용하여 [그래프 요약](neptune-graph-summary.md)을 검색할 수도 있습니다.

다음과 같은 파라미터를 지원합니다.
+ **`--language`**   –   통계 엔드포인트의 쿼리 언어로, `propertygraph`(또는 `pg`)나 `rdf`입니다.

  지정하지 않은 경우 기본값은 `propertygraph`입니다.
+ **`--mode`**(또는 **`-m`**)   –   제출할 요청 또는 작업의 유형을 `status`, `disableAutoCompute`, `enableAutoCompute`, `refresh`, `delete`, `detailed`, `basic` 중 하나로 지정합니다.

  지정하지 않으면 `--summary`가 설정되지 않은 경우에 기본값은 `status`입니다. 설정된 경우의 기본값은 `basic`입니다.
+ **`--summary`**   –   선택한 언어의 통계 요약 엔드포인트에서 그래프 요약을 검색합니다.
+ **`--silent`**   –   있는 경우 쿼리가 완료된 후 출력이 표시되지 않습니다.
+ **`--store-to`**   –   쿼리 결과를 저장할 변수를 지정하는 데 사용됩니다.

## `%summary` 라인 매직
<a name="notebooks-line-magics-summary"></a>

`%summary` 라인 매직은 [그래프 요약](neptune-graph-summary.md) 정보를 검색하는 데 사용됩니다. Neptune 엔진 버전 `1.2.1.0`부터 사용할 수 있습니다.

다음과 같은 파라미터를 지원합니다.
+ **`--language`**   –   통계 엔드포인트의 쿼리 언어로, `propertygraph`(또는 `pg`)나 `rdf`입니다.

  지정하지 않은 경우 기본값은 `propertygraph`입니다.
+ **`--detailed`**   –   출력에서 구조 필드 표시를 켜거나 끕니다.

  지정되지 않은 경우 기본값은 `basic` 요약 표시 모드입니다.
+ **`--silent`**   –   있는 경우 쿼리가 완료된 후 출력이 표시되지 않습니다.
+ **`--store-to`**   –   쿼리 결과를 저장할 변수를 지정하는 데 사용됩니다.

## `%reset_graph` 라인 매직
<a name="notebooks-line-magics-reset-graph"></a>

 `%reset_graph`(또는 `%_graph_reset`) 라인 매직은 Neptune Analytics 엔드포인트에 대해 [ResetGraph](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_ResetGraph.html) 호출을 실행합니다. 필요에 따라 아래와 같은 라인 입력을 허용합니다.
+  -ns 또는 --no-skip-snapshot - 지정 시 그래프 데이터 삭제 전에 최종 그래프 스냅샷이 생성됩니다 
+  --silent – 지정 시 리셋 호출 제출 후 출력이 표시되지 않습니다.
+  --store-to – ResetGraph 응답을 저장할 변수를 지정하는 데 사용됩니다.

## `%get_graph` 라인 매직
<a name="notebooks-line-magics-get-graph"></a>

 `%get_graph` 라인 매직은 [GetGraph API](https://docs.aws.amazon.com//neptune-analytics/latest/apiref/API_GetGraph.html)를 통해 그래프에 대한 정보를 검색합니다. 이 매직은 Neptune Analytics와 함께 사용할 때 [%status](#notebooks-line-magics-status)와 기능적으로 동일합니다.

## `%degreeDistribution` 라인 매직
<a name="notebooks-line-magics-degreeDistribution"></a>

`%degreeDistribution` 라인 매직은 그래프에서 버텍스의 각도 분포를 시각화하는 대화형 히스토그램을 생성합니다. 히스토그램에는 특정 각도(x축)를 가진 버텍스(y축) 수가 표시됩니다. Neptune Analytics에서만 사용할 수 있습니다.

드롭다운 메뉴에서 선택할 수도 있는 다음 파라미터를 허용합니다.
+ **`--traversalDirection`**   - 분석할 정도를   지정합니다. `"both"` (기본값), `"inbound"`또는 중 하나여야 합니다`"outbound"`.
+ **`--vertexLabels`**   - 제공된 레이블(예: )을 기준으로 버텍스를   필터링합니다`airport country`. 기본값은 빈 목록입니다.
+ **`--edgeLabels`**   - 제공된 레이블(예: )을 기준으로 엣지를   필터링합니다`route`. 기본값은 빈 목록입니다.

## `%%sparql` 셀 매직
<a name="notebooks-cell-magics-sparql"></a>

`%%sparql` 셀 매직은 Neptune 엔드포인트에 SPARQL 쿼리를 실행합니다. 필요에 따라 아래와 같은 라인 입력을 허용합니다.
+ **`-h` 또는 `--help`**   –   이러한 파라미터에 대한 도움말 텍스트를 반환합니다.
+ **`--path`**   –   SPARQL 엔드포인트에 대한 경로 접두사를 지정합니다. 예를 들어, `--path "abc/def"`를 지정하는 경우 호출되는 엔드포인트는 `host:port/abc/def`입니다.
+ **`--expand-all`**   –   바인딩 유형에 관계없이 그래프 다이어그램에 모든 `?s ?p ?o` 결과를 포함하도록 시각화 도우미에 지시하는 쿼리 시각화 힌트입니다.

  기본적으로 SPARQL 시각화에는 `o?`가 `uri` 또는 `bnode`(빈 노드)인 트리플 패턴만 포함됩니다. 리터럴 문자열이나 정수와 같은 다른 모든 `?o` 바인딩 유형은 **그래프** 탭의 **세부 정보** 창에서 볼 수 있는 `?s` 노드의 속성으로 취급됩니다.

  버텍스와 같은 리터럴 값을 시각화에 대신 포함하려는 경우 `--expand-all` 쿼리 힌트를 사용하세요.

  설명 쿼리는 시각화되지 않으므로, 이 시각화 힌트를 설명 파라미터와 함께 사용하지 마세요.
+ **`--explain-type`**   –   사용할 설명 모드(`dynamic`, `static`, `details` 중 하나)를 지정하는 데 활용됩니다.

  
+ **`--explain-format`**   –   설명 쿼리의 응답 형식(`text/csv`, `text/html` 중 하나)을 지정하는 데 사용됩니다.
+ **`--store-to`**   –   쿼리 결과를 저장할 변수를 지정하는 데 사용됩니다.

`explain` 쿼리 예제:

```
%%sparql explain

SELECT * WHERE {?s ?p ?o} LIMIT 10
```

`--expand-all` 시각화 힌트 파라미터가 있는 시각화 쿼리 예제([SPARQL 시각화](notebooks-visualization.md#notebooks-visualization-sparql) 참조):

```
%%sparql --expand-all

SELECT * WHERE {?s ?p ?o} LIMIT 10
```

## `%%gremlin` 셀 매직
<a name="notebooks-cell-magics-gremlin"></a>

`%%gremlin` 셀 매직은 WebSocket을 사용하여 Neptune 엔드포인트에 Gremlin 쿼리를 실행합니다. [Gremlin `explain`](gremlin-explain.md) /> 모드 또는 [Gremlin `profile` API](gremlin-profile-api.md)로 전환하기 위한 옵션 라인 입력과 시각화 출력 동작을 수정하기 위한 별도의 옵션 시각화 힌트 입력을 지원합니다([Gremlin 시각화](notebooks-visualization.md#notebooks-visualization-Gremlin) 참조).

`explain` 쿼리 예제:

```
%%gremlin explain

g.V().limit(10)
```

`profile` 쿼리 예제:

```
%%gremlin profile

g.V().limit(10)
```

시각화 쿼리 힌트가 있는 시각화 쿼리 예제:

```
%%gremlin -p v,outv

g.V().out().limit(10)
```

**`%%gremlin profile` 쿼리용 옵션 파라미터**
+ **`--profile-chop`**   –   프로필 결과 문자열의 최대 길이를 지정합니다. 이 인수를 제공하지 않는 경우 기본값은 250입니다.
+ **`--profile-serializer`**   –   결과에 사용할 직렬 변환기를 지정합니다. 허용되는 값은 유효한 MIME 유형 또는 TinkerPop 드라이버 "Serializers" 열거 값입니다. 이 인수를 제공하지 않는 경우 기본값은 `application.json`입니다.
+ **`--profile-no-results`**   –   결과 수만 표시합니다. 사용하지 않을 경우 기본적으로 모든 쿼리 결과가 프로파일 보고서에 표시됩니다.
+ **`--profile-indexOps`**   –   모든 인덱스 작업에 대한 자세한 보고서를 표시합니다.

## `%%opencypher` 셀 매직(`%%oc` 포함)
<a name="notebooks-cell-magics-opencypher"></a>

`%%opencypher` 셀 매직(`%%oc` 축약형)은 Neptune 엔드포인트에 openCypher 쿼리를 실행합니다. 필요에 따라 아래와 같은 라인 입력 인수를 허용합니다.
+ **`--mode`** – 쿼리 모드: `query` 또는 `bolt` 중 하나입니다. 이 인수를 제공하지 않는 경우 기본값은 `query`입니다.
+ **`--group-by`** 또는 **`-g`**   –   노드를 그룹화하는 데 사용되는 속성을 지정합니다. 예를 들어 `code, ~id`입니다. 이 인수를 제공하지 않는 경우 기본값은 `~labels`입니다.
+ **`--ignore-groups`**   –   있는 경우 모든 그룹화 옵션이 무시됩니다.
+ **`--display-property`** 또는 **`-d`**   –   각 버텍스에 대해 값을 표시해야 하는 속성을 지정합니다. 이 인수를 제공하지 않는 경우 기본값은 `~labels`입니다.
+ **`--edge-display-property`** 또는 **`-de`**   –   각 엣지에 대해 값을 표시해야 하는 속성을 지정합니다. 이 인수를 제공하지 않는 경우 기본값은 `~labels`입니다.
+  **`--explain-type`**- 사용할 설명 모드를 지정하는 데 사용됩니다(동적, 정적, 디버그 또는 상세 모드 중 하나).
+ **`--label-max-length`** 또는 **`-l`**   –   표시할 버텍스 레이블의 최대 문자 수를 지정합니다. 이 인수를 제공하지 않는 경우 기본값은 `10`입니다.
+ **`--store-to`** 또는 **`-s`**   –   쿼리 결과를 저장할 변수 이름을 지정합니다.
+ **`--plan-cache`** 또는 **`-pc`**   –   사용할 계획 캐시 모드를 지정합니다. 기본값은 `auto`입니다.
+ **`--query-timeout`** 또는 **`-qt`**   –   최대 쿼리 제한 시간을 밀리초 단위로 지정합니다. 기본값은 `1800000`입니다.
+ **`--query-parameters`** or **`qp`**   –  쿼리에 적용할 [파라미터 정의](opencypher-parameterized-queries.md)입니다. 이 옵션은 단일 변수 이름을 사용하거나 맵의 문자열 표현을 사용할 수 있습니다.

**`--query-parameters`의 사용 예**

  1.  하나의 노트북 셀에서 openCypher 파라미터 맵을 정의합니다.

     ```
     params = '''{
      "name":"john",
      "age": 20,
     }'''
     ```

  1.  `%%oc`를 사용하여 파라미터를 다른 셀의 `--query-parameters`로 전달합니다.

     ```
     %%oc --query-parameters params
     
     MATCH (n {name: $name, age: $age}) 
     RETURN n
     ```

## `%%graph_notebook_config` 셀 매직
<a name="notebooks-cell-magics-graph-notebook-config"></a>

`%%graph_notebook_config` 셀 매직은 구성 정보가 포함된 JSON 객체를 사용하여 노트북이 Neptune과 통신하는 데 사용하는 설정을 가능한 경우 수정합니다. 구성은 [%graph\$1notebook\$1config](#notebooks-line-magics-graph-notebook-config) 라인 매직에서 반환한 것과 동일한 형식을 취합니다.

예제:

```
%%graph_notebook_config
{
  "host": "my-new-cluster-endpoint.amazon.com",
  "port": 8182,
  "auth_mode": "DEFAULT",
  "load_from_s3_arn": "",
  "ssl": true,
  "aws_region": "us-east-1"
}
```

## `%%graph_notebook_vis_options` 셀 매직
<a name="notebooks-cell-magics-graph-notebook-vis-options"></a>

`%%graph_notebook_vis_options` 셀 매직으로 노트북의 시각화 옵션을 설정할 수 있습니다. `%graph-notebook-vis-options` 라인 매직에서 반환된 설정을 새 셀에 복사하여 변경하고 `%%graph_notebook_vis_options` 셀 매직을 사용하여 새 값을 설정할 수 있습니다.

이러한 옵션은 [vis.js](https://visjs.github.io/vis-network/docs/network/#options) 설명서에 설명되어 있습니다.

시각화 설정을 기본값으로 복원하려면 `reset` 파라미터를 사용하여 `%graph_notebook_vis_options` 라인 매직을 실행하면 됩니다. 이렇게 하면 모든 시각화 설정이 재설정됩니다.

```
%graph_notebook_vis_options reset
```

## `%neptune_ml` 라인 매직
<a name="notebooks-line-magics-neptune_ml"></a>

`%neptune_ml` 라인 매직을 사용하여 다양한 Neptune ML 작업을 시작하고 관리할 수 있습니다.

**참고**  
[%%neptune\$1ml](#notebooks-cell-magics-neptune_ml) 셀 매직을 사용하여 일부 Neptune ML 작업을 시작하고 관리할 수도 있습니다.
+ **`%neptune_ml export start`**   –   새 내보내기 작업을 시작합니다.

**파라미터**
  + **`--export-url`** *exporter-endpoint*   –   (*선택 사항*) 내보내기 도구를 호출할 수 있는 Amazon API Gateway 엔드포인트입니다.
  + **`--export-iam`**   –   (*선택 사항*) 내보내기 URL에 대한 요청에 SigV4를 사용하여 서명해야 함을 나타내는 플래그입니다.
  + **`--export-no-ssl`**   –   (*선택 사항*) 내보내기 도구에 연결할 때 SSL을 사용하지 않아야 함을 나타내는 플래그입니다.
  + **`--wait`**   –   (*선택 사항*) 내보내기가 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 내보내기 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 내보내기 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 내보내기 결과를 저장할 변수입니다. `--wait`를 지정하면 최종 상태가 해당 위치에 저장됩니다.
+ **`%neptune_ml export status`**   –   내보내기 작업의 상태를 검색합니다.

**파라미터**
  + **`--job-id`** *export job ID*   –   상태를 검색할 내보내기 작업의 ID입니다.
  + **`--export-url`** *exporter-endpoint*   –   (*선택 사항*) 내보내기 도구를 호출할 수 있는 Amazon API Gateway 엔드포인트입니다.
  + **`--export-iam`**   –   (*선택 사항*) 내보내기 URL에 대한 요청에 SigV4를 사용하여 서명해야 함을 나타내는 플래그입니다.
  + **`--export-no-ssl`**   –   (*선택 사항*) 내보내기 도구에 연결할 때 SSL을 사용하지 않아야 함을 나타내는 플래그입니다.
  + **`--wait`**   –   (*선택 사항*) 내보내기가 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 내보내기 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 내보내기 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 내보내기 결과를 저장할 변수입니다. `--wait`를 지정하면 최종 상태가 해당 위치에 저장됩니다.
+ **`%neptune_ml dataprocessing start`**   –   Neptune ML 데이터 처리 단계를 시작합니다.

**파라미터**
  + **`--job-id`** *ID for this job*   –   (*선택 사항*) 이 작업에 할당할 ID입니다.
  + **`--s3-input-uri`** *S3 URI*   –   (*선택 사항*) 이 데이터 처리 작업에 대한 입력을 찾을 수 있는 S3 URI입니다.
  + **`--config-file-name`** *file name*   –   (*선택 사항*) 이 데이터 처리 작업의 구성 파일 이름입니다.
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 데이터 처리 결과를 저장할 변수입니다.
  + **`--instance-type`** *(instance type)* – (*선택 사항*) 이 데이터 처리 작업에 사용할 인스턴스 크기입니다.
  + **`--wait`**   –   (*선택 사항*) 데이터 처리가 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 데이터 처리 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 데이터 처리 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
+ **`%neptune_ml dataprocessing status`**   –   데이터 처리 작업의 상태를 검색합니다.

**파라미터**
  + **`--job-id`** *ID of the job*   –   상태를 검색할 작업의 ID입니다.
  + **`--store-to`** *instance type*   –   (*선택 사항*) 모델 훈련 결과를 저장할 변수입니다.
  + **`--wait`**   –   (*선택 사항*) 모델 훈련이 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 모델 훈련 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 데이터 처리 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
+ **`%neptune_ml training start`**   –   Neptune ML 모델 훈련 프로세스를 시작합니다.

**파라미터**
  + **`--job-id`** *ID for this job*   –   (*선택 사항*) 이 작업에 할당할 ID입니다.
  + **`--data-processing-id`** *dataprocessing job ID*   –   (*선택 사항*) 훈련에 사용할 아티팩트를 만든 데이터 처리 작업의 ID입니다.
  + **`--s3-output-uri`** *S3 URI*   –   (*선택 사항*) 이 모델 훈련 작업의 출력을 저장할 S3 URI입니다.
  + **`--instance-type`** *(instance type)* – (*선택 사항*) 이 모델 훈련 작업에 사용할 인스턴스 크기입니다.
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 모델 훈련 결과를 저장할 변수입니다.
  + **`--wait`**   –   (*선택 사항*) 모델 훈련이 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 모델 훈련 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 모델 훈련 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
+ **`%neptune_ml training status`**   –   Neptune ML 모델 훈련 작업의 상태를 검색합니다.

**파라미터**
  + **`--job-id`** *ID of the job*   –   상태를 검색할 작업의 ID입니다.
  + **`--store-to`** *instance type*   –   (*선택 사항*) 상태 결과를 저장할 변수입니다.
  + **`--wait`**   –   (*선택 사항*) 모델 훈련이 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 모델 훈련 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 데이터 처리 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
+ **`%neptune_ml endpoint create`**   –   Neptune ML 모델의 쿼리 엔드포인트를 생성합니다.

**파라미터**
  + **`--job-id`** *ID for this job*   –   (*선택 사항*) 이 작업에 할당할 ID입니다.
  + **`--model-job-id`** *model-training job ID*   –   (*선택 사항*) 쿼리 엔드포인트를 생성할 모델 훈련 작업의 ID입니다.
  + **`--instance-type`** *(instance type)*   –   (*선택 사항*) 쿼리 엔드포인트에 사용할 인스턴스 크기입니다.
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 엔드포인트 생성 결과를 저장할 변수입니다.
  + **`--wait`**   –   (*선택 사항*) 엔드포인트 생성이 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 엔드포인트 생성 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).
+ **`%neptune_ml endpoint status`**   –   Neptune ML 쿼리 엔드포인트의 상태를 검색합니다.

**파라미터**
  + **`--job-id`** *endpoint creation ID*   –   (*선택 사항*) 상태를 보고할 엔드포인트 생성 작업의 ID입니다.
  + **`--store-to`** *location-to-store-result*   –   (*선택 사항*) 상태 결과를 저장할 변수입니다.
  + **`--wait`**   –   (*선택 사항*) 엔드포인트 생성이 완료될 때까지 작업이 대기해야 함을 나타내는 플래그입니다.
  + **`--wait-interval`** *interval-to-wait*   –   (*선택 사항*) 상태 확인 사이의 시간을 초 단위로 설정합니다(*기본값*: 60).
  + **`--wait-timeout`** *timeout-seconds*   –   (*선택 사항*) 가장 최근 상태로 돌아오기 전에 엔드포인트 생성 작업이 완료될 때까지 대기할 시간을 초 단위로 설정합니다(*기본값*: 3,600).

## `%%neptune_ml` 셀 매직
<a name="notebooks-cell-magics-neptune_ml"></a>

`%%neptune_ml` 셀 매직은 `--job-id` 또는 `--export-url` 같은 라인 입력을 무시합니다. 대신 셀 본문 내에 해당 입력과 기타 입력을 제공할 수 있습니다.

이러한 입력을 Jupyter 변수에 할당된 다른 셀에 저장한 다음 해당 변수를 사용하여 셀 본문에 삽입할 수도 있습니다. 이렇게 하면 매번 다시 입력하지 않아도 반복해서 사용할 수 있습니다.

이는 주입 변수가 셀의 유일한 내용인 경우에만 효과가 있습니다. 한 셀에 여러 변수를 사용하거나 텍스트와 변수를 조합하여 사용할 수 없습니다.

예를 들어, `%%neptune_ml export start` 셀 매직은 셀 본문에 [Neptune 내보내기 프로세스를 제어하는 데 사용되는 파라미터](export-parameters.md)에서 설명한 모든 파라미터가 포함된 JSON 문서를 사용할 수 있습니다.

[Neptune-ML-01-Introduction-to-Node-Classification-Gremlin](https://github.com/aws/graph-notebook/blob/main/src/graph_notebook/notebooks/04-Machine-Learning/Neptune-ML-01-Introduction-to-Node-Classification-Gremlin.ipynb) 노트북의 **데이터 및 모델 구성 내보내기** 섹션의 **기능 구성**에서 다음과 같은 셀이 Jupyter 변수에 할당된 문서에서 내보내기 파라미터(`export-params`)를 어떻게 저장하는지 알 수 있습니다.

```
export_params = {
  "command": "export-pg",
  "params": {
    "endpoint": neptune_ml.get_host(),
    "profile": "neptune_ml",
    "useIamAuth": neptune_ml.get_iam(),
    "cloneCluster": False
   },
  "outputS3Path": f'{s3_bucket_uri}/neptune-export',
  "additionalParams": {
    "neptune_ml": {
      "targets": [
        {
          "node": "movie",
          "property": "genre"
        }
      ],
      "features": [
        {
          "node": "movie",
          "property": "title",
          "type": "word2vec"
        },
        {
          "node": "user",
          "property": "age",
          "type": "bucket_numerical",
          "range" : [1, 100],
          "num_buckets": 10
        }
      ]
    }
  },
  "jobSize": "medium"}
```

이 셀을 실행하면 Jupyter는 파라미터 문서를 해당 이름으로 저장합니다. 그런 다음 `${export_params}`를 사용하여 `%%neptune_ml export start cell`의 본문에 다음과 같이 JSON 문서를 주입할 수 있습니다.

```
%%neptune_ml export start --export-url {neptune_ml.get_export_service_host()} --export-iam --wait --store-to export_results

${export_params}
```

### 사용 가능한 형태의 `%%neptune_ml` 셀 매직
<a name="notebooks-cell-magics-neptune_ml-forms"></a>

`%%neptune_ml` 셀 매직은 다음과 같은 형태로 사용할 수 있습니다.

****
+ **`%%neptune_ml export start`**   –   Neptune ML 내보내기 프로세스를 시작합니다.
+ **`%%neptune_ml dataprocessing start`**   –   Neptune ML 데이터 처리 작업을 시작합니다.
+ **`%%neptune_ml training start`**   –   Neptune ML 모델 훈련 작업을 시작합니다.
+ **`%%neptune_ml endpoint create`**   –   모델의 Neptune ML 쿼리 엔드포인트를 생성합니다.