Geohash 使用 Cypher 从(第 7 级)汇总图(第 5 级)?

Geohash Roll up Graph (level 5) from (level7) with Cypher?

我正在尝试从现有的 7 级缩放图创建一个 5 级缩放的 geohash 图。 我试过这段代码:

 FROM GRAPH mergedGraph
 MATCH (from)-[via]->(to)
 CASE WHEN substring(from.geohash,0,5)=substring(to.geohash,0,5)
 THEN
 CONSTRUCT
 CREATE (h:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(h)
 ELSE
 CONSTRUCT create (:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(:HashNode{geohash:substring(to.geohash,0,5)})
 END
 RETURN GRAPH

然而它在密码中似乎不正确,我得到一个例外:

Caused by: org.opencypher.v9_0.util.SyntaxException: Invalid input 'S': expected 'l/L' (line 4, column 4 (offset: 57))

我想要的英文单词: 如果起始节点和结束节点共享相同的 geohash 子字符串,则创建一个节点,该节点具有指向它的关系:

其他 创建两个节点:

NB: 我正在工作的项目是 CYPHER FOR APACHE SPARK

我通过以下步骤解决了我的问题:

1) 从现有图表创建一个级别为 5 的图表:

//Creation Geohash Graph with level 5 from the initial graph (level 7)
   val Level5 = session.cypher("""
                      | FROM GRAPH mergeGraph
                      | MATCH (from)-[via]->(to)
                      | CONSTRUCT
                      |  CREATE (:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(:HashNode{geohash:substring(to.geohash,0,5)})
                      | RETURN GRAPH
                      """.stripMargin).graph

2) 从上一张图中复制远距离节点:

session.cypher ("""
 | CATALOG CREATE GRAPH nodes2 {
 | FROM GRAPH session.Level5
 | MATCH (n)
 | WITH DISTINCT n.geohash AS geohash
 |CONSTRUCT
 | CREATE (h:HashNode{geohash:geohash})
 |RETURN GRAPH
  }""".stripMargin)

最后:

3) 通过复制第一个关系并将它们影响到远距离节点来创建远距离 5 级图

val level5= session.cypher("""
                               FROM GRAPH Level5
                              |  MATCH (from)-[via]->(to)
                              |  FROM GRAPH nodes2
                              |  MATCH (n), (m)
                              |  WHERE from.geohash=n.geohash AND to.geohash = m.geohash
                               construct
                              |    CREATE (n)-[COPY OF via]->(m)
                              |  RETURN GRAPH
                           """.stripMargin).graph