Пардон за ретроградство, но недавно я осознал, что википедия это не только энциклопедия, но и огромная база данных. После посещения конференции тамошний доклад про семантический веб как-то сильно меня затронул. Я конечно слышал про linkeddata и до этого, но никогда не воспринимал его всерьез и почему-то в этот раз это сильно задело, на википедию и на веб вцелом я стал смотреть по другому.
Например есть задачка, получить список стран и их площадь. Казалось бы, все просто, лезем, гуглим ищем, находим какой-нибудь приличный источник...Это подход прошлого и настоящего, в будущем мы будем осуществлять запрос к некой вселенской базе данных и получать инфу. Чем это отличается от настоящего, тоже базы данных и т.д.? Тем что из себя представляет эта вселенская БД - связанное множество источников знающих друг о друге и транслирующих себя в интернет.
Вернусь к задаче. Википедия это не структурированная база данных к которой можно делать запросы. Ее структурированной версией является
DBPedia. Чтобы решить нашу задачку надо составить правильный запрос на SPARQL - языке запросов который может запрашивать данных хранимые в формате RDF.
Наш будет выглядеть так:
select distinct * where
?country dbpprop:areaKm ?area .
}
Читается он так, выбери все неповторяющиеся (distinct) сущности Country и их площади в километрах. Чтобы понять какие есть параметры у сущностей, надо просто перейти по ссылке и посмотреть что есть в списке. Вместо dbpprop:area можно писать ссылкой:
http://dbpedia.org/property/areaKmselect distinct * where
}
Так как нам нужно на самом название страны, а не ее сущность, то расширим так. Вместо звездочки поставим названия переменных которые нам нужны, добавим еще одно свойство commonName (а - это сокращение для rdf:type).
select ?name ?area where
}
И наконец отфильтруем всякую фигню не на английском добавив FILTER:
select ?name ?area where
FILTER langMatches( lang(?name), "EN" )
}
Результат копируем и засовываем в
Virtuoso SPARQL Query Editor. Обратите внимание, что можно выбрать вывод сразу в CSV.
Еще подробные примеры можно найти
тут.