Obter um relatório resumido rápido sobre o grafo - Amazon Neptune

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

Obter um relatório resumido rápido sobre o grafo

A API de resumo do grafo do Neptune recupera as seguintes informações sobre o grafo:

  • Para grafos de propriedades (PG), a API de resumo do grafo gera uma lista somente leitura de rótulos de nós e bordas e chaves de propriedade, junto com contagens de nós, bordas e propriedades.

  • Para grafos do framework de descrição de recursos (RDF), a API de resumo do grafo gera uma lista somente leitura de classes e chaves de predicados, junto com contagens de quádruplos, assuntos e predicados.

nota

A API de resumo do grafo foi introduzida na versão 1.2.1.0 do mecanismo do Neptune.

Com a API de resumo do grafo, é possível obter rapidamente uma compreensão geral do tamanho e do conteúdo dos dados do grafo. Você também pode usar a API de forma interativa em um caderno do Neptune usando a magia %summary da bancada de trabalho do Neptune. Em uma aplicação de grafos, a API pode ser usada para melhorar os resultados da pesquisa fornecendo rótulos de nós ou bordas descobertos como parte da pesquisa.

Os dados de resumo do grafo são extraídos das estatísticas do DFE calculadas pelo mecanismo DFE do Neptune durante o runtime e estarão disponíveis sempre que as estatísticas do DFE estiverem disponíveis. Por padrão, as estatísticas são habilitadas quando você cria um cluster de banco de dados do Neptune.

nota

A geração de estatísticas está desabilitada nos tipos de instância t3 e t4 (ou seja, nos tipos db.t3.medium e db.t4g.medium) para conservar a memória. Como resultado, os dados de resumo do gráfico também não estão disponíveis nesses tipos de instância.

Você pode conferir o status das estatísticas do DFE usando a API de status de estatísticas. Desde que a geração automática de estatísticas não tenha sido desabilitada, as estatísticas serão atualizadas automaticamente de forma periódica.

Se você quiser ter certeza de que as estatísticas estão o mais atualizadas possível ao solicitar um resumo do grafo, acione manualmente uma atualização de estatísticas logo antes de recuperar o resumo. Se o grafo estiver mudando enquanto as estatísticas estiverem sendo calculadas, elas ficarão um pouco atrasadas, mas não muito.

Usar a API de resumo do grafo para recuperar informações resumidas do grafo

Para um grafo de propriedades que você consulta usando o Gremlin ou o openCypher, é possível recuperar um resumo do grafo a partir do endpoint de resumo do grafo de propriedades. Há um URI longo e um curto para esse endpoint:

  • https://your-neptune-host:port/propertygraph/statistics/summary

  • https://your-neptune-host:port/pg/statistics/summary

Para um grafo do RDF consultado com o SPARQL, é possível recuperar um resumo do grafo do endpoint de resumo do RDF:

  • https://your-neptune-host:port/rdf/statistics/summary

Esses endpoints são somente leitura e são compatíveis somente com uma operação GET HTTP. Se $GRAPH_SUMMARY_ENDPOINT estiver definido como o endereço de qualquer endpoint que você queira consultar, poderá recuperar os dados do resumo usando curl e GET HTTP da seguinte forma:

curl -G "$GRAPH_SUMMARY_ENDPOINT"

Se nenhuma estatística estiver disponível quando você tentar recuperar um resumo do grafo, a resposta será semelhante a esta:

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

O parâmetro de consulta de URL mode para a API de resumo do grafo

A API de resumo do grafo aceita um parâmetro de consulta de URL chamado mode, que pode ter um dos dois valores, a saber, basic (o padrão) e detailed. Para um grafo do RDF, a resposta do resumo do grafo do modo detailed contém um campo subjectStructures adicional. Para um grafo de propriedades, a resposta detalhada do resumo do grafo contém dois campos adicionais, a saber, nodeStructures e edgeStructures.

Para solicitar uma resposta do resumo do grafo detailed, inclua o parâmetro mode da seguinte forma:

curl -G "$GRAPH_SUMMARY_ENDPOINT?mode=detailed"

