

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

# 그래프에 대한 간단한 요약 보고서 받기
<a name="neptune-graph-summary"></a>

Neptune 그래프 요약 API는 그래프에 대한 다음 정보를 검색합니다.
+ 속성(PG) 그래프의 경우 그래프 요약 API는 노드, 엣지, 속성의 개수와 함께 노드 및 엣지 레이블과 속성 키의 읽기 전용 목록을 반환합니다.
+ 리소스 기술 프레임워크(RDF) 그래프의 경우 그래프 요약 API는 쿼드, 주제, 조건자 수와 함께 읽기 전용 클래스 및 조건자 키 목록을 반환합니다.

**참고**  
그래프 요약 API는 Neptune [엔진 릴리스 1.2.1.0](engine-releases-1.2.1.0.md)에 도입되었습니다.

그래프 요약 API를 사용하면 그래프 데이터 크기 및 콘텐츠를 빠르고 깊이 있게 파악할 수 있습니다. [`%summary`](notebooks-magics.md#notebooks-line-magics-summary) Neptune 워크벤치 매직을 사용하여 Neptune 노트북 내에서 API를 대화식으로 사용할 수도 있습니다. 그래프 애플리케이션에서는 API를 사용하여 검색된 노드 또는 엣지 레이블을 검색의 일부로 제공하여 검색 결과를 개선할 수 있습니다.

그래프 요약 데이터는 [Neptune DFE 엔진](neptune-dfe-engine.md)이 런타임 중에 계산한 [DFE 통계](neptune-dfe-statistics.md)에서 추출되며 DFE 통계가 지원될 때마다 사용할 수 있습니다. 새 Neptune DB 클러스터를 생성할 때 기본적으로 통계가 활성화됩니다.

**참고**  
메모리를 절약하기 위해 `t3` 및 `t4` 인스턴스 유형, 즉 `db.t3.medium` 및 `db.t4g.medium` 인스턴스 유형에서 통계 생성이 비활성화됩니다. 따라서 이러한 인스턴스 유형에서는 그래프 요약 데이터를 사용할 수 없습니다.

[통계 상태 API](neptune-dfe-statistics.md#neptune-dfe-statistics-status)를 사용하여 DFE 통계의 상태를 확인할 수 있습니다. 통계 자동 생성이 [비활성화되지](neptune-dfe-statistics.md#neptune-dfe-statistics-auto-disable) 않는 한, 통계는 정기적으로 자동 업데이트됩니다.

그래프 요약을 요청할 때 통계를 최대한 최신 상태로 유지하려면 요약을 검색하기 직전에 [통계 업데이트를 수동으로 트리거](neptune-dfe-statistics.md#neptune-dfe-statistics-manual)할 수 있습니다. 통계를 계산하는 동안 그래프가 변경되면 필연적으로 지연이 약간 발생하지만, 크게 차이는 나지 않습니다.

## 그래프 요약 API를 사용하여 그래프 요약 정보 검색
<a name="neptune-graph-summary-retrieving"></a>

Gremlin 또는 openCypher를 사용하여 쿼리하는 속성 그래프의 경우 속성 그래프 요약 엔드포인트에서 그래프 요약을 검색할 수 있습니다. 이 엔드포인트에는 긴 URI와 짧은 URI가 모두 있습니다.
+ `https://your-neptune-host:port/propertygraph/statistics/summary`
+ `https://your-neptune-host:port/pg/statistics/summary`

SPARQL을 사용하여 쿼리하는 RDF 그래프의 경우 RDF 요약 엔드포인트에서 그래프 요약을 검색할 수 있습니다.
+ `https://your-neptune-host:port/rdf/statistics/summary`

이러한 엔드포인트는 읽기 전용이며 HTTP `GET` 작업만 지원합니다. \$1GRAPH\$1SUMMARY\$1ENDPOINT가 쿼리하려는 엔드포인트의 주소로 설정된 경우 다음과 같이 `curl` 및 HTTP `GET`을 사용하여 요약 데이터를 검색할 수 있습니다.

```
curl -G "$GRAPH_SUMMARY_ENDPOINT"
```

그래프 요약을 검색하려고 할 때 사용할 수 있는 통계가 없는 경우 응답은 다음과 같습니다.

```
{
  "detailedMessage": "Statistics are not available. Summary can only be generated after statistics are available.",
  "requestId": "48c1f788-f80b-b69c-d728-3f6df579a5f6",
  "code": "StatisticsNotAvailableException"
}
```

## 그래프 요약 API의 `mode` URL 쿼리 파라미터
<a name="neptune-graph-summary-mode"></a>

그래프 요약 API는 `mode`라는 이름의 URL 쿼리 파라미터를 받아들입니다. 이 파라미터는 `basic`(기본값)과 `detailed`라는 두 값 중 하나를 사용할 수 있습니다. RDF 그래프의 경우 `detailed` 모드 그래프 요약 응답에는 추가 `subjectStructures` 필드가 포함됩니다. 속성 그래프의 경우 세부 그래프 요약 응답에는 2개의 추가 필드, 즉 `nodeStructures` 및 `edgeStructures`가 포함됩니다.

`detailed` 그래프 요약 응답을 요청하려면 다음과 같이 `mode` 파라미터를 포함하세요.

```
curl -G "$GRAPH_SUMMARY_ENDPOINT?mode=detailed"
```

`mode` 파라미터가 없는 경우 `basic` 모드가 기본적으로 사용되어 명시적으로 `?mode=basic`을 지정할 수는 있지만, 반드시 그럴 필요는 없습니다.

## 속성 그래프(PG)의 그래프 요약 응답
<a name="neptune-graph-summary-pg-response"></a>

빈 속성 그래프의 경우 자세한 그래프 요약 응답은 다음과 같습니다.

```
{
  "status" : "200 OK",
  "payload" : {
    "version" : "v1",
    "lastStatisticsComputationTime" : "2023-01-10T07:58:47.972Z",
    "graphSummary" : {
      "numNodes" : 0,
      "numEdges" : 0,
      "numNodeLabels" : 0,
      "numEdgeLabels" : 0,
      "nodeLabels" : [ ],
      "edgeLabels" : [ ],
      "numNodeProperties" : 0,
      "numEdgeProperties" : 0,
      "nodeProperties" : [ ],
      "edgeProperties" : [ ],
      "totalNodePropertyValues" : 0,
      "totalEdgePropertyValues" : 0,
      "nodeStructures" : [ ],
      "edgeStructures" : [ ]
    }
  }
}
```

속성 그래프(PG) 요약 응답에는 다음 필드가 있습니다.
+ **`status`**   –   요청의 HTTP 반환 코드입니다. 요청이 성공하면 코드는 200입니다.

  일반적인 오류 목록은 [일반적인 그래프 요약 오류](#neptune-graph-summary-errors) 섹션을 참조하세요.
+ **`payload`**
  + **`version`**   –   이 그래프 요약 응답의 버전입니다.
  + **`lastStatisticsComputationTime `**   –   Neptune이 [통계](neptune-dfe-statistics.md)를 마지막으로 계산한 시간의 타임스탬프(ISO 8601 형식)입니다.
  + **`graphSummary`**
    + **`numNodes`**   –   그래프의 노드 수입니다.
    + **`numEdges`**   –   그래프의 엣지 수입니다.
    + **`numNodeLabels`**   –   그래프에 있는 고유한 노드 레이블의 수입니다.
    + **`numEdgeLabels`**   –   그래프에 있는 고유한 엣지 레이블의 수입니다.
    + **`nodeLabels`**   –   그래프의 고유한 노드 레이블 목록입니다.
    + **`edgeLabels`**   –   그래프의 고유한 엣지 레이블 목록입니다.
    + **`numNodeProperties`**   –   그래프에 있는 고유한 노드 속성의 수입니다.
    + **`numEdgeProperties`**   –   그래프에 있는 고유한 엣지 속성의 수입니다.
    + **`nodeProperties`**   –   각 속성이 사용된 노드 수와 그래프의 고유한 노드 속성 목록입니다.
    + **`edgeProperties`**   –   각 속성이 사용된 엣지 수와 그래프의 고유한 엣지 속성 목록입니다.
    + **`totalNodePropertyValues`**   –   모든 노드 속성의 총 사용 횟수입니다.
    + **`totalEdgePropertyValues`**   –   모든 엣지 속성의 총 사용 횟수입니다.
    + **`nodeStructures`**   –   *이 필드는 요청에 `mode=detailed`가 지정된 경우에만 표시됩니다.* 여기에는 노드 구조 목록이 포함되며, 각 구조에는 다음 필드가 포함됩니다.
      + **`count`**   –   이 특정 구조를 가진 노드 수입니다.
      + **`nodeProperties`**   –   이 특정 구조에 있는 노드 속성 목록입니다.
      + **`distinctOutgoingEdgeLabels`**   –   이 특정 구조에 있는 고유한 발신 엣지 레이블의 목록입니다.
    + **`edgeStructures`**   –   *이 필드는 요청에 `mode=detailed`가 지정된 경우에만 표시됩니다.* 여기에는 엣지 구조 목록이 포함되며, 각 구조에는 다음 필드가 포함됩니다.
      + **`count`**   –   이 특정 구조를 가진 엣지 수입니다.
      + **`edgeProperties`**   –   이 특정 구조에 있는 엣지 속성 목록입니다.

## RDF 그래프의 그래프 요약 응답
<a name="neptune-graph-summary-rdf-response"></a>

빈 RDF 그래프의 경우 자세한 그래프 요약 응답은 다음과 같습니다.

```
{
  "status" : "200 OK",
  "payload" : {
    "version" : "v1",
    "lastStatisticsComputationTime" : "2023-01-10T07:58:47.972Z",
    "graphSummary" : {
      "numDistinctSubjects" : 0,
      "numDistinctPredicates" : 0,
      "numQuads" : 0,
      "numClasses" : 0,
      "classes" : [ ],
      "predicates" : [ ],
      "subjectStructures" : [ ]
    }
  }
}
```

RDF 그래프 요약 응답에는 다음 필드가 있습니다.
+ **`status`**   –   요청의 HTTP 반환 코드입니다. 요청이 성공하면 코드는 200입니다.

  일반적인 오류 목록은 [일반적인 그래프 요약 오류](#neptune-graph-summary-errors) 섹션을 참조하세요.
+ **`payload`**
  + **`version`**   –   이 그래프 요약 응답의 버전입니다.
  + **`lastStatisticsComputationTime `**   –   Neptune이 [통계](neptune-dfe-statistics.md)를 마지막으로 계산한 시간의 타임스탬프(ISO 8601 형식)입니다.
  + **`graphSummary`**
    + **`numDistinctSubjects`**   –   그래프에 있는 고유한 주제의 수입니다.
    + **`numDistinctPredicates`**   –   그래프에 있는 고유한 조건자의 수입니다.
    + **`numQuads`**   –   그래프의 쿼드 수입니다.
    + **`numClasses`**   –   그래프의 클래스 수입니다.
    + **`classes`**   –   그래프의 클래스 목록입니다.
    + **`predicates`**   –   조건자 개수와 그래프에 있는 조건자 목록입니다.
    + **`subjectStructures`**   –   *이 필드는 요청에 `mode=detailed`가 지정된 경우에만 표시됩니다.* 여기에는 주제 구조 목록이 포함되며, 각 구조에는 다음 필드가 포함됩니다.
      + **`count`**   –   이 특정 구조의 발생 횟수입니다.
      + **`predicates`**   –   이 특정 구조에 있는 조건자 목록입니다.

## 샘플 속성 그래프(PG) 요약 응답
<a name="neptune-graph-summary-sample-pg-response"></a>

다음은 [샘플 속성 그래프 항공 노선 데이터 세트](https://github.com/aws/graph-notebook/tree/main/src/graph_notebook/seed/queries/propertygraph/gremlin/airports)를 포함하는 속성 그래프에 대한 자세한 요약 응답입니다.

```
{
  "status" : "200 OK",
  "payload" : {
    "version" : "v1",
    "lastStatisticsComputationTime" : "2023-03-01T14:35:03.804Z",
    "graphSummary" : {
      "numNodes" : 3748,
      "numEdges" : 51300,
      "numNodeLabels" : 4,
      "numEdgeLabels" : 2,
      "nodeLabels" : [
        "continent",
        "country",
        "version",
        "airport"
      ],
      "edgeLabels" : [
        "contains",
        "route"
      ],
      "numNodeProperties" : 14,
      "numEdgeProperties" : 1,
      "nodeProperties" : [
        {
          "desc" : 3748
        },
        {
          "code" : 3748
        },
        {
          "type" : 3748
        },
        {
          "country" : 3503
        },
        {
          "longest" : 3503
        },
        {
          "city" : 3503
        },
        {
          "lon" : 3503
        },
        {
          "elev" : 3503
        },
        {
          "icao" : 3503
        },
        {
          "region" : 3503
        },
        {
          "runways" : 3503
        },
        {
          "lat" : 3503
        },
        {
          "date" : 1
        },
        {
          "author" : 1
        }
      ],
      "edgeProperties" : [
        {
          "dist" : 50532
        }
      ],
      "totalNodePropertyValues" : 42773,
      "totalEdgePropertyValues" : 50532,
      "nodeStructures" : [
        {
          "count" : 3471,
          "nodeProperties" : [
            "city",
            "code",
            "country",
            "desc",
            "elev",
            "icao",
            "lat",
            "lon",
            "longest",
            "region",
            "runways",
            "type"
          ],
          "distinctOutgoingEdgeLabels" : [
            "route"
          ]
        },
        {
          "count" : 161,
          "nodeProperties" : [
            "code",
            "desc",
            "type"
          ],
          "distinctOutgoingEdgeLabels" : [
            "contains"
          ]
        },
        {
          "count" : 83,
          "nodeProperties" : [
            "code",
            "desc",
            "type"
          ],
          "distinctOutgoingEdgeLabels" : [ ]
        },
        {
          "count" : 32,
          "nodeProperties" : [
            "city",
            "code",
            "country",
            "desc",
            "elev",
            "icao",
            "lat",
            "lon",
            "longest",
            "region",
            "runways",
            "type"
          ],
          "distinctOutgoingEdgeLabels" : [ ]
        },
        {
          "count" : 1,
          "nodeProperties" : [
            "author",
            "code",
            "date",
            "desc",
            "type"
          ],
          "distinctOutgoingEdgeLabels" : [ ]
        }
      ],
      "edgeStructures" : [
        {
          "count" : 50532,
          "edgeProperties" : [
            "dist"
          ]
        }
      ]
    }
  }
}
```

## 샘플 RDF 그래프 요약 응답
<a name="neptune-graph-summary-sample-rdf-response"></a>

다음은 [샘플 RDF 항공 노선 데이터 세트](https://github.com/aws/graph-notebook/tree/main/src/graph_notebook/seed/queries/rdf/sparql/airports)를 포함하는 RDF 그래프에 대한 자세한 요약 응답입니다.

```
{
  "status" : "200 OK",
  "payload" : {
    "version" : "v1",
    "lastStatisticsComputationTime" : "2023-03-01T14:54:13.903Z",
    "graphSummary" : {
      "numDistinctSubjects" : 54403,
      "numDistinctPredicates" : 19,
      "numQuads" : 158571,
      "numClasses" : 4,
      "classes" : [
        "http://kelvinlawrence.net/air-routes/class/Version",
        "http://kelvinlawrence.net/air-routes/class/Airport",
        "http://kelvinlawrence.net/air-routes/class/Continent",
        "http://kelvinlawrence.net/air-routes/class/Country"
      ],
      "predicates" : [
        {
          "http://kelvinlawrence.net/air-routes/objectProperty/route" : 50656
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/dist" : 50656
        },
        {
          "http://kelvinlawrence.net/air-routes/objectProperty/contains" : 7004
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/code" : 3747
        },
        {
          "http://www.w3.org/2000/01/rdf-schema#label" : 3747
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/type" : 3747
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/desc" : 3747
        },
        {
          "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : 3747
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/icao" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/lat" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/region" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/runways" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/longest" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/elev" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/lon" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/country" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/city" : 3502
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/author" : 1
        },
        {
          "http://kelvinlawrence.net/air-routes/datatypeProperty/date" : 1
        }
      ],
      "subjectStructures" : [
        {
          "count" : 50656,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/dist"
          ]
        },
        {
          "count" : 3471,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/city",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/code",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/country",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/desc",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/elev",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/icao",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/lat",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/lon",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/longest",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/region",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/runways",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/type",
            "http://kelvinlawrence.net/air-routes/objectProperty/route",
            "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
            "http://www.w3.org/2000/01/rdf-schema#label"
          ]
        },
        {
          "count" : 238,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/code",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/desc",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/type",
            "http://kelvinlawrence.net/air-routes/objectProperty/contains",
            "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
            "http://www.w3.org/2000/01/rdf-schema#label"
          ]
        },
        {
          "count" : 31,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/city",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/code",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/country",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/desc",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/elev",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/icao",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/lat",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/lon",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/longest",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/region",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/runways",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/type",
            "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
            "http://www.w3.org/2000/01/rdf-schema#label"
          ]
        },
        {
          "count" : 6,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/code",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/desc",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/type",
            "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
            "http://www.w3.org/2000/01/rdf-schema#label"
          ]
        },
        {
          "count" : 1,
          "predicates" : [
            "http://kelvinlawrence.net/air-routes/datatypeProperty/author",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/code",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/date",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/desc",
            "http://kelvinlawrence.net/air-routes/datatypeProperty/type",
            "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
            "http://www.w3.org/2000/01/rdf-schema#label"
          ]
        }
      ]
    }
  }
}
```

## 그래프 요약 엔드포인트에서 AWS Identity and Access Management (IAM) 인증 사용
<a name="neptune-graph-summary-iam"></a>

[awscurl](https://github.com/okigan/awscurl) 또는 HTTPS 및 IAM과 호환되는 기타 도구를 사용하여 IAM 인증을 통해 그래프 요약 엔드포인트에 안전하게 액세스할 수 있습니다. 적절한 보안 인증 정보를 설정하는 방법을 보려면 [임시 보안 인증 정보와 `awscurl`을 사용하여 IAM 인증이 활성화된 상태에서 DB 클러스터에 안전하게 연결](iam-auth-connect-command-line.md#iam-auth-connect-awscurl)을 참조하세요. 그런 다음 아래와 같이 요청을 제출할 수 있습니다.

```
awscurl "$GRAPH_SUMMARY_ENDPOINT" \
    --region (your region) \
    --service neptune-db
```

**중요**  
임시 보안 인증 정보를 생성하는 IAM 자격 증명 또는 역할에는 [GetGraphSummary](iam-dp-actions.md#getgraphsummary) IAM 작업을 허용하는 IAM 정책이 연결되어 있어야 합니다.

발생할 수 있는 일반적인 IAM 오류 목록은 [IAM 인증 오류](errors-engine-codes.md#errors-iam-auth)를 참조하세요.

## 그래프 요약 요청에서 반환될 수 있는 일반적인 오류 코드
<a name="neptune-graph-summary-errors"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/neptune-graph-summary.html)

예를 들어, IAM 인증이 활성화된 Neptune 데이터베이스에서 요약 엔드포인트를 그래프로 표시하도록 요청했는데 요청자의 IAM 정책에 필요한 권한이 없는 경우 다음과 같은 응답을 받게 됩니다.

```
{
  "detailedMessage": "User: arn:aws:iam::(account ID):(user or user name) is not authorized to perform: neptune-db:GetGraphSummary on resource: arn:aws:neptune-db:(region):(account ID):(cluster resource ID)/*",
  "requestId": "7ac2b98e-b626-d239-1d05-74b4c88fce82",
  "code": "AccessDeniedException"
}
```