如何使用SPARQL在Wikidata上按属性过滤对象?

时间:2018-09-25 11:54:36

标签: sparql wikidata

我找不到一种按名称过滤对象的方法。例如,此查询应将国家对象限制为官方名称为“加拿大”的对象:

SELECT DISTINCT ?country ?official_name WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en,fr". }
  ?country wdt:P31 wd:Q6256.
  ?country wdt:P1448 ?official_name.
  ?country wdt:P1448 "Canada".
}
LIMIT 100

Here是指向查询的直接链接。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

了解这些情况后,使用完全模糊的过滤器比使用完全匹配测试最终会更快乐...但是您可以将下面的filter ( contains (str(?official_name), "Canada") )更改为filter ( str(?official_name) = "Canada")

SELECT DISTINCT ?country ?official_name WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en,fr". }
  ?country wdt:P31 wd:Q6256.
  ?country wdt:P1448 ?official_name.
# ?country wdt:P1448 "Canada".
  filter ( contains (str(?official_name), "Canada") )
}
LIMIT 100