Разбивка результатов SPARQL
Предположим, у меня есть следующий запрос SPARQL:
SELECT DISTINCT ?result ?label
WHERE {
?result a database:Column .
?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))
Что я могу добавить к запросу, чтобы ограничить количество результатов первыми 10 данными? Или предпочтительно, 10 результатов после первых n×10 результатов? Я пытаюсь реализовать нумерацию страниц для визуализации результатов.
1 ответ
Я пытаюсь реализовать систему подкачки таблицы, которая визуализирует возвращаемые данные.
Вы хотите использовать предел, упорядочить и сместить. Они довольно хорошо описаны в стандарте:
15.4 СМЕЩЕНИЕ
OFFSET вызывает запуск сгенерированных решений после указанного количества решений. Смещение нуля не имеет никакого эффекта.
Использование LIMIT и OFFSET для выбора разных подмножеств решений запросов не будет полезным, если порядок не будет предсказуемым с помощью ORDER BY.
15.5 ПРЕДЕЛ
Предложение LIMIT устанавливает верхнюю границу количества возвращаемых решений. Если число действительных решений после применения OFFSET превышает предельное значение, то будет возвращено самое большее предельное количество решений.
В вашем случае ваш запрос будет выглядеть примерно так, чтобы показать четвертую страницу результатов, когда вы показываете десять результатов на странице:
SELECT DISTINCT ?result ?label
WHERE {
?result a database:Column .
?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))
LIMIT 10
OFFSET 30