在 Neo4j 图形数据科学中,我可以使用自定义类型名称通过密码创建图形吗?
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__
。
在图创建的关系查询部分,neo4j 的文档说
Optionally, a type column can be specified to represent relationship type.
但是,我发现的所有示例都是 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
之类的方法,但这行不通。
I tried something like "TAGGED_ON_THE_SAME_VIDEO" AS type but this
cannot work.
为什么这行不通?我已经测试过了,它工作得很好。尝试以下查询来投影图形:
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
"
)
我从标签节点创建图表,其中创建的图表中的关系不是原始数据库中的关系,而是一些代表标签的路径被标记在相同的视频上。
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__
。
在图创建的关系查询部分,neo4j 的文档说
Optionally, a type column can be specified to represent relationship type.
但是,我发现的所有示例都是 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
之类的方法,但这行不通。
I tried something like "TAGGED_ON_THE_SAME_VIDEO" AS type but this cannot work.
为什么这行不通?我已经测试过了,它工作得很好。尝试以下查询来投影图形:
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
"
)