You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPARQL技术咨询:如何检索Wikidata中宝可梦列表(wd:Q106036966)的数据?

嘿,我来帮你理清这个Wikidata SPARQL查询的问题!

先解决你的核心需求:从列表中获取宝可梦

你提到的宝可梦列表实体wd:Q106036966,在Wikidata里是通过**P1542(列表项)**这个专属属性来关联它包含的每一只宝可梦的。用这个属性写SPARQL就能直接拉出列表里的所有成员:

SELECT ?pokemon ?pokemonLabel
WHERE {
  wd:Q106036966 wdt:P1542 ?pokemon.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
ORDER BY ?pokemonLabel

执行这个查询就能得到列表里的宝可梦实体和对应的中文名称啦。

为什么你之前找不到关联?

你说小火龙能向上追溯到这个列表,那是因为小火龙的实体里用了**P361(属于)**属性指向该列表——这是一种反向关联。你也可以用反向查询来获取所有属于这个列表的宝可梦:

SELECT ?pokemon ?pokemonLabel
WHERE {
  ?pokemon wdt:P361 wd:Q106036966.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
ORDER BY ?pokemonLabel

你之前遗漏的点就是这个P1542属性:它是Wikidata专门给“列表类实体”设计的,用来让列表主动关联自己的成员;而P361是成员用来关联所属列表的属性,两者都能实现你的需求。

更靠谱的获取所有宝可梦的方式

其实如果你的目标是拿到所有宝可梦,完全不需要通过这个列表——直接查询宝可梦的父类wd:Q864的子类/实例更可靠,因为列表可能存在更新不及时、遗漏的情况,而类的继承关系是Wikidata系统定义的:

SELECT ?pokemon ?pokemonLabel
WHERE {
  ?pokemon wdt:P279 wd:Q864. # P279代表"是...的子类/实例",匹配所有属于宝可梦类的实体
  SERVICE wikibase:label { bd:serviceParam wikibase:language "zh". }
}
ORDER BY ?pokemonLabel

这个查询会返回所有被标记为宝可梦的实体,范围更全也更准确。

内容的提问来源于stack exchange,提问作者Alejandro Sacanell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:37:42