我有一些數據包含屬性hasNextSibling
。我希望能夠查詢任意一組的兄弟姐妹。我可以很容易地得到所有兄弟姐妹在一個特定的點後,但我怎麼能檢索X和Y之間的兄弟姐妹。SPARQL查詢返回任意一組對象
例如,數據模型是老鞋子的孩子。有些兄弟姐妹是Fred,Brandy,Chris,Zack,Emma,Brad [等等]。這個清單當然要長得多。我想要說「給我所有從白蘭地到艾瑪的兄弟姐妹」的能力 - 返回白蘭地,克里斯,扎克,艾瑪。
我想有一個查詢是這樣的:
SELECT ?name WHERE {
?kid rdfs:label 'Brandy' .
?kid local:hasNextSibling+ ?sib .
?sib rdfs:label ?name .
// this is where I need to stop if ?name = 'Emma'
// but the graph still needs to complete and return all the other siblings
}
我不能簡單地篩選?name
比我結尾的名字少,因爲標籤(名稱)不以任何確定的或自然順序(因此需要hasNextSibling屬性來維護訂單)。
SPARQL首先生成整個列表,然後對其過濾。所以你的過濾器將在查詢執行後執行。你認爲什麼是這個問題? – Artemis
「因此需要同級屬性」您是否意味着該命令隱含在hasNextSibling屬性中?例如,firstSibling hasNextSibling secondSibling。 secondSibling hasNextSibling thirdSibling等?對於它的價值,如果示例兄弟姐妹沒有按字母順序排列,可能會避免一些混淆。 –
編輯該示例,希望澄清爲什麼無法執行簡單的過濾器。 –