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

如何用SPARQL查询Wikidata中曾效力两支运动队的教练

查询曾效力两支不同运动队的教练的SPARQL方案

要实现查询曾在不同时期效力两支运动队的教练,核心是关联同一教练在两支球队的任职记录,同时可通过时间属性区分任职时期。以下是具体的修改方案:

基础版:仅确认曾效力两支球队

如果只需要筛选出曾为两支指定球队工作过的教练,无需严格区分时期,可以用以下查询:

SELECT DISTINCT ?coach ?coachLabel
WHERE {
  # 第一支球队(示例为Q7156)的任职记录
  wd:Q7156 p:P286 ?team1Stmt.
  ?team1Stmt ps:P286 ?coach.

  # 第二支球队(替换为目标球队的Wikidata ID)的任职记录
  wd:Qxxxx p:P286 ?team2Stmt.
  ?team2Stmt ps:P286 ?coach.

  # 过滤掉同一球队的重复记录
  FILTER (wd:Q7156 != wd:Qxxxx)

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".}
}
  • 使用DISTINCT避免同一教练出现重复结果
  • p:P286指向任职的语句节点,ps:P286提取语句中的教练实体
  • 替换wd:Qxxxx为你要查询的第二支球队的Wikidata ID

进阶版:严格区分不同任职时期

如果需要确保教练在两支球队的任职是不同时期(无重叠),可以加入时间属性过滤:

SELECT ?coach ?coachLabel ?team1Label ?team2Label ?startTime1 ?endTime1 ?startTime2 ?endTime2
WHERE {
  # 第一支球队的任职记录及时间
  wd:Q7156 p:P286 ?team1Stmt.
  ?team1Stmt ps:P286 ?coach;
             pq:P580 ?startTime1; # 任职开始时间
             pq:P582 ?endTime1.   # 任职结束时间

  # 第二支球队的任职记录及时间
  wd:Qxxxx p:P286 ?team2Stmt.
  ?team2Stmt ps:P286 ?coach;
             pq:P580 ?startTime2;
             pq:P582 ?endTime2.

  # 确保球队不同且任职时期无重叠
  FILTER (wd:Q7156 != wd:Qxxxx)
  FILTER (?endTime1 < ?startTime2 || ?endTime2 < ?startTime1)

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".}
}
ORDER BY ?coachLabel
  • 通过pq:P580和pq:P582获取任职的开始/结束时间
  • 第二个FILTER确保两段任职时间没有重叠,符合“不同时期”的要求
  • 返回字段包含球队标签和时间,方便查看具体任职信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:45:15