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