Тайм-аут при получении результатов из викиданных

#sparql #wikidata

#sparql #wikidata-query-service

Вопрос:

Этот запрос для получения постеров фильмов из Викиданных приводит к ошибкам «Достигнут предел времени ожидания запроса» на query.wikidata.org:

 #defaultView:ImageGrid
SELECT ?item ?itemLabel ?pic ?fileTitle ?width ?height
WHERE
{
  ?item wdt:P31/wdt:P279* wd:Q11424 .
  ?item wdt:P3383 ?pic .
  BIND(STRAFTER(wikibase:decodeUri(STR(?pic)), "http://commons.wikimedia.org/wiki/Special:FilePath/") AS ?fileTitle)

  SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" 
  }

  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "commons.wikimedia.org";
                    wikibase:api "Generator";
                    wikibase:limit "once";
                    mwapi:generator "allpages";
                    mwapi:gapfrom ?fileTitle;
                    mwapi:gapnamespace 6; # NS_FILE
                    mwapi:gaplimit 1;
                    mwapi:prop "imageinfo";
                    mwapi:iiprop "dimensions".
    ?size wikibase:apiOutput "imageinfo/ii/@size".
    ?width wikibase:apiOutput "imageinfo/ii/@width".
    ?height wikibase:apiOutput "imageinfo/ii/@height".
  }

}
ORDER BY ?item
LIMIT 100
OFFSET 0
 

Установка нижнего предела работает с менее чем 100 результатами и удалением ORDER BY . Однако ORDER BY необходимо убедиться, что последующие запросы извлекают все результаты, и добавление ORDER BY ?item снова выдает ошибку тайм-аута. В идеале я хотел бы фильтровать по плакатам с минимальной шириной, но добавляя FILTER(?width>1500) время ожидания независимо от того, насколько низкий предел.

Какие-либо предложения по оптимизации запроса для последовательной и надежной работы? Даже если он возвращает только одно значение, запрос можно повторять до тех пор, пока не будут получены все значения.

Комментарии:

1. w.wiki/nx $

2. @StanislavKralin это выглядит неправильно? Ваш подзапрос не возвращает ?fileTitle значение, которое мы должны использовать для mwapi. Или в чем заключается магия вашего запроса? Насколько я понимаю, mwapi возвращает ширину и высоту для заданного имени файла? Также он хочет использовать разбивку на страницы, для которой, по крайней мере, теоретически order by необходимо.

3. @UninformedUser, да, моя ошибка. w.wiki /n $ 9

4. неплохо. но … придирка: небольшая опечатка в прагме представления, которая нарушает представление сетки: #defaultVew:ImageGrid -> #defaultView:ImageGrid

5. Спасибо @stanislav-kralin, второй вариант работает отлично!