【问题标题】:SPARQL Multiple Dataset with Blank nodes具有空白节点的 SPARQL 多数据集
【发布时间】:2019-03-25 13:33:30
【问题描述】:

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

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

【问题讨论】:

  • 是的,可以使用。为什么不呢?
  • 具体用法?匿名实体? N 元关系?
  • 另见“空白节点”标签信息:stackoverflow.com/tags/blank-nodes/info
  • 在 SPARQL 中,语法空白节点是变量。
  • 感谢@AndyS 提供的信息

标签: dataset sparql blank-nodes


【解决方案1】:

空白节点基本上是代词。

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

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

:Fred :hasThing [ :hasColor :Blue ]

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


添加--

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

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

此查询与您的相同 --

SELECT DISTINCT ?class
WHERE { ?s a ?class }

【讨论】:

猜你喜欢
  • 2018-05-10
  • 2017-04-12
  • 2017-10-11
  • 2018-03-13
  • 2016-03-14
  • 2017-10-22
  • 2014-03-16
  • 2017-11-03
  • 2020-07-21
相关资源
最近更新 更多