将多个sparql变量绑定到一个变量中,这样一个变量就可用于排序结果

时间:2014-05-16 16:58:46

标签: rdf sparql semantic-web

基本上我有一些数据:

:student1 :hasAScore "4.1"
:student2 :hasAScore "2.7"
:student2 :hasBScore "2.1"

但在我的查询中,我想

select * where{
  ?a :hasAScore ?score1
  ?b :hasBScore ?score2
  //bind ?score1 as ?score and bind ?score2 as ?score too, so they can be ranked by "order by"
} order by(?score)

基本上我说我希望能够按照AScore或BScore的分数对学生进行排名。无论如何我可以得到某种结合?score1和?score2作为?得分,这样我就可以排名?得分

1 个答案:

答案 0 :(得分:3)

  

无论如何我可以拥有某种?score1和?score2的联盟   as?得分,以便我可以按分数排名

当然,您可以使用适当命名的union,如下所示。我假设你的意思是同一个学生同时拥有A分数和B分数,所以你实际上想要一个变量在主题位置。

select * where { 
  { ?student :hasAScore ?score } 
  union 
  { ?student :hasBScore ?score }
}

你甚至不需要在这里使用union。在SPARQL 1.1中,引入了属性路径,这意味着您可以编写:hasScoreA|:hasScoreB,如下所示:

select * where { 
  ?student :hasAScore|:hasBScore ?score
}