Sparql Virtuoso 42000错误估计执行时间

Sparql Virtuoso 42000错误估计执行时间,sparql,rdf,semantic-web,dbpedia,linked-data,Sparql,Rdf,Semantic Web,Dbpedia,Linked Data,使用dbpedialivesparql端点,我试图计算与类型为owl:Thing的实例关联的三元组总数。由于计数非常大,将抛出一个异常“Virtuoso 42000 Error the estimate execution time”。为了解决这个问题,我尝试在查询中使用subselect、limit和offset。但是,当偏移量大于等于限制时,解决方案不起作用,并且再次抛出相同的异常(Virtuoso 42000错误),是否有人可以确定我的查询存在的问题?或者建议一个解决方法?提供了我正在尝试

使用dbpedialivesparql端点,我试图计算与类型为
owl:Thing
的实例关联的三元组总数。由于计数非常大,将抛出一个异常“Virtuoso 42000 Error the estimate execution time”。为了解决这个问题,我尝试在查询中使用subselect、
limit
offset
。但是,当
偏移量
大于等于
限制
时,解决方案不起作用,并且再次抛出相同的异常(Virtuoso 42000错误),是否有人可以确定我的查询存在的问题?或者建议一个解决方法?提供了我正在尝试的查询:

select count(?s) as ?count
where
{
?s ?p ?o
  {
      select ?s
      where
      {
          ?s rdf:type owl:Thing.
      }
    limit 10000
    offset 10000
  }
}

你的解决方案从耐心开始。Virtuoso's会在超时时返回一些结果,并在后台继续运行查询——因此,如果您稍后返回,通常会得到更多的解决方案,直至完整的结果集

我不得不这么做,因为你只发布了你试图使用的零碎版本--

在几秒钟内,没有任何超时。我在表单上设置了一个3000000毫秒(=3000秒=50分钟)的超时时间,这与端点的默认超时时间30000毫秒(=30秒)形成了对比,但很明显,这两个超时时间都没有命中,端点的超时时间也没有命中

我想您已经理解了这一点,但请注意,这一数字是一个移动的目标,随着维基百科firehose不断更新DBpedia Live内容,它将定期发生变化


你的分而治之的努力有一个重要的问题。请注意,如果没有
ORDER BY
子句和
LIMIT
/
OFFSET
子句,您可能会发现一些解决方案(在这种情况下,
?s
的一些值)重复出现,和/或一些解决方案不会出现在合并所有这些部分结果的最终聚合中

此外,当您尝试计数三元组时,您可能应该执行
count(*)
而不是
count(?.s)
。如果没有其他内容,这将帮助查询的读者了解您在做什么


为了能够在查询到达时调整执行时间限制,最简单的方法是通过;不幸的是,由于许多原因,新客户目前无法使用此功能。(现有客户可能会继续使用他们的AMI。)我们可能会在某个时候恢复这一点,但时间不确定;您可以注册您的兴趣,并在AMI可供新用户使用时收到通知



走向最终的解决方案。。。可能有比你目前正在努力的更好的方法来实现你的最终目标。你可能会考虑问这个问题。

< p>你的解决方案是从耐心开始。Virtuoso's会在超时时返回一些结果,并在后台继续运行查询——因此,如果您稍后返回,通常会得到更多的解决方案,直至完整的结果集

我不得不这么做,因为你只发布了你试图使用的零碎版本--

在几秒钟内,没有任何超时。我在表单上设置了一个3000000毫秒(=3000秒=50分钟)的超时时间,这与端点的默认超时时间30000毫秒(=30秒)形成了对比,但很明显,这两个超时时间都没有命中,端点的超时时间也没有命中

我想您已经理解了这一点,但请注意,这一数字是一个移动的目标,随着维基百科firehose不断更新DBpedia Live内容,它将定期发生变化


你的分而治之的努力有一个重要的问题。请注意,如果没有
ORDER BY
子句和
LIMIT
/
OFFSET
子句,您可能会发现一些解决方案(在这种情况下,
?s
的一些值)重复出现,和/或一些解决方案不会出现在合并所有这些部分结果的最终聚合中

此外,当您尝试计数三元组时,您可能应该执行
count(*)
而不是
count(?.s)
。如果没有其他内容,这将帮助查询的读者了解您在做什么


为了能够在查询到达时调整执行时间限制,最简单的方法是通过;不幸的是,由于许多原因,新客户目前无法使用此功能。(现有客户可能会继续使用他们的AMI。)我们可能会在某个时候恢复这一点,但时间不确定;您可以注册您的兴趣,并在AMI可供新用户使用时收到通知



走向最终的解决方案。。。可能有比你目前正在努力的更好的方法来实现你的最终目标。你可能会考虑问我,或者< /P>作品,注:这是很多人使用的共享资源。您没有任何性能保证,也没有正常运行时间保证。解决方法是加载DBpedia转储并在本地处理数据。在您的例子中,您甚至可以使用UNIX命令,如
grep
,etcThanks来进行应答,不幸的是,转储会稍旧一些,我正在尝试对DBpedia的当前状态及其产生的实时更改进行实验。我仍然不确定为什么查询会在静态DBpedia的端点上工作,而不是在活动端点上工作。我假设两种环境的配置不会有很大的差异。再次感谢您的回复。嗯,最明显的区别是Virtuoso 7和Virtuoso 8。仅此一点就可能导致不同的查询执行计划等。此外,不同的服务器、不同的Virtuoso配置,可能会有很多不同之处。感谢您提供的信息。因此,我从这次对话中得到的收获是,无法从dbpedialivesparql端点获得与owl:Thing类相关的三元组的计数
select ( count(?s) as ?count )
where
{
          ?s rdf:type owl:Thing.
}