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

SPARQL如何查询相同主体记录并将对应值合并为逗号分隔格式

SPARQL 同主体多客体合并查询调整方案

你可以使用GROUP BY分组搭配GROUP_CONCAT聚合函数实现需求,调整后的查询语句如下:

SELECT ?person (GROUP_CONCAT(?friend; separator=", ") AS ?friendsList)
WHERE {
  ?person <http://www.example.com/hasFriend> ?friend.
}
GROUP BY ?person

语句说明

  • 用GROUP BY ?person将同一个主体的所有查询结果归入同一组
  • GROUP_CONCAT函数会把同组内的所有?friend值拼接,separator参数指定用逗号加空格作为分隔符,最终拼接结果别名设置为?friendsList
  • 如果需要过滤掉重复的朋友值,可修改为GROUP_CONCAT(DISTINCT ?friend; separator=", ")

如果需要输出和示例完全一致的整行拼接文本,可以进一步调整查询:

SELECT (CONCAT(?personName, " hasFriend ", GROUP_CONCAT(?friendName; separator=", ")) AS ?result)
WHERE {
  ?person <http://www.example.com/hasFriend> ?friend.
  # 如果你的person、friend存储为URI,需要获取名称标签,可根据实际数据的名称谓词调整下面两行
  # ?person <http://www.example.com/name> ?personName.
  # ?friend <http://www.example.com/name> ?friendName.
  # 如果person、friend直接存储为Alex、A这类字面量,直接绑定即可
  BIND(?person AS ?personName)
  BIND(?friend AS ?friendName)
}
GROUP BY ?person ?personName

GROUP_CONCAT是SPARQL 1.1的标准聚合函数,Apache Jena、Virtuoso、GraphDB等主流SPARQL引擎都原生支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:24:00