openCypher

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure 数据资源管理器

openCypher 是用于查询属性图形数据库的 open-source 规范。 可以使用声明性模式匹配语法对 KQL 图形语义运行 openCypher 查询,以便直观地表达复杂的图形模式和关系。

入门

若要使用 openCypher,需要一个图形数据源(建议用于生产方案)或返回暂时性 图形 的函数(以 生成图形 运算符结尾)。

先决条件

创建图形并设置用于查询的图形引用。 请按照此处所述的步骤进行操作。

Example

查找所有在电影中表演的演员。

MATCH (n :Person)-[e :ACTED_IN]->(m: Movie)
WHERE m.Title starts with 'T1'
RETURN n.Name as actorName, m.Title as movieTitle
ORDER BY actorName desc
LIMIT 2

输出

actorName movieTitle
卢宁 T1
Kevin T1

有关更多 openCypher 示例,请参阅 openCypher 规范。

局限性

  • 查询结构:所有查询都必须以 MATCH 语句开头。

  • 不支持任何图形修改操作:不支持更改图形结构(例如 CREATE、 MERGE、 DELETE、 SET、 REMOVE) DETACH的操作。 对所有图形创建、修改和管理任务使用 KQL。

  • 不支持的子句:EXISTS、、SETCALL。

  • 不支持的函数和聚合:percentileDisc()、、percentileCont()、stDev()stDevP()、properties()type()、range()exists()startNode()endNode()tail()replace()split()substring()rand()round()sign()、。 atan2()e()pi()

  • 模式匹配: MATCH 并且 OPTIONAL MATCH 仅支持节点实体,而不支持边缘模式。 对于每个单子 MATCH 句的多个序列,仅支持单个连接的组件模式。

  • 实体等效性检查:不支持使用节点或关系等运算符(=<>例如,MATCH (n)-[]-(m) WHERE n <> m)检查实体等效性。 请改用 id() 函数或显式字段比较,例如 n.id <> m.id。

  • 不同:不支持直接应用于 DISTINCT 实体。 或者,将实体转换为字符串,例如: MATCH p = (n :Person) RETURN DISTINCT tostring(p)

备注

注释

性能改进建议:

为了获得更好的性能,请尽可能少地使用子 MATCH 句,理想情况下每个查询一个子句。 单个 MATCH 子句仍可根据需要保持复杂:该模式可能非常复杂,并且可以包括连接的组件、可变长度边缘等。

  • 保留关键字:某些 openCypher 关键字不能用作查询中的标识符,某些保留关键字并不立即明显。 如果图形数据具有与 openCypher 保留关键字冲突的属性名称,请在图形架构中使用不同的属性名称或重命名它们以避免分析冲突。

重要

设计图形架构时,某些常见属性名称可能与 openCypher 保留关键字冲突。 请避免或重命名这些属性名称。 最佳做法是转义这些名称, backticks 并添加前缀或后缀,例如 _。

  • 时间和时区:引擎以 UTC 方式运行。 日期/时间文本必须使用适当的格式;仅支持 UTC 时区。