2012-12-06 41 views

回答

0

RDF的一個有趣而實用的功能是數據和元數據都存儲在同一級別 - 基本上在一個圖表中(儘管下面有關於此的注意事項)。因此,在RDF中,您不必將單獨的位置(例如附加到數據庫表的元數據)記錄爲更新時間,而是將這些信息作爲三元組與數據本身一起放入。

因此,假設我將example:Book資源添加到我的三重商店。我可以簡單地一dcTerms:modified屬性添加到資源本身,編碼變更的日期:

example:eloquent_ruby 
    a example:Book ; 
    dcTerms:title "Eloquent Ruby"@en ; 
    dcTerms:modified "2012-12-07T08:00:00"^^xsd:dateTime. 

一個潛在的疑難雜症是,在這樣做,我將不得不相信使用該商店瞭解到,所有的應用程序modified triple表示資源更新的時間,而不是書本身的最後更新。如果資源類型更明顯地表示對事物的描述而非事物本身,則此模式可能更好,例如,如果主題資源是example:PatientRecord而不是example:Book

我可以減輕風險更新時間不明確的明確記錄更新主體資源的事件

example:eloquent_ruby 
    a example:Book ; 
    dcTerms:title "Eloquent Ruby"@en ; 
    dcTerms:identifier "0-321-58410-4". 

<urn:uuid:6ba3f8ea-4048-11e2-82bc-ab86fea9a379> 
    a example:UpdateEvent ; 
    example:about example:eloquent_ruby ; 
    dcTerms:modified "2012-12-07T08:00:00"^^xsd:dateTime ; 
    example:changed dcTerms:identifier , dcTerms:title. 

注意:您不必使用UUID作爲的主題更改記錄 - 任何其他合成的ID或甚至bNode都可以。就我個人而言,我最近使用的是bNodes較少,僅僅是因爲在UI中使用命名資源更容易。

如果在您的應用程序中,您不想將內容數據和源出版物元數據放入同一個RDF圖中,則可以將更新記錄放入不同的命名圖中。這意味着您必須記住在您使用的任何SPARQL查詢中使用圖名(除非您依賴Jena TDB的union default graph功能),但它確實允許您單獨管理內容數據和元數據,並將其隱藏用戶如有必要。

+0

有沒有辦法讓數據存儲設置時間,而不是我的應用程序? – user743556