Как найти все страницы Википедии, которые являются членами двух заданных категорий, используя DBpedia?

Я баловался с DBpedia пару лет назад и нахожу его увлекательным, но теперь, когда я хочу выполнить запрос после того, как не использовал его целую вечность, я нахожу его совершенно непроницаемым.

Какой SPARQL запрос я должен выполнить, чтобы получить набор всех страниц Википедии, входящих как в «Категорию ABC», так и в «Категорию XYZ»?

Все примеры, которые я могу найти, кажутся немного более сложными, чем мой, казалось бы, основной вопрос, что затрудняет выделение чего-то минимального.

(В качестве примера я хотел бы найти всех австралийских игроков, которые играли в профессиональный футбол за итальянские команды.)


person hippietrail    schedule 02.07.2012    source источник


Ответы (1)


Связь между ресурсами и категориями представлена ​​с помощью отношения dcterms:subject (в чем вы можете убедиться, перейдя, например, к представлению DBPedia для Элвис Пресли).

Итак, чтобы запросить все ресурсы, принадлежащие к двум категориям (например, «американские певцы» и «однояйцевые близнецы»), просто сделайте следующее:

SELECT ?res    
WHERE { 
 ?res dcterms:subject category:American_male_singers, category:Identical_twins .
} 

В общем, при попытке сформулировать запросы SPARQL через DBPedia полезно сначала немного просмотреть (как я сделал, просматривая страницу Элвиса), чтобы попытаться выяснить, какие свойства и отношения доступны.

Изменить Приведенный выше запрос, кстати, извлекает сами ресурсы DBPedia. Если вы хотите получить фактические страницы Википедии, вам следует адаптировать свой запрос следующим образом:

SELECT ?wikiPage   
WHERE { 
 ?res dcterms:subject category:American_male_singers, category:Identical_twins ;
      foaf:page ?wikiPage .
} 
person Jeen Broekstra    schedule 03.07.2012
comment
Я попробовал технику просмотра, как и раньше, но я забыл так много основ, что был ошеломлен. Но ваш ответ оказался даже проще, чем я себе представлял - отлично! - person hippietrail; 03.07.2012