sparql: случайным образом выбрать одно соединение для каждого узла

У меня есть следующие данные:

<node:1><urn:connectTo><node:2>
<node:1><urn:connectTo><node:3>
<node:1><urn:connectTo><node:4>
<node:2><urn:connectTo><node:10>
<node:2><urn:connectTo><node:11>
<node:2><urn:connectTo><node:12>
<node:3><urn:connectTo><node:21>
<node:3><urn:connectTo><node:13>
<node:3><urn:connectTo><node:41>
<node:3><urn:connectTo><node:100>
<node:4><urn:connectTo><node:119>
<node:4><urn:connectTo><node:120>

Как видите, каждый узел имеет несколько соединений. Я хочу выбрать одно соединение случайным образом для каждого узла. Как я могу это сделать? Я пробовал следующие запросы, но ни один не решил проблему:

select ?currentNode ?nextNode where {
  ?currentNode ?p ?nextNode
  BIND(RAND() AS ?orderKey)
}
ORDER BY ?orderKey
LIMIT 1
select ?currentNode SAMPLE(?nextNode) as ?nextNode1
where {
  ?currentNode ?p ?nextNode
}
GROUP BY ?currentNode

Примечание: результат дает первое соединение каждого узла, но не случайно

select ?currentNode ?nextNode (COUNT(?nextNode) AS ?noOfChoices)
where {
  ?currentNode ?p ?nextNode
  BIND(RAND() AS ?orderKey)
}
GROUP BY ?currentNode
ORDER BY ?orderKey
OFFSET (RAND()*?noOfChoices)
LIMIT 1

Ответы на вопрос(1)

Ваш ответ на вопрос