请教一条能够满足该需求的nGQL语句(限制使用openCypher语句实现)

无聊时尝试实现基于历史人物图谱的查询服务时,遇到了这样一个场景:

1.满足模式 a -> b 的边有5条,其中有3条边符合某种条件condition;
2.满足模式 a2 -> b2 的边有4条,其中有4条边符合某种条件condition;
3.满足模式 a3 -> b3 的边有6条,其中有4条边符合某种条件condition;
对于以上三个模式,若符合condition的边数大于3条,输出所有符合该模式的边。

假如查询语句完全正确,在这个场景下理想的输出结果应该是:

满足a2 -> b2 模式, a3 -> b3模式的所有边被输出;

以具体场景举例说明:

存在a、b、c、d四名历史人物,在过去的一天中(0:00-23:59):
a与b在4:00-5:00进行了一次会面;在6:00-8:00进行了一次会面;在9:00-11:00进行一次会面,在12:00-13:00进行一次会面共计4次会面;
a与c在8:30-10:30的时间里会面了4次;
a与d在8:30-12:30的时间里会面了5次;
现在要从上述组合里挑选出在8:00-12:30时间里会面次数大于3次的组合,并且返回每次会面的详情。

在上文具体示例中,假设a、b、c、d之间的关系组合以下文方式记录:

"src"->"dst" @num (describe: "会面", beginTime: "hh:mm:ss", endTime: "hh:mm:ss")

匹配关系边可以采用如下模式:

MATCH (v:person{name: "a"})-[e:action{describe: "会面"}]->(v2:person{name: "b"})

请教能够实现

“统计各个组合(例如a-b、a-c)之间满足8:30-12:30时间约束的会面的次数,
并且筛选出在这个时间段里会面次数不小于3次的组合,
打印这些组合在时间段里的所有会面详情。” 

需求的nGQL语句(尽量使用OpenCypher语句),
(只要会面的起始时间或者结束时间在给出的范围里就视为该次会面符合时间限制要求)

参考讨论贴ngql有没有具有类似 sql having语义的用法or关键词

1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。