You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypher多WHERE/WHERE NOT语句关联问题:跨教派婚姻查询

18世纪荷兰共和国跨教会通婚Cypher查询方案

需求说明

查询18世纪荷兰共和国中,乌得勒支教会受洗人群与罗马天主教会受洗人群的通婚记录,但需排除以下两种情况:

  • 乌得勒支教会受洗者在婚前参与过罗马天主教会的活动
  • 罗马天主教会受洗者在婚前参与过乌得勒支教会的活动

完整Cypher查询语句

MATCH (p:person)-[:MARRIED_AT]-(m:marriage)-[:MARRIED_AT]-(pp:person)
// 筛选基础条件:两人分别在目标教会受洗,且婚姻发生在18世纪
WHERE (p)-[:BAPTISED_AT]-(:event:baptism)--(:church:Church_of_Utrecht) 
  AND (pp)-[:BAPTISED_AT]-(:event:baptism)--(:church:Roman_Catholic_Church)
  AND m.Event_year BETWEEN 1701 AND 1800
// 排除p婚前参与罗马天主教会活动的情况
AND NOT EXISTS {
    MATCH (p)--(e:event)--(:church:Roman_Catholic_Church)
    WHERE e.Event_year < m.Event_year
}
// 排除pp婚前参与乌得勒支教会活动的情况
AND NOT EXISTS {
    MATCH (pp)--(ee:event)--(:church:Church_of_Utrecht)
    WHERE ee.Event_year < m.Event_year
}
// 按需返回结果字段
RETURN p.name AS utrecht_baptised_name, 
       pp.name AS roman_catholic_baptised_name, 
       m.Event_year AS marriage_year, 
       m.location AS marriage_location

关键逻辑解释

  • 婚姻关系匹配:通过[:MARRIED_AT]关联夫妻节点与婚姻节点,确保获取完整的婚姻上下文。
  • 时间范围锁定:用BETWEEN直接限定婚姻发生在1701-1800年(18世纪),精准缩小查询范围。
  • 对立教会活动排除:使用NOT EXISTS子查询分别验证两人是否在婚前参与过对立教会活动,这种写法避免了笛卡尔积问题,且逻辑更清晰易读。
  • 结果定制:返回字段可根据分析需求调整,比如增加教会名称、事件详情等。

内容的提问来源于stack exchange,提问作者Jaap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:25:43