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

时间:2011-12-18 17:54:15

标签: sparql dbpedia

HI有一个查询在昨天仍然有效:

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 .

    }

但今天它显示:Virtuoso 42000错误估计执行时间99232592(秒)超过1500(秒)的限制。 我之前也看到过这个错误,但是当我运行一段时间后再次运行此类查询时... 任何人都可以解释错误的含义吗?

1 个答案:

答案 0 :(得分:3)

这意味着Virtuoso的查询规划器(Virtuoso是DBPedia运行的三元组)已经估计了评估查询需要多长时间,它认为它将花费太长时间,因此它拒绝运行查询。

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

?film_title foaf:page ?wikipage

在此之前你永远不会使用这些变量中的任何一个,所以你要求Virtuoso做的是在谓词位置与foaf:page的每个可能的三元组交叉产品,其结果在你的查询的其余部分。

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

?film_link foaf:page ?wikipage

我怀疑这是你的意思,无论如何这是有用的,虽然它仍然很慢,因为你的查询相当宽泛,FILTER条款通常很慢,无法评估。