Sparql查询超时,传递临时内存错误消息

时间:2014-06-30 17:38:36

标签: rdf sparql semantic-web dbpedia

我正在运行以下查询以吸引意大利的游客

select distinct ?poi where {?company a dbpedia-owl:Place ; rdfs:label ?poiName; dcterms:subject/skos:broader* category:Visitor_attractions_in_Italy } 

但我收到以下错误。

Virtuoso 42000 Error TN...: Exceeded 1000000000 bytes in transitive temp memory. use t_distinct, t_max or more T_MAX_memory options to limit the search or increase the pool SPARQL query: define sql:big-data-const 0 #output-format:application/sparql-results+json define input:default-graph-uri PREFIX owl: PREFIX xsd: PREFIX rdfs: PREFIX rdf: PREFIX foaf: PREFIX dc: PREFIX : PREFIX dbpedia2: PREFIX dbpedia: PREFIX skos: select distinct ?poi where {?company a dbpedia-owl:Place ; rdfs:label ?poiName; dcterms:subject/skos:broader* category:Visitor_attractions_in_Italy }

即使我在查询结束时使用限制10,我也会收到此错误。我知道这可能是一个耗时的查询,但不知道如何打破这个查询,以便最终得到所有的访客景点。

1 个答案:

答案 0 :(得分:4)

有人遇到了同样类型的问题,并在answers.semanticweb.com上询问了这个问题:Finding all possible categories between one given and Main classification with DBpedia and SPARQL。这里有一个不太令人满意的答案,答案也在这里:做出关于你实际需要走多远的决定,而不是使用*,使用{}表示法来表示skos的最大重复次数:更广泛。例如,

select distinct ?poi where {
  ?poi a dbpedia-owl:Place ;
       dcterms:subject/skos:broader{,10} category:Visitor_attractions_in_Italy
} 

SPARQL results

用于表示重复次数的{}符号实际上不是标准的一部分,尽管它在早期的草稿中。但是,基于Virtuoso的DBpedia端点仍然支持它。