使用 OpenPher 访问 Neptune 图 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 OpenPher 访问 Neptune 图

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

openPher是属性图的声明式查询语言,该语言最初由 Neo4J 开发,然后在 2015 年开源,并为openPher在 Apache 2 开源许可证下的项目。其语法记录在Cypher 查询语言参考,版本 9.

从引擎版本 1.1.1.0 开始,OpenPher 可在 Neptune 中供生产使用。

Gremlin vs openPher:相似之处和差异

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

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

好的事情是您不必选择在 Neptune 的 Gremlin 和 openPher 之间。无论使用哪种语言中的哪种语言输入数据,都可以在同一图表上运行任何一种语言的查询。你可能会发现将 Gremlin 用于某些事情,对于其他事情而言,OpenPher 更方便,具体取决于你在做什么。

Gremlin 使用命令式语法,通过该语法,您可以通过一系列步骤控制如何在图表中移动,每个步骤都接收数据流,对其执行一些操作(使用过滤器、地图等),然后将结果输出到下一步。Gremlin 查询通常采用的形式,g.V(),然后是其他步骤。

在 OpenPher 中,您可以使用受 SQL 启发的声明式语法,该语法指定要使用主题语法在图中查找的节点和关系模式(例如()-[]->())。OpenPher 查询通常以MATCH条款,然后是其他条款,例如WHEREWITH, 和RETURN.

入门使用 OpenPher

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

这些区域有:Neptune 散装加载机接受属性图表数据Grelin 的 CSV 格式,然后在OpenPher 的 CSV 格式. 此外,当然,您可以使用 Gremlin 和/或 OpenPher 查询将属性数据添加到图中。

有许多在线教程可用于学习 Cypher 查询语言。在这里,一些 OpenysPher 查询的简单示例可能会帮助你了解语言,但是到目前为止,使用 OpenCysPher 查询 Neptune 图的最佳和最简单的方法是使用Neptune 工作台. 工作台是开源的,并托管在 GitHub 在https://github.com/aws-samples/amazon-neptune-samples.

你会在 GitHub Neptune 图形笔记本存储库. 特别是,请查看空中航线可视化, 和英语超团队OpenPher 的笔记本电脑。

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

OpenPher 中有几个用于在图表中查找数据模式的子句,其中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 中找到一张方便的 OpenPher 语法作弊表github 示例存储库.