Sparql Wikidata查询-如何将年份添加到城市';人口是多少?

Sparql Wikidata查询-如何将年份添加到城市';人口是多少?,sparql,wikidata,Sparql,Wikidata,我想得到每个城市的人口统计年份 您知道如何正确添加它吗?目前我得到的结果是空的 我的问题是: SELECT DISTINCT ?cityLabel ?population ?gps ?data WHERE { ?city (wdt:P31/(wdt:P279*)) wd:Q515; wdt:P1082 ?population; wdt:P625 ?gps. OPTIONAL { ?population wdt:P585 ?date. } # here I have a problem SERVI

我想得到每个城市的人口统计年份

您知道如何正确添加它吗?目前我得到的结果是空的

我的问题是:

SELECT DISTINCT ?cityLabel ?population ?gps ?data WHERE {
?city (wdt:P31/(wdt:P279*)) wd:Q515;
wdt:P1082 ?population;
wdt:P625 ?gps.
OPTIONAL { ?population wdt:P585 ?date. } # here I have a problem
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?population) LIMIT 100
注:只需将其粘贴到此处:

  • 第一个问题:您正在选择
    ?数据
    ,但实际变量是
    ?日期
  • 第二个问题:
    ?population
    是您语句的对象,但指的是整个语句,而不仅仅是它的对象
为了引用该语句,您必须使用
p:P1082
而不是
wdt:P1082

您可以通过以下查询获得所需内容:

SELECT DISTINCT ?cityLabel ?population ?gps ?date WHERE {
  ?city
    wdt:P31/wdt:P279* wd:Q515;
    wdt:P625 ?gps.
  ?city p:P1082 ?populationStatement .
  ?populationStatement ps:P1082 ?population .
  OPTIONAL { ?populationStatement pq:P585 ?date. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY DESC(?population)
LIMIT 10
我设置了
限制10
,因为这是一个非常繁重的查询,有时会达到超时

为了加深话题,我建议你阅读