Sparql 为什么这个wikidata查询不选择荷兰省份

Sparql 为什么这个wikidata查询不选择荷兰省份,sparql,wikidata,Sparql,Wikidata,我正在试图查询wikidata,查找所有次国家行政单位的人口数量。 如果我手动查找荷兰省、俄罗斯州或法国地区,这些信息似乎适用于大多数此类次国家地区 我创建了以下查询: SELECT ?land ?landLabel ?is_een ?is_eenLabel ?inwonertal WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?land wdt:P31

我正在试图查询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(土地=土地),P1082(人口)

此查询仅返回4271个结果。例如,为什么查询遗漏了(南荷兰省)?可能是因为Q694是Q134390(荷兰省)的一个实例,而Q134390是Q56061(行政领土实体)的一个子类


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

使用
?land wdt:P31 wd:Q56061
只查询Q56061(“行政区域实体”)的实例

大多数实体,如,都是Q56061子类的实例。 要包含此类情况,您需要按如下方式调整查询:
?陆上wdt:P31/wdt:P279 wd:Q56061
。(P279是子类的Wikidata属性。)

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

要将输出限制为国家以下一个地理级别的实体,可以使用(“第一级管理国家细分”):

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