使用 sparql 查询获取分组结果
get grouped results with sparql query
我仍然觉得自己是 SPARQL 的新手,所以我可能对 SPARQL GROUP BY 的功能有很大的了解,但这是我的问题。
假设我想请求名为 Categories 的图数据库中的所有资源,并且我想获取与这些类别相关的所有项目,以及项目的名称和价格。
现在我的 SPARQL 查询返回如下内容 table:
**Categories Item ItemName ItemPrice**
Tools HammerID Hammer
Tools SawID Saw
Tools WrenchID Wrench
Food AppleID Apple
Food CornID Corn
我想使用 GROUP BY 将项目分组到一个类别下,这样当我开始处理它时,我可以查看每个唯一的类别,然后显示属于该类别的项目。
现在,如果我遍历上述结果,我将迭代 5 个条目而不是 2 个。
我可以描述我想要的结果的另一种方式是通过成像相应的 json 数据的样子。我想要这样的东西:
[
tools: [
{id: hammerId
title: hammer
price: },
{id: sawId
title: saw
price: },
{id: wrenchId
title: wrench
price: }
],
food: [
{id: appleId
title: apple
price: },
{id: cornId
title: corn
price: }
]
]
有了结果,我可以像这样直接遍历顶级项目,然后显示每个项目的结果。
我可以使用 GROUP BY 告诉 SPARQL 给我这样的结果吗?
不,你不能。 SPARQL SELECT 查询结果被定义为一系列解决方案,每个解决方案都是一组变量值对(值被定义为 IRI、BNode 或文字值)。基本上就是一个简单的table。没有像 JSON 类结构所需的 'nested' 解决方案。
然而,区别纯粹是句法上的。如果您分组,您知道结果会将属于同一组的所有解决方案一起交付(一个接一个) - 因此在处理结果时,您可以简单地将分组变量视为标记。当然,如果你真的想要,你可以很容易地自己将查询结果重写成这种语法结构——毕竟,这只是写下完全相同信息的不同方式。
我仍然觉得自己是 SPARQL 的新手,所以我可能对 SPARQL GROUP BY 的功能有很大的了解,但这是我的问题。
假设我想请求名为 Categories 的图数据库中的所有资源,并且我想获取与这些类别相关的所有项目,以及项目的名称和价格。
现在我的 SPARQL 查询返回如下内容 table:
**Categories Item ItemName ItemPrice**
Tools HammerID Hammer
Tools SawID Saw
Tools WrenchID Wrench
Food AppleID Apple
Food CornID Corn
我想使用 GROUP BY 将项目分组到一个类别下,这样当我开始处理它时,我可以查看每个唯一的类别,然后显示属于该类别的项目。
现在,如果我遍历上述结果,我将迭代 5 个条目而不是 2 个。
我可以描述我想要的结果的另一种方式是通过成像相应的 json 数据的样子。我想要这样的东西:
[
tools: [
{id: hammerId
title: hammer
price: },
{id: sawId
title: saw
price: },
{id: wrenchId
title: wrench
price: }
],
food: [
{id: appleId
title: apple
price: },
{id: cornId
title: corn
price: }
]
]
有了结果,我可以像这样直接遍历顶级项目,然后显示每个项目的结果。
我可以使用 GROUP BY 告诉 SPARQL 给我这样的结果吗?
不,你不能。 SPARQL SELECT 查询结果被定义为一系列解决方案,每个解决方案都是一组变量值对(值被定义为 IRI、BNode 或文字值)。基本上就是一个简单的table。没有像 JSON 类结构所需的 'nested' 解决方案。
然而,区别纯粹是句法上的。如果您分组,您知道结果会将属于同一组的所有解决方案一起交付(一个接一个) - 因此在处理结果时,您可以简单地将分组变量视为标记。当然,如果你真的想要,你可以很容易地自己将查询结果重写成这种语法结构——毕竟,这只是写下完全相同信息的不同方式。