2012-12-11 41 views
1

我目前正在使用freebase數據爲我的應用程序...只想在電影,電視等領域的一些信息發現tsv轉儲將不被支持在未來,是不完整的。四元轉儲具有所需的所有信息。問題是更新數據庫,整個轉儲應該再次下載,並與已下載和處理的數據進行交叉檢查,然後進行更新。是否有任何其他方式來更新數據或獲取增量更新?有沒有辦法找到的遊離鹼的數據的增量更新?

回答

1

您可以在自己感興趣的域中查詢自上次更新以來發生更改的事件,但取決於可能遇到配額問題的更改數量。

沒有生成增量轉儲,因此您可以使用兩個完整轉儲自己生成差異,但這樣做很直接,因爲新的RDF轉儲似乎按照主題MID進行排序,與四元轉儲不同。

1

正如湯姆指出的那樣,新的RDF轉儲按主題進行排序,允許您通過遍歷文件有效地區分整個數據集。基本的僞代碼如下:

  • 在這兩個文件
  • 而有行留在這兩個文件的開頭跳過前綴頭:
    • 讀取每個文件一行
    • 如果從舊文件的主題ID是不是新文件的主題ID更大:
      • 讀取所有後續行從同一主題標識的新文件
      • 添加此蘇bject到的「添加主題」
      • 列表中添加的所有行這個主題,以「補充事實」
    • 其他的列表中,如果從舊文件的主題ID小於來自新文件的主題ID :
      • 讀取所有後續行從舊的文件與相同主題ID
      • 這個主題增添的「刪除主題」
      • 列表中添加的所有行這個主題爲「解除事實」
      • 名單
    • 否則,如果在這兩個文件主題的ID匹配:
      • 讀取兩個文件具有相同主題ID
      • DIFF線找出已添加以外的所有後續行/刪除
      • 添加所有添加行補充說:「事實」的名單
      • 全部去掉行添加到「已刪除的事實」
  • 輸出你的補丁通過合併人名單順序的變化l列出:
    1. 刪除事實
    2. 移除的主題
    3. 添加的主題
    4. 添加事實

該算法以線性時間用很少的內存使用情況運行,因此您可以在本地機器上輕鬆處理多GB的文件。

一旦你有RDF的差異轉儲,你需要編寫一些代碼補丁應用到現有的數據庫。由於修補程序的排序方式,在嘗試添加或刪除事實之前,可以始終依賴數據庫中存在的主題。

相關問題