Как отфильтровать объекты по свойству в Викиданных, используя SPARQL? - PullRequest
0 голосов
/ 25 сентября 2018

Я не могу найти способ фильтрации объектов по имени.Например, этот запрос должен ограничивать объекты страны официальными именами "Канада":

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

Здесь - прямая ссылка на запрос.

Любые идеи

1 Ответ

0 голосов
/ 25 сентября 2018

Зная, как все это происходит, вы, в конце концов, будете более счастливы с этим несколько нечетким фильтром, чем тест на точное совпадение ... но вы можете изменить 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
...