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

时间:2014-08-13 04:25:24

标签: sparql rdf turtle-rdf

我是SPARQL和RDF的新手,我想知道SPARQL中下面究竟是什么意思?

[] vc:n ?vcard .

完整的查询

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 .}

}

2 个答案:

答案 0 :(得分:7)

  

这是我对What are brackets in SPARQL and why is the linked movie database limited to 2500 records?的答案所蚕食的,其中这个问题   可能是重复的,虽然它有点宽泛。 (它问两个   问题,而这只问一个。)答案主要是SPARQL规范的链接和引用。

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

方括号在SPARQL 1.1 Query Language中描述。特别是,请参阅4.1.4 Syntax for Blank Nodes

  

4.1.4 Syntax for Blank Nodes

     

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

     

空白节点由标签表单指示,例如"\_:abc",   或缩写形式"[]"。仅在一个中使用的空白节点   可以使用[]指示查询语法中的位置。独特的空白   节点将用于形成三重模式。空白节点标签是   写为"_:abc",标记为“abc”的空白节点。同样的空白   节点标签不能用于两种不同的基本图形模式中   相同的查询。

     

[:p :v]构造可用于三重模式。它创造了一个   空白节点标签,用作所有包含的主题   谓词 - 对象对。创建的空白节点也可以用于   主题和对象位置的进一步三重模式。

     

以下两种形式

[ :p "v" ] .
[] :p "v" .
     

分配一个唯一的空白节点标签(此处为“b57”)并相当于   写作:

_:b57 :p "v" .
     

此分配的空白节点标签可用作主题或对象   进一步三重模式。例如,作为主题:

[ :p "v" ] :q "w" .
     

相当于两个三元组:

_:b57 :p "v" .
_:b57 :q "w" .
     

并作为对象:

:x :q [ :p "v" ] .
     

相当于两个三元组:

:x  :q _:b57 .
_:b57 :p "v" .

答案 1 :(得分:4)

[]是查询中的空白节点。它的作用类似于命名变量,除非您无法在SELECT项目或FILTER或您需要命名变量的任何位置使用它。您可以使用未在查询中的任何位置使用的名称将[]替换为命名变量。 SELECT *会添加它,但除此之外它是相同的查询。