2016-05-23 4 views
2

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

https://www.wikidata.org/w/api.php?action=wbsearchentities&language=da&limit=20&format=json&search=jordb%C3%A6r&uselang=da 

Мне нужно найти различные ингредиенты и пищевой материал.

Так что запрос ищет клубнику на датском языке. Моя проблема в том, что я получаю результаты, такие как картины и лица. Есть ли способ поиска в определенных категориях, таких как еда? или каким-то образом ограничивать «шум» «ложных» хитов?

Я попытался взглянуть на Викидату и искать в Google, но неясно, какие у меня варианты.

+0

Вы можете проверить экземпляр 'of' свойства (' P31') результатов, чтобы увидеть, если они принадлежат к такая же категория – leo

+0

Привет @leo извините за поздний ответ. Содержимое не соответствует 'P31', и, похоже, все они не имеют« экземпляра ». Я пришел к выводу, что это просто невозможно с едой/ингредиентами печально. –

ответ

0

Для этого вы можете использовать Wikidata Query Service.

Чтобы найти все продукты питания в датском, вы можете использовать запрос следующим образом:

SELECT DISTINCT ?food ?label WHERE { 
    ?food (wdt:P31?/wdt:P279*) wd:Q2095. 
    ?food rdfs:label ?label. 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "da". } 
    FILTER((LANG(?label)) = "da") 
} ORDER BY ?label 

query link

Или, чтобы получить все продукты питания, обозначенные «Jordbær» на датском языке, вы могли бы сделать что-то вроде этого:

SELECT DISTINCT ?food ?foodLabel WHERE { 
    ?food (wdt:P31?/wdt:P279*) wd:Q2095 ; 
     rdfs:label "Jordbær"@da; 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "da". } 
} 

query link

0

Я боюсь, что на данный момент нет простого способа получить такой индивидуальный результат поиска, но с такой же потребностью (для книг в our case) мы закончили с 2 обходами:

1 - поиск и фильтр

  • make a general search
  • собирать QIDS: здесь Q13158, Q14458220, Q12320330 и т.д.
  • fetch their claims
  • parse the result, чтобы получить список всех сущностей P31
  • фильтровать претензии, чтобы сохранить только объекты с P31 значением требуемого домена. Например, чтобы хранить только книги, мы сохраняем объекты, у которых есть претензии P31Q571 или what we consider being aliases of Q571. Этот список является статичным, потому что книги «скорее» соответствуют их значениям P31, но для вашего домена вам, вероятно, потребуется динамически генерировать этот список из a SPARQL query to get a complete list of things that are considered subclasses of food or ingredients.

2 - фильтр и поиск

  • сделать запрос SPARQL, что получить это все действительные результаты (см query.wikidata.org documentation), один раз для всех (но необходимо периодически обновлять)
  • поставить все эти результаты в вашей собственной поисковой системе.Смотрите наш Wikidata Subset Search Engine проект
  • тогда, когда это необходимо, сделать запрос на эту поисковую систему вместо