具有空白节点的SPARQL多个数据集

时间:2018-10-21 07:26:59

标签: dataset sparql blank-nodes

我最近一直在学习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}

上面是否已经使用不同的数据集或多个数据集进行查询?

1 个答案:

答案 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 }