このドキュメントは

A P3P Preference Exchange Language(APPEL)
W3C Working Draft 20 April 2000
http://www.w3.org/TR/2000/WD-P3P-preferences-20000420


の和訳です。

この文書には和訳上の誤りがありえます。
内容の保証はいたしかねますので、必ずW3C Webサイトの正式版文書を参照して下さい。
また、著作権等については本文書に含まれる記述に加え、こちらも必ず参照してください。




W3C

P3Pプリファレンス交換言語(APPEL)

W3Cワーキングドラフト 2000年4月20日

この版:
http://www.w3.org/TR/2000/WD-P3P-preferences-20000420
最新版:
http://www.w3.org/TR/P3P-preferences
旧版:
http://www.w3.org/TR/1998/WD-P3P-preferences-19980814
編集者
Marc Langheinrich, ETH Zurich <langhein@inf.ethz.ch>
著者
Lorrie Cranor, AT&T Labs-Research
Marc Langheinrich, ETH Zurich
Massimo Marchiori, W3C/MIT


要旨

本文書は、P3Pエージェントにおいて、 P3Pプライバシーポリシーに関するプリファレンスの集合を説明するための言語として、 P3P1.0 仕様書を補完するものである。 この言語を使うことにより、ユーザはP3P対応のWebサイトからの、 マシンが読むことができるプライバシーポリシーの受領に関して、 ユーザのユーザエージェントが自動、 または半自動で判断できるようになるプリファレンス-規則 (規則セットと呼ばれる) といったセットでユーザのプリファレンスを表現することができる。

本文書の位置付け

この章では、発行時における本文書の位置付けを説明する。 他の文書がこの文書にとって代わる可能性もある。 本文書のシリーズの最新の位置付けは、W3Cで決められる。

本書は、P3Pプリファレンスの置換言語のワーキンググループが W3Cメンバと他の関連団体とともにレビューを行うためのW3Cワーキングドラフトである。 本文書は、P3P活動の一環として作成され、 最終的にはW3Cの勧告となることを目指す。 ワーキングドラフト文書であるため、この仕様書はいつでも改版、置換、 または他の文書により陳腐化するかもしれない。従って、W3Cのワーキングドラフトを "進行中の作業"ではないとして参考文献資料、 その他として参照することは不適切である。現在のW3Cワーキングドラフトは、 http://www.w3.org/TR/を参照のこと。

このワーキンググループは、 P3Pプリファレンスの置換言語を開発するための幾つかの異なったアプローチについて考え、 ひとつのアプローチを文書で取り決め、フィードバックを行う。このグループは、 全般的な-目的言語 (例としては、 XML、またはRDF問い合わせ言語)を含む他のアプローチについても考える。 仕様書にフィードバックするならば、実験的な実装とプロトタイプの開発を奨励する。 しかしながら、このワーキンググループは、 本文書の将来的な版を変更させうる影響のあるような、早期の実装を許すものではない。

APPEL言語の本バージョンは、正しい規則を当てにしている。 ワーキンググループは特に、規則セットのマージと編集のより良いサポートに関して、 どのようにしてこの機構を改良するか、フィードバックを勧める。 どうか、このドラフト文書の例はP3P仕様書の 2000年4月4日 版が基本であることに注意されたし。そして、このような例は、 P3P仕様書の出版によって、改定すべきである。

このドラフト文書はW3CとそのメンバーによりW3Cの手順に従って考案される。 これは、P3Pの実装、受領、採用に影響する問題を担当するW3Cメンバシップと スタッフに対するコメントを一般から受ける目的で公開されている。

コメントは、 www-p3p-public-comments@w3.orgに送付すべきである。これは、フィードバックを 提供するのに好ましい方法である。公のコメントとその返答は、 http://lists.w3.org/Archives/Public/www-p3p-public-comments/にアクセスされたし。 あるいは、あなたのコメントを公にしたくない場合は、コメントをp3p-comments@w3.orgに送ることもできる。 この場合、あなたのコメントは、W3Cメンバからのみアクセス可能となる。 ( http://lists.w3.org/Archives/Member/p3p-comments/にて)


目次


1. 序論

本文書は、P3Pエージェントにおいて、 P3Pプライバシーポリシーに関するプリファレンスの集合を描写する言語を規定する。 この言語を使うことにより、ユーザはP3P対応のWebサイトからの、 マシンが読むことができるプライバシーポリシーの受領に関して、 ユーザのユーザエージェントが自動、 または半自動で判断できるようになるプリファレンス-規則 (規則セットと呼ばれる) といったセットでユーザのプリファレンスを表現することができる。

注意:この言語は、伝送形式を意図している; 個々の実装では、この言語でかかれた仕様書を読み書きできるようにしなければならないが、 この形式を内部的に使う必要はない。

