Я пытаюсь получить ВСЕ названия фильмов с их псевдонимами. Я использую запросы, как они (с увеличением OFFSET) и на первый, кажется, работает:Проблемы с получением всех названий фильмов из Wikidata с использованием SPARQL
SELECT ?itemLabel ?itemAltLabel WHERE {
?item wdt:P31 wd:Q11424.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
LIMIT 1000
OFFSET 0
В то время как он получает много действительных названий фильмов, некоторые из них не хватает, хотя я могу найти их на сайте викиданные , Я не могу управлять, чтобы сделать некоторые изменения в запросе (я новичок в SPARQL):
- Для отладки, я хочу, чтобы фильтровать itemLabel, что-то вроде
. ?itemLabel = 'fight club'
. Я пробовал разные варианты, но никто не работал. Можете ли вы помочь мне построить такой запрос? - Я хочу исключить фильмы, у которых нет itemLabel. В настоящее время они возвращают свой ID как itemLabel, например. "Q12345". Как добавить что-то вроде
. ?itemLabel != ""
? Или это должно быть. ?itemLabel NOT LIKE 'Q[0-9]+'
как-то? - Сортировка: Интересно, могут ли отсутствующие заголовки из-за не добавления какого-либо заказа. Я просто запускаю запросы с LIMIT 1000 и увеличиваю OFFSET с 1000 до тех пор, пока результатов не будет. Может ли изменение сортировки между запросами? Если да, я должен добавить
ORDER BY ?refName
?
Я могу сделать некоторые глупые синтаксические ошибки, поэтому, пожалуйста, предоставьте полные рабочие запросы, если сможете. Если есть что-то еще, что, по вашему мнению, может помешать мне получить ВСЕ доступные названия, дайте мне знать.
Я бег запросов здесь: https://query.wikidata.org/
Не используйте метки для отладки, если вы знаете экземпляр. Используйте 'FILTER (? Item = wd: Q190050)' - и он работает. Как вы уже узнали, без 'ORDER BY' нет гарантии, что вы получите все результаты, используя разбивку на страницы с помощью' LIMIT n OFFSET n' – AKSW
@AKSW благодарит за ваш комментарий. Если я пытаюсь «OREDER BY» '? Item' или'? ItemLabel', чаще всего это время истекает. Есть ли какая-нибудь другая область, которую я мог бы использовать, так что это не время? В MySQL я бы использовал индексированное поле. –
Нет, обычно тройные магазины имеют индексы для предметов, предикатов (p) и объекта (o), нередко в нескольких перестановках. В вашем случае будет использоваться 'pos'. Тем не менее, 'ORDER BY' стоит дорого, и на самом деле нет обходного пути. Обратите внимание, что это общий ресурс, поэтому производительность может быть ограничена. Кстати, каков ваш прецедент? Возможно, вы могли бы загрузить данные в свой собственный местный магазин. – AKSW