2016-04-01 20 views
1

に最も近い2つの点を見つける:私はこのようなデータセットを持っている別の

:p1 :pos 4 
:p2 :pos 5 
:p3 :pos 9 
:p4 :pos 11 

私は6(私の例では、P1とP2)の位置に別のポイントに最も近い2つの点を見つけたいです。私はこのようなものを試していますが、機能していません。

SELECT ?point ?pos 
WHERE{ 
    ?point :pos ?pos . FILTER(min(abs(?pos - 6))) 
} 
LIMIT 2 

答えて

3

MINのような機能はグループに適用されます。私はデフォルトのソート順序が何であるかぶっきらぼう覚えていない

select ?point where { 
    ?point :pos ?pos 
} 
order by abs(?pos - 6) 
limit 2 

:このような何かのために、あなたは、ORDER BYとLIMITを使用することができます。そのクエリは、最も遠いあなたに2点を取得した場合、順序が昇順か降順かどうかを制御する

order by desc(abs(?pos - 6)) 

order by asc(abs(?pos - 6)) 

を試してみてください。

+0

「abs(?pos-6)による注文」と「ascによる注文(abs(?pos-6))」のおかげで、 –

関連する問題