0

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

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

4

1 回答 1

2

空白节点基本上是代词。

当你知道一个实体存在时使用它们,你可以说一些关于它的事情,但你不知道它的绝对标识符、它的 URI、它的name,所以你使用代词来引用它。

在您的示例查询中,您并没有真正使用空白节点,因为[]它只是代替了 common?s或任何其他变量。空白节点的一个更好的例子是这里——

:Fred :hasThing [ :hasColor :Blue ]

我们对“事物”一无所知,所以我们间接地提及它。


添加 -

另请注意,在您的查询中,PREFIX声明是没有意义的,因为声明的前缀不会出现在您的查询中。它们不会导致包含列出的数据集(因为它们不是数据集的列表,在这种情况下;它们只是语法糖,使查询中的其他 URI 更容易编写为前缀 URI,例如foaf:Person,而不是完全限定的URI,如<http://xmlns.com/foaf/0.1/Person>),也不排除其他人。

(切线——你的foaf:前缀不正确,因为它有一个连字符,“ -”,它应该有一个点,“ .”。)

这个查询和你的一样——

SELECT DISTINCT ?class
WHERE { ?s a ?class }
于 2018-10-22T20:28:31.203 回答