Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql 在某些情况下,维基数据中的首选排名不适合人群?_Sparql_Wikidata - Fatal编程技术网

Sparql 在某些情况下,维基数据中的首选排名不适合人群?

Sparql 在某些情况下,维基数据中的首选排名不适合人群?,sparql,wikidata,Sparql,Wikidata,所以我现在正在做一个项目,我使用从Wikidata获得的数据,我注意到我的数据库中有很多重复的元素。原因是我收到了不同时间点的人口数字 我读到Wikidata对具有多文件值的语句和人口属性进行了排名,这似乎是最新的值,大约99.9%的条目都是如此。我不明白的是为什么它对其他0.1%不起作用 一个例子是: 例如,元素也会发生同样的情况 我不知道为什么 我已经尝试了来自的解决方案,但没有改变结果 有什么想法吗 基于线程中的过滤器选项进行编辑: 编辑2:某些Wikidata属性由()处理

所以我现在正在做一个项目,我使用从Wikidata获得的数据,我注意到我的数据库中有很多重复的元素。原因是我收到了不同时间点的人口数字

我读到Wikidata对具有多文件值的语句和人口属性进行了排名,这似乎是最新的值,大约99.9%的条目都是如此。我不明白的是为什么它对其他0.1%不起作用

一个例子是:

例如,元素也会发生同样的情况

我不知道为什么

我已经尝试了来自的解决方案,但没有改变结果

有什么想法吗


基于线程中的过滤器选项进行编辑:


编辑2:

某些Wikidata属性由()处理

简而言之,bot生成最新的语句,因此生成它们

有时,bot不处理属性的语句。例如,bot不会处理包含没有相应限定符的语句的项

在您的特殊情况下:

选择不同的?城市?城市标签?人口?日期?排名在哪里{
值(?沉降){(wd:Q515)(wd:Q15284)}
值(?城市){(wd:Q1658752)}
?城市wdt:P31/wdt:P279*?结算。
?城市p:P1082?声明。
?报表ps:P1082?人口。
?声明wikibase:rank?rank
可选{语句pq:P585?日期}
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en”}
}按日期订购

结果:

+-------------+-----------+------------+----------------------+---------------------+
|    city     | cityLabel | population |        date          |         rank        |
+-------------+-----------+------------+----------------------+---------------------+
| wd:Q1658752 | Kagan     |      86745 |                      | wikibase:NormalRank |
| wd:Q1658752 | Kagan     |      17656 | 1939-01-01T00:00:00Z | wikibase:NormalRank |
| wd:Q1658752 | Kagan     |      21103 | 1959-01-01T00:00:00Z | wikibase:NormalRank |
| wd:Q1658752 | Kagan     |      34117 | 1970-01-01T00:00:00Z | wikibase:NormalRank |
| wd:Q1658752 | Kagan     |      41565 | 1979-01-01T00:00:00Z | wikibase:NormalRank |
| wd:Q1658752 | Kagan     |      48054 | 1989-01-01T00:00:00Z | wikibase:NormalRank |
+-------------+-----------+------------+----------------------+---------------------+
你喜欢最近的陈述还是“永恒”的陈述

以下是您如何查找最新人口的方法:

选择不同的?城市?城市标签?人口在哪里{
值(?沉降){(wd:Q515)(wd:Q15284)}
值(?城市){(wd:Q1658752)}
?城市wdt:P31/wdt:P279*?结算。
城市p:P1082[ps:P1082?人口;pq:P585?日期1]
筛选器不存在{
?城市p:P1082[pq:P585?日期2]
过滤器(?日期2>日期1)}
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en”}
}

这就是你如何找到“永恒”的原因:

选择不同的?城市?城市标签?人口在哪里{
值(?沉降){(wd:Q515)(wd:Q15284)}
值(?城市){(wd:Q1658752)}
?城市wdt:P31/wdt:P279*?结算。
?城市p:P1082?声明。
?报表ps:P1082?人口。
筛选器不存在{?语句pq:P585[]}
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en”}
}


事实上,几乎70%(不是0.1%)具有
P1082
属性的条目没有此属性的首选语句。您的意思应该是带有
P1082
属性的条目,该属性具有多个truthy语句。回顾:

Truthy语句表示具有给定属性的最佳未弃用排名的语句。也就是说,如果属性
P2
有一个首选语句,那么只有
P2
的首选语句才会被认为是真实的。否则,
P2
的所有正常秩语句都被认为是真实的


是的,有
P1082
-语句的条目大约有0.5%有两个或更多的真实
P1082
-语句。

相关:我已经尝试过了,但没有work@Wajora“不起作用”并不是一个很好的描述你到底尝试了什么,你得到了什么,你期望什么…请提供详细信息复制it@sIm很抱歉我编辑了这篇文章,并根据你的建议添加了我尝试过的内容。如果我理解您的建议,请更正,这是应该解决的问题,但它仍然选择重复项。您修改后的查询包括
过滤器(?date>?population)
,这似乎毫无意义。我建议您也修改缩进以使查询结构更清晰。我意识到我仍然不太理解为什么在这种情况下preferentialbot不处理日期。您说过它不会处理包含没有相应限定符的语句的项,但在本例中时间点日期不是限定符吗?值为86745的语句没有P585限定符:@Wajora,因此,bot不会处理所有具有P1082属性的语句。您可以编辑我的答案,以便更清楚地说明这一点,我的英语很差……为了比较,请在我的第一个查询中将
wd:Q1658752
替换为
wd:Q887