python - sparql 查询的重复结果
问题描述
当我尝试从 wikidata 获取所有篮球运动员的名单时遇到的问题,我找不到任何帮助。首先我得到了玩家的数量(大约是 130k)。然后我正在创建具有特定偏移量和限制 2000 的查询。问题是无论偏移量是多少,我每次都会得到相同的 2000 个玩家。
(但是,如果我在https://query.wikidata.org/上,结果总是不同的)
这是我在 python 中创建查询的部分代码。
while(numberOfPlayers > 0):
numberOfPlayers-=2000
offset = 0
queryPlayersBlock = """SELECT ?item ?itemLabel
WHERE
{
?item wdt:P106 wd:Q3665646.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
offset """+str(offset)+"""
limit 2000
"""
players = get_results(endpoint_url,queryPlayersBlock)["results"]["bindings"]
for i in range (0,len(players)):
dataFile.write(str(players[i]["itemLabel"]["value"]+" : "+players[i]["item"]["value"].removeprefix("http://www.wikidata.org/entity/")+"\n"))
offset+=2000
我在 sparql 文档中发现:“使用 LIMIT 和 OFFSET 来选择查询解决方案的不同子集将没有用,除非使用 ORDER BY 可以预测顺序。” 但是当我使用 order by 我得到错误“查询超时限制达到”。
解决方案
推荐阅读
- python - 在 matplotlib 样式表中配置次要网格线颜色/alpha
- javascript - 在for循环中随机插入
- python - 即使在调用 pool.close 和 pool.join 之后,Python 多处理高内存使用率
- google-tag-manager - 数据层变量中的逗号分隔列表
- r - 如何遍历 ggplot2 中变量中的值/因子?
- java - 子类化 AssetsManager.AssetInputStream 以使用 BitmapFactory.decodeStream 读取它
- linux - 通过 Bash 更改 txt 文件
- html - Bootstrap 4折叠按钮不可点击
- facebook-graph-api - Instagram 企业帐户的历史关注者计数信息
- jsf - triStateCheckbox 不呈现初始值