#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, второй вариант работает отлично!