首页 文章

分页 SPARQL 结果

提问于
浏览
8

假设我有以下 SPARQL 查询:

SELECT DISTINCT ?result ?label
WHERE {
  ?result a database:Column .
  ?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))

我可以在查询中添加什么来将结果数限制为前 10 个?或者优选地,在第一个 n×10 结果之后的 10 个结果?我正在尝试实现分页以显示结果。

1 回答

  • 12

    我正在尝试为可视化返回数据的表实现一个分页系统。

    你想使用限制订单偏移。它们在标准中描述得非常好:

    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
    

相关问题