Se o parâmetro mode não estiver presente, o modo basic será usado por padrão, portanto, embora seja possível especificar ?mode=basic explicitamente, isso não é necessário.

Resposta do resumo de um grafo de propriedades (PG)

Para um grafo de propriedades em branco, a resposta detalhada do resumo do grafo é semelhante à seguinte:

{ "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" : [ ] } } }

Uma resposta do resumo do grafo de propriedades (PG) tem os seguintes campos:

  • status: o código de retorno HTTP da solicitação. Se a solicitação for bem-sucedida, o código será 200.

    Para obter uma lista de erros comuns, consulte Erros comuns de resumo do grafo.

  • payload

    • version: a versão dessa resposta do resumo do grafo.

    • lastStatisticsComputationTime : a data e hora, no formato ISO 8601, da hora em que o Neptune calculou as estatísticas pela última vez.

    • graphSummary

      • numNodes: o número de nós no grafo.

      • numEdges: o número de bordas no grafo.

      • numNodeLabels: o número de rótulos de nós distintos no grafo.

      • numEdgeLabels: o número de rótulos de bordas distintos no grafo.

      • nodeLabels: lista de rótulos de nós distintos no grafo.

      • edgeLabels: lista de rótulos de bordas distintos no grafo.

      • numNodeProperties: o número de propriedades de nós distintas no grafo.

      • numEdgeProperties: o número de propriedades de bordas distintas no grafo.

      • nodeProperties: lista de propriedades de nós distintas no grafo, junto com a contagem de nós em que cada propriedade é usada.

      • edgeProperties: lista de propriedades de bordas distintas no grafo, junto com a contagem de bordas em que cada propriedade é usada.

      • totalNodePropertyValues: número total de usos de todas as propriedades de nós.

      • totalEdgePropertyValues: número total de usos de todas as propriedades de bordas.

      • nodeStructures: esse campo só está presente quando mode=detailed está especificado na solicitação. Ele contém uma lista de estruturas de nós, cada uma contendo os seguintes campos:

        • count: número de nós que têm essa estrutura específica.

        • nodeProperties: lista das propriedades dos nós presentes nessa estrutura específica.

        • distinctOutgoingEdgeLabels: lista de rótulos de borda de saída distintos presentes nessa estrutura específica.

      • edgeStructures: esse campo só está presente quando mode=detailed está especificado na solicitação. Ele contém uma lista de estruturas de bordas, cada uma contendo os seguintes campos:

        • count: número de bordas que têm essa estrutura específica.

        • edgeProperties: lista das propriedades das bordas presentes nessa estrutura específica.

Resposta do resumo de um grafo do RDF

Para um grafo do RDF em branco, a resposta detalhada do resumo do grafo é semelhante à seguinte:

{ "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" : [ ] } } }

Uma resposta do resumo do grafo do RDF tem os seguintes campos:

  • status: o código de retorno HTTP da solicitação. Se a solicitação for bem-sucedida, o código será 200.

    Para obter uma lista de erros comuns, consulte Erros comuns de resumo do grafo.

  • payload

    • version: a versão dessa resposta do resumo do grafo.

    • lastStatisticsComputationTime : a data e hora, no formato ISO 8601, da hora em que o Neptune calculou as estatísticas pela última vez.

    • graphSummary

      • numDistinctSubjects: o número de assuntos distintos no grafo.

      • numDistinctPredicates: o número de predicados distintos no grafo.

      • numQuads: o número de quadrantes no grafo.

      • numClasses: o número de classes no grafo.

      • classes: lista de classes no grafo.

      • predicates: lista de predicados no grafo, junto com as contagens de predicados.

      • subjectStructures: esse campo só está presente quando mode=detailed está especificado na solicitação. Ele contém uma lista de estruturas de assuntos, cada uma contendo os seguintes campos:

        • count: número de ocorrências dessa estrutura específica.

        • predicates: lista das predicados presentes nessa estrutura específica.

Exemplo de resposta do resumo do grafo de propriedades (PG)

Aqui está a resposta do resumo detalhada para um grafo de propriedades que contém o exemplo do conjunto de dados de rotas aéreas do grafo de propriedades:

