SPARQL:计算结果行
SPARQL: Count Result Lines
我有一个希望很容易回答的问题:他们在下面查询 returns 特定概念的更广泛概念以及分配给它的置信度值。我现在想做的是只计算有多少更广泛的概念(置信度高于最小阈值)。对此的答案应该是只计算结果行数。但是,我目前不明白在这种特殊情况下如何在 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)
不幸的是,这只有 returns 行,每行有一个 1。
我真正想要的是一个数字。
您可以尝试在线查询,public端点是:http://webisa.webdatacommons.org/sparql
感谢您的帮助!
显然,如果存在 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)
来确保只计算不同的上位词。
我有一个希望很容易回答的问题:他们在下面查询 returns 特定概念的更广泛概念以及分配给它的置信度值。我现在想做的是只计算有多少更广泛的概念(置信度高于最小阈值)。对此的答案应该是只计算结果行数。但是,我目前不明白在这种特殊情况下如何在 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)
不幸的是,这只有 returns 行,每行有一个 1。 我真正想要的是一个数字。
您可以尝试在线查询,public端点是:http://webisa.webdatacommons.org/sparql
感谢您的帮助!
显然,如果存在 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)
来确保只计算不同的上位词。