微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

维基数据查询 - 如何将年份添加到城市人口中?

如何解决维基数据查询 - 如何将年份添加到城市人口中?

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

你知道如何正确添加吗?目前我得到了空结果。

这是我的查询

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

附注。只需将其粘贴到此处:https://query.wikidata.org/

解决方法

  • 第一个问题:您选择了 ?data,但实际变量是 ?date
  • 第二个问题:?population 是语句的对象,但 qualifiers 指的是整个语句,而不仅仅是它的对象。

要引用语句,您必须使用 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

我设置 LIMIT 10 是因为这是一个非常繁重的查询,有时会超时。

为了加深主题,我建议您阅读Wikidata:SPARQL tutorial§Qualifiers

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?