使用以下方式访问海王星图 openCypher - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用以下方式访问海王星图 openCypher

Neptune 支持使用目前使用openCypher图形数据库的开发人员最常用的查询语言之一来构建图形应用程序。开发人员、业务分析师和数据科学家都喜欢受 openCypher's SQL 启发的语法,因为它提供了一种熟悉的结构来为图形应用程序编写查询。

openCypher是一种用于属性图的声明式查询语言,最初由 Neo4j 开发,然后在 2015 年开源,并在 Apache 2 开源许可下为该openCypher项目做出了贡献。其语法在 Cypher 查询语言参考版本 9 中介绍。

有关该openCypher规范 Neptune 支持的限制和差异,请参阅。openCypher 亚马逊 Neptune 中的规范合规性

注意

当前 Cypher 查询语言的 Neo4j 实现方式在某些方面与规范有所不同。 openCypher 如果您要将当前的 Neo4j Cypher 代码迁移到 Neptune,请参阅Neptune 与 Neo4j 的兼容性重写 Cypher 查询以在 Neptune 上的 openCypher 中运行以获取帮助。

从引擎版本 1.1.1.0 开始,可在 Nep openCypher tune 中进行量产使用。

Gremlin vs.openCypher:相似之处和不同之处

Gremlin 和 openCypher ,都是属性图查询语言,它们在很多方面都是互补的。

Gremlin 旨在吸引程序员并无缝融入代码。因此,从设计上讲,Gremlin 是势在必行openCypher的,而对于有经验的人来说,它的声明式语法可能会更熟悉。SQL SPARQL对于在 Jupyter 笔记本中使用 Python 的数据科学家来说,Gremlin 似乎更自然,而对于具有一定背景的企业用户来说,Gremlin openCypher 可能看起来更直观。SQL

好处是,你不必在 Gremlin 和 openCypher Neptune 中做出选择。无论使用这两种语言中的哪一种来输入数据,任何一种语言的查询都可以在同一个图形上运行。你可能会发现使用 Gremlin 来做一些事情和 openCypher 做其他事情会更方便,具体取决于你在做什么。

Gremlin 使用命令式语法,这允许您通过一系列步骤控制如何在图形中移动,每个步骤都接收数据流,对其执行某种操作(使用筛选条件、映射等),然后将结果输出到下一个步骤。Gremlin 查询通常采用 g.V() 形式,后跟其它步骤。

在中openCypher,你使用了一种受启发的声明式语法SQL,它使用主题语法(比如()-[]->())来指定要在图表中查找的节点和关系的模式。 openCypher 查询通常以MATCH子句开头,然后是其他子句WHERE,例如WITH、和RETURN

开始使用 openCypher

openCypher 无论属性图数据是如何加载的,您都可以使用在 Neptune 中查询,但不能使用查询加载 openCypher 为的数据。RDF

Nep tune 批量加载器接受 Gremlin CSV 格式和格式的属性图数据。CSV openCypher当然,您也可以使用 Gremlin 和/或openCypher查询将属性数据添加到图表中。

有许多在线教程可用于学习 Cypher 查询语言。在这里,一些简单的 openCypher 查询示例可以帮助您了解语言,但是到目前为止,开始使用Neptune图表的最好、最简单的方法是使用Neptune工作 openCypher 台中的笔记本 openCypher 来查询 Neptune 图形。该工作台是开源的,托管 GitHub 在。https://github.com/aws-samples/amazon-neptune-samples

您可以在 Nep GitHub tune 图形 openCypher 笔记本存储库中找到这些笔记本。特别是,请查看空中航线可视化以及英超队笔记本。openCypher

处理的数据 openCypher 采用一系列无序的键/值映射的形式。完善、操作和增强这些映射的主要方法是使用子句对键/值对执行模式匹配、插入、更新和删除等任务。

有几个子句 openCypher 用于在图表中查找数据模式,其中MATCH最常见。 MATCH允许您指定要在图表中查找的节点、关系和过滤器的模式。例如:

  • 获取所有节点

    MATCH (n) RETURN n
  • 查找连接的节点

    MATCH (n)-[r]->(d) RETURN n, r, d
  • 查找路径

    MATCH p=(n)-[r]->(d) RETURN p
  • 获取所有带有标签的节点

    MATCH (n:airport) RETURN n

请注意,上面的第一个查询返回图形中的每单个节点,接下来的两个查询返回每个具有关系的节点,但通常不建议这样做!几乎在所有情况下,您都希望缩小返回的数据的范围,这可以通过指定节点或关系标签和属性来实现,如第四个示例所示。

你可以在 Neptune 的 github 示例存储库中找到一份方便的 openCypher 语法备忘单。