通过SPARQL计算大型数据集中的属性

时间:2017-06-12 12:23:32

标签: sparql virtuoso

我希望在SPARQL端点中拥有最常用属性的列表。最简单的查询是:

select ?p ( count ( distinct * ) as ?ct )
{
  ?s ?p ?o. 
}
group by ?p
order by desc ( ?ct )
limit 1000

问题在于有太多的三元组(16亿)并且服务器超时。所以,谷歌搜索后,我也试过这个,至少得到一个样本统计数据(是的,它是特定的Virtuoso,在我的情况下它很好):

select ?p ( count ( distinct * ) as ?ct )
{
  ?s ?p ?o. 
  FILTER ( 1 > <SHORT_OR_LONG::bif:rnd> (0.0001, ?s, ?p, ?o) )
}
group by ?p
order by desc ( ?ct )
limit 1000

但它无论如何都会超时,我想因为它仍然需要groupcount然后order。那么,我该怎么做呢?我可以访问Virtuoso关系数据库(即iSQL),但我找不到有关SQL语法的文档以及如何从表db.dba.rdf_quad中选择随机三元组。

编辑:我已修复了查询,最初他们错了,感谢您的评论。上面的版本仍然不起作用。

1 个答案:

答案 0 :(得分:1)

好的,我找到了一种方法,至少是一种方式:Virtuoso有一个命令行管理工具isql。这也接受SPARQL个查询,格式为:SPARQL <query>;。并且它们在没有超时或结果大小限制的情况下执行。

如果您只能通过HTTP访问端点,这仍然不是很好,我不太清楚这种方式是否可行。