{ "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" ] } ] } } }

Exemplo de resposta do resumo do grafo do RDF

Veja a resposta do resumo detalhada para um grafo do RDF que contém o exemplo do conjunto de dados de rotas aéreas do 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" ] } ] } } }

Usando a autenticação AWS Identity and Access Management (IAM) com endpoints de resumo gráfico

É possível acessar os endpoints do resumo do grafo de forma segura com a autenticação do IAM usando awscurl ou qualquer outra ferramenta que funcione com HTTPS e IAM. Consulte Usar awscurl com credenciais temporárias para se conectar com segurança a um cluster de banco de dados com a autenticação do IAM habilitada para saber como configurar as credenciais adequadas. Depois de fazer isso, é possível fazer solicitações como esta:

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

A identidade ou função do IAM que cria as credenciais temporárias deve ter uma política do IAM anexada que permita a ação GetGraphsumária do IAM.

Consulte Erros de autenticação do IAM para obter uma lista de erros comuns do IAM que você pode encontrar.

Códigos de erro comuns que uma solicitação de resumo do grafo pode gerar

Código de erro do serviço do Neptune Status HTTP Message Cenário de erro Atenuação

AccessDeniedException

403

Token de autenticação ausente.

A solicitação não assinada ou assinada incorretamente foi enviada ao banco de dados Neptune com o IAM habilitado.

Assine a solicitação com o SigV4 antes de enviar (consulte IAM e resumos dos grafos).

403

Usuário: (ARN do usuário) não está autorizado a executar: neptune-db: no recurso: (ARN do GetGraphSummary recurso).

A política do IAM não permite a ação GetGraphSummary quando a solicitação de resumo do gráfico foi enviada ao banco de dados Neptune com o IAM ativado.

Garanta que a política do IAM vinculada ao usuário ou ao perfil que realiza a solicitação permite a ação GetGraphSummary.

BadRequestException

400

As estatísticas estão desabilitadas, portanto, o resumo do grafo também está desabilitado.

Tentar obter um resumo dos tipos de instância com capacidade de intermitência (t3 ou t4g) em que as estatísticas estão desabilitadas.

Use um tipo de instância em que a geração de estatísticas esteja habilitada (todas as instâncias compatíveis, exceto t3 e t4g).

400

Rota inadequada: /rdf/statistics/summarypathapi

Solicitação enviada a um caminho inválido.

Use a rota correta para o endpoint de resumo do grafo.

InvalidParameterException

400

A solicitação contém parâmetros desconhecidos: “(parâmetro ou parâmetros desconhecidos)”.

Quando um parâmetro inválido é especificado na solicitação.

Use somente parâmetros válidos (como mode) na solicitação.

InvalidParameterException

400

O parâmetro de consulta de URI “mode” tem um valor não compatível “(valor inválido)”.

Quando o parâmetro de URL “mode” na solicitação é seguido por um valor inválido.

Use valores válidos (como basic ou detailed) ao especificar o parâmetro de URL “mode”.

MethodNotAllowedException

405

Método não permitido.

Chamar o endpoint do resumo com qualquer método HTTP diferente de GET (como POST ou DELETE).

Use o método GET HTTP ao chamar o endpoint de resumo.

StatisticsNotAvailableException

400

As estatísticas ainda não foram calculadas, o resumo do grafo estará disponível após a conclusão do cálculo das estatísticas.

Não há estatísticas disponíveis quando a solicitação é enviada ao endpoint de resumo.

Espere até que a geração das estatísticas seja concluída. Você pode conferir o status da geração das estatísticas usando a API de status de estatísticas.

400

Limite de estatísticas atingido, portanto, o resumo do grafo não está disponível.

A geração de estatísticas foi interrompida porque atingiu os limites de tamanho das estatísticas.

O resumo do grafo não está disponível nesse grafo.

Por exemplo, se você fizer uma solicitação para representar graficamente o endpoint de resumo em um banco de dados do Neptune com a autenticação do IAM habilitada e as permissões necessárias não estiverem presentes na política do IAM do solicitante, você obterá uma resposta como a seguinte:

{ "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" }