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

如何在Wikidata中使用SPARQL将多结果合并到单个单元格

解决Wikidata查询中合并多行结果的问题

你的问题出在SPARQL的GROUP BY规则上:SELECT语句里的非聚合列(未被GROUP_CONCAT这类函数包裹的列)必须全部出现在GROUP BY子句里,否则会报错。你原来的查询里?personLabel和?siblingLabel既不在GROUP BY里,也没被聚合处理,所以触发了错误。

要实现把同一个圣经人物的多个兄弟姐妹合并到同一行,正确的查询应该这样写:

SELECT ?person ?personLabel (GROUP_CONCAT(?siblingLabel; SEPARATOR=", ") AS ?siblings)
WHERE {
  ?person wdt:P31 wd:Q20643955.
  ?person wdt:P3373 ?sibling.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?person ?personLabel
ORDER BY ?personLabel

关键调整说明:

  • 用GROUP_CONCAT(?siblingLabel; SEPARATOR=", ")将同一个人物的所有兄弟姐妹标签合并,指定逗号加空格作为分隔符,结果存为siblings字段
  • GROUP BY子句同时包含?person和?personLabel,因为每个?person对应唯一的?personLabel,确保按单个人物分组
  • 移除了原查询中多余的?personLabels聚合,因为你需要合并的是兄弟姐妹数据,而非人物自身的标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:55:52