這可能很容易回答,但我甚至無法弄清楚如何制定Google查詢來找到它。如何在SPARQL構造查詢中遞歸地展開空白節點?
我正在寫包含空白節點的數據集的SPARQL構造查詢。所以,如果我不喜歡
CONSTRUCT {?x ?y ?z .} WHERE {?x ?y ?z .}
查詢然後我的結果之一可能是:
nm:John nm:owns _:Node
這是一個問題,如果所有的
_:Node nm:has nm:Hats
三元組也不會以某種方式進入查詢結果(因爲我使用的一些解析器就像rdf lib的Python真的不喜歡懸掛的bnodes)。
有沒有辦法寫我的原始CONSTRUCT查詢來遞歸地添加所有三元組附加到任何bnode結果,以便沒有bnodes留在我的新圖中懸掛?
如果你的方式,你可以運行構造查詢,然後運行鍼對一個SPARQL查詢這樣做,你其實可以* *獲得使用SPARQL查詢簡潔有界描述(CBD)。看看[Sparql查詢以遞歸方式返回組成rdfs:類定義的所有三元組](http://answers.semanticweb.com/questions/26220/sparql-query-to-return-all-triples-recursively- (並且可能[在SPARQL中實現簡明有界描述](http://answers.semanticweb.com/questions/20361/implementing-concise-bounded-description-in-sparql) )。 – 2015-03-19 14:10:01
在前面的評論中,答案背後的想法是你可以創建一個*新的屬性*,它有效地作爲屬性路徑中的謂詞。例如,對於每個IRI節點,您添加一個三重「i selfIRI i」。然後當你寫一個像「?x p/selfIRI?y」的路徑時,你已經確保?y是一個IRI節點。 – 2015-03-19 14:15:01