SPARQL查询如何将同一子类的所有实例与对应类展示在同一行
SPARQL 同类实例合并行查询调整方案
你可以通过SPARQL的分组聚合能力调整查询,核心是使用GROUP BY按类标签分组,搭配GROUP_CONCAT函数拼接同一类的所有实例标签,修改后的查询语句如下:
SELECT ?class_label (GROUP_CONCAT(?instance_label; separator=" ") AS ?instance_list) WHERE { ?anmlclass rdfs:subClassOf ex:Animal; rdfs:label ?class_label. ?anml a ?anmlclass; rdfs:label ?instance_label. } GROUP BY ?class_label
逻辑说明
- 原查询逐行返回类与实例的一一配对,新增的
GROUP BY ?class_label会将所有属于同一个子类的结果归为同一组 GROUP_CONCAT函数会将同一组内的所有实例标签用指定的空格分隔符拼接为单个字符串,最终每行就对应一个子类+该类所有实例的列表
可选优化
如果同一个子类下存在重复的实例标签,可以在GROUP_CONCAT内部增加DISTINCT去重,写法为:GROUP_CONCAT(DISTINCT ?instance_label; separator=" ")
内容的提问来源于stack exchange,提问作者Michael DeBellis
相关产品推荐
相关产品推荐

