Acessar o grafo do Neptune com o openCypher - 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á.

Acessar o grafo do Neptune com o openCypher

O Neptune é compatível com a criação de aplicações de grafos usando o openCypher, atualmente uma das linguagens de consulta mais populares para desenvolvedores que trabalham com bancos de dados de grafos. Desenvolvedores, analistas de negócios e cientistas de dados gostam da sintaxe inspirada em SQL do openCypher porque ela oferece uma estrutura familiar para compor consultas para aplicações de grafos.

openCypher é uma linguagem de consulta declarativa para grafos de propriedades originalmente desenvolvida pela Neo4j, que se tornou de código aberto em 2015, e contribuiu para o projeto openCypher sob uma licença de código aberto Apache 2. A sintaxe dela está documentada na Cypher Query Language Reference, versão 9.

Para conhecer as limitações e diferenças no suporte do Neptune à especificação do openCypher, consulte Conformidade com a especificação OpenCypher no Amazon Neptune.

nota

A implementação atual do Neo4j da linguagem de consulta Cypher divergiu em alguns aspectos da especificação do openCypher. Se você estiver migrando o código Neo4j Cypher atual para o Neptune, consulte Compatibilidade do Neptune com o Neo4j e Reformular consultas do Cypher para serem executadas no openCypher no Neptune para obter ajuda.

A partir da versão 1.1.1.0 do mecanismo, o openCypher está disponível para uso em produção no Neptune.

Gremlin versus openCypher: semelhanças e diferenças

O Gremlin e o openCypher são linguagens de consulta de grafos de propriedades e são complementares de várias maneiras.

O Gremlin foi projetado para atrair programadores e se ajustar perfeitamente ao código. Como resultado, o Gremlin é fundamental por design, enquanto a sintaxe declarativa do openCypher pode parecer mais familiar para pessoas com experiência em SQL ou SPARQL. O Gremlin pode parecer mais natural para um cientista de dados que use Python em um caderno Jupyter, enquanto o openCypher pode parecer mais intuitivo para um usuário corporativo com alguma experiência em SQL.

O lado bom é que você não precisa escolher entre o Gremlin e o openCypher no Neptune. As consultas em qualquer linguagem podem funcionar no mesmo grafo, independentemente de qual das duas linguagens foi usada para inserir esses dados. Você pode achar mais conveniente usar o Gremlin para algumas coisas e o openCypher para outras, dependendo do que estiver fazendo.

O Gremlin usa uma sintaxe imperativa que permite controlar como você se move pelo grafo em uma série de etapas, cada uma das quais recebe um fluxo de dados, executa alguma ação nele (usando um filtro, um mapa, etc.) e, depois, envia os resultados para a próxima etapa. Uma consulta do Gremlin geralmente assume o formato g.V(), seguida por etapas adicionais.

No openCypher, você usa uma sintaxe declarativa, inspirada no SQL, que especifica um padrão de nós e relacionamentos a serem encontrados no grafo usando uma sintaxe de motivo (como()-[]->()). Uma consulta do openCypher geralmente começa com uma cláusula MATCH, seguida por outras cláusulas, como WHERE, WITH e RETURN.

Conceitos básicos sobre o openCypher

Você pode consultar dados do grafo de propriedades no Neptune usando o openCypher, independentemente de como eles foram carregados, mas não pode usar o openCypher para consultar dados carregados como RDF.

O carregador em massa do Neptune aceita dados de grafos de propriedades em formato CSV para Gremlin e em formato CSV para openCypher. Além disso, naturalmente, é possível adicionar dados de propriedades ao grafo usando consultas do Gremlin e/ou do openCypher.

Há muitos tutoriais on-line disponíveis para aprender a linguagem de consulta Cypher. Aqui, alguns exemplos rápidos de consultas do openCypher podem ajudar você a ter uma ideia da linguagem, mas, de longe, a maneira mais fácil e melhor de começar a usar o openCypher para consultar o grafo do Neptune é usando os cadernos openCypher na bancada de trabalho do Neptune. O ambiente de trabalho é de código aberto e está hospedado GitHub em https://github.com/aws-samples/. amazon-neptune-samples

Você encontrará os cadernos OpenCypher no repositório de cadernos gráficos GitHub Neptune. Especificamente, confira a Air-routes visualization e os cadernos de English Premier Teams para openCypher.

Os dados processados pelo openCypher assumem a forma de uma série não ordenada de mapas de chave/valor. A principal forma de refinar, manipular e incrementar esses mapas é usar cláusulas que executam tarefas como correspondência de padrões, inserção, atualização e exclusão nos pares chave/valor.

Há várias cláusulas no openCypher para encontrar padrões de dados no grafo, das quais MATCH é a mais comum. MATCH permite especificar o padrão de nós, relacionamentos e filtros que você deseja procurar no grafo. Por exemplo: .

  • Obter todos os nós

    MATCH (n) RETURN n
  • Encontrar nós conectados

    MATCH (n)-[r]->(d) RETURN n, r, d
  • Encontrar um caminho

    MATCH p=(n)-[r]->(d) RETURN p
  • Obter todos os nós com um rótulo

    MATCH (n:airport) RETURN n

Observe que a primeira consulta acima gera cada nó no grafo, e as duas seguintes geram cada nó que tem um relacionamento: isso geralmente não é recomendado! Em quase todos os casos, você deseja restringir os dados gerados, o que pode ser feito especificando rótulos e propriedades de nós ou relacionamentos, como no quarto exemplo.

É possível encontrar uma folha de dicas útil para a sintaxe do openCypher no repositório de exemplos do github do Neptune.