SPARQL查询图中“值”的范围是什么

威廉·基纳(William Kinaan)

我有一个包含许多子查询的查询,其中也包含一些子查询。我想知道SPARQL查询中values子句的范围。它也归结到子查询吗?

如果我在子查询中定义了values子句,并在父查询中使用了相同的变量,那么该变量是否仅具有子查询中指定的值?(反之亦然?)

我查看了SPARQL 1.1规范,但发现的仅是以下内容,似乎并不能回答我的问题:

VALUES数据块可以出现在查询模式中或SELECT查询(包括子查询)的末尾。

约书亚·泰勒(Joshua Taylor)

SPARQL子查询从最内部到最外部进行评估。在外部查询块不可用于内查询。举个例子:

select ?x ?y ?z {
  values ?x { "x" }

  { select (?x as ?y) ("z" as ?z) {} }
}
-----------------
| x   | y | z   |
=================
| "x" |   | "z" |
-----------------

如果内部查询中有?x的值,则?y的值为“ x”,但没有。

另一方面如果选择了子查询中来自块的绑定可以将它们向外传递例如,在此查询中,子查询绑定?x?y,但仅投影?x

select ?x ?y {
  {
    select ?x {
      values ?x { "x" }
      values ?y { "y" }
    }
  }
}
-----------
| x   | y |
===========
| "x" |   |
-----------

官方的答案是在规格中,而不是在部分值上18.2.1 Variable Scope中它不是最容易遵循的表格,但需要注意的是以下规则:

组{P1 P2…}:如果v在P1,P2…中的一个或多个中处于范围内,则为范围内

这意味着模式的范围内变量集{ ... }被定义为内部出现的事物的范围内变量的并集。变量“向外”传递到其封闭形式,而不是相反。

我认为有一个例外,这是最外层查询之外的块,我认为与最外层查询内的几乎相同

select ?x ?y ?yy {
  { select (?y as ?yy) {} }
}
values (?x ?y) { (1 2) }
--------------
| x | y | yy |
==============
| 1 | 2 |    |
--------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS指令范围的默认值是什么?

来自分类Dev

在MarkLogic中的SPARQL中优化范围查询

来自分类Dev

@EnableTransactionManagement的范围是什么?

来自分类Dev

系统范围是什么?

来自分类Dev

在视图中更改范围值

来自分类Dev

点图中的标记值范围

来自分类Dev

MongoDB查询布尔值的语法是什么?

来自分类Dev

在查询中选择硬编码值的方式是什么?

来自分类Dev

临时SQL查询中@@ ProcId的返回值是什么?

来自分类Dev

对原子值进行排序的XPath查询的语法是什么?

来自分类Dev

用于获取图中所有内容的graql查询是什么

来自分类Dev

!a在SPARQL中是什么意思?

来自分类Dev

查询末尾的(+)是什么?

来自分类Dev

在聚集列的范围查询中表现更好的压缩策略是什么

来自分类Dev

在SQLite Android中创建视图表/查询?它的范围是什么?

来自分类Dev

python argparse的范围是什么

来自分类Dev

CMake政策的范围是什么?

来自分类Dev

Lua变量的范围是什么?

来自分类Dev

飞镖的词汇范围是什么?

来自分类Dev

React Context的范围是什么?

来自分类Dev

PHP的导入范围是什么?

来自分类Dev

imshow()中的范围是什么?

来自分类Dev

Javascript / Jquery的范围是什么?

来自分类Dev

Lua变量的范围是什么?

来自分类Dev

Kali Linux的范围是什么?

来自分类Dev

saltStack的镜头范围是什么?

来自分类Dev

有什么方法可以优化SPARQL查询?

来自分类Dev

SPARQL查询有什么问题?

来自分类Dev

运行sparql查询以获取浮点值