如何在Sparql中选择一个等于彼此

时间:2012-05-01 08:53:41

标签: sparql

例如,有一个简单的select sparql查询:

SELECT *  Where  
{
  CT:A skos:broader ?A.  
  CT:B skos:broader ?B.  
  FILTER(?A=?B)  
} 

使用FILTER,可以轻松选择彼此相等的对象。 但是,当有更多三元组匹配时,例如,从CT:A skos:broader ?ACT:Z skos:broader ?Z,如何过滤那些符合?A=?B=?C=....?Z?的人 希望说清楚。

1 个答案:

答案 0 :(得分:4)

我认为您的查询应该写成

select ?a where { ct:a skos:broader ?a. ct:b skos:broader ?a }

表示您要为?askos:broader找到ct:a的值为ct:b的{​​{1}}。如果你想为所有ct:a, ct:b, ... ct:z提供等价物,那么你只需要重复这个模式:

select ?a where { ct:a skos:broader ?a. ct:b skos:broader ?a. ct:c skos:broader ?a ... ct:z skos:broader ?a }