生成结果集
SPARQL 的结果有四种形式:
- SELECT —— 返回一张结果表。
- CONSTRUCT —— 根据查询中的模板返回 RDF 图。
- DESCRIBE —— 根据查询处理器的配置返回 RDF 图形。
- ASK —— 进行布尔查询。
SELECT 形式直接返回解决方案表作为结果集,而 DESCRIBE 和 CONSTRUCT 则使用匹配结果来构建 RDF 图。
解决方案修饰符
模式匹配会产生一组解决方案。这组方案可以通过各种方式进行修改:
- Projection —— 只保留选定的变量。
- OFFSET/LIMIT —— 将解决方案进行截取(最好与ORDER BY一起使用)。
- ORDER BY —— 对结果进行排序。
- DISTINCT —— 对变量和数值的一种组合只产生一行(去重)。
上面的 OFFSET/LIMIT 和 ORDER BY 始终适用于所有结果形式。
OFFSET 和 LIMIT
可以通过指定偏移量(起始索引)和限制(返回的解的数量)来缩写解集。单独使用 LIMIT 可以确保不会返回过多的解,从而限制某些意外情况的影响。 LIMIT 和 OFFSET 可以与排序结合使用,对找到的解进行定义切分。
ORDER BY
SPARQL 解决方案按表达式(包括自定义函数)排序。
ORDER BY ?x ?y
ORDER BY DESC(?x)
ORDER BY x:func(?x) # Custom sorting condition
DISTINCT
SELECT 结果可以使用 DISTINCT 修饰符,以确保返回的解决方案中没有两个是相同的–这是在投影到请求的变量后进行的。
SELECT
结果形式是解决方案集的投影,应用了DISTINCT
CONSTRUCT
CONSTRUCT基于图模板构建RDF。图模板可以包含由WHERE子句绑定的变量。其效果是根据模板,计算每个WHERE子句的解决方案生成的图片段,考虑了任何解决方案修饰符。图片段(每个解决方案一个)合并为单个RDF图,这就是结果。
每次在解决方案中使用该模板时,图形模板中明确提及的任何空白节点都会重新创建。
DESCRIBE
CONSTRUCT 形式采用图结果的应用程序模板。DESCRIBE形式也创建一个图,但该图的形式由查询处理器提供,而不是应用程序。对于在DESCRIBE子句中找到的每个URI或显式提及的URI,查询处理器应该提供有用的RDF片段,例如书的所有已知细节。ARQ允许编写特定领域的描述处理程序。
ASK
ASK 结果形式返回一个布尔值,如果模式匹配则为 true,否则为 false。