繁体   English   中英

在 Neo4j Graph Data Science 中,我可以使用自定义类型名称通过密码创建图形吗?

[英]In Neo4j Graph Data Science, can I create graph by cypher with custom type name?

我从标签节点创建图表,其中创建的图表中的关系不是来自原始数据库的关系,而是一些代表标签的路径被标记在相同的视频上。

CALL gds.graph.create.cypher(
  "tags",
  "MATCH (t:Tag) RETURN id(t) AS id, labels(t) AS labels",
  "
  MATCH (t:Tag)
  WITH collect(t) as nodes
  UNWIND nodes as n
  UNWIND nodes as m
  WITH n, m WHERE id(n) < id(m)
  MATCH (n)-[:TAGGED_ON]->(v:Video)<-[:TAGGED_ON]-(m)
  RETURN id(n) AS source, id(m) AS target, count(v) AS weight
  "
)

然后我这样做以导出到新数据库:

CALL gds.graph.export("tags", {dbName: "tags"})

CREATE DATABASE tags

但是,新标签数据库中的关系将全部命名为__ALL__

在图创建的relationshipQuery部分,neo4j的文档说

可选地,可以指定类型列来表示关系类型。

但是,我发现的所有关于此的示例都是type(r) AS type ,这不适用于我的情况。 我仍然可以通过以下方式重命名新标签数据库中的关系:

MATCH ()-[r]->()
WITH collect(r) AS rels
CALL apoc.refactor.rename.type("__ALL__", "TAGGED_ON_THE_SAME_VIDEO", rels)
YIELD committedOperations
RETURN committedOperations

但是我可以在 gds 图创建时使用自定义关系名称吗? 我尝试了类似"TAGGED_ON_THE_SAME_VIDEO" AS type东西,但这行不通。

我尝试了类似“TAGGED_ON_THE_SAME_VIDEO”作为类型的东西,但这行不通。

为什么这行不通? 我已经测试过了,它工作得很好。 尝试使用以下查询来投影图形:

CALL gds.graph.create.cypher(
  "tags",
  "MATCH (t:Tag) RETURN id(t) AS id, labels(t) AS labels",
  "
  MATCH (t:Tag)
  WITH collect(t) as nodes
  UNWIND nodes as n
  UNWIND nodes as m
  WITH n, m WHERE id(n) < id(m)
  MATCH (n)-[:TAGGED_ON]->(v:Video)<-[:TAGGED_ON]-(m)
  RETURN id(n) AS source, id(m) AS target, count(v) AS weight, 'TAGGED_ON_THE_SAME_VIDEO' as type
  "
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM