Neo4j:具有多重关系的二分到单分投影

Neo4j: Bipartite to monopartite projection with multiple relationships

我是 Neo4j 的新手。我正在尝试从二分图创建单分投影。我只有两种类型的节点:

我的挑战是我有一些不同的关系。一些例子:

我想做的是

  1. 将其更改为只有 实体,但根据所有类型推断 RELATED_TO 边 关系,不只是一种关系and
  2. 根据两个实体同时出现的次数分配边权重。

换句话说,使用上面的例子:

示例 1

示例 2

示例 3

我可以在网上找到仅将一种类型的关系转换为单方关系的示例,但似乎无法为多重关系或具有不同类型的中间节点(即两个 post实体节点之间的节点)。我已经完成了图形数据科学培训,但也找不到我想要的东西。

有什么建议吗?

这个查询对你有用吗?

MATCH (e1:Entity)-[*2..3]-(e2:Entity)
WHERE id(e1) < id(e2)
WITH e1, e2, count(*) as strength
MERGE (e1)-[r:RELATED_TO]->(e2) 
SET r.strength = strength

由于我们没有为 e1 和 e2 之间的关系指定类型,因此图中的任何关系都将匹配。模式中可以存在两到三个关系,这将转化为实体节点之间的一个或两个 Post 节点。

我认为关系的方向并不重要,所以我省略了关系箭头上的方向。我要求 e1 的节点 ID 小于 e2 的节点 ID,以避免在两个方向上创建 RELATED_TO 关系。

如果您需要在您描述的架构中查找超过 3 个关系的路径,您可以考虑使用 apoc path expander 来搜索只有 Post 个节点的实体到实体路径.