我仍然觉得自己是一个SPARQL新手,所以我可能会对SPARQL GROUP BY的作用有所了解,但这是我的问题。
假设我想要请求图表数据库中名为Categories的所有资源,我想获得与这些类别相关的所有项目,以及项目名称和价格。
现在我的SPARQL查询给了我类似下表的内容:
**Categories Item ItemName ItemPrice**
Tools HammerID Hammer $12
Tools SawID Saw $13
Tools WrenchID Wrench $10
Food AppleID Apple $5
Food CornID Corn $1
我想使用GROUP BY将项目分组到一个类别下,这样当我开始处理它时,我可以查看每个唯一类别,然后显示属于该类别的项目。
现在,如果我循环上面的结果,我将迭代5个条目而不是2个。
我能描述我想要的结果的另一种方法是通过成像相应的json数据看起来像什么。我想要这样的东西:
[
tools: [
{id: hammerId
title: hammer
price: $12},
{id: sawId
title: saw
price: $13},
{id: wrenchId
title: wrench
price: $10}
],
food: [
{id: appleId
title: apple
price: $5},
{id: cornId
title: corn
price: $1}
]
]
结果,像这样我可以直接遍历顶级项目,然后显示每个项目的结果。
我可以使用GROUP BY告诉SPARQL给我这样的结果吗?
答案 0 :(得分:2)
不,你不能。 SPARQL SELECT查询结果被定义为一系列解决方案,每个解决方案都是一组变量值对(其值被定义为IRI,BNode或文字值)。基本上它是一个简单的表格。没有规定“嵌套”#39;像你这样的解决方案需要你的JSON结构。
然而,差异纯粹是语法上的。如果您进行分组,您知道结果会将属于同一组的所有解决方案一个接一个地提供(一个接一个) - 因此在处理结果时,您只需将分组变量视为标记即可。当然,如果你真的想要,你可以自己轻松地将查询结果重写为这种句法结构 - 毕竟,它只是写下完全相同信息的另一种方式。