Semantics SPARQL中的计数

Semantics SPARQL中的计数,semantics,rdf,sparql,dbpedia,Semantics,Rdf,Sparql,Dbpedia,好的,我有这个问题 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE { ?instance a <http://dbpedia.org/ontology/Ambassador> . } 前缀rdfs: 选择DISTINCT(COUNT(?instance)作为?COUNT),其中{ ?实例a。 } 结果是

好的,我有这个问题

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

SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador> . 
}
前缀rdfs:
选择DISTINCT(COUNT(?instance)作为?COUNT),其中{
?实例a。
}
结果是286。酷。现在我想知道拥有财产的大使人数。但是

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
}
前缀rdfs:
选择DISTINCT(COUNT(?instance)作为?COUNT),其中{
?实例a。
?实例?名称
}
结果533:(.因此计数更多,因为有人拥有此属性一次或多次。但我如何获得拥有此属性的大使的数量,而不管他们拥有此属性多少次。您可以在一个查询中完成此操作吗


谢谢。

您可能想试试这个:

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
}
前缀rdfs:
选择(计数(不同的实例)作为计数),其中{
?实例a;
名称
}

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

正如乔纳森的解决方案所示,你的问题不是重复,而是你说要得到不同的计数,而不是计数不同的实例。只有在SELECT中同时包含?实例和?名称时,才会出现多名称问题…注意,这是使用SPARQL 1.1功能:COUNT()-聚合-和SELECT中的变量。