Я пытаюсь сейчас в течение нескольких часов выяснить, как получить различную информацию из dbpedia или LinkedGeoData. Я использовал этот интерфейс (http://dbpedia.org/snorql) и пробовал разные подходы, но так и не получил нужного мне результата.
Если я использую что-то вроде этого:
SELECT * WHERE {
?subject rdf:type <http://dbpedia.org/ontology/City>.
OPTIONAL {
?subject <http://dbpedia.org/ontology/populationTotal> ?populationTotal.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/populationUrban> ?populationUrban.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/areaTotal> ?areaTotal.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/populationUrbanDensity> ?populationUrbanDensity.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/isPartOf> ?isPartOf.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/country> ?country.
}
OPTIONAL {
?subject <http://dbpedia.org/ontology/utcOffset> ?utcOffset.
}
OPTIONAL {
?subject <http://dbpedia.org/property/janHighC> ?utcOffset.
}
OPTIONAL {
?subject <http://dbpedia.org/property/janLowC> ?utcOffset.
}
}
LIMIT 20
Я выхожу за пределы.
Я также пробовал это:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT * WHERE {
?subject rdf:type <http://dbpedia.org/ontology/City>.
?subject rdfs:label ?label.
FILTER ( lang(?label) = 'en'
}
LIMIT 100
Но это дает мне ошибку, которую я не понимаю. Если я удалю ФИЛЬТР, он сработает, но дайте мне метки на всех языках...
Я ищу что-то вроде этого http://dbpedia.org/page/Vancouver, но не все данные, но некоторые из них, такие как население, площадь, страна, высота над уровнем моря, широта, долгота, часовой пояс, label@en, abstract@en и т. д.
Может ли кто-нибудь помочь мне получить рабочий синтаксис?
Спасибо за помощь.
ОБНОВЛЕНИЕ:
Я получил это, чтобы работать до сих пор с:
SELECT DISTINCT *
WHERE {
?city rdf:type dbpedia-owl:Settlement ;
rdfs:label ?label;
dbpedia-owl:abstract ?abstract ;
dbpedia-owl:populationTotal ?pop ;
dbpedia-owl:country ?country ;
dbpprop:website ?website .
FILTER ( lang(?abstract) = 'en' && lang(?label) = 'en')
}
LIMIT 20
Но все еще не хватает лимитов, если я хочу получить все расчеты. Кстати. есть ли способ получить все города и населенные пункты в одной таблице?