SPARQL WikiData。如何只选择维基百科数据库并避免注释重复?

艾安·古姆

我是将SPARQL用于Wikidata的初学者。我用它来通过代码获取具有特定死亡日期的人的数据列表:

SELECT ?human ?humanLabel ?humanDescription ?gender ?birth_date ?death_date ?bplace ?dplace ?img ?prof ?profLabel ?article WHERE {
  ?human wdt:P31 wd:Q5;
    wdt:P18 ?img;
    wdt:P19 ?bplace;
    wdt:P20 ?dplace;
    wdt:P21 ?gender;
    wdt:P569 ?birth_date;
    wdt:P570 ?death_date;
    #rdfs:label ?name;
    #schema:description  ?description;
    wdt:P106 ?prof.
  ?article schema:about ?human .  
  ?article schema:inLanguage "en".
  FILTER (year(?death_date) = 2020)
  #FILTER(!REGEX(STR(?article), "^<https://en.wikipedia.org/"))
  SERVICE wikibase:label {bd:serviceParam wikibase:language "en".}
}
ORDER BY ASC(?death_date)

试试看!

但是响应中有一些重复项(并使响应变大)。另外,我只需要接收来自en.wikipedia.org的文章中的Wikipedia数据,但FILTER(!REGEX(STR(?article), "^<https://en.wikipedia.org/"))会使查询变得更加缓慢。

我该如何解决?

森诺克斯

您的查询存在一些问题:

生成的查询在不到30秒的时间内运行:https//w.wiki/UN8

一般来说,最好首先编写一个简单,快速的查询,以给出所有结果,然后加载其他数据,最后加载标签和描述。

至于重复项,您的查询将创建行结果的所有可能组合。因此,如果一个人在Wikidata上有两个出生日期,那么您将同时获得两个日期,如果有多个职业,则每个职业都有一个和另一个出生日期,因为这是查询的不同结果。如果您只想一个人,则必须汇总其他行,例如,将最小值排到那里,将其分组等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用什么SPARQL术语来引用维基百科类别

来自分类Dev

SPARQL请求注释

来自分类Dev

SPARQL请求注释

来自分类Dev

重复的SPARQL子查询

来自分类Dev

选择SPARQL查询的否定

来自分类Dev

在SPARQL中选择文字?

来自分类Dev

在SPARQL中选择文字?

来自分类Dev

sparql如何计算变量对

来自分类Dev

sparql如何计算变量对

来自分类Dev

维基百科如何管理数据库中的链接?

来自分类Dev

如何从Java访问Wikidata SPARQL接口?

来自分类Dev

Wikidata SPARQL:如何包含分组属性的标签

来自分类Dev

从单个SPARQL中选择属性

来自分类Dev

在 SPARQL 中选择嵌套位置

来自分类Dev

从SPARQL结果集中检索数据

来自分类Dev

Sparql查询出处元数据

来自分类Dev

如何从Sparql代数解析元素

来自分类Dev

sparql wikidata标识符参考

来自分类Dev

Wikidata SPARQL:获取子类但还返回父类

来自分类Dev

sparql如何正确分组此数据

来自分类Dev

如何使用 mwapi 库获取维基百科页面?

来自分类Dev

进行SPARQL查询时重复的行

来自分类Dev

SPARQL DISTINCT在Virtuoso中提供重复项

来自分类Dev

如何输出简单的维基百科行数据?

来自分类Dev

如何从希伯来语维基百科获取数据?

来自分类Dev

SPARQL:按国家/地区选择人员

来自分类Dev

SPARQL:按国家/地区选择人员

来自分类Dev

嵌套选择上的Sparql语法错误

来自分类Dev

使用SPARQL更新修改数据