我想要求一个场地的房间数量: 这就是我得到的:
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>
我已经搜索过了。找到了group_concat解决方案,但我无法弄明白。
答案 0 :(得分:3)
要获得房间数量,请使用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
对于在OPTIONAL子句中的变量进行聚合,这应该没有区别。