SELECT FROM DEFAULT 实际上做了什么?

What does SELECT FROM DEFAULT actually do?

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

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

SELECT *
FROM DEFAULT
WHERE { ... }

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

FROM DEFAULT 是为未来工作提出的功能 sparql-1.2/issues/43

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

DEFAULT 关键字出现在 GraphOrDefault and GraphRefAll 中。两者都仅在 SPARQL 更新中使用。

ADD, MOVE, CODE 使用 GraphOrDefault; CLEARDROP 使用 GraphRefAll.

FROM 后跟 iriNAMED iri.

省略FROM表示隐式默认图。

如果查询中有一个或多个 FROMFROM NAMED 语句,则查询的数据集仅由这些图组成。每 SPARQL 1.1 Query Specification Section 13.2:

The FROM and FROM NAMED keywords allow a query to specify an RDF dataset by reference; they indicate that the dataset should include graphs that are obtained from representations of the resources identified by the given IRIs (i.e. the absolute form of the given IRI references). The dataset resulting from a number of FROM and FROM NAMED clauses is:

  • a default graph consisting of the RDF merge of the graphs referred to in the FROM clauses, and
  • a set of (IRI, graph) pairs, one from each FROM NAMED clause.

If there is no FROM clause, but there is one or more FROM NAMED clauses, then the dataset includes an empty graph for the default graph.

因此,基本上这些子句的存在会创建一个查询数据集,该数据集可能会隐藏基础数据集中的 some/all 图。您的查询操作此查询数据集。

中所述,FROM DEFAULT 是对 SPARQL 语言的拟议未来扩展,它将允许明确引用数据集默认图(无论可能是什么)。目前没有标准化的方法来做到这一点,所以只有省略任何 FROM 子句的查询才能访问默认图,除非您的服务提供一些非标准的方式来引用它,例如用于引用默认图形的自定义 URI。

对于您的特定示例查询:

SELECT *
FROM DEFAULT
WHERE { ... }

这会形成一个查询数据集,其中包含使用默认服务的默认图,并且没有可见的命名图,即任何 GRAPH ?g { } 子句在此查询中都不匹配