如何减少SPARQL查询Wikidata的查询时间?

如何减少SPARQL查询Wikidata的查询时间?,sparql,wikidata,Sparql,Wikidata,我想在英文维基百科上为人们创建出生和死亡的柱状图,但我在维基百科上遇到了查询时间限制 我提出了以下问题: PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt: <http://www.wikidata.org/prop/direct/> PREFIX schema: <http://schema.org/> SELECT ?item ?article ?_date_of_birth ?_date_o

我想在英文维基百科上为人们创建出生和死亡的柱状图,但我在维基百科上遇到了查询时间限制

我提出了以下问题:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX schema: <http://schema.org/>

SELECT ?item ?article ?_date_of_birth ?_date_of_death WHERE {
  ?item wdt:P31 wd:Q5.
  ?article schema:about ?item.
  ?article schema:isPartOf <https://en.wikipedia.org/>.
  OPTIONAL { ?item wdt:P569 ?_date_of_birth. }
  OPTIONAL { ?item wdt:P570 ?_date_of_death. }
}

LIMIT 10000
前缀wd:
前缀wdt:
前缀架构:
选择?项目?文章?出生日期?死亡日期在哪里{
?项目wdt:P31 wd:Q5。
?文章模式:关于?项目。
?文章模式:isPartOf。
可选{项目wdt:P569?\出生日期。}
可选{项目wdt:P570?死亡日期。}
}
限制10000

这本身工作得很好,但当我试图获取整个列表时,当我开始添加偏移量时,我遇到了大约
OFFSET 500000
的查询时间限制。根据Wikidata手册,我应该尝试优化我的查询,但是有没有办法优化它?维基百科上肯定有50多万人,因为只要找到“出生日期”模板的转义就可以产生60多万人

我也试过dbpedia,但有些已经过时了,比如穆罕默德·阿里在dbpedia上没有死亡日期


我也尝试过不过滤英文文章,即要求所有英文文章,然后在我这边过滤,但类似的缩放问题仍然存在,尽管偏移量要高得多。

您的查询相当简单,因此我看不到任何优化方法。注意,如果社区托管服务器速度变慢,您总是有机会将数据加载到您自己的三重存储中。顺便说一下,对于最近的Wikipedia数据,这里有DBpedia Live,托管:@AKSW我没有意识到有一个Live版本,感谢您注意,查询结果通常以任意和可变的顺序传递,因此,当您试图使用
LIMIT/OFFSET
对结果数据进行分页时,您还必须包含一个
ORDER BY
-否则,您从检索到的各种“页面”中收集的完整结果中可能会丢失和/或重复某些行。我也有类似的问题,所以我创建了一个Python程序来循环遍历许多个人的生日。然后我将所有Wikidata人员放在一个CSV中,该CSV托管在这里。很快我将上传一个范围更广的主要更新。