我正在運行具有任意長度屬性路徑的SPARQL 1.1查詢。 我可以在Sesame Sail Repository中非常高效地運行這些查詢。但是,他們運行速度非常緩慢,在Jena使用Dataset(由Graph創建)或Model(TDB)。Jena中適用於任意長度屬性路徑的倉庫
除了TDB或Graph之外,Jena還有其他可能嗎?
示例: 對於60 MB N3 RDF文件,具有約600,000三倍和以下查詢:
SELECT ?x ?y {
?x <http://relationship.com/wasRevisionOf>+ ?y .
?x <http://relationship.com/wasGeneratedBy>/<http://relationship.com/wasAssociatedWith> ?z1 .
?y <http://relationship.com/wasGeneratedBy>/<http://relationship.com/wasAssociatedWith> ?z2 .
FILTER(?z1 = ?z2 && ?x=<http://article.com/524910968> && ?y=<http://article.com/524753791>)
} LIMIT 3
隨着耶拿TDB花費14秒來執行該查詢,JENA格拉夫約38秒,並在芝麻賽歐庫內存中存儲只需要100-150毫秒。*
- 這100-150毫秒適用於從1MB每個文件大小設置爲200 MB,所需的三元組包括在所有的文件。
請注意,從結束的原因**「尋求調試幫助(」爲什麼不是這個代碼工作?「)的問題必須包括所需的行爲,特定的問題或錯誤以及在問題本身,沒有明確問題陳述的問題對其他讀者沒有用,請參閱:如何創建一個最小,完整和可驗證的示例。「**您能否提供一個示例,其中Jena中的屬性路徑非常緩慢,帆? –
你問:除了Model和Graph之外,Jena還有其他的可能嗎?但我認爲這不是一個正確的問題,因爲這些只是具有不同實現的接口。內存中的模型或圖表可能會很慢,但如果您有大量數據,則應該將數據存儲爲TDB數據集,該數據集具有索引,並且可能效率更高。 –
謝謝,我認爲這已經是答案。我會在TDB上做實驗,然後讓你知道。 –