Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql Jena似乎在缓存绑定(RAND())查询_Sparql_Jena - Fatal编程技术网

Sparql Jena似乎在缓存绑定(RAND())查询

Sparql Jena似乎在缓存绑定(RAND())查询,sparql,jena,Sparql,Jena,我在使用ApacheJena的Java程序中连续数千次运行以下查询(以生成随机游动) 然而,我总是得到相同的属性和对象集(尽管这似乎极不可能)。我假设Jena正在将结果缓存到查询中(尽管有RAND()组件) 解决这个问题的最佳和最有效的方法是什么 您是将Jena用作RDF存储还是SPARQL远程端点的包装器?如果是后者,您可能会从Virtuoso SPARQL端点获得这种行为。不,我有一个本地OntModel,我正在查询它。您使用的Jena版本是什么?当我使用3.11版运行您的查询时,每次运行查

我在使用ApacheJena的Java程序中连续数千次运行以下查询(以生成随机游动)

然而,我总是得到相同的属性和对象集(尽管这似乎极不可能)。我假设Jena正在将结果缓存到查询中(尽管有
RAND()
组件)


解决这个问题的最佳和最有效的方法是什么

您是将Jena用作RDF存储还是SPARQL远程端点的包装器?如果是后者,您可能会从Virtuoso SPARQL端点获得这种行为。不,我有一个本地
OntModel
,我正在查询它。您使用的Jena版本是什么?当我使用3.11版运行您的查询时,每次运行查询时都会生成不同的结果。也无法复制它。根据代码,随机生成是基于一个没有种子的静态变量,因此不可能进行响应。不太可能每次都生成相同的随机数。剩下的代码呢?数据呢?我想我找到了最可能的原因:我正在多线程环境中运行查询。我可以想象,
rand
函数不适用于这种设置。(至少在Java中类似:您不能使用
rand.nextInt()
,而必须在多线程设置中使用
ThreadLocalRandom.current().nextInt()
)。
SELECT ?p ?o  
WHERE { 
   $ENTITY$ ?p ?o . 
   FILTER(!isLiteral(?o)). 
   BIND(RAND() AS ?sortKey) 
} ORDER BY ?sortKey LIMIT 1