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