在neo4j中进行密码查询以找到路径匹配模式最多的特定节点

我有一个neo4j数据库,其中包含有关水和废物的统计信息。在该数据库中是与相关事实相关联的数据点,包括与内部定义的映射。在所附的屏幕截图中,这里是数据点和相关元数据的示例。中心的节点是值,由“ HAS_DIMENSION”链接的直接节点是数据提供程序随附的维。这些不是固定的,并且会根据提供程序进行更改。每个感兴趣的维度都映射到一个内部定义。目前,这是我的查询:

MATCH (o:Observation {uq_id:'e__ABS_AGR_AQ__FSW__mio_M3__BG__1970____9f07c7a629625e5ae00e35838fcd4f824a3593dd'})-[:HAS_DIMENSION]->()
MATCH (o)-[:HAS_DIMENSION]->()-[:HAS_SYNONYM_FROM]->()-[:WITH_TARGET_DEF]->(v:Variable)<-[:HAS_UNIT]-(u:Unit)
MATCH (o)-[vl0:HAS_DIMENSION]->()-[:HAS_SYNONYM_FROM]->()-[:WITH_TARGET_DEF]->(l:Location)
MATCH (o)-[vc0:HAS_DIMENSION]->()-[:HAS_SYNONYM_FROM]->()-[:WITH_TARGET_DEF]->(c:Country)
MATCH (o)-[vy0:HAS_DIMENSION]->()-[:HAS_SYNONYM_FROM]->()-[:WITH_TARGET_DEF]->(y:Year)
MATCH (o)-[:HAS_DIMENSION]->(unk0)
MATCH (o)-[sr0:CAME_FROM_FILE]->(ds0)-[sr1:BELONGS_TO]->(s0)
OPTIONAL MATCH (o)-[dtr0:HAS_DIMENSION]->()-[:HAS_SYNONYM_FROM]->()-[:WITH_TARGET_DEF]->(d:DataType)
RETURN *

我的问题以粉红色圆圈为例。我只想在查询中出现一个粉红色的圆圈(这是一个带有标签Variable的节点),特别是我想要如下变量

MATCH (v:Variable)<-[:MAPS_TO]-()<-[:HAS_DIMENSION]-(o:Observation)

通过这种方式,我想强制其观察一种模式,在该模式下,它为大多数中间节点标识与上述模式匹配的单个变量。因此,“新鲜地表水提取”变量将与此模式匹配,因为它具有与此匹配的两条路径。但是“新鲜的地下水”却没有,因为它只有一个。我该怎么做?

在neo4j中进行密码查询以找到路径匹配模式最多的特定节点

syldjzl88888 回答:在neo4j中进行密码查询以找到路径匹配模式最多的特定节点

听起来您想返回变量节点,该变量节点具有最多的路径。这样的事情会大致返回您想要的结果吗?您需要根据匹配的语句进行调整。

MATCH p=(o:Observation {uq_id:'<your_id>'})-[:HAS_DIMENSION]->()<-[:MAPS_TO]-(v:Variable)
RETURN v.name,COUNT(p) as p ORDER BY p DESC LIMIT 1
本文链接:https://www.f2er.com/3148281.html

大家都在问