为什么这个维基数据查询的不是 select 个荷兰省份
Why does this wikidata query not select dutch provinces
我正在尝试在维基数据中查询所有子国家/地区行政单位的人口数量。
如果我手动查找荷兰省或俄罗斯州或法国地区,此信息似乎适用于大多数此类子国家/地区。
我创建了以下查询:
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 是 "administrative territorial entity",P17(土地 = 国家),P31(is_een = is_a),P1082(inwonertal = 人口)
本次查询returns只有4271条结果。为什么查询会丢失 https://www.wikidata.org/wiki/Q694(南荷兰省)?也许是因为 Q694 是 Q134390(荷兰省)的一个实例,它是 Q56061(行政领土实体)的子class?
查询应该是什么样子来过滤 Q56061(adm 领土实体)以及 Q56061 的所有子classes?为了限制输出,我最好只过滤 Q56061 的低于 Q6256(国家/地区)一个地理级别的子 classes。可以吗?
使用 ?land wdt:P31 wd:Q56061
您仅查询 Q56061 ("administrative territorial entity") 的实例。
大多数实体,例如 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 ("first-level administrative country subdivision"):
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
我正在尝试在维基数据中查询所有子国家/地区行政单位的人口数量。 如果我手动查找荷兰省或俄罗斯州或法国地区,此信息似乎适用于大多数此类子国家/地区。
我创建了以下查询:
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 是 "administrative territorial entity",P17(土地 = 国家),P31(is_een = is_a),P1082(inwonertal = 人口)
本次查询returns只有4271条结果。为什么查询会丢失 https://www.wikidata.org/wiki/Q694(南荷兰省)?也许是因为 Q694 是 Q134390(荷兰省)的一个实例,它是 Q56061(行政领土实体)的子class?
查询应该是什么样子来过滤 Q56061(adm 领土实体)以及 Q56061 的所有子classes?为了限制输出,我最好只过滤 Q56061 的低于 Q6256(国家/地区)一个地理级别的子 classes。可以吗?
使用 ?land wdt:P31 wd:Q56061
您仅查询 Q56061 ("administrative territorial entity") 的实例。
大多数实体,例如 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 ("first-level administrative country subdivision"):
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