SELECT FROM DEFAULT 实际上是做什么的?

如何解决SELECT FROM DEFAULT 实际上是做什么的?

Sparql 有一个认图”的概念,当没有指定图上下文时会查询该图,并且它(取决于三元组存储)可能是存储库中可用图的联合,也可能是一个单独的图,"空图";到目前为止一切顺利。

但是 sparql 也有一个 keyword DEFAULT 可以指定而不是图形名称,如

SELECT *
FROM DEFAULT
WHERE { ... }

这个命令有什么作用?我只能将它解释为一种明确的方式来请求与根本没有 FROM 子句时会发生的相同的事情。但这是正确的吗?我找不到关于它的文档。那么如何在更新查询中使用它,或者与 CLEARcopY 等一起使用呢?任何人都可以指出这个关键字的含义和预期用途的文档,或者至少阐明它为什么存在?

解决方法

FROM DEFAULT 是一项已提议用于未来工作 sparql-1.2/issues/43 的功能。

该语法涵盖了 SPARQL 查询和 SPARQL 更新,因为它们共享了相当多的语法。它们有不同的入口点(QueryUnitUpdateUnit)。

DEFAULT 关键字出现在 GraphOrDefaultGraphRefAll 中。两者都只在 SPARQL 更新中使用。

ADDMOVECODE 使用 GraphOrDefaultCLEARDROP 使用 GraphRefAll

FROM 后跟 iriNAMED iri

省略 FROM 表示隐式默认图。

,

如果查询中有一个或多个 FROMFROM 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?