使用SPARQL查询RDF时方括号"[]"的含义?

Nit*_*hur 5 rdf sparql turtle-rdf

我是SPARQL和RDF的新手,我想知道SPARQL中下面的确切含义是什么?

[] vc:n ?vcard .
Run Code Online (Sandbox Code Playgroud)

完整的查询是

PREFIX vc: <http://www.w3.org/2006/vcard/ns#>

SELECT ?given ?family

WHERE{

    [] vc:n ?vcard .

    OPTIONAL {?vcard vc:given-name ?given .}

    OPTIONAL {?vcard vc:family-name ?family .}

}
Run Code Online (Sandbox Code Playgroud)

Jos*_*lor 7

这是从我对SPARQL中的括号的回答中蚕食的,为什么链接的电影数据库限制为2500条记录?,这个问题 可能是重复的,虽然它有点宽泛.(它提出两个问题,而这只问一个.)答案主要是SPARQL规范的链接和引用.

[...]是一个空白节点

方括号在SPARQL 1.1查询语言中描述.特别参见4.1.4空节点的语法

4.1.4空节点的语法

图形模式中的空白节点充当变量,而不是对要查询的数据中的特定空白节点的引用.

空白节点由标签形式表示,例如"\_:abc",或缩写形式"[]".可以使用在查询语法中仅在一个位置使用的空白节点来指示[].将使用唯一的空白节点来形成三重模式.空白节点标签是"_:abc"针对标签为"abc"的空白节点编写的.相同的空白节点标签不能在同一查询中的两个不同的基本图形模式中使用.

[:p :v]构建体可以以三重模式使用.它创建一个空白节点标签,用作所有包含的谓词 - 对象对的主题.创建的空白节点还可以用于主题和对象位置中的其他三重模式.

以下两种形式

[ :p "v" ] .
[] :p "v" .
Run Code Online (Sandbox Code Playgroud)

分配一个唯一的空白节点标签(这里是"b57"),相当于写:

_:b57 :p "v" .
Run Code Online (Sandbox Code Playgroud)

该分配的空白节点标签可以用作其他三重模式的主题或对象.例如,作为主题:

[ :p "v" ] :q "w" .
Run Code Online (Sandbox Code Playgroud)

这相当于两个三元组:

_:b57 :p "v" .
_:b57 :q "w" .
Run Code Online (Sandbox Code Playgroud)

并作为一个对象:

:x :q [ :p "v" ] .
Run Code Online (Sandbox Code Playgroud)

这相当于两个三元组:

:x  :q _:b57 .
_:b57 :p "v" .
Run Code Online (Sandbox Code Playgroud)


And*_*dyS 6

[]是查询中的空白节点。它就像一个命名变量,只是你不能在SELECT项目FILTER或任何需要命名变量的地方使用它。您可以[]使用未在查询中的任何地方使用的名称替换为命名变量。 SELECT *会添加它,否则它是相同的查询。