假设我有以下SPARQL查询:
SELECT DISTINCT ?result ?label
WHERE {
?result a database:Column .
?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))
我可以在查询中添加什么来限制前10个结果的数量?或者优选地,在第一个 n×10 结果之后的10个结果?我正在尝试实现分页以显示结果。
答案 0 :(得分:11)
我正在尝试为可视化返回数据的表实现分页系统。
您希望使用限制,订购和抵消。他们在标准中描述得非常好:
15.4 OFFSET
OFFSET会导致生成的解决方案在指定后启动 解决方案的数量。 OFFSET为零无效。
使用LIMIT和OFFSET选择查询的不同子集 除非订单可以预测,否则解决方案将无用 使用ORDER BY。
15.5 LIMIT
LIMIT子句对解决方案的数量设置上限 回。如果在应用OFFSET后实际解决方案的数量, 大于极限,则最多为极限数量的解 将被退回。
在您的情况下,当您每页显示十个结果时,您的查询将显示第四页结果:
SELECT DISTINCT ?result ?label
WHERE {
?result a database:Column .
?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))
LIMIT 10
OFFSET 30