Эффективный фильтр запросов в Викиданных - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь сформировать эффективный фильтр запросов в SPARQL на Wikidata.Позвольте мне объяснить мой процесс:

  1. Я запрашиваю API поисковых объектов, используя ключевые слова, например, (Apple, Orange)
  2. Запрос API возвращает список идентификаторов соответствующих элементов, например (wd: Q629269, ш.: Q154950, ш.: Q312, ш.определенные типы, например (p: P31 / ps: P31 / wdt: P279 * wd: Q43229) - который возвращает все, если это Организация или ее подкласс.
  3. Затем для элементов в списке идентификаторов, которые являютсяопределенного класса, вернуть информационные элементы, если они существуют, например (НЕОБЯЗАТЕЛЬНО).

Я новичок в SPARQL.Мой вопрос заключается в том, является ли это наиболее эффективным методом для достижения этого результата?Мне кажется, что это довольно неэффективно, и я не могу найти подобный тип проблемы в примерах учебника .

Вы можете попробовать запрос здесь .

    SELECT distinct ?item ?itemLabel ?itemDescription ?web ?inception ?ISIN
    WHERE{
      FILTER (?item IN (wd:Q629269, wd:Q154950, wd:Q312, wd:Q95, wd:Q4878289, wd:Q10817602))
      ?item p:P31/ps:P31/wdt:P279* wd:Q43229.
      OPTIONAL {
        ?item wdt:P856 ?web. # get item-web
        ?item wdt:P571 ?inception. # get item-web
        ?item wdt:P946 ?ISIN. # get item-isin
            }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
        }
LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...