People Finder Interchange Format — Google Person Finderのデータ交換標準フォーマット
PFIF(People Finder Interchange Format)は、自然災害や人為的災害によって行方不明になったり避難したりした人々に関するデータを共有するための、データモデルとXMLベースの交換フォーマットです。
PFIFは、複数の機関やサービスが独自に収集した行方不明者情報を統合し、重複や分散を防ぐために設計されました。現在の最新バージョンはPFIF 1.4(2012年5月29日リリース)です。
正式名称: People Finder Interchange Format
最新バージョン: PFIF 1.4(2012年5月29日)
仕様策定者: Ka-Ping Yee 他
ライセンス: GNU Free Documentation License 1.2
PFIFは以下の7つの設計原則に基づいています。
PFIFのデータモデルは、person レコードとnote レコードの2種類で構成されます。
行方不明者を特定するための静的な情報を格納します。25個のフィールドを持ちます。
| カテゴリ | 主なフィールド | 説明 |
|---|---|---|
| メタデータ | person_record_id |
一意識別子(必須)。ドメイン名/ローカルID形式。ドメインはオリジナルリポジトリを示す。 |
entry_date |
このコピーが保存されたUTC日時(増分更新用)。 | |
expiry_date |
レコード削除予定のUTC日時(プライバシー保護)。 | |
source_date, source_name, source_url |
データの起源情報。 | |
| 入力者情報 | author_name |
レコード入力者の氏名。 |
author_email |
入力者のメールアドレス。 | |
author_phone |
入力者の電話番号。 | |
| 人物情報 | full_name |
氏名(必須)。 |
given_name, family_name |
名・姓。 | |
alternate_names |
別名(カンマ区切り)。 | |
sex |
性別(male, female, other)。 |
|
date_of_birth, age |
生年月日・年齢。 | |
home_*(住所系) |
自宅住所(street, city, state, postal_code, country)。 | |
photo_url |
写真のURL。 | |
profile_urls |
SNS等のプロフィールURL(カンマ区切り)。 |
特定の人物の現在の状態や状況に関する情報を格納します。person_record_idで紐づきます。状態が変わった場合はpersonレコードを更新せず、新しいnoteを追加るのが基本です。
| フィールド | 説明 |
|---|---|
note_record_id | 一意識別子(必須)。 |
person_record_id | 紐づくpersonレコードのID(必須)。 |
author_name 等 | 入力者情報。 |
status | 状態(believed_alive, believed_missing, is_note_author, believed_dead, information_sought など)。 |
text | 本文(必須)。「無事です」「〇〇避難所にいます」など。 |
spam | スパム判定(true/false)。 |
author_made_contact | 入力者がその人と連絡を取ったか。 |
PFIFでは、レコードがどこで生まれ、どう伝播するかが厳密に定義されています。
person_record_id のドメイン部分が自ドメインと異なる場合はクローン。| フィールド | 意味 | 変 |
|---|---|---|
source_date | レコードがオリジナルリポジトリで作成された日時 | 固定(クローンでも同じ) |
entry_date | このコピーが現在のリポジトリに保存された日時 | リポジトリごとに異なる能性あり |
entry_date は増分更新(incremental update)のために使われます。前回受信した最大の entry_date 以降のレコードだけを取得すれば、差分更新が可能です。
PFIFには個人情報保護のための有効期限メカニズム(Data Expiry)が組み込まれています。
ユーザーが削除を要求した場合、expiry_date を現在時刻に設定することで、このメカニズムを通じて他のリポジトリにも削除が伝播します。
PFIFはXMLで表現されます。以下は最小限のPFIF 1.4ドキュメントの例です。
<?xml version="1.0" encoding="utf-8"?>
<pfif:pfif xmlns:pfif="http://zesty.ca/pfif/1.4">
<pfif:person>
<pfif:person_record_id>test.personfinder.google.org/1223</pfif:person_record_id>
<pfif:source_date>2013-06-20T09:21:12Z</pfif:source_date>
<pfif:full_name>Hiroshi Ichikawa</pfif:full_name>
</pfif:person>
<pfif:note>
<pfif:note_record_id>test.personfinder.google.org/1223.1</pfif:note_record_id>
<pfif:person_record_id>test.personfinder.google.org/1223</pfif:person_record_id>
<pfif:author_name>Mary Jacobs</pfif:author_name>
<pfif:source_date>2013-06-20T09:21:12Z</pfif:source_date>
<pfif:status>believed_alive</pfif:status>
<pfif:text>He is fine.</pfif:text>
</pfif:note>
</pfif:pfif>
PFIF XMLはそのまま使うほか、AtomフィードやRSSフィードに埋め込んで配信することも可能です。PFIF対応アプリケーションは入力ドキュメントから pfif:person 要素を抽出して他を無視するため、どの形式でも同様に処理できます。
Google Person Finderは、PFIFを内部データ形式およびAPIの入出力形式として使用しています。
| 用途 | エンドポイント |
|---|---|
| 検索 | https://www.google.org/personfinder/{repo}/api/search?key={key}&q={query} |
| 個別取得 | .../api/search?key={key}&id={person_record_id} |
| 書き込み | .../api/write?key={key}(PFIF XMLをPOST) |
| Personフィード | .../feeds/person?key={key} |
| Noteフィード | .../feeds/note?key={key} |
person_record_id と note_record_id は domain_name/unique_string の形式である必要があり、ドメイン名はAPIキー申請時に指定したものと一致させる必要があります。<pfif:person> 要素は100件までに分割するのが推奨されます。min_entry_date パラメータを使うことで、前回取得以降に追加・更新されたレコードだけを取得できます。これにより、他のデータベースとGoogle Person Finderを同期させることが可能です
同じ人を指す複数のpersonレコードが存在する場合、レコードをその場でマージしてはいけません。すべての元レコードを保持し、別途「これらのレコードは同じ人」を管理するのが推奨されます。これにより、データの信頼性と責任追跡性が維持されます。
other フィールドに fieldname: value 形式で格納。外部データの場合は domain/fieldname: value とする。note レコードとして追加する。| 項目 | 内容 |
|---|---|
| 名称 | PFIF(People Finder Interchange Format) |
| 目的 | 災害時の行方不明者・避難者情報の共有 |
| 形式 | XMLベース(RELAX NGスキーマで定義) |
| 最新版 | PFIF 1.4(2012年5月29日) |
| 中核モデル | person レコード + note レコード |
| 重要概念 | オリジナルリポジトリ、クローンレコード、source_date/entry_date |
| プライバシー | expiry_date による自動削除メカニズム |
| 主要利用例 | Google Person FinderのデータAPI・フィード |
PFIFは、災害時に分散する行方不明者情報を統合しつつ、データの信頼性とプライバシーを両立させるための、よく設計されたオープン標準フォーマットです。