Получите все шаблоны информационного окна Википедии и все страницы, которые их используют

На странице Википедии, такой как Wikipedia: Stack Overflow, часто есть информационные окна (в основном справа на вверху страницы). Пример снимка экрана:

Информационное окно Stackoverflow в Википедии

  1. DBPedia перечисляет все эти атрибуты как тройки RDF. Вы можете увидеть пример на странице DBPedia: Stack Overflow. Там вы видите свойство dbpprop:wikiPageUsesTemplate со значением dbpedia:Template:Infobox_website, которое интересно. Я хочу знать, на каких страницах Википедии используется этот шаблон. Как я могу это сделать и перечислить все страницы, которые используют шаблон Infobox_website? Желательно с запросом SPARQL, но я открыт для других простых решений.

  2. Далее следует список всех шаблонов Infobox. Wikipedia: Category Infobox Templates показывает иерархию желаемых категорий Википедии - это похоже на то, что я ищу. Но я хочу, чтобы все это было в машиночитаемом формате на одной странице. Может быть, DBPedia и здесь правильно? На странице DBPedia: шаблоны информации о категории и DBPedia: INFOBOX я нашел очень мало информации. Но они выглядят очень многообещающими. Как я могу использовать SPARQL для поиска всех типов инфобоксов, чтобы я мог повторно выполнять шаг 1 для каждого из них?

Вы можете использовать это для тестирования запросов SPARQL: http://dbpedia.org/snorql/

Обновление 1

Кажется, я решил проблему номер 1: SPARQL: перечислить все страницы с Infobox_website

Обновление 2

Кроме того, похоже, это запрос для проблемы номер 2: SPARQL: перечислить все информационные окна


person Alp    schedule 03.11.2011    source источник
comment
Ваш запрос обновления 1 теперь не возвращает результатов. У вас еще есть рабочее решение?   -  person Ben Dowling    schedule 13.08.2015
comment
извини, я тоже застрял. пожалуйста, дайте мне знать, если найдете решение   -  person Alp    schedule 13.08.2015
comment
Да нашел решение, добавлю в ответ   -  person Ben Dowling    schedule 13.08.2015


Ответы (3)


Предыдущие ответы, похоже, перестали работать. Требуется лишь небольшое изменение, чтобы заставить их работать в новой конечной точке запроса dbpedia по адресу http://live.dbpedia.org/sparql, хотя.

Чтобы получить список всех страниц и шаблонов, которые они используют, этот запрос работает:

SELECT * WHERE {  ?page  dbpprop:wikiPageUsesTemplate ?template . }

Просмотреть результаты (не более 100)

Если вы ищете конкретный шаблон:

SELECT * WHERE {  
   ?page  
   dbpprop:wikiPageUsesTemplate 
   <http://dbpedia.org/resource/Template:Infobox_website> . 
}

Просмотреть результаты

И для моего варианта использования меня интересует URL-адрес Википедии, а не страница DBPedia, поэтому я использую этот запрос:

SELECT ?wikipedia_url WHERE {  
   ?page  
   dbpprop:wikiPageUsesTemplate 
   <http://dbpedia.org/resource/Template:Infobox_website> . 
   ?page foaf:isPrimaryTopicOf ?wikipedia_url .
}

Просмотреть результаты

Я также использую curl, чтобы вывести результаты в скрипт:

$ curl -s "http://live.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=SELECT+%3Fwikipedia_url+WHERE+%7B+%0D%0A%09+%3Fpage+%0D%0A%09+dbpprop%3AwikiPageUsesTemplate+%0D%0A%09+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3AInfobox_website%3E+.+%0D%0A+%3Fpage+foaf%3AisPrimaryTopicOf+%3Fwikipedia_url+.%0D%0A%0D%0A%09%7D&format=text%2Ftab-separated-values" \
| tr -d \" | grep -v "^wikipedia_url$" | head
http://en.wikipedia.org/wiki/U.S._News_&_World_Report
http://en.wikipedia.org/wiki/FriendFinder
http://en.wikipedia.org/wiki/Debkafile
http://en.wikipedia.org/wiki/GTPlanet
http://en.wikipedia.org/wiki/Lithuanian_Wikipedia
http://en.wikipedia.org/wiki/Connexions
http://en.wikipedia.org/wiki/Hypno5ive
http://en.wikipedia.org/wiki/Scoop_(website)
http://en.wikipedia.org/wiki/Bhoomi_(software)
http://en.wikipedia.org/wiki/Brainwashed_(website)

Я не уверен, что это дает полный набор результатов, потому что он возвращает 1698 результатов, тогда как wmflabs.org, похоже, предполагает, что должно быть 4439.


Для второй части вашего вопроса требуется лишь небольшое изменение предыдущего запроса, чтобы получить список всех шаблонов:

SELECT DISTINCT ?template WHERE { 
    ?page  
    dbpprop:wikiPageUsesTemplate  
    ?template . 
    FILTER (regex(?template, "Infobox")) . 
} ORDER BY ?template

Просмотреть результаты

person Ben Dowling    schedule 13.08.2015
comment
Спасибо за обновления. Если вы добавите ссылки SPARQL на новую конечную точку с решением обеих проблем в вопросе, я отмечу это как принятый ответ. - person Alp; 13.08.2015
comment
Новая конечная точка не позволяет напрямую связываться с браузером запросов. Я все же добавлю ссылки на результаты. - person Ben Dowling; 13.08.2015
comment
Ой, позвольте мне также ответить на вторую часть - person Ben Dowling; 13.08.2015
comment
префикс dbpprop генерирует ошибку Undefined namespace prefix, замена ее на dbp, похоже, помогает - person maxlath; 23.01.2018

Хорошо, поскольку я, кажется, нашел решение (скорее всего, не лучшее), я хочу им поделиться.

1) Этот запрос SPARQL можно использовать для поиска всех страниц, содержащих определенный тип Infobox:

ВЫБЕРИТЕ * ГДЕ {? Page dbpedia2: wikiPageUsesTemplate ‹http://dbpedia.org/resource/Template:Infobox_website›. ? page dbpedia2: name? name. }

Ссылка на SNORQL


2) Этот SPARQL-запрос можно использовать для поиска всех типов инфобоксов:

ВЫБЕРИТЕ DISTINCT? Template WHERE {? Page dbpedia2: wikiPageUsesTemplate? Template. ФИЛЬТР (регулярное выражение (? Шаблон, «Инфобокс»)). } ORDER BY? Шаблон

Ссылка на SNORQL

person Alp    schedule 04.11.2011

Вы также можете использовать запрос embeddedin API MediaWiki, чтобы получить список всех страниц, содержащих данный шаблон. Вы захотите использовать библиотеку для доступа к API, но какой язык вы предпочтете? Для Ruby я бы предложил MediaWiki :: Gateway.

person lambshaanxy    schedule 04.11.2011
comment
они выглядят очень ограниченными. как вывести все типы инфобоксов сразу? - person Alp; 04.11.2011