Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组合SPARQL查询_Sparql - Fatal编程技术网

组合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}
}
}

谢谢,第二个将解决我的问题,而无需创建许多变量。谢谢,第二个将解决我的问题,而无需创建许多变量。