如何在SPARQL中生成数据的随机样本?

如何在SPARQL中生成数据的随机样本?,sparql,random-sample,Sparql,Random Sample,是否可以使用SPARQL生成三元组的随机样本? 我想它可能是通过SAMPLE函数实现的,但它只返回一个示例 我的解决方法是生成一个随机数,与OFFSET关键字一起使用,并使用LIMIT关键字返回所需的样本大小。为了方便起见,我将把偏移量的随机数硬编码为200,如下所示: SELECT * WHERE { ?s ?p ?o } OFFSET 200 #random number variable LIMIT 100 有没有更好的建议从SPARQL端点生成100个数据三元组的随机样本 在SPAR

是否可以使用SPARQL生成三元组的随机样本? 我想它可能是通过SAMPLE函数实现的,但它只返回一个示例

我的解决方法是生成一个随机数,与OFFSET关键字一起使用,并使用LIMIT关键字返回所需的样本大小。为了方便起见,我将把偏移量的随机数硬编码为200,如下所示:

SELECT *
WHERE {
?s ?p ?o
} 
OFFSET 200 #random number variable
LIMIT 100

有没有更好的建议从SPARQL端点生成100个数据三元组的随机样本

在SPARQL 1.1中,您可以尝试使用

 ...} ORDER BY RAND() LIMIT 100

但这是否有效可能取决于三重存储。

在SPARQL 1.1中,您可以尝试使用

 ...} ORDER BY RAND() LIMIT 100

但这是否有效可能取决于triple store。

谢谢。它正在运行,但我认为兰德返回了一个随机数。它在ORDER BY please的上下文中做什么?ps for context它肯定会返回不同的看似随机的数据,而不是通过简单的偏移量/限制方法返回的数据。只是不知道它在做什么。@Hilary SELECT{…}ORDER BY RAND做的事情与选择{…}BINDRAND AS?RAND}ORDER BY RAND做的事情相同。它为每个结果绑定生成一个随机数,然后按该随机数对结果排序。这基本上是在为你调整结果。好的,谢谢Joshua。这是有道理的。限制是在ORDER BY之前还是之后应用的,也就是说,我是否总是使用相同的限制获得相同的随机样本?这种对数据进行排序的方法对Wikidata这样大的数据有效吗?谢谢。它正在运行,但我认为兰德返回了一个随机数。它在ORDER BY please的上下文中做什么?ps for context它肯定会返回不同的看似随机的数据,而不是通过简单的偏移量/限制方法返回的数据。只是不知道它在做什么。@Hilary SELECT{…}ORDER BY RAND做的事情与选择{…}BINDRAND AS?RAND}ORDER BY RAND做的事情相同。它为每个结果绑定生成一个随机数,然后按该随机数对结果排序。这基本上是在为你调整结果。好的,谢谢Joshua。这是有道理的。这个限制是在ORDER BY之前还是之后应用的,也就是说,我总是使用相同的限制获得相同的随机样本吗?这种方法对像Wikidata这样大的数据进行排序是否有效?这不是一个很好的解决方案,但答案可能是有用的阅读。这不是一个很好的解决方案,但答案可能是有用的阅读。