如果查询中有一个或多个FROM
orFROM NAMED
语句,则查询的数据集仅由这些图形组成。根据SPARQL 1.1 查询规范第 13.2 节:
FROM 和 FROM NAMED 关键字允许查询通过引用指定 RDF 数据集;他们指出,数据集应包括从给定 IRI 标识的资源表示中获得的图表(即给定 IRI 引用的绝对形式)。由许多 FROM 和 FROM NAMED 子句产生的数据集是:
- 由 FROM 子句中引用的图的 RDF 合并组成的默认图,以及
- 一组 (IRI, graph) 对,每个 FROM NAMED 子句中的一个。
如果没有 FROM 子句,但有一个或多个 FROM NAMED 子句,则数据集包含一个空图作为默认图。
因此,基本上这些子句的存在会创建一个查询数据集,该数据集可能隐藏底层数据集中的一些/所有图形。您的查询在此查询数据集上运行。
正如Andy 的回答 FROM DEFAULT
中所指出的,SPARQL 语言的未来扩展建议将允许明确引用数据集默认图(无论可能是什么)。目前没有标准化的方法来执行此操作,因此只有省略任何FROM
子句的查询才能访问默认图,除非您的服务提供了一些非标准的方式来引用它,例如用于引用默认图的自定义 URI。
对于您的特定示例查询:
SELECT *
FROM DEFAULT
WHERE { ... }
GRAPH ?g { }
这将具有使用服务默认值和没有可见的命名图即任何子句在此查询中不匹配的默认图形成查询数据集的效果