この言語は、P3P1.0仕様書を補足する。 基礎となる論理の大部分はPICSRules に基づいている。 ゆくゆくはこれが単にXML (XML-data、規則、 照会言語のアプリケーションとなることを期待している。

1.1 P3Pの基礎

P3Pは、サービス(プライバシープラクティスを宣言したWebサイトとアプリケーション) のプライバシーポリシーをユーザに通知することについて設計されている。 P3P互換クライアントがリソースを要求したとき、 所有者とプライバシープラクティスについて宣言したサービスに責任を持った組織/団体による サービスはマシンが読むことができるプライバシーポリシーへのリンクを送る。 プライバシーポリシーは、サービスが収集を要求したり、どれが使われるか、 誰のデータと共有されるか、どの位長くデータが保存されるか、 といった説明であるデータ要素を列挙する。

ポリシーは、(webブラウザ、ブラウザプラグイン、 プロキシサーバのような)ユーザエージェントにより自動的に解析される。そして、 ユーザが定義したプライバシープリファレンスセットと比較される。 これらのプリファレンスに依存して、ユーザエージェントは、 ユーザにシンプルな情報を表示したり、プロンプトを出したり、 その他の動作をするかもしれない。

基本的なP3Pの対話について、以下のような処理が考えられる:

  1. エージェントは、サービスへWebページを要求する。
  2. サービスは、HTTP応答のヘッダーに含まれるP3Pプライバシー ポリシーの参照を送信する。ポリシーは、 サービスのプライバシープラクティスについての一つ以上のステートメントからなる。
  3. エージェントは、ポリシーを取ってきて、ユーザの (プリファレンスを表現した)規則セットに従って評価する。 そして、どうするかの行動(プライバシーポリシーについて適切にユーザに通知するか、 表示することで判断を仰ぐ)を決める。
ほかの実装としては、ユーザのプリファレンスとサイトのポリシーの間での照合、電子財布、 (半)自動的に情報をサービスに渡す他のデータレポジトリがある。

1.2 P3Pプリファレンス交換言語(Preference Exchange Language)の最終目的

P3P1.0仕様書は、ポリシーを規定するための構文と、 Webリソースにポリシーを関連付けさせるメカニズムを提供する。 グラフィックなユーザインタフェース(GUI)やトラストエンジン などの必要条件は規定していない。 しかしながら、GUIによる取り込み、トラストエンジンによる処理として、 ユーザプリファレンスを表現することができる利点がある。:

まずはじめに、この言語は、 他の団体が作ったプリファレンス規則セットをインポートすることをユーザに許し、 それ自体の規則セットのファイルを複数のユーザエージェント間で転送するために使われる。 ユーザエージェントを実装する人はまた、ユーザプリファレンスをエンコードして、 そのユーザエージェントの意志決定をする部品としてのサーバのような 規則評価器で使うためにこの言語(またはいくつかの簡単な派生版として)を選ぶかもしれない。

1.3 必要条件

APPEL言語の範囲の定義として、ワーキンググループはたくさんの必要条件を列挙した。 そして、必要条件のうち、あまり必要でないと思われる部分を削除し、範囲を狭めた。 このようにして、ドラフトは以下の必要条件を基に作られている:

作業グループはAPPELの範囲を以下のように限定している:

言語の原形実装の普及を早めるために、ワーキンググループは基本のプライバシープリファレンスのみを表現するために設計されたレベル1仕様書を最初にリリースし、その後、上記の残りの必要条件を実装するレベル2仕様書を準備することを決めた。特に、,APPELレベル1は必要条件を以下に限定する。

本文書は以降で、このようにして簡略化したバージョンのAPPEL(レベル1仕様書として参照された)について述べる。より詳細な全APPEL構文に関する拡張子のリストについては、付録Aを参照のこと。APPEL構文は以降、レベル2仕様書そして参照される。

1.4 APPELとP3Pプライバシーポリシー

APPEL規則セットはP3Pポリシーに関するプリファレンスを表現することを意図しているので、APPELの構文と意味論のほとんどがP3P 1.0仕様書の影響を非常に強く受けている。このドラフトで多くの例を理解するするために、ワーキンググループはP3P1.0仕様書自身に慣れることを強く推奨している。そうすることで、APPEL仕様書で作成された構文と意味論の選択をよりよく理解することができる。

簡単な参照として、以下の図はXMLP3P1.0ポリシーの要素と属性のほとんどを表しているポリシーの例を示している。個々の要素とその使用についての詳細は、P3P1.0仕様書の3 ポリシー構文と意味論を参照されたし。


図 1.1:P3Pポリシーの例
<POLICY xmlns="http://www.w3.org/2000/P3Pv1">
  <ENTITY>
    <DATA name="business.name">TheCoolCatalog</DATA>
    <DATA name="business.contact-info.postal.street.line1">123 Main Street</DATA>
    <DATA name="business.contact-info.postal.city">Bethesda</DATA>
    <DATA name="business.contact-info.postal.stateprov">MD</DATA>
    <DATA name="business.contact-info.postal.postalcode">20814</DATA>
    <DATA name="business.contact-info.postal.countrycode">US</DATA>
  </ENTITY>
  <DISPUTES-GROUP>
     <DISPUTES resolution-type="independent" 
      service="http://www.PrivacySeal.org" 
      description="PrivacySeal.org"
      image="http://www.PrivacySeal.org/Logo.gif"/>
  </DISPUTES-GROUP>
  <DISCLOSURE 
   discuri="http://www.TheCoolCatalog.com/PrivacyPractice.html" 
   access="none"/>
  <STATEMENT>
     <CONSEQUENCE-GROUP>
       <CONSEQUENCE>a site with clothes you would appreciate</CONSEQUENCE>
     </CONSEQUENCE-GROUP>
     <RECIPIENT><ours/>/RECIPIENT>
     <PURPOSE><custom/><develop/></PURPOSE>
     <RETENTION><indefinitely/></RETENTION>
     <DATA-GROUP>
       <DATA name="dynamic.cookies" category="state"/>
       <DATA name="dynamic.miscdata" category="preference"/>
       <DATA name="user.gender"/>
       <DATA name="user.home." optional="yes"/>
     </DATA-GROUP>
  </STATEMENT>
  <STATEMENT>
    <RECIPIENT><ours/></RECIPIENT>
    <PURPOSE><admin/><develop/></PURPOSE>
    <RETENTION><indefinitely/></RETENTION>
    <DATA-GROUP>
      <DATA name="dynamic.clickstream.server"/>
      <DATA name="dynamic.http.useragent"/>
    </DATA-GROUP>
  </STATEMENT>
</POLICY>

1.5 定義

以下の定義(アルファベット順)は本文書で共通して使用されている使い方を反映している。
挙動
規則の照合が完了したときに取られる動作。APPELレベル1は4つの標準挙動(受領,拒否,通知と警告)のみをサポートするが、レベル2はユーザエージェントが特別の挙動を定義できるようにする。
挙動, 標準
APPELユーザエージェントすべてが、サポートしている挙動:受領, 拒否, 通知そして警告。APPELレベル2はまた、ユーザエージェントが特別の挙動のセットを定義できるようにする。APPELレベル1は特別の挙動を行えないことに注意。
連結詞
組み込まれた表現をどのように照合するかを決める表現の属性。APPELレベル1は4つの連結詞をサポートする:or, and, or-exactおよびand-exact。詳細は5.4.3 連結詞を参照のこと。
データレポジトリ
ユーザエージェントの管理下で、ユーザ情報を格納する機構。
証拠
P3PアプリケーションはAPPEL規則評価器にAPPEL規則セットとたくさんの証拠の一例を提供する。例えば、この証拠が現れた場合、このサービスのURIとこのサービスからのP3Pプライバシーポリシーを含むことができる。実装は本質的に、その他の形式を使用するのは自由だが、証拠はXML要素の形式で表されるべきである。
表現
XML要素として表現され、いくつかの(部分の)証拠に関して、正誤を評価する事ができるルールの要素。表現は以下で構成されている。
  1. 要素識別子(要素名)
  2. ゼロ以上の属性表現
  3. ゼロ以上の組み込まれた表現
  4. オプション的な連結詞
表現のリストについては2.2 表現を、表現と可能な 証拠の照合する方法の詳細については5.3 表現を参照のこと。APPELレベル1だけが規則の中で、<POLICY><APPEL:REQUEST>要素を(トップレベルの)表現として使用できることに注意されたい。
表現, 属性
属性-値の一組は表現の中に含まれている。属性-値は引用符(すなわち、属性の値)で囲まれた二つの文字列の値を比較するため、または特定の値を確認することなく特定の属性の有無を判断するため(それらがワイルドカードと共に使用された場合は)。詳しい情報は、5.4.1 属性の表現を参照のこと。
組み込まれた表現
別の表現、すなわち、別の(APPELでない)XML要素で囲まれているXML要素、で囲まれている表現。表現が照合するために、含まれている表現(使用されている連結詞にあわせて)のいくつかまたはすべても同様に照合されなければならない。詳細は5.3 表現を参照のこと。
劣化した表現
いつも正当性を評価する表現4.2.3 <OTHERWISE>要素を参照のこと
表現, トップレベル
<APPEL:RULE(規則)>要素のすぐ下に含まれている表現。APPELレベル1では,トップレベルの表現は<POLICY>もしくは、<APPEL:REQUEST>要素、劣化した表現になり得る。
ペルソナ
ブラウジングしている間にユーザが使用したいと考えているユーザのデータレポジトリにあるデータ要素値セットの唯一の識別子。実装は同じデータ要素の複数の値を格納し、ユーザーがレポジトリ(例えば、会社で使用されている値のセットと週末に使用されている異なるセット)から情報を出す時に含まれている値の中から都合よく選ぶことができるようにする。
プリファレンス(プライバシー,使用できない)
P3PとHTTPに従って、交換される情報の収集と取り扱いに関するユーザの希望。プライバシープリファレンスはAPPEL規則のセットで正式に表現されており、GUI経由でよりよく取り込まれるべきである。
ポリシー(プライバシー, 使用に制限のない)
P3Pプライバシーポリシーで表されているサイトの プライバシープラクティス
P3Pプライバシーポリシー
P3Pプライバシーポリシーはこのポリシーでカバーしているサービスの識別、URI,保証、そして開示を明らかにする情報と共にある一つ以上のプライバシースステートメントの集まりである。こういったP3Pプライバシーポリシー の形式はP3P 1.0仕様書で定義されている。
規則
ユーザの プリファレンスの正式な表現。規則はサービスP3Pプライバシーポリシーと比較されたユーザのプリファレンスを表現する。照合がうまくいくことによって起こる行動はこの規則で規定されている挙動によって定義される。この規則は形式、
<APPEL:RULE behavior="...">rule</APPEL:RULE>
の要素のオープン、クロースにより定義される。
規則評価器
ユーザのプライバシープリファレンス(例えば、規則セットにある)とサービスから送られたP3Pポリシーを比較する原因となるプロセス。付録 C: トラストエンジンとデータベースエンジンのコメントも参照のこと。
規則セット
ユーザのP3Pプリファレンスのすべてを定義する規則のセット。
スキーマ, P3Pの基本
P3P 1.0仕様書で定義されるスキーマ。
サービス
ポリシーと(恐らく)データのリクエストを発行するプログラム。この定義でサービスはサーバ(サイト)、ローカルアプリケーション、ActiveXコントロールやJavaアプレットといったローカルなアクティブコードの一部、そして別の ユーザエージェントとなることがある。ほとんどの場合、サービスはP3Pが可能なWebサーバとなるだろう。
P3Pステートメント
P3Pステートメントはデータ要素、セットおよびカテゴリの集まりに関しているプライバシープラクティスの内容開示のセットである。列挙されている要素は埋め込みデータリクエストとして動作する。データを参照せず、リクエストをしないステートメント。
トラストエンジン
規則評価器を参照のこと。
ユーザ
代わりのものがサービスにアクセスし、それのために個人データが存在する個々(一つの法人として行動している個々のグループ)
ユーザエージェント
ユーザのかわりに動作するプログラム。エージェントはコンテンツフィルタリングやラスト決定、またはプライバシーといった様々な目的のプリファレンス(規則)上で動作する事がある。P3Pの目的として、ユーザエージェントはユーザのプライバシープリファレンス上で動作する。ユーザは異なった時に異なったユーザエージェントを使用するかもしれない。

さらに、この仕様書は各特定の必要条件の意味を特定する為にRFC 2119 [RFC2119]で使用されているのと同じことばを使用する。そのことばとは:

〜しなければならない
このことば、または"必須である" または"するものとする"という言葉は、定義が本仕様書の絶対的な必要条件であることを意味する。
〜してはならない
この語句、または"するものではない"という語句は定義が本仕様書の絶対的な禁止であることを意味する。
〜するべきである
このことば、または、形容詞 "推奨される" は特定の項目を無視する特別な状況において有効な理由があることを意味するが、その語の意味するすべてを理解しなければならないし、異なった方針を選ぶ前には十分に考える必要がある。
〜するべきでない
この語句、または"推奨されない" は特定の挙動が受領可能であり、有効である場合に、特定の状況で有効な理由があるということうを意味するが、その語の意味するすべてを理解しなければならないし、このラベルで述べられている挙動を実装する前に、そのケースを十分に考えなければならない。
〜してもよい
このことば、または形容詞 "任意の(オプション的)"は項目が実際に任意 (オプション的)であることを意味する。市場が必要としているか、または別のベンダーはこの項目を省略しているが、あるベンダーはこれが商品を強化すると考えるという理由で、組み込みのためにそのベンダーはこの項目を選択してもよい。特定のオプションを含まない実装 はそのオプションを含む別の実装と共同利用するために用意されなければならない。しかし、恐らく機能は落ちているだろう。同じ状況で、特定のオプションをを含む実装はオプション(もちろん、オプションが提供する機能を除いて)を含んでいない別の実装と共同利用するために準備されなければならない

2. 全般的な作用と意味論

以下の章ではAPPEL規則評価器の基本操作の概略を述べる。

2.1 規則評価器(エバリュエーター)への入出力

APPEL規則評価器はP3P アプリケーションによって起動する。起動しているアプリケーションは評価器にたくさんの"証拠"とそのプロセスの規則セットを提供する。証拠にはサービスのURIと、もし存在するなら、サービスからの単一のP3Pプライバシーポリシー がある。

規則の範囲は<APPEL:ルール>要素のオープン、クローズにより決定される。評価器はこの規則を起こしたポリシーのコピーと同様に、上記の証拠を基本としてできた規則の挙動 (挙動属性で規定されているように)を返す。特に、この規則で照合されていないオプション的要素が含まれていない場合は、この規則を起こしたポリシーは証拠で見つけたオリジナルのポリシーと必ずしも一致するわけではない。さらに、規則評価器は任意に、説明文字列 (ユーザ表示にあわせた)、ペルソナの名前、および/またはfiredした規則を返すことがある。

アプリケーションは標準出力を以下のように解釈すべきである:

2.2 規則の処理と評価

以下のセクションに記述されている情報は単に初めての概要を提供する事を目的としている。詳細については5. 意味論と以下の該当するセクションから参照のこと。

2.2.1 規則の処理

ルールは提供される証拠に関連して評価される。囲まれた表現すべてが満足のいくものである場合、ルールはtrueと評価する。基本的に、ルールは入手できる証拠 がどれもそれを満たすとルールは満足する。

規則セットの各規則は表示される順番に評価される。規則がtrueと評価されたら、対応する挙動が返され、規則の評価は終了する。ポリシーが受領されない場合にさらに情報を提供したがっているユーザエージェントは、(なぜそれが"拒否"されたかの理由を全てリストアップするようなこと)そのような情報をユーザに与えるためにさらなる評価を必要とするかもしれない。

規則セットは常にfireする規則があるように記述されるべきである。規則評価器は、規則セットなしで、空の規則セットで、どのルールもfireしない場合にはエラーを返すべきである。エラーが返却された場合どうするかを決定するのは callingプログラム次第であるが、calling プログラムはエラーを"受領"するように処理すべきでない

ルール処理の詳細についてはセクション5.1 規則評価器の要約及び 5.2 規則の順序を参照のこと。

2.2.2 表現

APPELは三種類の基本表現を使用する。
  1. 表現: 証拠の全XML要素を照合する属性と組み込まれた表現を使用する。
  2. 属性の表現: 一つの属性 とXML要素の値を照合する。
  3. 組み込まれた表現: XML要素の組み込まれたサブ要素を繰り返し照合する。

APPELの表現は有効な証拠に対して照合することによって、正、誤の評価ができるXML要素によって表される。表現はいつも以下で構成されている。(例えば、図2.1 を参照のこと):

  1. 要素識別子(要素名)
  2. 0以上の属性表現
  3. 0以上の属性組み込まれた表現
  4. オプション的 連結詞

図 2.1:表現の例
要素名のみ:

<CONSEQUENCE></CONSEQUENCE>

要素および属性:

<DISCLOSURE discuri="*"/>

要素名, 組み込まれた要素および連結詞

<RECIPIENT
    APPEL:connective="or-exact" >

  <ours/>
  <same/>
  <delivery/>
</RECIPIENT>

要素名, 属性, 組み込まれた要素と連結詞:

<POLICY entity="W3C">
  <STATEMENT APPEL:connective="and">
    <PURPOSE APPEL:connective="or-exact">
    <current/></PURPOSE>

  </STATEMENT>
</POLICY>

APPELはすべての値を単純な 文字列として扱うが、属性-表現 は文字列 または数値をとるかもしれない。APPELレベル1は属性-表現 の一様な操作のみをサポートしている (APPELレベル2は 数値照合のための"<"less-than">"greater-thanなどの比較操作を追加的に提供する。


APPELは、多くの人気のあるOS shellに見られるワイルドカードメタ文字"*"のシンプルセットをサポートする。属性の表現は <DATA name="ユーザ.*"> ("ユーザ" データセットからのあらゆる要素) などの値の範囲を照合するためにこのメタ文字を使用することができる。詳細は5.4.1 属性の表現および5.4.2 規則的な表現 メタ文字を参照のこと

表現の特別な形式はまた、劣化した表現<APPEL:OTHERWISE>とも呼ばれる。証拠に対抗して照合する代わりに規則評価器はいつもこの表現をtrueとして評価しなければならない。この表現はまだ、照合の済んでいない場合のすべてを得る為にいつも規則セットの最後の規則にある。

2.2.3 規則の評価

ルールには、挙動、オプション的 ペルソナ、オプション的説明、たくさんの表現が含まれる。劣化した表現は常に false と評価する。劣化した表現のみを持つルールは常に"正"と評価する。個々の表現は各々、属性表現組み込まれた表現で構成され、任意に連結詞を特徴としている。

複数の属性表現および/または組み込まれた表現が一つの表現の範囲内に置かれるとき、全ての表現は一つの証拠の範囲内で照合される。規則が<PURPOSE><develop/></PURPOSE><RECIPIENT><ours/></RECIPIENT>表現の両方を含む<STATEMENT>表現を組み込む場合、P3Pポリシーが、ローカルな受領者と研究開発を宣言するステートメントを含む時、その表現は true を評価するのみである。

表現内の属性の表現 は暗黙に互いにANDされているが、特別なconnective(連結詞)属性は組み込まれた表現の意味論照合を管理するために使用される。APPEL はそういった連結詞4つをサポートする:or, and, or-exact, と and-exact。もし連結詞が与えられていなければ、必要なand-exactへのAPPEL デフォルトは照合する: 証拠の要素が規則に与えられた連結詞と一致した時のみ、照合が起こる。

属性の照合と組み込まれた表現については5.4 照合で詳細を述べている。

3. 単純なシナリオの例

以下の章では、APPEL言語の異なった要素を紹介し、その使用法を説明するために単純なAPPEL プレファレンスファイルについて説明する。この例は良く形成されたAPPEL規則例のセットであるが(すなわち、それは、<APPEL:RULESET>要素で囲まれている)、規則例の小さなセットを説明するためのみに使用される。

ここでは、ユーザのプレファレンスの簡単なテキスト記載(文句無しに単純な)、含まれる要素とそれらの許可された値の概要表を示す。最後に、該当するAPPEL暗号化の例を挙げる。本文書に参照しやすいようにという配慮から書かれている表中のライン番号は、実際の暗号の一部ではないので注意されたし。


3.1 ユーザプリファレンス

  1. 第三機関に与えられるであろう個人情報に対するリクエストは拒否されるべきである。
  2. ユーザは識別できないclick-stream 及びユーザエージェント情報を他の情報を収集しないサイトに公表することをいとわない。しかし、ユーザはサービスがある種の保証を提供するようにと主張する。
  3. 売買に関わる目的でない限り、ユーザは自分の氏名を気楽に提供する。ユーザはそういったステートメントを信じる前に、"PrivacyProtect および "TrustUs"からの保証(すなわち、係争解決情報)が必要である。しかしながら、ユーザは実際にこの情報が転送される前に前述のような場合について明らかに通知してもらいたいといつも考えている。
  4. 銀行のWebサイトhttp://www.my-bank.comにアクセスする場合、ユーザは自身のデータが他の受領者に再配布されない限り、あらゆるデータリクエストを受領する。
  5. その他全てのデータ転送要求は(ユーザのプライバシープリファレンスとの係争解決を示すために)促進されるべきであり、サイトごとにユーザによって決められるだろう。

3.2 表による概要

以下の表では、ユーザが自らのプライバシープレファレンスにおいて参照するフィールド、適合条件、取るべきアクションをを説明する。(参照されるフィールドのリストについては、P3P 1.0仕様書に定義される基本データ要素およびセット、ポリシーのXMLエンコードを参照のこと。)

属性/要素とその値のリストがあるが、挙動を探すためのルックアップ表としてその表を使用しないでください。その代わり、表照合で値が参照するまで、列ごとにその表をみていかなければならない。なぜなら、各列はこの規則セットで順序づけられた規則を表しているからである。 セルにはワイルドカードシンボルの"*"が付いているものと何もついてないものがあることに注意されたし。APPEL は参照されない属性と参照されるがワイルドカードのみを含む属性を見分ける。前者の場合、ポリシーに属性が含まれる含まれないに関わらず、ユーザは本当に属性に注意を払わない。後者の場合、ユーザは属性値に注意を払うかもしれないが、少なくともアトリビュートが何かの値を持つことを期待する。詳細については、5.4.2 規則的な表現 メタ文字を参照のこと。以下に示す我々の例の3列では、ユーザは収集したclickstream データの目的について注意を払わない(そのためこの表では空欄), しかし、ある種係争解決-情報を要求する (ワイルドカードの"*"を使って表示)


挙動 要素(element)/セット(Set) URI 係争解決(Disputes) 目的(Purpose) 受領者(Recipient)
reject
(拒否)
category="physical", or
category="demographic", or
category="uniqueid"
      same, other,
delivery, public
or unrelated
accept
(受領)
dynamic.http.useragent, dynamic.clickstream.server   *    
inform
(通知)
user.name.*   "PrivacyProtect" and "TrustUs" current, admin, custom or develop  
accept
(受領)
  www.my-bank.com     ours
warn
(警告)
[otherwise]        

3.3 APPEL規則セット

以下のリストでは、上述のプレファレンスをAPPELルールセットに暗号化する一つの方法を説明する。5つの規則はサービスから得られるポリシーの全てを処理するのに使用される。拒否-規則(すなわち、behavior属性で文字列"拒否"を持つ規則) は、第三機関に配布される同一と証明できるデータを訊ねるあらゆるポリシーを最初に拒否する。

リクエストURLの明確な照合を使用して、2番目の規則はポリシーを受領する場合、www.my-bank.comに接続していると、リクエストされたデータは銀行とエージェントへ配布されるだけである。

次に、"受領"規則は同一だとみなし得ないclickstream データおよび/またはユーザエージェント情報 (ブラウザバージョンやOSなど)が収集されているかどうかを見る為に、確認をし、もし、係争解決情報受領が有効であれば、受領する。

"通知"規則は売買目的ではないユーザ名に対するあらゆるリクエストを照合し、最終的にはユーザにサイトが受領可能な状況でユーザ名を収集したがっているという事を即座に通知し始める。

もし、他の規則が照合しなければ、上記の規則がカバーしているポリシーについてユーザに(慎重に)警告し、劣化した表現"APPEL:OTHERWISE"を要約している"警告"-規則はfireするだろう。


図 3.1:APPELレベル1の単純な規則セット
000: <APPEL:RULESET xmlns:APPEL="http://www.w3.org/2000/APPEL"
001:                crtdby="W3C" crtdon="13-Nov-1999 09:12:32 GMT">
002:
003:   <APPEL:RULE behavior="reject" 
004:      description="Service collects personal
005:                   data for 3rd parties">  
006:     <POLICY APPEL:connective="and">
007:       <STATEMENT APPEL:connective="and">
008:         <DATA-GROUP APPEL:connective="or">
009:             <DATA category="physical"/>
010:             <DATA category="demographic"/>
011:             <DATA category="uniqueid"/>
012:         </DATA-GROUP>
013:         <RECIPIENT APPEL:connective="or">
014:           <same/><other/><public/><delivery/><unrelated/>
015:         <RECIPIENT/>
016:       </STATEMENT>
017:     </POLICY>
018:   </APPEL:RULE>
019:
020:   <APPEL:RULE behavior="accept" 
021:      description="My Bank collects data only for itself 
022:                   and its agents">  
023:     <APPEL:REQUEST-GROUP>
024:       <APPEL:REQUEST uri="http://www.my-bank.com/*"/>
025:     </APPEL:REQUEST-GROUP>
026:     <POLICY APPEL:connective="and">
027:       <STATEMENT APPEL:connective="and">
028:         <RECIPIENT APPEL:connective="or-exact">
029:           <ours/>
030:         <RECIPIENT/>
031:       </STATEMENT>
032:     </POLICY>
033:   </APPEL:RULE>
034:
035:   <APPEL:RULE behavior="accept"
036:      description="Service only collects clickstream data">  
037:     <POLICY APPEL:connective="and">
038:       <STATEMENT APPEL:connective="and"> 
039:         <DATA-GROUP APPEL:connective="or-exact">
040:           <DATA name="Dynamic.HTTP.UserAgent"/>
041:           <DATA name="Dynamic.ClickStream.Server"/>
042:         </DATA-GROUP>
043:       </STATEMENT>
044:       <DISPUTES-GROUP>
045:         < DISPUTES service="*"/>      
046:       </DISPUTES-GROUP>
047:     </POLICY>
048:   </APPEL:RULE>
049:
050:   <APPEL:RULE behavior="inform" 
051:      description="Service only collects your name
052:                   for non-marketing purposes (assurance   
053:                   from PrivacyProtect and TrustUs)">   
054:     <POLICY APPEL:connective="and">
055:       <STATEMENT APPEL:connective="and">
056:         <PURPOSE APPEL:connective="or-exact">
057:              <current/><admin/><custom/><develop/>
058:         </PURPOSE>
059:         <DATA-GROUP APPEL:connective="or-exact">
060:             <DATA name="User.Name.*"/>
061:         </DATA-GROUP>
062:       </STATEMENT>
063:       <DISPUTES-GROUP APPEL:connective="and">
064:         <DISPUTES service="http://www.privacyprotect.com"/>
065:         <DISPUTES service="http://www.trustus.org"/>  
066:       </DISPUTES-GROUP>
067:     </POLICY>
068:   </APPEL:RULE>
069:
070:   <APPEL:RULE behavior="warn"
071:      description="Suspicious Policy. Beware!"> 
072:     <APPEL:OTHERWISE/>
073:   </APPEL:RULE>
074:      
075: </APPEL:RULESET>

3.4 例の説明

上記の例にあるラインナンバーを使って簡単にAPPEL規則セットの基本構造を説明する。
Lines 説明
000 - 075 APPEL規則セット。APPEL規則セット。単一のAPPEL規則セット(すなわち、<APPEL:RULESET>タグに囲まれている順序づけられた規則のセット) は普通、ユーザエージェントにインストールされている。実装はシステムの現在ユーザ、または、現在のブラウジングセッション中にユーザが使用したいと思うペルソナに合わせて異なる規則セットを維持するために提供するかもしれない。<APPEL:RULESET>要素は著者や作成の日付などの追加情報でタグ付けすることができる:
[1] ruleset = '<APPEL:RULESET xmlns="http://www.w3.org/2000/APPEL" '
                 attributes '>'
                 rseq
              '</APPEL:RULESET>'
 
[2] rseq    = 1*rule
003 - 018 "拒否"規則。APPELは4種類の規則の挙動を提供する。:"受領(accept)", "拒否(reject)", "通知(inform)"そして "警告(warn)"。各規則は表現のセットや劣化した表現<APPEL:OTHERWISE>に囲まれた<APPEL:RULE>要素で構成されている。
[3] rule     = '<APPEL:RULE behavior="' behavior '"'
                  attributes '>' 
                      body
               '</APPEL:RULE>'

[5] body     = top-expression | '<APPEL:OTHERWISE/>'

[6] behavior = 'accept' | 'reject' | 'inform' | 'warn'

各規則は属性のセットよって増加することができる。我々の例では、規則がfireすべきである場合の人間が読むことのできる("サービスはclickstream データ"のみを集める)説明を提供する記載フィールドを使用する。(これは、データ転送やプロンプト中にユーザエージェントによって表示されるか、目的をデバッグするために使用される)

[4] attributes = [' persona=' quoted-string]
                 [' crtby=' quoted-string]
                 [' crton="' datetime '"']
                 [' description=' quoted-string]
006 - 017 照合するためのP3Pプライバシーポリシー。ほとんどのAPPEL規則には、<RULE>要素内に照合する表現があるように、P3Pプライバシーポリシーがある。ワイルドカード ("*") は値の範囲を照合するのに使用されるが、規則が照合すべき要素および属性値はポリシーで簡単に述べられている。属性もしくは要素を完全に省略することでサービスが提供しているポリシーから属性/要素を省略することができる。(もしくはあらゆる値を使って組み込むこともできる。).
[7] top-expression = policy | request [policy]    

[8] policy         = <[P3P10] policy (optionally with embedded connectives)> 

[9] request-group  = '<APPEL:REQUEST-GROUP ' [connective] '>'
                          1*request
                     '</APPEL:REQUEST-GROUP>'

[10] request       = '<APPEL:REQUEST uri="' [URI] as per RFC 2396 '"/>'
007 - 016 STATEMENT(ステートメント) 要素照合。もし、サービスが第三機関(<same/>, <other/>"または<published/>を照合する<RECIPIENT>)へ配布される個人データ(カテゴリphysical, demographicまたはuniqueid<DATA>要素)について問い合わせたら、"拒否"規則は解除すべきである (すなわちポリシーの拒否)。規則はいつもP3Pプライバシーポリシーの必要な要素すべてを特徴付けてはいないことに注意。<DATA>および<RECIPIENT>要素が照合することを考えると、この拒否規則はポリシーで規定された目的(<PURPOSE>)に関わらず規定を行うだろう。
006 - 008, ... 連結詞。APPELを使用して: APPEL:connective属性, 規則の著者は要素の組み込まれた表現に対して異なった照合の意味論 明確に規定する。APPELは異なった照合の意味論を実装する異なる連結詞 (or, and, or-exactおよびand-exact) 4つをサポートする。もし、連結詞が与えられなければ、anand-exactを必要とする意味論を照合するdefaultは規則と有効な証拠の間を照合する。
[11] connective      = 'APPEL:connective="' conn '"'

[12] conn            = or | and | or-exact | and-exact
020 - 033 制限された受領-規則www.my-bank.comからWebリソースをリクエストしている間に"accept"規則が取り出されている場合、この規則はポリシーの照合を続けるのみである。それは規則本体に追加の<APPEL:REQUEST>要素があるからである。ユーザエージェントが要素にリストされたuriからリクエストをしない限り、この追加の<APPEL:REQUEST>要素はfalseと評価する。これによってユーザは簡単に制限されたドメインのセットからポリシーを適用しているだけの規則を書く事ができる。
035 - 048 受領。多くても、サービスが送ったポリシーがユーザエージェントおよび/またはclickstreamデータの集まりを宣言する場合、"受領"規則はデータのリリースのみを許可すべきである。目的(<PURPOSE>)および受領者(recipient) 要素 (<RECIPIENT>)がP3Pプライバシーポリシー ステートメントで必要であったとしても、規則に現れてはいけない事に注意。
040 - 041 照合するためのデータ要素。"or-exact"-連結詞の使用があるので、ポリシーのステートメントが規則にnotふくまれていない追加データ参照をもたない場合は"受領"規則は照合するのみである。それゆえ、規則セットの33行から36行に明確に列挙している要素以外をリクエストしているポリシーは直ちにその表現をfalseと評価するだろう。(すなわち、ポリシーを受領しない。)
044 - 046 照合するための係争-解決情報。ユーザは係争が起こった場合に備えて、プライバシー ポリシー に関する保証を提供できる組織への参照を持つサービスを確認したいと考える。
050 - 068 "通知"規則。ユーザはTrustUsおよびPrivacyProtectの両方の保証があるWebサイトへ売買目的ではなく、自身の名前を提供することに同意したが、個々のデータ転送を管理したいと思う。実装は、ユーザを新しいサイトへアクセスするよう効果的に促し、特定のサイトへの二次的なデータ転送をすべて明確に受領できるユーザインターフェースを提供するかもしれない。
013, 056 択一のリストの照合。幾つかの異なった目的や受領者を照合するため、"or"または"or-exact"連結詞を使用し、有効な択一の受領者と目的要素のリストを含める。
063 - 066 連結詞の値の照合。ポリシーのTrustUsおよびPrivacyProtect両方の保証を要求するため、規則はDISPUTES-GROUP要素の"すべての"連結詞と一緒に同じ要素 (<DISPUTES>(係争解決))を何度(しかし、属性の異なった値で)もリストする。このようにして 値の間の論理ANDを表す。
070 - 073 "警告"規則。APPEL規則セットの規則が順序づけられるので、"警告"規則は発行者が送ったポリシーを照合できない先行する規則すべてを評価するだけである。我々の規則の順序を逆にすれば、(すなわち、<OTHERWISE>規則を最初に置くこと)ユーザエージェントは得られるポリシーすべてに対していつも警告を発するだろう(以下のコメントを参照のこと)。
072 劣化した表現。劣化した表現<OTHERWISE>を使用して、いつもtrueと評価することで知られている"catch-all"規則を作成できる。後に続く規則すべてが評価されないので、<OTHERWISE>を含む規則はいつも規則セットの最後に置かれなければならない。空の規則は何も照合しないことに注意。

あらゆる可能な証拠セットのために、いつもfire する規則があるように規則セットを書くべきである。このようにして, もし規則がfireしていなければ、規則評価器はエラーをすべきである。

4. 技術的な定義

以下の構文は使い易い実装用に使用されなければならない。さらに、使いやすいアプリケーションは5.4 意味論の照合で定義されている意味論に従って規則を作成しなければならない。

4.1 構文およびエンコード

この章ではエンコードの問題とAPPELレベル1言語に使用されている実際の構文のリストを記載する。ワーキンググループは、レベル1仕様書に基づく原型で最初の業務がなされた後、1.3 必要条件で述べている必要条件の範囲すべてを述べる現行のシステムを拡大する前に実際の所見に基づいて全(レベル2) 仕様書改訂することができる。

4.1.1 BNF構文, APPELレベル1 (標準非準拠)

以下のBNF構文は実際の構文の正式でない表現である。 APPEL構文の標準準拠記載については4.2 要素を参照して下さい。
図 4.1:APPEL BNF構文, レベル1(有益)
[1] ruleset          = '<APPEL:RULESET xmlns="http://www.w3.org/2000/APPEL" '
                          attributes '>'
                          rseq
                       '</APPEL:RULESET>'
      
[2] rseq             =  1*rule 

[3] rule             = '<APPEL:RULE behavior="' behavior '"'
                         attributes '>' 
                            body
                       '</APPEL:RULE>'
      
[4] attributes       = [' persona=' quoted-string]
                       [' crtby=' quoted-string]
                       [' crton="' datetime '"']
                       [' description=' quoted-string]
      
[5] body             = top-expression | '<APPEL:OTHERWISE/>'

[6] behavior         = 'accept' | 'reject' | 'inform' | 'warn'

[7] top-expression   = policy | request-group [policy]

[8] policy           = <[P3P10]ポリシー (オプション的に埋め込まれた連結詞)> 

[9] request-group    = '<APPEL:REQUEST-GROUP ' [connective] '>'
                          1*request
                       '</APPEL:REQUEST-GROUP>'

[10] request         = '<APPEL:REQUEST uri="' RFC 2396で示された[URI] '">'

[11] connective      = 'APPEL:connective="' conn '"'

[12] conn            = or | and | or-exact | and-exact

[13] quoted-string   = '"' 文字列 '"'

[14] string          = <[UTF-8] 文字 (" や & でエスケープされたもの)>

[15] datetime        = <[RFC 2068]の3.3に示された日付/時刻>

詳細は以下の4.2 要素に記載している。付録A: APPELレベル2仕様書も参照のこと。

4.1.2 転送および保管

APPEL規則セットは、一般的なXML と同様の文字セットの規則に従ってXML文書として表される。合法な文字は、タブ、改行復帰、改行、Unicode 及び ISO/IEC 10646の合法的図形文字である。詳細については、XML勧告の章の文字エンコーディングを参照。XML文書では要素も属性名も大文字/小文字を区別することに注意。属性はすべて小文字を使用しているがAPPELの要素名はすべて大文字である。P3Pは同じ規則を使用しているので、P3Pプライバシーポリシーでも同一の形式でなければならない。しかしながら、P3P要素の標準準拠の定義については、最新のP3P仕様書を参照のこと。

P3Pプライバシーポリシーと違って、APPEL規則セットはHTTPプロトコルエクステンションのような特別な手段を用いてリアルタイムで交換するようには作られていない。そのかわり、使用中のハードウェアセットアップか、ソフトウェアセットアップかによって利用できる手段を使って単純なファイルのように処理、ダウンロードされる。

内部的には、ユーザエージェントは、ユーザの簡単なテキスト規則セットファイルをその内部表示に合わせるための方法を提供する限り、ユーザの規則セット(バイナリフォーム)の便利な暗号はどれでも使って良い。

4.2 要素

この章ではAPPEL規則セットを作成する為に使用される要素について説明する。 各要素は要素にある属性のリストが後に付いている<>かぎ括弧に与えられている。必須であるとタグ付けされている以外は、リストに記載されている属性はオプション的である。これらの要素を実際に使用することに関する情報については、3. 単純なシナリオの例5. 意味論を参照のこと。

4.2.1 <APPEL:RULESET>(規則セット)要素

<APPEL:RULESET>
このタグはAPPELファイルを示している区切り文字である。これには、一つ以上の規則の配列がある。各規則は、規則にリストされている表現がtrueであると 評価する場合、calling プログラムに返されるある挙動を特徴づけている。
ペルソナ(persona)
ユーザエージェントが複数のユーザレポジトリをサポートする場合、この文字列 は使用されるデータポジトリを認識する。ペルソナが与えられてい場合、デフォルトペルソナが使用されなければならない。この値は<RULE>レベルに上書できることに注意。
crtby(crtby)
規則セット作者の名前とID (ユーザエージェントでもよい)
crton(crton)
規則ルールセット作成の時間と日付
description(記載)
規則セットが選択された時ユーザエージェントが表示できる短い自然言語説明。又は規則ファイルをデバッグするのを補助する。

[1] ruleset          = '<APPEL:RULESET xmlns="http://www.w3.org/2000/APPEL" '
                          attributes '>'
                          rseq
                       '</APPEL:RULESET>'
 
[2] rseq             =  1*rule 

[4] attributes       = [' persona=' quoted-string]
                       [' crtby=' quoted-string]
                       [' crton="' datetime '"']
                       [' description=' quoted-string]

4.2.2 <APPEL:RULE>(規則)要素

<APPEL:RULE>
或る挙動がcalling プログラムによって実行される状況を含んでいる。
挙動(behavior)    (必須属性)
表現が証拠を照合する場合、calling プログラムによって実行される挙動
ペルソナ(persona)
ユーザエージェントが複数のユーザレポジトリをサポートする場合、この文字列は使用されるデータレポジトリを認識する。ペルソナ が与えられてなければ、<RULESET>が囲んでいる対応する値が使用される。
crtby(crtby)
規則セット作者の名前とID (ユーザエージェントでもよい)
crton(crton)
規則セット作成の時間と日付
description(記載)
規則セットが実行された時ユーザエージェントが表示できる短い自然言語説明。又は規則ファイルをデバッグするのを補助する。

<APPEL:RULE>要素で直接囲まれているトップ-レベル表現はいつもexact照合(5.4.4 連結詞を参照)と照合されなければならない。-- 一番上の要素の異なる照合の意味論を指定する APPELレベル1に方法がない。

<POLICY>要素を含んでいるが、<APPEL:REQUEST>要素を含まない規則はどのサイトにおいてもポリシーを照合しようとするだろう。<POLICY>要素<APPEL:REQUEST>要素の両方を含んでいる規則は<APPEL:REQUEST>要素で与えられているURIを照合するサイトでポリシー照合をするのみである。サイトがP3Pプライバシーポリシーを提供しない場合、<APPEL:REQUEST>要素を含んでいるが<POLICY>要素を含まない規則は照合をするだろう。表現の空のリストを持つ規則は起動しない。(前の)規則がfireされていない場合、発生するであろうデフォルト規則を作成するために、劣化した表現<OTHERWISE/>が使用されるべきである。


[3] rule             = '<APPEL:RULE behavior="' behavior '"'
                         attributes '>' 
                            body
                       '</APPEL:RULE>'
      
[4] attributes       = [' persona=' quoted-string]
                       [' crtby=' quoted-string]
                       [' crton="' datetime '"']
                       [' description=' quoted-string]
      
[5] body             = top-expression | '<APPEL:OTHERWISE/>'

[6] behavior         = 'accept' | 'reject' | 'inform' | 'warn'

[7] top-expression   = policy | request [policy] 

4.2.3 <APPEL:OTHERWISE>要素

<APPEL:OTHERWISE>
いわゆる劣化-表現、これは必ずtrueと評価する。また、これは前の規則にカバーされない全てのケースに適合する"catch-all"規則を作るために使用する事ができる。

<APPEL:OTHERWISE>規則の唯一の表現である。一つの規則セットは通常、劣化した表現を特徴づける一つの規則を含み、そのような規則は規則セットの最後にくる。ユーザは、ユーザの先行する規則がカバーしない場所のデータレポジトリへのアクセスに制限のない受領挙動で<OTHERWISE>要素を使用しないように注意する必要がある。ユーザエージェントは、そのような"catch-all"受領を持つ規則セットの受領を拒否しなければならない


[5] body             = top-expression | '<APPEL:OTHERWISE/>'

4.2.4 <APPEL:REQUEST>要素

<APPEL:REQUEST>
aあるリソースやドメインのみを適用する規則の作成を許可する。
uri    (必須属性)
現在リクエストされているリソースのURI(ポリシー URIではない)。

<POLICY>-表現と一緒に、<APPEL:REQUEST>要素(<APPEL:REQUEST-GROUP>要素に埋め込まれている) はあるリソースやドメインのみを適用する規則を作成するのに使用される。規則がfireするために表現は正であると評価する必要があるので、既存のどの<APPEL:REQUEST>要素も<POLICY>表現のアプリケーションを与えられたURIへ制限するだろう。

単一の規則にある複数で、択一のリソースや/またはドメインをリストするために、<APPEL:REQUEST-GROUP>要素に複数の<APPEL:REQUEST>要素を埋め込む事ができるし、oror-exact連結詞を使用して接続することもできる。


[7] expression       = policy | request | 1*<A chunk of XML code (optionally with embedded connectives)>

[8] policy           = <[P3P10] policy (optionally with embedded connectives)>

[9] request-group    = '<APPEL:REQUEST-GROUP ' [connective] '>'
                          1*request
                       '</APPEL:REQUEST-GROUP>'

[10] request         = '<APPEL:REQUEST uri="' [URI] as per RFC 2396 '">'

4.2.5 APPEL:connective(連結詞)属性

APPEL:connective
規則が有効な証拠と比較される時、含まれている表現をどのようにして照合するかを決める。

APPELは異なった4種類の連結詞をサポートする: or, and, or-exactそしてand-exact意味論の記載については、5.4.3 連結詞を参照して下さい。APPEL:connectiveが与えられていない場合、and-exactへのAPPEL照合の意味論デフォルトは照合する。:含まれた表現はすべて証拠に現れなければならず、追加の要素は現れてはならない


[11] connective      = 'APPEL:connective="' conn '"'

[12] conn            = or | and | or-exact | and-exact

5. 意味論

2. 全般的な作用と意味論ですでにAPPEL規則評価器の基本動作の概要は述べたが、以下の章では、もっと詳細にAPPEL言語の意味論について説明する。最初に2.のAPPEL言語の説明をもう一度復習し、規則順序、表現、照合、規則説明などの規則評価に関する個々の問題に焦点をあてる。

5.1 規則評価器の要約

P3Pエージェントやその他のプログラムは、APPEL規則セットや現在リクエストされているリソースと単一のP3Pプライバシーポリシーを含むかもしれないたくさんの"証拠"を提供しながらAPPEL規則評価器を起動する。複数の P3Pプライバシーポリシーが有効である場合、ユーザエージェントは規則評価器を繰り返し呼び出すべきであり、別々に(どんな順番ででも)各ポリシーを規則評価器に供給すべきである。

規則評価器は callingプログラムが、規則が発生させるポリシーのコピーと同様に実行する挙動(4つの標準挙動"受領", "拒否", "通知" または"警告"のどれか一つ)を返さなければならない。規則によって照合されていないオプション的要素があった場合は特に、後者は証拠にあるオリジナルのポリシーと一致しなくてもよいということに注意されたい。さらに、規則評価器は任意に(ユーザ表示に合った)説明文字列、ペルソナの名、や/またはfireされた規則を返してもよい。

5.1.1 挙動

ユーザエージェントは少なくとも4つの標準挙動"受領","拒否", "通知"または"警告"をサポートしなければならない

5.1.2 規則セット

規則セットは順序をきめられた規則sにのリストで構成される。規則は、挙動がcallingプログラムによって実行されなければならないという条件を説明する。

規則セットの各規則は現れる順番で評価される。規則がtrueと評価すると、対応する挙動は返され、規則の評価は終了する。照合が行われず、規則すべてが進行する場合、callingプログラムへエラーが返される。

規則セットは、あらゆる可能な証拠セットのために、fire する規則がいつもあるように書かれなければならない。エラーが返された時どうするかを決めるのはcalling プログラム (通常はユーザエージェント)次第である。しかしながら、callingプログラムはエラーを"受領"の様に扱うべきではない。

5.1.3 表現

各規則はよく形成されたXML要素の形式に幾つかのトップ-レベル表現を含んでおり、一つの挙動を特徴づけている。APPEL対応ユーザエージェントは少なくとも<APPEL:REQUEST>要素 (ポリシー URI ではなく、現在リクエストされているリソース)と同様に、P3P<POLICY>要素、APPEL<APPEL:OTHERWISE>要素をサポートしなければならない

規則のトップ-レベル表現はすべて一緒に暗黙的にANDされる。同様に各表現は囲まれた属性表現と共に、暗黙的にANDされる。規則の著者がconnective(連結詞)属性を使用して明示的に択一照合を規定しなければ、組み込まれた表現はデフォルトによって ANDされる。

すべての表現とそのサブ-表現 (属性およびと含まれた表現)は規則評価器によって、規則に現れるネスティングに従った証拠の要素と照合される。例えば、規則のPOLICY要素内にネストされているステートメント要素は照合するPOLICY要素の中にネストされている証拠のステートメント要素のみを照合する。

表現を含んでいない規則はいつもfalseと評価し、劣化した表現のみを含んでいる規則はいつもtrueと評価する。

5.2 規則の順序

APPELはどうやって 規則セットの複数の規則を評価するか。
APPELの規則はすべて適切に厳しく評価されるので、APPEL規則セットにある複数の規則間の論理オペレータには必要が無い。しかしながら、新しい 規則を追加したり、既存の規則リストの順番を変えたりする事はユーザエージェントの挙動に大きな影響を与える事ができる!

劣化する表現<OTHERWISE>を含む単一の規則のみが存在し、規則セットの最後にあるということに注意すべきである。

5.3 表現

規則の中の何を指定するか
APPEL規則セットのルールは全て有効なXML 形式にある幾つかのトップ-レベル表現を含んでいる。各表現は、特定の証拠に適合しようとする。そしてその特定の証拠ではAPPELレベル1がP3Pプライバシーポリシーの形式にだけに存在しているか、または(<APPEL:REQUEST>要素を使用して)リソース URIのような情報をリクエストできる。

単一表現のすべてのサブ-表現はいつも一緒にANDされている各デフォルトである、それはつまり、表現が照合をするために、すべての属性および組み込まれた表現trueと評価されなければならないということである。しかしながら、APPEL:connective(連結詞)属性を使用して、規則の著者は要素の含まれた表現の異なる照合の意味論を明示的に規定できる。

連結詞がこのレベルにおいて現れている含まれている表現のみを管理している事に注意。これらの含まれている表現は交互に他の表現を含むべきであり、別のconnective(連結詞)属性が含まれている表現の中で使用されていない場合は、デフォルト照合の意味論(exact)を使用して照合されるだろう。詳細は5.4.3 連結詞を参照のこと。

図5.1 以下ではAPPELの表現の正式でない定義の主な種類を3つ説明する。


図 5.1:APPEL表現 (informative)
[1] expression            = empty-expression | containing-expression

[2] empty-expression      = "<" element-name *attribute-expression "/>"
      
[3] containing-expression = "<" element-name *attribute-expression [connective]">"
                                1*contained-expression
                            "</" element-name ">" 

[4] element-name          = identifier
      
[5] attribute-expression  = attribute_name "=" quoted-string
      
[6] contained-expression  = expression
      
[7] attribute_name        = identifier

[8] identifier            = <a valid XML identifier>

[8] quoted-string         = `"` string `"`

[9] string                = <[UTF-8] string (with " and & escaped)>

[10] connective           = 'APPEL:connective="' conn '"'

[11] conn                 = or | and | or-exact | and-exact

APPELでは、規則における複数の表現が証拠の一つと同じ要素を照合できるということに注意。規則評価器は証拠でどの部分の規則がどの部分に照合したかという事を覚えておく必要ない。その代わり、以下の例に示しているように、各表現は有効な証拠に対して別々に確認することができる。: 規則のステートメント-表現は、証拠の同じ<STATEMENT>(ステートメント)要素を別々に照合する。


図 5.2:照合の例
<-- ruleset -->

<APPEL:RULE behavior="inform">
  <POLICY APPEL:connective="and">
    <STATEMENT APPEL:connective="and">
      <RECIPIENT APPEL:connective="or-exact">
        <ours/>
      </RECIPIENT>
      <DATA-GROUP APPEL:connective="or-exact">
        <DATA name="user.*"/>
      </DATA-GROUP>
    </STATEMENT>
    <STATEMENT APPEL:connective="and">
      <PURPOSE APPEL:connective="or-exact">
        <custom/>
      </PURPOSE>
      <DATA-GROUP APPEL:connective="or-exact">
        <DATA category="online"/>
      </DATA-GROUP>
    </STATEMENT>
  </POLICY>
</APPEL:RULE>
<-- evidence (abbreviated) -->

<POLICY>
  ...
  <STATEMENT>
      <RECIPIENT><ours/></RECIPIENT>
      <PURPOSE><custom/></PURPOSE>
      <DATA-GROUP>
        <DATA name="user.home.online.email"/>
      </DATA-GROUP>
  </STATEMENT>
</POLICY>

規則の著者がorもしくはor-exactフラグと共にAPPEL:connective(連結詞)属性を明示的に使用しなかった場合、callingプログラムによって提供される証拠のセットの中にない要素に関する表現は、常にfalseと評価する。例えば、証拠が要素を含まない場合に限り、連結詞を使わずに係争解決要素を照合する(含まれている)表現を使用することはいつもうまくいかない。

反対に、規則の著者が明示的にor-exactまたはand-exactフラグと共にAPPEL:connective(連結詞)属性を使用しなかった場合に限り、規則にある対応する要素表現がない証拠はいつも無視される。例えば、係争解決要素を含むが、開示要素を含まない(そして、連結詞を使用しない) P3Pプライバシーポリシーを参照する規則はおそらく、係争解決および開示要素の両方を特徴づけるP3Pプライバシーポリシーを照合することができる。

P3Pプライバシーポリシーやリクエスト情報以外の証拠を照合するにはAPPELレベル2を使用することが必要であることに注意されたし。APPELレベル1を使用すると、P3PプライバシーポリシーやAPPEL:REQUEST要素以外は無視されるだろう(規則の評価の変更はしない)。2つ以上のP3Pプライバシーポリシーが有効である場合、個々に規則評価器へ提示されるべきである。(5.1 規則評価器の要約を参照のこと)

5.4 照合

APPELはどのようにして表現と証拠を照合するのか

APPELの表現は規則と有効な証拠を照合するのに使用される。規則で与えられた要素に対して、表現は同じ属性、値、そして照合している-要素を特徴づけている全く同じ要素 を証拠が含んでいるかどうかをテストすることができる。APPELにある表現すべての標準の照合の意味論 は使用される連結詞の選択で左右され、(以下の5.4.3 連結詞を参照のこと)以下に要約することができる。:


  1. 規則の属性の表現すべてはANDされ、追加の属性は無視される。
    属性は単一の要素の中で ANDされる。それは、表現の属性は証拠の単一の要素に現れなければならないということである。規則の要素にない証拠の属性は無視される。
  2. 含まれている表現は
    1. ...ORされている(orおよびor-exact連結詞)
      現在の表現に含まれている少なくとも一つの表現は対応する証拠の要素の中にある要素を照合しなければならない。
    2. ...ANDされている(andおよびand-exact連結詞)
      表現にリストされている含まれている要素はいずれも証拠の対応する場所に、照合する属性と値と共に現れなければならない
  3. Additional 証拠 (non-属性)...
    1. ...は無視される(orおよびand連結詞)
      規則で発見できない証拠にリストされている要素はいずれも (または規則で発見できても、照合する属性と値がない要素) は無視されるだろう。
    2. ...は無視されない(or-exactおよびand-exact連結詞)
      規則で発見できない証拠でリストされている要素はいずれも(または規則で発見できるが照合する属性と値がない要素)規則に障害を起こすように促すだろう。

5.4.1 属性の表現

以下の場合または以下の場合にのみ、属性の表現は証拠にあるXML要素の属性-値の一組を照合する。:
  1. 属性名が同一である。
  2. 値が同一のAND (文字列比較を使用して)

= operatorだけは属性の表現に適応されてもよい。すべての属性値が数字(P3P要素が数属性値を表していないのでこれは実際には重要でない)を表したとしても、APPELで文字列として扱われる。表現が照合するために、表現の属性の表現にリストされている属性および値はすべて、証拠において同じ名前で一つの要素に現れなければならない。証拠で発見されているが、規則で参照されていない追加の属性はいずれも無視される。

規則に属性の値に制限がない要素に特別な属性の出現が必要である場合、(空白の値を含む!), ワイルドカード文字"*"が使用されるかもしれない。(例えば、attribute="*"の中のように) しかしながら、規則が特別な属性の出現を全く必要としない場合、属性は 規則に現れるべきではない。

APPELでは、証拠セットの要素(たとえば、access属性のない照合<DISCLOSURE>要素)に或る属性が出現しない規則を書く事ができない事や、ある要素は証拠に存在していない事に注意されたし。(例えば、係争解決フィールドを含まない照合ポリシー)

5.4.2 属性の表現 メタ文字

APPELは属性の表現で単純な規則正しい表現のサポートを提供するための単一のメタ文字を提供する。: 星"*"シンボル。星のシンボルの使用については、DOS/WindowsおよびUNIXでのオペレーティングシステムシェルと似ているが、egrepなど、標準の規則正しい表現システムの意味論とは違う。

文字列と共にメタ文字を使用すると文字列-値の範囲を規定することができる。例えば、foo.comドメインのホストの"*.foo.com"、または、URI の"*://*""(または、少なくともこういったもの)。ユーザが最初の*星のシンボルを規定しない限り、文字列値はいつも文字列の始まりから照合される事に注意されたし。APPELレベル1では、終わりから文字列の照合はできない。

また、例えば、<DISPUTES res*="service">もしくは<DISP*resolution-type="service">などにおいての属性名または要素名を照合する為ではなく、引用されている文字列の中にのみワイルドカード文字が許可されている事にも注意! データ要素(サブツリー)の範囲を照合するの上記の方法でワイルドカード文字は適用されるが、データ-参照 表現 (<DATA name="user.*"/>when used in)で使用される時は、データセット leafs: <DATA name="*.zipcode"/>のセットの照合をするためには使用できない: !


5.4.3 連結詞

属性-表現はいつもANDされるが、含まれている-表現の照合は囲んでいる要素への属性として規定される事ができる連結詞の照合に従っている。APPELレベル1は以下の4つの連結詞をサポートしている:
or
一つ以上の含まれた表現が証拠の(正しい場所)で発見できる場合、orは照合をする。証拠が規則にリストされていない要素を含んでいる場合、その証拠は無視される。この連結詞を使用するには証拠にある含まれた表現のリストが少なくとも一つ必要である。
and
証拠の(正しい場所)で含まれている表現がすべて発見できる場合、andは照合をする。証拠が規則にリストされていない要素を含んでいる場合、その証拠は無視される。この連結詞を使用するには 含まれている表現のリストすべてが証拠に現れる必要がある。
or-exact
一つ以上の含まれている表現が証拠の(正しい場所)で発見できる場合、or-exact は照合をする。証拠が規則にリストされていない要素を含んでいる場合、照合はfailsとなる。この連結詞を使用することで、規則にリストされているこれらの要素だけを証拠に現すことができる。
and-exact
一つ以上の含まれている表現が証拠の(正しい場所)で発見できる場合、and-exactは 照合をする。証拠が規則にリストされていない要素を含んでいる場合、照合はfailsとなる。この連結詞を使用することで規則にリストされている要素と証拠を確実に一致させることができる。-- 要素がなくなっていなければ、追加の要素はあらわれない。連結詞が与えられていない場合、これは意味論を照合するデフォルトである

トップレベル表現右下の<APPEL:RULE>要素はいつもexact照合を使用して照合される。連結詞は<APPEL:RULE>要素下の要素で使用される。連結詞が与えられていない場合、exact照合が行われる。連結詞は含まれている-表現の直接の照合を管理するのみであり、ダウンロードを伝達しない(受け継いだもの)。これらの含まれている-表現が他の表現を含んでいる場合、新しい連結詞はそのレベルか、または、exact連結詞が再び適用しているデフォルトで規定される必要がある。

4つの有効な連結詞から生じている異なった照合の意味論は以下の図5.3で要約される:


図 5.3:連結詞
含まれている表現は
ORされている ANDされている
追加の証拠 は無視される or and
を変更する or-exact and-exact   (デフォルト)

5.4.4 オプションデータ要素の照合要素

P3Pのデータ要素は、宣言された要素は必要ないと述べて、optional="yes"とタグ付けされる。APPEL規則がオプション的データ要素を取り扱うことができるように,規則評価器は証拠のポリシーからオプション的要素を選択的に取り除くことができなければならないし、ユーザの 規則セットとこのようにして変更した証拠を何度も比較できなければならない。 いくつかの変更が行われた後の照合の場合、発生した挙動(fireされた規則で規定したように)と共に規則を起こした規則評価器は (変更された) ポリシーのコピーを返さなければならない。このことによって、ユーザのプリファレンスを照合するためにユーザエージェントはオプション的要素のどれをデータ転送から省略するかを決めることができる。

規則に対抗するオプション的データ要素を使ってポリシーを照合する単純な機構を以下に記す。ユーザエージェントの実装者は恐らくもっと効率的な戦略を使用したいと思うだろう:

  1. 規則セットの各規則のために
    1. オリジナルのポリシーのコピーを作り、証拠のプールに置く。
    2. 証拠のポリシーが規則の照合に失敗、および、オプション的データ要素が存在している間:
      1. ランダムにオプション的データ要素を取り除く
    3. もし、規則が (恐らく変更された)ポリシーを照合するならば、規則の挙動とポリシーのコピーの両方を返す。

5.4.5 オプションと必須の拡張子の照合

P3P 1.0 はオプション的で必須の拡張子のコンセプトもサポートする。このような拡張子は<EXTENSION>...</EXTENSION>タグのセットで囲まれており、知られていない拡張子が無視されるか(optional="yes")どうかを示すために使用されるoptional属性を特徴つけている。

このような必須およびオプション的な拡張子は, オプション的<DATA>要素が照合されるのと全く同じ方法で、APPELで照合される。(5.4.4 オプションデータ要素の照合と比較して下さい): 規則評価器は、オプション的であるとタグ付けされている拡張タグを選択的に取り除くことができなければならなず、ユーザの規則セットとこのようにして 変更された証拠を何度も比較できなければならない。オプション的拡張が削除された後の照合の場合、規則評価器は発生した挙動と一緒に発生した変更後のポリシーのコピーをかえさなければならない

P3Pプライバシーポリシーファイルで参照された拡張子がサポートされているかどうかを決めるのはcalling アプリケーションであるという事に注意。この事は恐らく、規則評価器が呼び出される前になされるべきである。例えば、同時に有効なP3Pプライバシーポリシーは構文的に正しい。

5.4.6 カテゴリの翻訳サポート

P3Pカテゴリはユーザとユーザエージェントにデータの故意の使用に関するヒントを提供するデータ参照要素の属性である。カテゴリはP3P ユーザエージェントが実装と使用をし易くするのに重要である; カテゴリによって、ユーザはデータ交換に関してより普及したプリファレンスと規則を表す事ができる。新しい要素もしくは、形式データやクッキーなどの可変性の抽象的な要素への照合が定義されると、カテゴリは含まれなければならない。

以下の章はAPPELトラストエンジンがサポートしなければならないふたつの異なったケースを示す: 明確なカテゴリを使用して、名付けられたデータ参照要素を参照する規則, その例は以下である。

<DATA name="dynamic.cookies" category="navigation"/>,
同様に、以下の様にカテゴリのみを使用してデータ参照要素を使用する規則セット
<DATA category="preference"/>

名前を付けられ、カテゴリ化されたデータ参照要素

P3P基本データセットのほとんどの要素は一つ以上を固定したカテゴリへ割り当てる。例えば、ユーザの誕生日、user.bdate.P3P1.0仕様書で定義されているように"人口統計学的および社会経済データ(Demographic and SocioEconomic Data)"カテゴリに割り当てられる。こういった要素に関して、P3PプライバシーポリシーとAPPEL規則ファイルのカテゴリ明確な (再-)定義は意味をなさないし、ユーザエージェントから無視されなければならない

しかしながら、ある数の要素に関して、基本データセットは固定したカテゴリを規定しないが、P3Pプライバシーポリシーの著者は明確にカテゴリをリストする代わりに、この要素はこの特別な状況のために使用される。これらの要素は"可変性-カテゴリデータ要素と呼ばれており、これらの要素を参照するデータ参照表現だけのために、APPEL則評価器はカテゴリ属性の追加的使用をサポートしなければならない。

以下の擬似コードは任意に明らかなカテゴリ属性を特徴付けている、名前を付けられたデータ参照要素を照合するために必要な操作を要約している:


  1. 名づけられたデータ参照要素の定義されたカテゴリに関しては、P3P基本データセットを確認されたし。
    1. 一つ以上の固定したカテゴリが定義されたら、いかなる追加的カテゴリ属性 (規則と証拠のとちらにおいても)も無視されたし。代わりに、規則ファイルがアプリケーションにロードされた後すぐ、むしろ予備の解析段階で、ユーザエージェントは規則ファイルでエラーを示す事ができるだろう
    2. 固定されているカテゴリが基本セットに定義されていないか、または要素が基本セットの一部ではない場合、両方の証拠で明確なカテゴリ属性の使用が必要である。対応する証拠 要素のカテゴリ属性を正しく照合する規則の要素のみが許可される。-- カテゴリが与えられていないすべての場合または、照合しないカテゴリ値が規則の失敗をまねく場合。
  2. 規則のデータ要素すべてを照合するために、上の5.4 照合で示している照合プロセスを使用されたし。

カテゴリ-onlyデータ参照要素(カテゴリ拡張子)

APPEL規則セットの規則のほとんどは照合されるデータ要素すべての名前を明白にリストしなければならないが、APPEL実装は規則のカテゴリ-onlyデータ参照要素の使用をサポートしなければならない

カテゴリ-onlyデータ参照要素はカテゴリ(category)属性のみを含むが、name属性を含まない<DATA>要素である。このような規則のカテゴリ-onlyデータ参照要素に遭遇すると、APPEL規則エンジンは黙示的に各参照されたカテゴリを、効果的に規則を表しながら、あたかもこのカテゴリに属しているP3P基本データセットからのすべての要素が明示的にリストされているかのように、そのカテゴリに属している基本要素のリストへ翻訳しなければならない。

以下の図5.4 は一例を示している。あらゆる固定した-カテゴリデータ要素 ("user.home.online.*"および"user.business.online.*") に加えて、拡張子はいずれの可変性-カテゴリデータ要素 ("dynamic.cookies"および"dynamic.miscdata") を適切なカテゴリで増加させて、考慮する必要がある。

参照されているカテゴリに属しているこのサービスとして紹介しているカスタムデータスキーマはいずれもこの機構によって照合される。ユーザエージェントはサービスに固定したカテゴリ基本要素、例えば、"user.name.first"または"user.home.postal.city"などのカテゴリを上書きできるようにしてはならない


図 5.4:カテゴリ照合
<APPEL:RULE behavior="拒否">
<!-- "online"カテゴリから要素がリクエスト
     されたら、この規則は照合する-->

  <POLICY APPEL:connective="and">
    <STATEMENT APPEL:connective="and">
      <DATA-GROUP APPEL:connective="or">
        <DATA category="online"/>
      </DATA-GROUP>
    </STATEMENT>
  </POLICY>
</APPEL:RULE>
<APPEL:RULE behavior="拒否">
<!-- 左側の規則の明示的表現 -->

  <POLICY APPEL:connective="and">
    <STATEMENT APPEL:connective="and">
      <DATA-GROUP APPEL:connective="or">
        <DATA name="user.home.online.email"/>
        <DATA name="user.home.online.uri"/>
        <DATA name="user.business.online.email"/>
        <DATA name="user.business.online.uri"/>
        <DATA name="dynamic.cookies" category="online"/>
        <DATA name="dynamic.miscdata" category="online"/>
      </DATA-GROUP>
    </STATEMENT>
  </POLICY>
</APPEL:RULE>

APPELトラストエンジン実装が明示的にカテゴリ-onlyデータ参照要素を含む規則を拡張するかどうか、または、かわりに対応するカテゴリで(または、複数のカテゴリがこの要素の為に定義されたら、異なったカテゴリを特徴付けている複数の要素で)証拠の各データ参照要素を増すかどうか、または、単にカテゴリ属性のディレクトリを直接照合するかどうかはAPPELトラストエンジン実装しだいである。

5.5 要約の照合と例

以下の章では上で述べた異なる照合の意味論 を要約し、照合アルゴリズムの例を述べる。

5.5.1 擬似コードの意味論の照合

APPELにおける規則の標準照合の意味論は以下である。:
以下のすべてを含んでいる場合もしくはその場合のみ、表現"E"が 証拠"X"(証拠のあるXML要素)の一部分を照合する:
  1. EXの要素名が同一である
  2. Eの属性の表現すべてがXの属性を照合する(表現Eで参照されていない証拠Xにおける追加の属性は無視される)
  3. [or連結詞がEで与えられている場合] Eの含まれている表現 (任意の場合)のうち少なくとも一つXの囲まれている要素を照合する (表現Eで参照されていない証拠Xにおける追加の囲まれている要素は無視される)。
  4. [and連結詞がEで与えられている場合] Eの含まれている表現 (任意の場合) がすべてXの囲まれている要素を照合する(表現Eで参照されていない証拠Xにおける追加の囲まれている要素は無視される)
  5. [or-exact連結詞がEで与えられている場合] Eの含まれている表現(任意の場合)がのうち少なくとも一つがXの囲まれている要素を照合する(表現Eで参照されていない証拠Xにおける追加の囲まれている要素は無視されない)
  6. [and-exact連結詞がEで与えられている場合、または連結詞がEで与えられていない場合] Eの含まれている表現 (任意の場合)がすべてXの囲まれている要素を照合する (表現Eで参照されていない証拠Xにおける追加の囲まれている要素は無視されない)

5.5.2 照合アルゴリズムの例

照合過程で上記の違いの説明をよりよく理解するために、この章ではAPPELレベル1の照合の意味論を実装するためのアルゴリズムを示す。
規則の各表現に関しては以下の状況(C1-C3) を持つ証拠で照合を参照のこと:
C1 証拠の照合は規則表現(<STATEMENT>, <POLICY>など)と同じ種類のXML要素である etc.)
C2 規則表現すべての属性-表現に関して, 属性-表現が同じ属性名と規則を照合する適切な属性-表現に従って照合する値を持つ証拠に存在する。
表現がor連結詞を特徴付ける場合:
C3a 表現内に含まれているネストされた各XML要素の少なくとも一つに関して、C1からC3を満している。
表現がand連結詞を特徴付けている場合:
C3b 表現内に含まれているネストされたXML要素に関して、C1からC3 を満たしている
表現 がor-exact連結詞を特徴付けている場合:
C3c 証拠においてネストされたXML要素に関して, C1からC3を満たしている
表現が連結詞を特徴付けていないか, an exact連結詞を特徴付けている場合:
C3d 表現に含まれているネストされたXML要素および, 証拠においてネストされたXML要素に関して, C1 からC3を満たしている。
照合がすべての表現に対して発見でき、規則がfireする場合

付録


付録 A: APPELレベル2仕様書

本文書の最初のドラフトがリリースされた時、ワ―キンググループは、このドラフトは設定した必要条件に合ってはいるが、結果としてできた言語は複雑で、完全に理解できないと思った。実際に誰もこの言語を実際のアプリケーションで使おうとしない間は、プライバシープリファレンスを表現するための適切な言語デザインにアクセスする事は難しいと論じられた。

1.3 必要条件の章で述べた様に, APPELで表現されている規則セットをサポートする初期段階のP3Pユーザエージェントの実装を用意にする為に、この仕様書を簡単にする努力がなされた。核となる言語 (レベル1)から表現のセット(レベル2)を分離する事によって、APPELの完全な機能セットを仕上げる前に私達がプライバシープリファレンス言語を使用しての業務に着手できるように、ワーキンググループはAPPELの早い採用を望む。

レベル2改訂において、ワーキンググループは単純な最初の実装を可能にするために、以下の構成を構文および前回(レベル1で)見落としていた言語の意味論を追加する予定である:

旧版互換性が最優先だが、この時点では保証できない。ワークは上記の機能を使用するAPPELコア言語 (APPELレベル1)を拡大するために進行中であり、現在とこれからの機能に関するwww-p3p-public-comments@w3.orgへのコメントを求める。

付録 B: 規則セット例 (レベル1)


B.1 ほぼ匿名(ALMOST ANONYMOUS)

この規則セットは匿名に近いブラウジング業務を提供する。そして、"個人識別のデータは使用されていない"ということ以外の開示にアクセスするWebサイトについて警告する。また、実際のコンタクト情報やオンラインコンタクト情報, 財務会計識別名、や"他の"データとして記されているデータを収集するWebサイトについて警告する。また、このデータが共有されず、売買目的でサイト訪問者とコンタクトとるために使用されず、個々のプロファイリングのために使用されず、"他の"使用と定義された目的のために使用されない限り、他の種類のデータの収集と管理機構の使用を許可する。支払いや取り引き情報といった個人情報の交換が必要な電子商取引に従事したいと考えるユーザはサイトごとを基礎としたこれらの設定を書き換えなければならないだろう。
図 B.1:"ほぼ匿名(Almost Anonymous)"の規則セット
<APPEL:RULESET xmlns:APPEL="http://www.w3.org/2000/APPEL"
               crtdby="W3C" crtdon="15-March-2000 10:55:32 GMT">

  <APPEL:RULE behavior="warn" 
     description="Service collects some kind of identifiable information">  
    <POLICY APPEL:connective="or">
      <DISCLOSURE access="contact" />
      <DISCLOSURE access="other" />
      <DISCLOSURE access="contact_and_other" />
      <DISCLOSURE access="all" />
      <DISCLOSURE access="none" />
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Service collects physical and/or online contact 
                  information and/or financial account identifiers and/or
          other data that may be personally-identifiable">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <DATA-GROUP APPEL:connective="or">
            <DATA category="physical"/>
            <DATA category="online"/>
            <DATA category="uniqueid"/>
            <DATA category="financial"/>
            <DATA category="other"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="accept" 
     description="service does not collect identifiable data or share
                  data with other parties">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <RECIPIENT APPEL:connective="and-exact">
          <ours/>
        <RECIPIENT/>
        <PURPOSE APPEL:connective="or-exact">
             <current/><admin/><develop/><custom/><targeting/>
        </PURPOSE>
        <DATA-GROUP APPEL:connective="or-exact">
            <DATA name="user.*"/>
            <DATA name="dynamic.*" category="state"/>
        </DATA-GROUP>
     </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior = "warn"
    description = "service requests data from your data repository or
                   has a practice that doesn't match your preferences">
      <APPEL:OTHERWISE/>
  </APPEL:RULE>
</APPEL:RULESET>

B.2 プライバシーと商取引

この規則セットは異なったプラクティスに従った法的機関や公のフォーラム、または関係ない第三機関とこの情報が共有された時; または、売買目的やプロファイリング、または"他の"目的で使用された時は、警告を発するが、この規則セットによってユーザは電子商取引に必要な個人情報を交換できる。また、サイトが健康管理情報を収集した時も、警告がある。情報のプロンプトはアクセスのないサイトで提供される。
図 B.2:"プライバシーと商取引"の規則セット
<APPEL:RULESET xmlns:APPEL="http://www.w3.org/2000/APPEL"
               crtdby="W3C" crtdon="15-March-2000 16:41:21 GMT">

  <APPEL:RULE behavior="warn" 
     description="Data may be shared with legal entities following 
                  different practices, public fora, or unrelated third
          parties.">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <RECIPIENT APPEL:connective="or">
          <other/><public/><unrelated/>
        <RECIPIENT/>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Data may be used for marketing, profiling or "other"
          purposes.">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <PURPOSE APPEL:connective="or">
             <contact/><profiling/><other/>
        </PURPOSE>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Site collects healthcare information.">
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
       <DATA-GROUP APPEL:connective="or">
            <DATA category="health"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="inform" 
     description="service does not provide access to identifiable data
                  it collects">  
    <POLICY APPEL:connective="and">
      <DISCLOSURE access="contact" />
     </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior = "accept"
    description = "privacy policy matches Privacy And Commerce preferences">
      <APPEL:OTHERWISE/>
  </APPEL:RULE>
</APPEL:RULESET>

B.3 シールを探す(LOOK FOR THE SEAL)

サイトが関係ない第三機関と情報を共有しない限り、この規則セットによってユーザは"PrivacyProtect" や"TrustUs"シールを持つWebサイトであらゆる種類の個人情報をあらゆる目的で使用できる。また、情報が異なったプラクティスに従った法的機関や公のフォーラム、または関係ない第三機関と共有された時;または、売買目的や、プロファイリングまたは、シールのないサイトによって"他の"目的で使用された時、警告はあるが、この規則セットによって、ユーザはあらゆるサイトで電子商取引に必要な個人情報を交換することができる。情報のプロンプトはシールを持ち、健康管理情報を収集するサイトで提供される;警告はシールを持たないが、健康管理情報を収集するサイトで提供される。情報のプロンプトはアクセスのないサイトで提供される。
図 B.3:"シールを探す(Look For The Seal)"の規則セット
<APPEL:RULESET xmlns:APPEL="http://www.w3.org/2000/APPEL"
               crtdby="W3C" crtdon="15-March-2000 16:41:21 GMT">

  <APPEL:RULE behavior="accept" 
     description="Service has privacy seal and does not share data
                  with unrelated third parties.">  
    <POLICY APPEL:connective="and">
      <DISPUTES-GROUP APPEL:connective="or">
        <DISPUTES resolution-service="independent"
                 service="http://www.privacyprotect.org*" />
        <DISPUTES resolution-service="independent"
                 service="http://www.trustus.org*" />
      </DISPUTES-GROUP>
      <STATEMENT APPEL:connective="and">
        <RECIPIENT APPEL:connective="or">
          <ours/><same/><other/><delivery/><public/>
        <RECIPIENT/>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Service collects data needed for e-commerce activities
                  but may share this data with legal entities following
                  different practices, public fora, or unrelated third parties."> 
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <PURPOSE APPEL:connective="and-exact">
             <current/>
        </PURPOSE>
        <RECIPIENT APPEL:connective="or">
          <other/><public/><unrelated/>
        <RECIPIENT/>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Service collects data needed for e-commerce activities
                  but may use it also for marketing, profiling, or "other"
          purposes."> 
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <PURPOSE APPEL:connective="and">
             <current/>
        </PURPOSE>
        <PURPOSE APPEL:connective="or">
             <contact/><profiling/><other/>
        </PURPOSE>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="inform" 
     description="Site collects healthcare information but participates in
                  a seal program.">
    <POLICY APPEL:connective="and">
      <DISPUTES-GROUP APPEL:connective="and">
        <DISPUTES resolution-service="independent"
                 service="*" />
      </DISPUTES-GROUP>
      <STATEMENT APPEL:connective="and">
       <DATA-GROUP APPEL:connective="or">
            <DATA category="health"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Site collects healthcare information but does not
                  participates in a seal program.">
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
       <DATA-GROUP APPEL:connective="or">
            <DATA category="health"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="accept" 
     description="Service collects data needed for e-commerce activities
                  only, without sharing with legal entities following different
          practices, public fora or unrelated third parties. A seal 
          program vouches for this."> 
    <POLICY APPEL:connective="and">
      <DISPUTES-GROUP APPEL:connective="and">
        <DISPUTES resolution-service="independent"
                 service="*" />
      </DISPUTES-GROUP>
      <STATEMENT APPEL:connective="and">
        <PURPOSE APPEL:connective="and-exact">
             <current/>
        </PURPOSE>
        <RECIPIENT APPEL:connective="or-exact">
          <ours/><same/><delivery/>
        <RECIPIENT/>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="inform" 
     description="service does not provide access to identifiable data
                  it collects">  
    <POLICY APPEL:connective="and">
      <DISCLOSURE access="contact" />
     </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior = "accept"
    description = "privacy policy matches Look For The Seal preferences">
      <APPEL:OTHERWISE/>
  </APPEL:RULE>

</APPEL:RULESET>

B.4 情報のみ(INFORMATION ONLY)

この規則セットによってユーザはあらゆる種類の個人情報をあらゆる目的で交換できる。しかしながら、サイトが売買目的やプロファイリング、または"他の"目的でデータを収集した時; 異なったプラクティスに従った法的機関や公のフォーラム、関係ない第三機関と共有した時;または、健康管理情報を収集した時、この規則セットは情報プロンプトを提供する。
図 B.4:"情報のみ"(Information Only)の規則セット
<APPEL:RULESET xmlns:APPEL="http://www.w3.org/2000/APPEL"
               crtdby="W3C" crtdon="15-March-2000 16:41:21 GMT">

  <APPEL:RULE behavior="inform" 
     description="Service collects data for marketing, profiling, 
                  or "other" purposes.">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <PURPOSE APPEL:connective="or">
             <contact/><profiling/><other/>
        </PURPOSE>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="inform" 
     description="Service shares information with legal entities 
                  following different practices, public fora, or unrelated third
                  parties.">  
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
        <RECIPIENT APPEL:connective="or">
          <other/><public/><unrelated/>
        <RECIPIENT/>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior="warn" 
     description="Site collects healthcare information.">
    <POLICY APPEL:connective="and">
      <STATEMENT APPEL:connective="and">
       <DATA-GROUP APPEL:connective="or">
            <DATA category="health"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </APPEL:RULE>

  <APPEL:RULE behavior = "accept"
    description = "privacy policy matches Information Only preferences">
      <APPEL:OTHERWISE/>
  </APPEL:RULE>

</APPEL:RULESET>

付録 C: トラストエンジンとデータベースエンジン

特別-目的のAPPELエンジンはP3P ユーザエージェントでの使用のためにビルドされるかもしれないが、P3P 実装者もまた、その目的ために既存のデータベースエンジンやトラストエンジンを使用することを考えるかもしれない。例えば, SQLエンジンまたは、Keynote Trust Management System [Keynote]のエンジンが有効だと証明した場合など。これらのエンジンのうち一つを使用すると、そのエンジンが求めた構文にAPPEL構文を翻訳する必要がある。このことは翻訳スクリプトによって可能である。ワーキンググループ はこの分野での試みを推進する。

付録 D: ABNF表記法(有益)

APPELの正式な文法は、少し変更した[ABNF]を使用してこの仕様書で与えられている。そういった構文がXMLの唯一の文法表現であることに注意されたい: XMLの構文的柔軟性も黙示的に含まれている; 例えば、空白規則, シングルクォーテーション(') やダブルクォーテーション(")を使用した引用、文字エスケープ、コメント、および大文字小文字を区別するなど。さらに、属性と要素はあらゆる順番で現れることに注意。

以下はABNFの単純な記載である。

name = (要素s) 
<name>が規則の名前である場合、<要素s>は一つ以上の規則名であるか、以下のオペランドを通じて結合したターミナルである。規則名は大文字/小文字を区別しない。 
(要素1 要素2)
括弧でかこまれた要素は単一の要素として取り扱われる。そしてその要素のコンテンツは順番は厳しいものである。
<a>*<b>要素
要素で起きた少なくとも<a>そして多くても<b>
(1*4<要素>は1から4の要素)
<a>要素
要素で実際に起こった<a>
(4<要素>はちょうど4の要素)
<a>*要素
<a>以上の要素
(4*<要素>は4以上の要素)
*<b>要素
0から<b>要素
(*5<要素>は0 から5の要素)
*要素
0 以上の要素
(*<要素>は0から無限大の要素)
[要素]
オプション的要素, *1(要素)と等しい
([要素] は0か1の要素)
"string"またはのtring'
ダブルクォーテーションでの正確な文字列を照合する

製造において使用される他の表記法は:

; or /* ... */
コメント.

付録 E: ワーキンググループ貢献者

Lorrie Cranor AT&T Labs-Research
Marc Langheinrich (Editor & Chair) ETH Zurich
Massimo Marchiori W3C
Joerg Meyer IBM
Joseph Reagle W3C
Drummond Reed Intermind
Mary Ellen Zurko (former Chair) Iris

参考文献

[ABNF]
D. Crocker, P. Overel. "RFC2234 -- Augmented BNF for Syntax Specifications: ABNF," Internet Mail Consortium, Demon Internet Ltd., November 1997. See /rfc/rfc2119.txt at http://www.ietf.org/.
[Keynote]
Blaze, Feigenbaum, Keromytis, "Keynote Trust Management System".
[PicsRules]
Christopher Evans, Clive D.W. Feather, Alex Hopmann, Martin Presler-Marshall, Paul Resnick, "PICSRules Specification" 29 December 1997. See /TR/REC-PICSRules at http://www.w3.org/
[P3P10]
Massimo Marchiori (editor), "Platform for Privacy Preferences 1.0 (P3P1.0) Specification" 11 February 2000 [Work in progress]. See /TR/P3P/ at http://www.w3.org/
[RDF]
Ora Lassila, Ralph R. Swick (editors), "Resource Description Framework (RDF) Model and Syntax Specification" 22 February 1999. See /TR/REC-rdf-syntax at http://www.w3.org/
[RFC 2068]
R. Fielding et al, "Hypertext Transfer Protocol -- HTTP/1.1" January 1997. See /rfc/rfc2068.txt at http://www.ietf.org/.
[RFC 2119]
S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels" See /rfc/rfc2119.txt at http://www.ietf.org/.
[RFC 822]
David H. Crocker (editor), Standard for the format of ARPA Internet text messages See /rfc/rfc822.txt at http://www.faqs.org/.
[URI]
T. Berners-Lee, R. Fielding, and L. Masinter. "Uniform Resource Identifiers (URI): Generic Syntax and Semantics." 1997. (Work in progress; see updates to RFC1738.)
[UTF-8]
F. Yergeau. "RFC 2279 -- UTF-8, a transformation format of ISO 10646." January 1998. See See /rfc/rfc2279.txt at http://www.ietf.org/

Valid XHTML 1.0!