gpt4 book ai didi

sparql - 为什么这个维基数据查询不选择荷兰省份

转载 作者:行者123 更新时间:2023-12-04 10:32:11 26 4
gpt4 key购买 nike

我正在尝试查询 wikidata 以获取所有子国家行政单位的人口数量。
如果我手动查找荷兰省、俄罗斯州或法国区,这些信息似乎适用于大多数此类子国家区域。

我创建了以下查询:

SELECT ?land ?landLabel ?is_een ?is_eenLabel ?inwonertal WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
?land wdt:P31 wd:Q56061.
OPTIONAL { ?land wdt:P17 ?land. }
OPTIONAL { ?land wdt:P31 ?is_een. }
OPTIONAL { ?land wdt:P1082 ?inwonertal. }
}
limit 10000

其中 Q56061 是“行政领土实体”,P17(土地 = 国家)、P31(is_een = is_a)、P1082(inwonertal = 人口)

此查询仅返回 4271 个结果。为什么查询会遗漏例如 https://www.wikidata.org/wiki/Q694 (南荷兰省)?也许是因为 Q694 是 Q134390(荷兰省)的一个实例,它是 Q56061(行政领土实体)的子类?

不仅要过滤 Q56061(adm 区域实体),还要过滤 Q56061 的所有子类,查询应该是什么样的?为了限制输出,我最好只过滤比 Q6256(国家)低一个地理级别的 Q56061 的子类。可以做到吗?

最佳答案

?land wdt:P31 wd:Q56061您仅查询 Q56061(“行政区域实体”)的实例。

大多数实体,例如 https://www.wikidata.org/wiki/Q134390 , 是 Q56061 子类的实例。
要包含此类情况,您需要按如下方式调整查询:?land wdt:P31/wdt:P279 wd:Q56061 . (P279 是子类的维基数据属性。)

通常,您希望包含子类的子类(以及向下的任意数量的级别)。这可以通过写 ?land wdt:P31/wdt:P279* wd:Q56061 来实现.但是,对于您的示例,这需要超过 60 秒的执行时间,因此它不会成功。

要将输出限制为低于国家/地区一个地理级别的实体,您可以使用 https://www.wikidata.org/wiki/Q10864048 (“一级行政区划”):

SELECT ?land ?landLabel ?is_een ?is_eenLabel ?inwonertal WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
?land wdt:P31/wdt:P279* wd:Q10864048.
OPTIONAL { ?land wdt:P17 ?land. }
OPTIONAL { ?land wdt:P31 ?is_een. }
OPTIONAL { ?land wdt:P1082 ?inwonertal. }
} limit 10000

关于sparql - 为什么这个维基数据查询不选择荷兰省份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60362532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com