Rdf 正在查找创建紧凑表的SPARQL查询

Rdf 正在查找创建紧凑表的SPARQL查询,rdf,sparql,Rdf,Sparql,我有一些RDF数据使用了新的。为了可视化,我需要数据作为一个平面和紧凑的表格。但我无法找到正确的SPARQL查询来实现这一点 我将尝试给出一个最小的例子 给定以下RDF数据: o1 :year "2007"; :fruit :apples; :harvest "200"; . o2 :year "2007"; :fruit :pears; :harvest "180"; . o3 :year "2008"; :fruit :apples; :harvest "205";

我有一些RDF数据使用了新的。为了可视化,我需要数据作为一个平面和紧凑的表格。但我无法找到正确的SPARQL查询来实现这一点

我将尝试给出一个最小的例子

给定以下RDF数据:

o1
 :year "2007";
 :fruit :apples;
 :harvest "200";
 .
o2
 :year "2007";
 :fruit :pears;
 :harvest "180";
 . 
o3
 :year "2008";
 :fruit :apples;
 :harvest "205";
.
o4
 :year "2008";
 :fruit :pears;
 :harvest "176";
. 
是否存在可以按下表返回数据的SPARQL查询

Year | Apples | Pears
2007 | 200    | 180
2008 | 205    | 176
提前谢谢

试试看:

select ?year (sample(?num_apples) as ?apples) (sample(?num_pears) as ?pears)
where
{
    { ?s :year ?year ; :fruit :apples; :harvest ?num_apples }
    union
    { ?s :year ?year ; :fruit :pears; :harvest ?num_pears }
}
group by ?year
您可以使用
sum()
avg()
而不是
sample()
,如果您有多个收获数字,这将更有意义


(警告:您的值是字符串而不是数字!)

是的,这很有效!谢谢!所以诀窍是使用聚合函数。事后看来,这很有道理。是的,我知道我省略了数据类型规范。我这样做是为了保持示例的简单性。但这种方法在我的真实数据中效果很好。我唯一需要更改的是在SAMPLE函数之前使用sql:前缀,因为我使用的是Virtuoso端点。