Sparql 在dbpedia上运行查询时超时事务

Sparql 在dbpedia上运行查询时超时事务,sparql,dbpedia,Sparql,Dbpedia,嗨,有一个查询一直到昨天都在运行: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT DISTINCT(?film_link) ?film_abstract ?film_name

嗨,有一个查询一直到昨天都在运行:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    SELECT DISTINCT(?film_link) ?film_abstract ?film_name ?wikipage
    WHERE {
    ?film_link rdf:type <http://dbpedia.org/ontology/Film> .
    ?film_link rdfs:comment ?film_abstract 
    FILTER (langMatches( lang(?film_abstract), "EN")) .
    ?film_link  foaf:name ?film_name .
    ?film_title foaf:page ?wikipage .

    }
前缀rdfs:
前缀rdfs:
前缀foaf:
选择不同的(?电影链接)?电影摘要?电影名称?维基页面
在哪里{
?胶片链接rdf:类型。
?电影链接rdfs:评论?电影摘要
过滤器(langMatches(lang(?film_抽象),“EN”))。
?胶片链接foaf:名称?胶片名称。
?电影标题foaf:页面?维基页面。
}
但今天它显示:Virtuoso 42000错误估计执行时间99232592(秒)超过1500(秒)的限制。 我之前也看到过这个错误,但当我在一段时间后再次运行这样的查询时,它会运行。。
有人能解释一下错误的含义吗?

这意味着Virtuoso的查询计划器(Virtuoso是DBPedia运行的三重存储库)已经估计了计算查询所需的时间,并且认为这将花费太长的时间,所以拒绝运行查询

我怀疑问题在于您查询中的最后一个三重模式:

?film_title foaf:page ?wikipage
在这一点之前,您从未使用过这两个变量中的任何一个,因此您要求Virtuoso做的是将谓词位置处的
foaf:page
的每一个可能的三元组与查询其余部分的结果进行叉积

如果将其更改为以下内容,则应可以正常工作:

?film_link foaf:page ?wikipage

我怀疑这就是你想写的东西,尽管它仍然很慢,因为你的查询非常广泛,
FILTER
子句的评估通常非常缓慢。

为什么你不接受你问题的任何答案?这种行为不鼓励人们帮助你…为了解决我使用的这个问题,我将上面的查询分为两个查询,第一个是页面名称和链接,另一个是摘要。前缀rdfs:选择不同的(?film_-link)?film_-abstract,其中{film_-link rdf:type.?film_-link rdfs:comment?film_-abstract FILTER(langMatches(lang(?film_-abstract),“EN”)}仍然存在相同的问题。它得到解决时,我删除过滤器。过滤很重要,因为我只需要英语。在这方面,有人能帮我吗?除了“过滤”还有其他选择吗?没有
filter
是过滤语言的唯一方法。如果DBPedia拒绝您的查询,您可能需要研究从数据库转储创建DBPedia的本地副本。一个非常奇怪的现象正在发生。这个过滤器几天前还在工作,但dbpedia拒绝了它。你知道为什么会有这种行为吗?这取决于许多因素,它使用的确切查询,DBPedia上的当前负载等。DBPedia使用各种节流机制,因此,如果压力过大,或者您个人发出了很多查询,则可能不允许您作为复杂的查询运行。考虑在DbPEDI列表上询问DPEPEDIA-discussion@lists.sf.net更多信息