2017-02-26 73 views
3

Wikidata SPARQL endpoint上,我正在尝试制作某些特定日记中引用文章次数的直方图。引用计数并未在数据库中明确显示,因此我必须首先对它们进行计数。但是,我基本上想要直方图来显示引用次数分布,即一次论文被引用X次的次数。所以,像这样:聚合SPARQL中的计数变量?

SELECT ?work (COUNT(?citing_work) AS ?count) 
      (COUNT(?count) AS ?hist) 
WHERE { 
    ?work wdt:P1433 wd:Q6294930. 
    ?citing_work wdt:P2860 ?work. 
} 
GROUP BY ?work ?count 
ORDER BY DESC(?count) 

但是这并不完全做我所希望的,并给出了零的这个HIST变量:

enter image description here

我也尽量不输出的标识?工作,但这实际上只是删除了第一列。但仍然给出了四行的引用计数为17。但我想要有一行?count = 17?hist = 4(请参见屏幕截图)。

如何更新此SPARQL查询?

回答

5

我认为你需要两个选择。我可以这样做:

#defaultView:LineChart 
select ?count (count(?work) as ?hist) where { 
    { 
    SELECT ?work (COUNT(?citing_work) AS ?count) 
    WHERE { 
     ?work wdt:P1433 wd:Q6294930. 
     ?citing_work wdt:P2860 ?work. 
    } 
    GROUP BY ?work 
    } 
} 
group by ?count 
order by ?count 
+0

哦,当然是嵌套的SELECT!我自己应该想到这一点。谢谢!!!! –

+1

甚至可以将“citing_work wdt:P2860?work”设置为可选,以包含没有任何引用的文章数量。 –