SPARQL-获取大量可选数据并合并行

SPARQL-获取大量可选数据并合并行,sparql,Sparql,我想申请一个场馆的房间数量: 这就是我得到的: ah:room <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/3> - ah:room <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/ajax-foyer> - ah:room

我想申请一个场馆的房间数量: 这就是我得到的:

ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/3>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/ajax-foyer>    -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/ajaxbalkon>    -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/bovenzaal>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/foyer>     -
ah:room     <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/room/grote-repetitielokaal> 
啊:房间- 啊:房间- 啊:房间- 啊:房间- 啊:房间- 啊:房间 接下来我想得到一个多行返回

ah:attachment   <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/attachment/1>   -
ah:attachment   <http://data.artsholland.com/venue/04df157e-fc47-4448-83ed-d0a8c577d7dd/attachment/2> 
ah:附件-
啊:附件:
我已经做好了实现这一点的准备。找到了解决方案,但我想不出来


要获取房间数量,请使用
COUNT
操作符。您应该将其与
GROUP BY
子句结合使用,这将告诉运算符哪些结果要聚合在一起。例如:

SELECT ?venue (COUNT(?room) as ?nrOfRooms)
WHERE { 
        ?venue a ah:Venue ;
               ah:room ?room . 
}
GROUP BY ?venue
实际上,
GROUP_CONCAT
的工作原理非常相似。我没有详细查看您的查询,因此这可能与实际数据的外观不太相符,但大致上,您所做的是:

SELECT ?venue (GROUP_CONCAT(?attach) as ?attachments)
WHERE { 
        ?venue a ah:Venue ;
               ah:room ?room ;
               ah:attachment ?attach . 
}
GROUP BY ?venue

对于在可选子句内的变量上进行聚合,这应该没有什么区别

当我尝试将相同的逻辑用于我的查询时,它不起作用:选择DISTINCT?地点(将房间计算为?nRooms)?几何图形?openingHours?主页?简短描述?标题?venueType?lat?long?publicTransportInformation?电话?电子邮件?附件,其中{?地点a;ah:房间?房间。可选{{?地点ah:openingHours?openingHours过滤器(langMatches(lang(?openingHours),“en”)。}“它不工作”?你得到了什么错误?你期望得到什么输出,你实际得到了什么?另外:请用这些额外的细节编辑/更新你的原始问题,这样你就可以正确地格式化它,而不仅仅是复制/粘贴到评论中。这样更容易阅读。就像一个小指针:你粘贴在这里的查询没有克劳斯分组e、 正如我在回答中所解释的,您需要引导聚合。