1

現在、アプリケーションに freebase データを使用しています...映画、テレビなどのドメインの一部の情報のみが必要です。tsv ダンプは将来サポートされなくなり、不完全であることがわかりました。クワッド ダンプには、必要なすべての情報が含まれています。問題はデータベースを更新することです。ダンプ全体を再度ダウンロードし、既にダウンロードして処理したデータと照合してから更新する必要があります。データを更新したり、デルタ更新を取得したりする他の方法はありますか?

4

2 に答える 2

1

Tom が指摘しているように、新しい RDF ダンプは件名別にソートされているため、ファイルを繰り返し処理することでデータセット全体を効率的に比較できます。基本的な擬似コードは次のとおりです。

  • 両方のファイルの先頭にあるプレフィックス ヘッダーをスキップする
  • 両方のファイルに次の行が残っています。
    • 各ファイルから 1 行を読み取る
    • 古いファイルのサブジェクト ID が新しいファイルのサブジェクト ID より大きい場合:
      • 同じサブジェクト ID を持つ新しいファイルから後続のすべての行を読み取る
      • この件名を「追加されたトピック」のリストに追加します
      • この件名を含むすべての行を「追加された事実」のリストに追加します
    • 古いファイルのサブジェクト ID が新しいファイルのサブジェクト ID より小さい場合:
      • 同じサブジェクト ID を持つ古いファイルから後続のすべての行を読み取る
      • この件名を「削除されたトピック」のリストに追加します
      • この件名を含むすべての行を「削除された事実」のリストに追加します
    • そうでなければ、両方のファイルのサブジェクト ID が一致する場合:
      • 両方のファイルから同じサブジェクト ID を持つすべての後続の行を読み取ります
      • 行を比較して、追加/削除された行を特定します
      • 追加されたすべての行を「追加された事実」のリストに追加します
      • 削除されたすべての行を「削除された事実」のリストに追加します
  • すべての変更リストを次の順序でマージして、パッチを出力します。
    1. 削除された事実
    2. 削除されたトピック
    3. 追加されたトピック
    4. 追加事実

このアルゴリズムは、メモリ使用量が非常に少ない線形時間で実行されるため、ローカル マシンで数ギガバイトのファイルを簡単に処理できます。

RDF ダンプの差分を取得したら、既存のデータベースにパッチを適用するためのコードを記述する必要があります。パッチが順序付けられているため、事実を追加または削除する前に、データベースに存在するトピックをいつでも利用できます。

于 2012-12-12T23:05:40.450 に答える
1

関心のあるドメインで、最後に更新してから変更されたものについて API を照会できますが、変更の量によっては、クォータの問題が発生する可能性があります。

インクリメンタル ダンプは生成されないため、2 つの完全なダンプを使用して自分で差分を生成する必要がありますが、新しい RDF ダンプはクアッド ダンプとは異なり、サブジェクト MID でソートされているように見えるため、特に簡単に行うことができます。

于 2012-12-11T20:04:42.273 に答える