我希望有一个容易回答的问题:他们在下面的查询中返回特定概念的更广泛的概念以及分配给它的信任值。我现在要做的是,只计算有多少更广泛的概念(信心高于最低阈值)。解决这个问题的方法应该是只计算结果行。但是,在这种情况下,我目前不理解如何在SPARQL中使用COUNT关键字。
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX isa: <http://webisa.webdatacommons.org/concept/>
PREFIX isaont: <http://webisa.webdatacommons.org/ontology#>
select distinct ?hypernym ?minConfidence where
{
GRAPH ?g {
<http://webisa.webdatacommons.org/concept/_car_> skos:broader ?hypernym .
}
?g isaont:hasConfidence ?minConfidence .
FILTER(?minConfidence > 0.1)
}
ORDER BY DESC(?minConfidence)我试了一试:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX isa: <http://webisa.webdatacommons.org/concept/>
PREFIX isaont: <http://webisa.webdatacommons.org/ontology#>
select (count(*) as ?count) where
{
GRAPH ?g {
<http://webisa.webdatacommons.org/concept/_car_> skos:broader ?hypernym .
}
?g isaont:hasConfidence ?minConfidence .
FILTER(?minConfidence > 0.1)
}
ORDER BY DESC(?minConfidence)不幸的是,这只返回每行1的行。我真正想要的是一个数字。
您可以在线尝试查询,公共端点是:http://webisa.webdatacommons.org/sparql
谢谢你的帮助!
发布于 2018-03-28 14:12:30
显然,如果存在ORDER BY,则Virtuoso会进行分组,因此将其排除在外会产生预期的结果:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX isa: <http://webisa.webdatacommons.org/concept/>
PREFIX isaont: <http://webisa.webdatacommons.org/ontology#>
SELECT (COUNT(*) as ?count) WHERE
{
GRAPH ?g {
<http://webisa.webdatacommons.org/concept/_car_> skos:broader ?hypernym .
}
?g isaont:hasConfidence ?minConfidence .
FILTER(?minConfidence > 0.1)
}您还可以使用SELECT (COUNT(DISTINCT ?hypernym) AS ?count)来确保只计算不同的超限。
https://stackoverflow.com/questions/49507858
复制相似问题