如何解决SELECT FROM DEFAULT 实际上是做什么的?
Sparql 有一个“默认图”的概念,当没有指定图上下文时会查询该图,并且它(取决于三元组存储)可能是存储库中可用图的联合,也可能是一个单独的图,"空图";到目前为止一切顺利。
但是 sparql 也有一个 keyword DEFAULT
可以指定而不是图形名称,如
SELECT *
FROM DEFAULT
WHERE { ... }
这个命令有什么作用?我只能将它解释为一种明确的方式来请求与根本没有 FROM 子句时会发生的相同的事情。但这是正确的吗?我找不到关于它的文档。那么如何在更新查询中使用它,或者与 CLEAR
、copY
等一起使用呢?任何人都可以指出这个关键字的含义和预期用途的文档,或者至少阐明它为什么存在?
解决方法
FROM DEFAULT
是一项已提议用于未来工作 sparql-1.2/issues/43 的功能。
该语法涵盖了 SPARQL 查询和 SPARQL 更新,因为它们共享了相当多的语法。它们有不同的入口点(QueryUnit 和 UpdateUnit)。
DEFAULT
关键字出现在 GraphOrDefault 和 GraphRefAll 中。两者都只在 SPARQL 更新中使用。
ADD
、MOVE
、CODE
使用 GraphOrDefault
; CLEAR
和 DROP
使用 GraphRefAll
。
FROM
后跟 iri
或 NAMED iri
。
省略 FROM
表示隐式默认图。
如果查询中有一个或多个 FROM
或 FROM NAMED
语句,则查询的数据集仅由这些图组成。每SPARQL 1.1 Query Specification Section 13.2:
FROM 和 FROM NAMED 关键字允许查询通过引用指定 RDF 数据集;它们表明数据集应该包括从给定 IRI 标识的资源的表示中获得的图形(即给定 IRI 引用的绝对形式)。由多个 FROM 和 FROM NAMED 子句生成的数据集是:
- 默认图由 FROM 子句中引用的图的 RDF 合并组成,以及
- 一组(IRI、图形)对,每个 FROM NAMED 子句中的一个。
如果没有 FROM 子句,但有一个或多个 FROM NAMED 子句,则数据集包含一个默认图的空图。
因此,基本上这些子句的存在会创建一个查询数据集,该数据集可能隐藏底层数据集中的某些/所有图形。您的查询在此查询数据集上运行。
如 Andy's answer 中所述,FROM DEFAULT
是对 SPARQL 语言的拟议未来扩展,它将允许显式引用数据集默认图(无论是什么)。目前没有标准化的方法来做到这一点,所以只有省略任何 FROM
子句的查询才能访问默认图,除非您的服务提供了一些非标准的方式来引用它,例如用于引用默认图形的自定义 URI。
对于您的特定示例查询:
SELECT *
FROM DEFAULT
WHERE { ... }
这会产生一个查询数据集的效果,该查询数据集使用默认服务默认图形并且没有可见的命名图形,即任何 GRAPH ?g { }
子句在此查询中都不匹配
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。