如何从SPARQL中的DBpedia中检索空白节点,并使用DISTINCT解释减少的结果

时间:2013-11-20 11:32:06

标签: sparql rdf semantic-web dbpedia blank-nodes

我想使用SPARQL查询检索空白节点。我使用DBpedia作为我的数据集。例如,当我使用以下查询时,我得到了大约340万个结果。

PREFIX prop:<http://dbpedia.org/property/>
select count(?x) where {
?x prop:name ?y
}

SPARQL results

当我使用DISTINCT解决方案修饰符时,我得到大约220万个结果。

PREFIX prop:<http://dbpedia.org/property/>
select count(DISTINCT ?x) where {
?x prop:name ?y
}

SPARQL results

我有两个问题:

  1. 第二个查询中是否删除了120万条记录重复或空白节点或其他内容?
  2. 如何从DBpedia中检索空白节点及其值?

1 个答案:

答案 0 :(得分:5)

获取空白节点

这样的查询可用于检索(最多10个)空白节点:

select ?bnode where {
  ?bnode ?p ?o
  filter(isBlank(?bnode))
}
limit 10 

然而,我没有结果。它看起来不像DBpedia数据中有空白节点(无论如何)。

使用DISTINCT并重复结果

您的查询返回不同数量的结果的原因是?x有多个名称。像你的第一个查询:

select count(?x) where { ?x prop:name ?y }

对数据如:

<somePerson> prop:name "Jim" .
<somePerson> prop:name "James" .

会生成2,因为有两种方法可以匹配?x prop:name ?y?x<somePerson>中都绑定?y,但select count(DISTINCT ?x) where { ?x prop:name ?y } 绑定了不同的名称。在像你的第二个查询:

?x

您明确只计算{{1}}的不同值,并且我的示例数据中只有其中一个。这是一种最终可以得到不同数量结果的方法,它不需要任何空白节点。