找到最接近另一个的两个点

时间:2016-04-01 10:09:11

标签: sparql

我有这样的数据集:

: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

1 个答案:

答案 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))

控制订单是升序还是降序。