例如,有一个简单的select sparql查询:
SELECT * Where
{
CT:A skos:broader ?A.
CT:B skos:broader ?B.
FILTER(?A=?B)
}
使用FILTER
,可以轻松选择彼此相等的对象。
但是,当有更多三元组匹配时,例如,从CT:A skos:broader ?A
到CT:Z skos:broader ?Z
,如何过滤那些符合?A=?B=?C=....?Z?
的人
希望说清楚。
答案 0 :(得分:4)
我认为您的查询应该写成
select ?a where { ct:a skos:broader ?a. ct:b skos:broader ?a }
表示您要为?a
和skos: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 }