我找不到一种按名称过滤对象的方法。例如,此查询应将国家对象限制为官方名称为“加拿大”的对象:
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是指向查询的直接链接。
有什么想法吗?
答案 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