如何对SPARQL中的项目进行分组,从而累积点击率较低的条目?

时间:2019-02-18 14:37:43

标签: sparql

如何统计SPARQL中的分组条目,合并数量少于特定因子的条目?

例如考虑Nobel Prize data。我可以使用类似的查询来获得所有姓氏的计数

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name (count(*) as ?count) WHERE {
  ?id foaf:familyName ?name
}
GROUP BY $name
ORDER BY DESC($count)

如何修改查询,使其仅返回至少出现3次的家族名称,并将其他名称累积为 other

1 个答案:

答案 0 :(得分:2)

只需将您的SELECT包装成另一个。

查询

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?name_ (SUM(?count) AS ?count_) {
  {
    SELECT ?name (COUNT(*) AS ?count) { 
      ?id foaf:familyName ?name
    } GROUP BY ?name
  }
  BIND (IF(?count > 2, ?name, "Other") AS ?name_)
} GROUP BY ?name_ ORDER BY DESC(IF(?name_ = "Other", -1 , ?count_))

结果

   name_       count_  
 ----------- --------- 
   Smith         5     
   Fischer       4     
   Wilson        4     
   Lee           3     
   Lewis         3     
   Müller        3     
   Other       878