Я уверен, что то, что я хочу сделать, очень просто, но, похоже, я не могу правильно понять запрос. У меня есть записи в наборе данных, которые имеют такие значения, как название города, например. "Нью-Йорк" и соответствующий код страны, например "США". У меня также есть доступ к полному названию страны и ее кодам ISO.
Я хотел бы получить численность населения и абстрактные значения для этих городов из dbpedia, используя предложение where, например:
Get population where name = "New York" and isoCountryCode = "US"
Я искал помощи по этому поводу, но безрезультатно.
до сих пор @rohk любезно помогал мне с этим запросом, который не полностью работает для всех местоположений:
SELECT DISTINCT ?city ?abstract ?pop
WHERE {
?city rdf:type schema:City ;
rdfs:label ?label ;
dbpedia-owl:abstract ?abstract ;
dbpedia-owl:country ?country ;
dbpedia-owl:populationTotal ?pop .
?country dbpprop:countryCode "USA"@en .
FILTER ( lang(?abstract) = 'en' and regex(?label, "New York City"))
}
Вышеупомянутое работает для Нью-Йорка, однако, когда я меняю его на:
SELECT DISTINCT ?city ?abstract ?pop
WHERE {
?city rdf:type schema:City ;
rdfs:label ?label ;
dbpedia-owl:abstract ?abstract ;
dbpedia-owl:country ?country ;
dbpedia-owl:populationTotal ?pop .
?country dbpprop:countryCode "THA"@en .
FILTER ( lang(?abstract) = 'en' and regex(?label, "Bangkok"))
}
Нет результатов для Бангкока, Таиланд.
Я просто не могу правильно понять SPARQL-запрос, я уверен, что веду себя глупо с моим запросом. Если бы какой-нибудь гуру мог мне помочь, я был бы признателен. Спасибо!