【问题标题】:Counting in SPARQL在 SPARQL 中计数
【发布时间】:2011-08-23 09:51:39
【问题描述】:

好的,我有这个问题

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador> . 
}

结果是 286。很酷。现在我想获取拥有http://dbpedia.org/property/name 属性的大使的数量。但是

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador> . 
?instance <http://dbpedia.org/property/name> ?name
}

结果为 533 :(。因此计数更多,因为有人拥有此属性一次或多次。但是无论他们拥有多少次,我如何获得拥有此属性的大使的数量。可以您在单个查询中执行此操作吗?

谢谢。

【问题讨论】:

  • 正如乔纳森的解决方案所示,您的问题不是重复,而是您说要获得不同的计数,而不是计算不同的实例。只有在 SELECT 中同时包含 ?instance 和 ?name 时才会出现多名称问题...

标签: semantics rdf sparql dbpedia


【解决方案1】:

你可能想试试这个:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT (COUNT(DISTINCT ?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador>; 
          <http://dbpedia.org/property/name> ?name
}

它给了我一个 283 的结果,这可能是正确的,也可能不是正确的 :)。

【讨论】:

  • 请注意,这是使用 SPARQL 1.1 功能:COUNT() - 聚合 - 以及 SELECT 中的变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多