我有这样的数据集:
:p1 :pos 4
:p2 :pos 5
:p3 :pos 9
:p4 :pos 11
我想找到最接近另一个点的两个点,位置为6(在我的例子中为p1和p2)。我正在尝试这样的事情,但它不起作用:
SELECT ?point ?pos
WHERE{
?point :pos ?pos . FILTER(min(abs(?pos - 6)))
}
LIMIT 2
答案 0 :(得分:3)
MIN等函数应用于组。对于这样的事情,你可以使用ORDER BY和LIMIT:
select ?point where {
?point :pos ?pos
}
order by abs(?pos - 6)
limit 2
我不记得默认排序顺序是什么。如果该查询获得最远的两个点,请尝试
order by desc(abs(?pos - 6))
和
order by asc(abs(?pos - 6))
控制订单是升序还是降序。