我是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 .}
}
答案 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 *
会添加它,但除此之外它是相同的查询。