我最近一直在学习sparql,并对空白节点感到困惑。是否可以使用空白节点链接来自多个数据集的数据?还是仅用于一个数据集?那么这个空白节点的具体用途是什么?
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0-1/>
SELECT DISTINCT ?class
WHERE {[] a ?class}
上面是否已经使用不同的数据集或多个数据集进行查询?
答案 0 :(得分:2)
空白节点基本上是代词。
当您知道实体存在时可以使用它们,并且可以说一些有关它的信息,但是您不知道它的绝对标识符,URI,名称,因此您使用代词来引用它。
在示例查询中,您实际上并没有使用空白节点,因为[]
只是代替了公共?s
或任何其他变量。一个空白节点的更好示例将在这里-
:Fred :hasThing [ :hasColor :Blue ]
我们对“事物”一无所知,因此我们将其倾斜地引用。
已添加-
还要注意,在您的查询中,PREFIX
声明是没有意义的,因为声明的前缀在查询中不存在。它们不会导致包含列出的数据集(因为在此情况下不是数据集列表;它们只是语法糖,使查询中的其他URI更易于编写为前缀URI,例如foaf:Person
,而不是完全合格的URI(例如<http://xmlns.com/foaf/0.1/Person>
),也不排除其他URI。
(相切地讲,您的foaf:
前缀不正确,因为它带有连字符“ -
”,其中应该有一个点“ .
”。)
此查询与您的查询相同-
SELECT DISTINCT ?class
WHERE { ?s a ?class }