我需要根據WHERE子句的相關數據位於鏈接開放數據雲中的條件來查詢本地Hibernate託管數據存儲以獲取持久化對象。有沒有辦法像RDF三元組一樣讀取Hibernate Session?
有沒有辦法將RDF作爲RDF讀取?如果是這樣,我至少可以使用組合數據集來決定從Hibernate中檢索哪些對象。
最好的解決方案會像我熟悉的那樣,在Jena內部展示Hibernate Session。另外,我需要支持RDFS推理和SPARQL進行檢索。
我需要根據WHERE子句的相關數據位於鏈接開放數據雲中的條件來查詢本地Hibernate託管數據存儲以獲取持久化對象。有沒有辦法像RDF三元組一樣讀取Hibernate Session?
有沒有辦法將RDF作爲RDF讀取?如果是這樣,我至少可以使用組合數據集來決定從Hibernate中檢索哪些對象。
最好的解決方案會像我熟悉的那樣,在Jena內部展示Hibernate Session。另外,我需要支持RDFS推理和SPARQL進行檢索。
這裏是因爲發佈什麼的問題,我發現:
有專門triplify Hibernate的Session沒有現成的工具。爲了實現我自己,我需要實現Graph或許使用GraphBase作爲基礎,或StageGenerator。因此,問題的答案是「沒有一個」,所以我繼續考慮如何實現它。
我需要決定是否對會話中已存在的對象進行升級(即已經被一些較早的查詢訪問過),依靠訪問數據庫或者同時執行這兩個操作。如果進入數據庫,我還需要決定是否加載整個對象,然後將其附加到會話中,或者使用投影來節省額外的數據到堆中,從而增加往返次數。
使用圖表對於支持推理來說顯然非常重要,儘管它比使用ARQs StageGenerator慢,因爲它可以查詢一組三重模式,但是這使得總是使用SPARQL非常重要,這似乎有點不靈活。
到目前爲止,最佳的解決方案似乎是:
還有一個叫做OpExecutor的SPI可能有助於將FILTER分辨率推入數據庫,從而進一步提高性能。
目前我已將此作爲一個側面項目,我可能將其作爲LGPL軟件發佈。
由於您將使用Jena(和ARQ)來執行SPARQL查詢,因此您可以使用自定義的FileManager
來解析Hibernate對象/圖形(假設您希望每個對象都由圖表表示)。
耶拿對使用FileManager
定位機型short HOWTO,和ARQ RDF dataset tutorial(見「描述數據集」一節),可給予一定的提示如何做圖形URI的更加個性化的映射(以及那些內容圖表作爲RDF數據集)映射到您現有的Hibernate管理的數據。
另一種選擇可能是創建映射到您現有的Hibernate架構的自定義SDB layout。我不知道在這方面SDB有多靈活。
當你說「查詢你的本地數據存儲」時,你的意思是Hibernate將執行查詢,或者你的意思是你希望Jena對原始數據執行查詢(並通過鏈接數據獲取RDF來加入數據) ? SQL或SPARQL中是否存在WHERE子句? – 2009-08-04 05:43:45
我希望WHERE子句是用SPARQL編寫的,所以Jena會負責。 – 2009-08-04 13:55:09