

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

# 使用 openCypher 访问 Neptune 图形
<a name="access-graph-opencypher"></a>

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

**openCypher** 是一种用于属性图的声明式查询语言，最初由 Neo4j 开发，然后于 2015 年开源，并在 Apache 2 开源许可证下为 [openCypher](http://www.opencypher.org/) 项目做出了贡献。其语法在 [Cypher 查询语言参考版本 9](https://s3.amazonaws.com/artifacts.opencypher.org/openCypher9.pdf) 中介绍。

有关 openCypher 规范在 Neptune 支持方面的限制和差异，请参阅[Amazon Neptune 中的 openCypher 规范合规性](feature-opencypher-compliance.md)。

**注意**  
Cypher 查询语言的当前 Neo4j 实现在某些方面与 openCypher 规范有所不同。如果您要将当前的 Neo4j Cypher 代码迁移到 Neptune，请参阅[Neptune 与 Neo4j 的兼容性](migration-compatibility.md)和[重写 Cypher 查询以在 Neptune 上的 openCypher 中运行](migration-opencypher-rewrites.md)以获取帮助。

从引擎版本 1.1.1.0 开始，openCypher 可在 Neptune 中用于生产用途。

## Gremlin 与 openCypher：相似之处和不同之处
<a name="access-graph-opencypher-overview-with-gremlin"></a>

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

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

好消息是，在 Neptune 中，**您不必**在 Gremlin 和 openCypher 之间进行选择。无论使用这两种语言中的哪一种来输入数据，任何一种语言的查询都可以在同一个图形上运行。您可能会发现在某些情况下使用 Gremlin 更方便，而在其它情况下使用 openCypher 更方便，这取决于您正在做的事情。

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

在 openCypher 中，您使用一种受 SQL 启发的声明式语法，此语法使用主旨语法（比如 `()-[]->()`）指定要在图形中查找的节点和关系的模式。openCypher 查询通常以 `MATCH` 子句开头，后跟其它子句，如 `WHERE`、`WITH` 和 `RETURN`。