我想了解SPARQL查詢的計算限制,並且我想知道如何編寫一個查詢來確定兩個對象之間是否存在定向路徑。使用SPARQL查詢找到最短路徑
我知道一個辦法做到這一點特定長度的路徑:
SELECT ?a ?b ?c ?d
WHERE { ?a <http://graphtheory/hasNeighbor> ?b .
?b <http://graphtheory/hasNeighbor> ?c .
?c <http://graphtheory/hasNeighbor> ?d .
FILTER (?a != ?c && ?b != ?d
&& ?a = <http://graphtheory/node/1>
&& ?d = <http://graphtheory/node/2>)
}
LIMIT 10
有沒有辦法在一個查詢中搜索任何長度的路徑? SPARQL是不可能的嗎?
謝謝,這清理了我採取了很多方法。解決方案中的一個小問題是PREFIX節點:應該是 (我相信)。一旦做出此更改,如果在節點1和2之間存在邊緣,則查詢返回true,但如果存在路徑但不存在邊緣,則返回false。 –
爲了在存在路徑但不存在邊時使查詢返回true,我將*運算符添加到hasNeighbor的末尾,即「ASK {node:1:hasNeighbor * node:2}」。沒有屬性路徑可以做到這一點嗎? –