基本上我有一些数据:
: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作为?得分,这样我就可以排名?得分
答案 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
}