组合SPARQL查询
我想获取人口最多和最少的州的人口。我知道如何使用组合SPARQL查询,sparql,Sparql,我想获取人口最多和最少的州的人口。我知道如何使用orderby(ASC和DESC)。如何在单个查询中组合这两个(ASC和DESC)呢 SELECT ?population { ?state rdf:type :State ?state :hasPopulation ?population. } ORDER BY DESC(?population) LIMIT 1 AND SELECT ?population { ?state rdf:type :State ?state :hasPopul
orderby
(ASC
和DESC
)。如何在单个查询中组合这两个(ASC
和DESC
)呢
SELECT ?population
{
?state rdf:type :State
?state :hasPopulation ?population.
} ORDER BY DESC(?population) LIMIT 1
AND
SELECT ?population
{
?state rdf:type :State
?state :hasPopulation ?population.
} ORDER BY ASC(?population) LIMIT 1
选择?人口最大值?人口最小值{
?状态\最大rdf:类型:状态。
?州最大值:人口?人口最大值。
?状态\最小rdf:类型:状态。
?州:人口?人口。
}按DESC(?population_max)ASC(?population_min)限制1排序
也许更有效:
选择*{
{
选择(?总体为?总体最大值){
?状态rdf:类型:状态。
?州:人口?人口。
}按描述(?总体)限值1排序
}
{
选择(?总体为?总体最小值){
?状态rdf:类型:状态。
?州:人口?人口。
}按ASC(?总体)限值1排序
}
}
使用AnzoGraph或Blazegraph,可以在这种情况下使用:
选择*
与{
选择?pop{[]a:State;:haspoplation?pop}
}作为未排序的%
在哪里{
{SELECT(?pop AS?max){INCLUDE%unsorted}按DESC(?pop)LIMIT 1}排序
{SELECT(?pop AS?min){INCLUDE%unsorted}按ASC(?pop)LIMIT 1}排序
}
最后,与其重写,不如合并:
选择(最大(?人口)作为人口最大值(最小(?人口)作为人口最小值){
?状态rdf:类型:状态。
?州:人口?人口
}
如果使用骨料。。。但是没有使用groupby
术语,则将其视为一个隐式组,所有解都属于该隐式组
选择?人口最大值?人口最小值{
?状态\最大rdf:类型:状态。
?州最大值:人口?人口最大值。
?状态\最小rdf:类型:状态。
?州:人口?人口。
}按DESC(?population_max)ASC(?population_min)限制1排序
也许更有效:
选择*{
{
选择(?总体为?总体最大值){
?状态rdf:类型:状态。
?州:人口?人口。
}按描述(?总体)限值1排序
}
{
选择(?总体为?总体最小值){
?状态rdf:类型:状态。
?州:人口?人口。
}按ASC(?总体)限值1排序
}
}
使用AnzoGraph或Blazegraph,可以在这种情况下使用:
选择*
与{
选择?pop{[]a:State;:haspoplation?pop}
}作为未排序的%
在哪里{
{SELECT(?pop AS?max){INCLUDE%unsorted}按DESC(?pop)LIMIT 1}排序
{SELECT(?pop AS?min){INCLUDE%unsorted}按ASC(?pop)LIMIT 1}排序
}
最后,与其重写,不如合并:
选择(最大(?人口)作为人口最大值(最小(?人口)作为人口最小值){
?状态rdf:类型:状态。
?州:人口?人口
}
如果使用骨料。。。但是没有使用groupby
术语,则将其视为一个隐式组,所有解都属于该隐式组
您可以使用UNION组合“最大”和“最小”人口。以下是AnzoGraph语法:
WITH (
SELECT ?pop
WHERE {
?state a :State ;
:hasPopulation ?pop
}
as <unsorted_pop>
)
SELECT *
WHERE {
{ SELECT (max(?pop) as ?population)
WHERE { QUERY <unsorted_pop> }
}
UNION
{ SELECT (min(?pop) as ?population)
WHERE { QUERY <unsorted_pop> }
}
}
与(
选择?弹出
何处{
?a国:国家;
:人口?流行音乐
}
像
)
挑选*
在哪里{
{选择(最大(?pop)作为总体)
其中{QUERY}
}
协会
{选择(最小(?pop)作为填充)
其中{QUERY}
}
}
您可以使用UNION组合“最大”和“最小”人口。以下是AnzoGraph语法:
WITH (
SELECT ?pop
WHERE {
?state a :State ;
:hasPopulation ?pop
}
as <unsorted_pop>
)
SELECT *
WHERE {
{ SELECT (max(?pop) as ?population)
WHERE { QUERY <unsorted_pop> }
}
UNION
{ SELECT (min(?pop) as ?population)
WHERE { QUERY <unsorted_pop> }
}
}
与(
选择?弹出
何处{
?a国:国家;
:人口?流行音乐
}
像
)
挑选*
在哪里{
{选择(最大(?pop)作为总体)
其中{QUERY}
}
协会
{选择(最小(?pop)作为填充)
其中{QUERY}
}
}
谢谢,第二个将解决我的问题,而无需创建许多变量。谢谢,第二个将解决我的问题,而无需创建许多变量。