ODRL 情報モデル 2.2

W3C 勧告

このバージョン:
https://www.w3.org/TR/2018/REC-odrl-model-20180215/
最新公開バージョン:
https://www.w3.org/TR/odrl-model/
最新の編集者草案:
https://w3c.github.io/poe/model/
実装報告書:
https://w3c.github.io/poe/test/implementors
以前のバージョン:
https://www.w3.org/TR/2018/PR-odrl-model-20180104/
編集者:
Renato Iannella, Monegraph,
Serena Villata, INRIA,
課題リスト:
GitHub リポジトリ

公開以降に報告された誤りまたは課題については、正誤表を確認してください。

翻訳も参照してください。


概要

Open Digital Rights Language(ODRL)は、コンテンツおよびサービスの利用に関する記述を表現するための、 柔軟で相互運用可能な情報モデル、語彙、および符号化メカニズムを提供するポリシー表現言語である。 ODRL 情報モデルは、ODRL ポリシーの意味論の基礎を成す、基盤となる概念、エンティティ、および 関係を記述する。

ポリシーは、特定の資産に対する許可された行為および禁止された行為、ならびに 利害関係者が満たす必要のある義務を表現するために用いられる。さらに、ポリシーは制約(例: 時間的または空間的制約)によって制限されることがあり、義務(例:支払い)が許可に課されることもある。

本文書の位置付け

この節は、公開時点における本文書の位置付けを記述する。他の文書が 本文書に取って代わる場合がある。現在の W3C 公開文書およびこの技術報告書の最新改訂版の一覧は、https://www.w3.org/TR/ にある W3C 技術報告書 索引で確認できる。

本文書は、Permissions & Obligations Expression Working Group によって勧告として公開された。 本文書に関するコメントを歓迎する。コメントは public-poe-comments@w3.org購読, アーカイブ)まで送信されたい。

ワーキンググループの実装 報告書を参照されたい。

本文書は、W3C 会員、ソフトウェア 開発者、およびその他の W3C グループと関係者によってレビューされ、ディレクターにより W3C 勧告として承認されている。 これは安定した文書であり、参考資料として使用したり、他の 文書から引用したりできる。勧告を作成する際の W3C の役割は、 仕様に注意を喚起し、その広範な展開を促進することである。これにより、Web の機能性 および相互運用性が向上する。

本文書は、 W3C 特許ポリシーの下で活動する グループによって作成された。 W3C は、当該グループの成果物に関連して行われた 特許開示の公開一覧 を管理している。このページには、 特許を開示するための手順も含まれる。実際に特許を知っており、 その特許に 必須 クレームが含まれると考える個人は、 W3C 特許ポリシーの 第6節に従ってその情報を開示しなければならない。

本文書には、2018年2月1日版 W3C プロセス文書が適用される。

1. 導入

この節は非規範的である。

いくつかのビジネス・シナリオでは、リソースに対して許可される行為および禁止される行為を表現する必要がある。 これらの許可/禁止された行為は、通常ポリシーの形式、すなわち、既存の規制または所有者によって 割り当てられた制約に適合するコンテンツの利用および再利用を示す表現として記述される。ポリシーは、 そのような Policy の定義を担うエンティティおよびそれに従う必要があるエンティティ、Policy によって表現される Permissions、Prohibitions および Duties に関連付けられる追加の制約が何であるか、といった追加情報で 拡張することもできる。これらの概念および関係を表現できることは、コンテンツの作成者にとっても、 すなわち誤用を防ぐために許可される行為および禁止される行為を明確に述べることができる点で重要であり、 また利用者にとっても、すなわち規則、法律、または所有者の制約に違反することを避けるために、 どのリソースの利用および再利用が許されているかを正確に知ることができる点で重要である。本仕様は、 これらのポリシー概念を表現するための共通のアプローチを記述する。

ODRL 情報モデルは、コンテンツ利用を記述する許可、禁止、および義務の記述のための基礎となる 意味モデルを定義する。この情報モデルは、コンテンツ利用記述の基盤モデルを提供する中核概念、エンティティ、 および関係を扱う。これらの機械可読なポリシーは、利用者がこの情報を容易に取得できるようにする目的で、 関連付けられるコンテンツに直接リンクできる。

1.1 モデルの目的

ODRL 情報モデルの主な目的は、一般にコンテンツに関連付けられる許可、禁止、および義務の記述を 表現するための標準的な記述モデルおよび形式を提供することである。これらの記述は、リソースの利用条件 および再利用条件を記述するために用いられる。このモデルは、可能な限り多くの許可、禁止、および義務の ユースケースを扱いつつ、複雑な場合を扱う際にもポリシー・モデリングを容易に保つべきである。

ODRL 情報モデルは、すべての関係者が利用できる単一の一貫したモデルである。対応する必要がある 既存の標準が存在する場合、または単一の方法だけを用いることに大きなコストが伴う場合を除き、 1つのユースケースを満たす単一の方法が、複数の方法よりも強く望まれる。ODRL 情報モデルは Linked Data の原則を用いて構築されているが、その設計はグラフベースでない実装も可能にすることを 意図している。

1.2 適合性

非規範的と示された節に加えて、本仕様内のすべての作成ガイドライン、図、例、 および注は非規範的である。本仕様内のそれ以外のすべては 規範的である。

キーワード MAY, MUST, MUST NOT, RECOMMENDED, SHOULD, および SHOULD NOT は、 [RFC2119] に記述されるとおりに解釈される。

本文書全体の例は、[json-ld] として直列化されている。JSON コンテキストを含む規範的な直列化については、ODRL Vocabulary and Expression [odrl-vocab] を参照されたい。

1.3 用語

Policy
1つ以上の Rules のグループ
Rule
Permissions、Prohibitions、および Duties の共通特性を表す抽象概念。
Action
Asset に対する操作
Permission
Asset に対して Action を実行する能力
Prohibition
Asset に対して Action を実行できないこと
Duty
合意された Action を実行する義務。
Asset
Rule の対象となるリソースまたはリソースの集合
Party
Rule において Roles を担うエンティティまたはエンティティの集合
Constraint
Action および Party/Asset 集合、または Rule に適用される条件を精緻化する ブール/論理式。
ODRL Validator
ODRL Policy 表現の適合性を検査するシステム。これには、プロパティのカーディナリティ、 それらが ODRL 情報モデルによって定義される値の型に関連しているかどうか、および 情報モデルの検証要件が含まれる。
ODRL Evaluator
ODRL Policy 表現の Rules が意図された行為の実行を満たしているかどうかを判定するシステム。
ODRL Core Vocabulary
ODRL 情報モデルによって表現される用語の集合。
ODRL Profile
ODRL Core Vocabulary を新しい用語で拡張し、Policies を表現する、コミュニティまたは分野固有の語彙
ODRL Common Vocabulary
ODRL Profiles によって再利用され得る汎用用語の集合。

2. ODRL 情報モデル

ODRL 情報モデルは、Asset リソースの利用に関連する Permissions、Prohibitions および Duties を 表現する Policies を表す。情報モデルは、Policy によって許可されるものと許可されないもの、 ならびに関与するその他の条件、要件、および当事者を明示的に表現する。ODRL 情報モデルの目的は、ポリシー作成者が Policies に任意の量の詳細を含められるようにすることで、 柔軟な Policy 表現を可能にすることである。

下の図は ODRL 情報モデルを示している。

ODRL 情報モデル
1 ODRL 情報モデル(SVG 形式でも 利用可能)

ODRL 情報モデルには次のクラスが含まれる:

ODRL 情報モデルには、クラス間のプロパティ関係が含まれる。ほとんどは明示的に名前付けされた プロパティであり、一部は抽象プロパティ(具体的には relationfunctionoperand、および failure)である。抽象プロパティは、明示的な意味論を持つ 子プロパティ(サブタイプ)によって表現されるように設計された汎用の親プロパティである。

例えば、図 1 の relation および function という2つのプロパティは、 Rule と Asset および Party クラスの間の概念的関係を表すように設計されている。 図は、Asset が Rule の主対象であることを表現するために、サブタイプ target を持つ relation プロパティを示している。function プロパティは、 Rule を発行する Party を表現するサブタイプ assigner と、 Rule の受領者である Party を表現するサブタイプ assignee を持つ。

ODRL 情報モデルは、Policy モデルの構成要素の論理ビューを提供する。 ODRL 情報モデルの実装可能ビューは、ODRL Vocabulary & Expression 文書 [odrl-vocab] において規範的に記述されている各種の 符号化直列化によって提供される。論理的な情報モデル構成要素を実装可能な直列化へマッピングする際には、 直列化言語によってサポートされる機能に応じて、いくつかのトレードオフおよび/または 差異が必要になる場合がある。

以降の節では、ODRL 情報モデルについてさらに詳しく説明する。

2.1 Policy クラス

Policy クラスには次のプロパティがある:

ODRL Policy は、そのすべての Rules に共通して共有されるプロパティを宣言することもできる MAY。具体的には、action プロパティ、 relation のサブプロパティ(target など)、および function のサブプロパティ(assigner および assignee など)である。 これらの共有プロパティに関する検証要件については、Compact Policy の節を参照。

ODRL Policy は次のいずれかでなければならない:

後者の場合、ODRL Profile(s) の IRI を示すために、profile プロパティを使用しなければならない MUST。 ODRL Profiles を定義する機構および適合要件の詳細については、ODRL Profiles の節を参照。(本文書の例では、説明のみを目的として ODRL Profile 識別子を使用する。)

ODRL Policy は、その Policy の利用の文脈をより正確に記述するためにサブクラス化できる MAY。その文脈には、ODRL プロセッサが理解しなければならない MUST 追加の制約が含まれる場合がある MAY。追加の Policy サブクラスは、ODRL Common Vocabulary [odrl-vocab] または ODRL Profiles に文書化できる MAY。Policy クラスは、(Set を除く)すべての Policy サブクラスと 互いに素でなければならない MUST

2.1.1 Set クラス

サブクラス Set の ODRL Policy は、Rules の任意の組み合わせを表す。Set Policy サブクラスは、Policy の既定のサブクラスでもある(何も指定されない場合)。

ユースケース例: 下の Set Policy は、対象 Asset http//example.com/asset:9898.movieuse する Permission を示している。

例 1
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Set",
    "uid": "http://example.com/policy:1010",
    "permission": [{
        "target": "http://example.com/asset:9898.movie",
        "action": "use"
    }]
}

本文書の例では、ODRL Policy サブクラスは JSON-LD @type トークンにマッピングされる。上の例では、Set 型の代わりに Policy 型を使用することもできた(それらは等価であるため)。

上の例は、すべての用語が ODRL Core Vocabulary [odrl-vocab] によって定義されているため、 profile プロパティを使用していない。

2.1.2 Offer クラス

サブクラス Offer の ODRL Policy は、assigner Parties から提示されている Rules を表す。Offer は通常、Policies をより広い対象に 利用可能にするために用いられるが、いかなる Rules も付与しない。

サブクラス Offer の ODRL Policy:

  • 同じ Rules における機能的役割を示すために、1つの assigner プロパティ値(型は Party)を持たなければならない MUST

注: 機能的役割の詳細については、Function Property の節を参照。

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

ユースケース例: 下の Offer Policy(前の例に基づく)は、 assigner Party http://example.com/party:org:abc から、対象 Asset http//example.com/asset:9898.movieplay する Permission を示している。

例 2
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:1011",
    "profile": "http://example.com/odrl:profile:01",
    "permission": [{
        "target": "http://example.com/asset:9898.movie",
        "assigner": "http://example.com/party:org:abc",
        "action": "play"
    }]
}

上の例は、使用される用語が http://example.com/odrl:profile:01 によって識別される ODRL Profile によって定義されていることを示すために、profile プロパティを使用している。 詳細については ODRL Profiles の節を参照。

2.1.3 Agreement クラス

サブクラス Agreement の ODRL Policy は、 assigner から assignee Parties に付与された Rules を表す。Agreement は通常、 Parties 間の Rules の条件を付与するために用いられる。

サブクラス Agreement の ODRL Policy:

  • 同じ Rules における機能的役割を示すために、1つの assigner プロパティ値(型は Party)を持たなければならない MUST
  • 同じ Rules における機能的役割を示すために、1つの assignee プロパティ値(型は Party)を持たなければならない MUST

注: 機能的役割の詳細については、Function Property の節を参照。

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

ユースケース例: 下の Agreement Policy(前の例に基づく)は、 assigner Party http://example.com/party:org:abc から assignee Party http://example.com/party:person:billie に対して、対象 Asset http//example.com/asset:9898.movieplay する Permission を 付与することを示している。

例 3
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:1012",
    "profile": "http://example.com/odrl:profile:01",
    "permission": [{
        "target": "http://example.com/asset:9898.movie",
        "assigner": "http://example.com/party:org:abc",
        "assignee": "http://example.com/party:person:billie",
        "action": "play"
    }]
}

2.2 Asset クラス

Asset クラスは、Rule の対象となるリソースまたはリソースの集合である。Asset は、 データ/情報、コンテンツ/メディア、アプリケーション、サービス、または物理的人工物など、 識別可能な任意の形式のリソースであり得る。さらに、Duty の場合など、Policy 表現を実施するために 必要となる他の Asset クラスを表すためにも使用できる。Asset は、 Permission および/または Prohibition によって参照され、Duty によっても参照される。

Asset クラスには次のプロパティがある:

Asset が uid プロパティを用いて識別子を表明しない場合は、 ODRL Policies の ODRL Validators および Evaluators への影響など、その全面的な 含意を理解しなければならない。

Asset クラスには次のサブクラスがある:

AssetCollection クラスには次のプロパティがある:

ODRL Policies は任意の種類の Asset を扱う可能性があるため、ODRL 情報モデルは 特定のメディア型の Assets を記述する追加メタデータを提供しない。Asset の型または目的に 適した Dublin Core Metadata Terms など、既存のメタデータ標準を使用することが推奨される。

2.2.1 Relation プロパティ

抽象 relation プロパティは、Action と Asset の間に明示的なリンクを 作成するために用いられ、その Asset がそれにリンクする Rule に関してどのように利用されなければ ならないか MUST を示す。

ODRL validator は、relation の次のサブプロパティをサポートしなければならない MUST:

  • target: Asset が、Rule の action が直接適用される主対象であることを示す。

追加の relation サブタイプ・プロパティは、ODRL Common Vocabulary [odrl-vocab] および ODRL Profiles において 定義できる MAY

ユースケース例: assigner Party http//example.com/party:0001 が、 target Asset http://example.com/asset:3333 を display することを offer している。

例 4
{
   "@context": "http://www.w3.org/ns/odrl.jsonld",
   "@type": "Offer",
   "uid": "http://example.com/policy:3333",
   "profile": "http://example.com/odrl:profile:02",
   "permission": [{
       "target": "http://example.com/asset:3333",
       "action": "display",
       "assigner": "http://example.com/party:0001"
   }]
}

上の例では、relation プロパティの JSON-LD 表現は target をトークンとして直接使用している。これは、親 relation プロパティのサブタイプとして定義されているためである。

ユースケース例: 下の Policy は、対象 Asset http://example.com/archive1011 に対する index action の Permission を示している。対象 asset は、そのリソースがリソースの集合であることを示すために、 AssetCollection としても宣言されている。追加の Asset relation summary は、インデックス作成の出力を格納すべき Asset http://example.com/x/database を示している。ODRL Profile ttp://example.com/odrl:profile:03 は、relation のこの新しいサブプロパティを 定義する。

例 5
{
   "@context": "http://www.w3.org/ns/odrl.jsonld",
   "@type": "Policy",
   "uid": "http://example.com/policy:1011",
   "profile": "http://example.com/odrl:profile:03",
   "permission": [{
       "target": {
           "@type": "AssetCollection",
           "uid":  "http://example.com/archive1011" },
       "action": "index",
       "summary": "http://example.com/x/database"
   }]
}

2.2.2 Part Of プロパティ

partOf プロパティは、Asset リソースがメンバーである AssetCollection を 識別するために用いられる。その目的は、Assets と AssetCollections の間のメンバーシップ関係を 明示的に表現することである。これにより、AssetCollection に関連する Rule が、どの個別 Assets にその Rule が適用され得るかを理解できる。さらに、Asset/AssetCollection の メンバーシップ関係は、Rules における競合を検出できる可能性がある。

ユースケース例: 下のスニペットは、文書を記述するいくつかの Dublin Core メタデータを示している。 odrl:partOf プロパティは、Asset http://example.com/asset:111.doc が、上の例の Policy で使用されている http://example.com/archive1011 AssetCollection のメンバーであることを表明する。 これは、http://example.com/asset:111.doc が Policy 内の target Assets の1つであり、 index され得ることを意味する。

例 6
{
   "@type": "dc:Document",
   "@id": "http://example.com/asset:111.doc",
   "dc:title": "Annual Report",
   ...
   "odrl:partOf": "http://example.com/archive1011",
   ...
}

2.2.3 Target Policy プロパティ

ODRL Policy クラスは、hasPolicy プロパティによって参照されることもできる MAY。これは、ODRL Policy Rules が 外部メタデータ表現(Asset を識別するもの)のオブジェクトとなることをサポートする。 hasPolicy がメタデータ表現と ODRL Policy の間に表明された場合、 識別されている Asset は、その Policy のすべての Rules の target Asset であると 推論されなければならない MUST。Policy 内に複数の Rules がある場合、推論された Asset は Policy 内のすべての Rule に対する target Asset となる。

ユースケース例: 下のスニペットは、movie Asset を記述するいくつかの Dublin Core メタデータを 示している。odrl:hasPolicy プロパティは、ODRL Policy http://example.com/policy:1010(これは上で記述した Set Policy)にリンクする。 この場合、Asset http://example.com/asset:9999.movie は、 Policy http://example.com/policy:1010 内の Permission に対する target Asset にもなる。この Policy に追加の Rules がある場合、同じ Asset が各 Rule の target Asset となる。

例 7
{
   "@type": "dc:MovingImage",
   "@id": "http://example.com/asset:9999.movie",
   "dc:publisher": "ABC Pictures",
   "dc:creator": "Allen, Woody",
   "dc:issued": "2017",
   "dc:subject": "Musical Comedy",
   ...
   "odrl:hasPolicy": "http://example.com/policy:1010",
   ...
}

2.3 Party クラス

Party クラスは、Rule において機能的役割を担うエンティティまたはエンティティの集合であり、 人、人物の集合、組織、または agent などである。agent とは、能動的な役割を担う、または 指定された効果を生み出す人または物である。Party は Actions を実行する(または実行しない)か、 Duty における function を持つ(すなわち、Rule において果たす function と関連付けることにより、 Party を Rule に割り当てる)。

Party クラスには次のプロパティがある:

Party が uid プロパティを用いて識別子を表明しない場合は、 ODRL Policies の ODRL Validators および Evaluators への影響など、その全面的な 含意を理解しなければならない。

Party クラスには次のサブクラスがある:

PartyCollection クラスには次のプロパティがある:

ODRL 情報モデルは、Party クラスに対する追加メタデータを提供しない。W3C vCard Ontology [vcard-rdf] または FOAF Vocabulary [foaf] など、既存のメタデータ標準を 使用することが推奨される。

2.3.1 Function プロパティ

function プロパティは、Rule を Party にリンクするために用いられ、 それにリンクする Rule に関して Party が担う function を示す。 function プロパティ自体は抽象的であり、サブプロパティは Party と Rule の間の機能的役割の明示的な意味論を表す。

ODRL validator は、function の次のサブプロパティをサポートしなければならない MUST:

  • assigner: Rule を発行している Party を示す。例えば、Permission を付与する Party、または合意された Duty の履行を求める Party。
  • assignee: Rule の受領者である Party を示す。例えば、Permission を付与される Party、または合意された Duty を履行することを求められる Party。

追加の function サブタイプ・プロパティは、ODRL Common Vocabulary [odrl-vocab] および ODRL Profiles において 定義できる MAY

ユースケース例: この Policy は、assigner および assignee という 機能的役割を持つ2つの Parties による Agreement を示す。assigner は、 target asset に対する play action を assignee に付与する。

例 8
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:04",
    "permission": [{
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "assignee": "http://example.com/people/billie",
        "action": "play"
    }]
}  

上の例では、function の JSON-LD 表現は assigner および assignee をトークンとして直接使用している。 これは、親 function プロパティのサブプロパティとして 定義されているためである。

ユースケース例: この Policy は、assigner および assignee という 機能的役割を持つ2つの Parties による Agreement を示す。assigner は、 target asset の use を assignee に付与する。この場合、 assignerParty として、また vcard:Organisation および いくつかの追加の外部プロパティとして明示的に宣言されている。assignee は、 PartyCollection として、また vcard:Group およびいくつかの追加の外部 プロパティとして明示的に宣言されている。これは、 http://example.com/team/A として識別されるすべてのエンティティが、 それぞれ同じ付与された action を持つことを意味する

例 9
{
    "@context": [
        "http://www.w3.org/ns/odrl.jsonld",
        { "vcard": "http://www.w3.org/2006/vcard/ns#" }
    ],
    "@type": "Agreement",
    "uid": "http://example.com/policy:777",
    "profile": "http://example.com/odrl:profile:05",
    "permission": [{
        "target": "http://example.com/looking-glass.ebook",
        "assigner": {
            "@type": [ "Party", "vcard:Organization" ],
            "uid":  "http://example.com/org/sony-books",
            "vcard:fn": "Sony Books LCC",
            "vcard:hasEmail": "sony-contact@example.com" },
        "assignee": {
            "@type": [ "PartyCollection", "vcard:Group" ],
            "uid":  "http://example.com/team/A",
            "vcard:fn": "Team A",
            "vcard:hasEmail": "teamA@example.com"},
        "action": "use"
    }]
}  

2.3.2 Part Of プロパティ

partOf プロパティは、Party エンティティがメンバーである PartyCollection を 識別するために用いられる。その目的は、Parties と PartyCollections の間のメンバーシップ関係を 明示的に表現することである。これにより、PartyCollection に関連する Rule が、どの個別 Parties にその Rule が適用され得るかを理解できる。さらに、Party/PartyCollection の メンバーシップ関係は、Rules における競合を検出できる可能性がある。

ユースケース例: 下のスニペットは、Party を記述するいくつかの vCard メタデータを示している。 odrl:partOf プロパティは、Party http://example.com/person/murphy が、上の例の Policy で使用されている http://example.com/team/A PartyCollection のメンバーであることを表明する。 これは、http://example.com/person/murphy が assignee であり、 Policy 内の target asset を使用できることを意味する。

例 10
{
   "@type": "vcard:Individual",
   "@id": "http://example.com/person/murphy",
   "vcard:fn": "Murphy",
   "vcard:hasEmail": "murphy@example.com",
   ...
   "odrl:partOf": "http://example.com/team/A",
   ...
}

2.3.3 Assigned Policy プロパティ

ODRL Policy クラスは、assignerOf および assigneeOf プロパティに よって参照されることもできる MAY。これは、 ODRL Policy Rules が外部メタデータ表現(Party を識別するもの)のオブジェクトとなることを サポートする。assignerOf がメタデータ表現と ODRL Policy の間に表明された場合、 識別されている Party は、その Policy のすべての Rules の assigner 機能的役割を 担うと推論されなければならない MUSTassigneeOf がメタデータ表現と ODRL Policy の間に表明された場合、 識別されている Party は、その Policy のすべての Rules の assignee 機能的役割を担うと推論されなければならない MUST。 Policy 内に複数の Rules がある場合、推論された Party は Policy 内のすべての Rule に対してその機能的役割を担う。

ユースケース例: 下のスニペットは、個人の Party を記述するいくつかの vCard メタデータを 示している。odrl:assigneeOf プロパティは、ODRL Policy http://example.com/policy:1011(これは上で記述した Offer Policy)にリンクする。 この場合、Party http://example.com/person/billie は、 Policy http://example.com/policy:1011 内の Permission の assignee にもなる。 この Policy に追加の Rules がある場合、同じ Party が各 Rule の assignee となる。

例 11
{
   "@type": "vcard:Individual",
   "@id": "http://example.com/person/billie",
   "vcard:fn": "Billie",
   "vcard:hasEmail": "billie@example.com",
   ...
   "odrl:assigneeOf": "http://example.com/policy:1011",
   ...
}

2.4 Action クラス

Action クラスは、Asset に対して実行できる操作を示す。Action は、Rule 内の action プロパティを介して Asset に関連付けられる。

Rule は Action の具体的な解釈を提供する。例えば、Permission に関連付けられる場合、Action は target Asset に対して実行することが許可される。Prohibition に関連付けられる場合、 Action は target Asset に対して実行することが禁止される操作を示す。Duty に関連付けられる場合、 Action は Party によって履行されることが義務である、合意された操作を示す

ODRL 情報モデルは、次の最上位 Actions を定義する:

Action クラスには次のプロパティがある:

Action 用語は、包含する Action を参照する includedIn プロパティを用い、推移的な手段によって use または transfer を 最上位の親用語として定義されなければならない MUSTincludedIn プロパティの目的は、参照された他の Action インスタンスの意味論が、 この Action インスタンスの意味論を包含する(含む)ことを明示的に表明することである。 includedIn プロパティは推移的であり、そのため Actions は祖先関係を形成する。

includedIn プロパティの含意は、包含する Action の Permission または Prohibition が、 includedIn 関係を持つすべての Actions に継承されるということである。 例えば、play Action が useincludedIn として定義され、 ある Policy で play が許可され、同じ Policy で use が禁止されている場合 ― かつ両方の Actions が同じ target Asset に適用される場合 ― これら2つの間で表明された関係により、 その Policy には競合がある。(詳細については Policy Conflict Strategy を参照。)

implies プロパティは、Action のインスタンスが、他方の Action インスタンスが 禁止されていないことを含意することを表明する。implies プロパティは、 includedIn 関係を持たない2つの Action インスタンス間に、そのような表明を確立できる。 例えば、share Action が distribute Action を明示的に含意する場合、 ある Policy で share が許可され、同じ Policy で distribute が禁止されていると ― かつ両方の Actions が同じ target Asset に適用されると ― これは Policy 内で競合を引き起こす。 含意された他の action が禁止されていない場合、これは競合を引き起こさない。 (詳細については Policy Conflict Strategy を参照。)

includedIn および implies プロパティの使用方法の詳細については ODRL Profiles を参照。

ODRL Common Vocabulary [odrl-vocab] は、 ODRL Profiles が採用できる MAY 汎用 Actions の標準集合を定義する。

ユースケース例: この Policy は、target Asset http://example.com/music:1012 に対する Offer を表し、その Asset を play する Action を伴う (playuseincludedIn 用語として定義されている)。

例 12
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:1012",
    "profile": "http://example.com/odrl:profile:06",
    "permission": [{
            "target": "http://example.com/music:1012",
            "assigner": "http://example.com/org:abc",
            "action": "play"
     }]
}

2.5 Constraints

Constraints は、Action および Party/Asset Collection の意味論を精緻化したり、Rule に適用される 条件を宣言したりするために使用できるブール/論理式である。Constraints は Constraint クラスまたは Logical Constraint クラスとして表せる。 Logical Constraint は、既存の Constraints をその operands として参照する。複数の Constraints が 同じ Rule、Action、Party/Asset Collection に適用される場合、それらは論理積として解釈され、 すべてが満たされなければならない MUST

Constraint および Logical Constraint クラスは、Party Collection、Asset Collection、Action、および Rule クラスとの意味的および条件的関係を形成する。 プロパティ関係は下の図にまとめられている。

ODRL Constraint 関係
2 ODRL Constraint 関係 (SVG 形式でも利用可能)

2.5.1 Constraint クラス

Constraint クラスは、1つの関係演算子によって2つの operands(Constraints ではないもの)を 比較する式に用いられる。比較が一致を返す場合、Constraint は 満たされる。そうでない場合は満たされない。Constraint クラスは、 例えば、利用回数(leftOperand)が(operator)10 (rightOperand)より小さくなければならない、といった比較式を定式化する。

Constraint クラスには次のプロパティがある:

  • Constraint は、その Constraint を識別するために、uid プロパティ値 (型は IRI [rfc3987])を 0個または1個持つことができる MAY
  • Constraint は、LeftOperand 型の leftOperand プロパティ値を1つ持たなければならない MUST
  • Constraint は、Operator 型の operator プロパティ値を1つ持たなければならない MUST
  • Constraint は次のいずれかを持たなければならない MUST:
    • 次の型の rightOperand プロパティ値を1つ:
      • literal、または IRI [rfc3987]、または RightOperand、または
      • 集合ベースの演算子の場合、literals のリスト、または IRIs [rfc3987] のリスト、または RightOperands のリスト;
    • 次の型の rightOperandReference プロパティ値を1つ:
      • IRI [rfc3987]、または
      • 集合ベースの演算子の場合、IRIs [rfc3987] のリスト;
      right operand 値への参照として用いる。
  • Constraint は、rightOperand/Reference のデータ型のために dataType プロパティ値を 0個または1個持つことができる MAY
  • Constraint は、rightOperand/Reference の値に使用される単位を設定するために、 unit プロパティ値(型は IRI [rfc3987])を 0個または1個持つことができる MAY
  • Constraint は、leftOperand action から生成される値、または比較の参照として設定される leftOperand に関連する値のために、status プロパティ値を 0個または1個持つことができる MAY

leftOperand プロパティ値は、LeftOperand クラスのインスタンスとして定義される。 leftOperand インスタンスは、Constraint の意味論を示すために明確に 定義されなければならず MUST、 比較のための値をどのように取得または生成しなければならないかを宣言できる MAY。ODRL Common Vocabulary [odrl-vocab] は、 ODRL Profiles が使用できる MAY leftOperand を定義する。

operator プロパティ値は、Operator クラスのインスタンスとして定義される。 operator インスタンスは、left および right operands の間の「より大きい」または 「等しい」などの関係操作を識別する。

rightOperand プロパティ値は、RightOperand クラスのインスタンス、または IRIs、または Literal 値として定義される。rightOperand は、 leftOperand と比較される Constraint の値である。 rightOperandReference は、rightOperand の実際の値を得るために まず参照解決されなければならない MUST IRI を表す。 rightOperandReference は、rightOperand の値を まず IRI の参照解決から取得しなければならない MUST 場合に使用される。Constraint には rightOperand または rightOperandReference のいずれか一方だけが現れなければならない MUST

rightOperand は値を表し、rightOperandReference は値を取得するために参照解決しなければならない IRI を表す。rightOperandhttp://example.com/c100 であった場合、それは式で比較される値として解釈される。 rightOperandReference が同じ値 http://example.com/c100 であった場合、その IRI はまず参照解決されなければならず、 返されたデータが式で比較される値として解釈されなければならない。

dataType は、xsd:decimalxsd:datetime などの  rightOperand/Reference の型を示し、unit は 「EU currency」などの rightOperand/Reference の単位値を示す。

status は、比較式で使用されなければならない MUSTleftOperand action から生成された値を 提供する。例えば、count constraint は rightOperand 値 10 と status 5 を持つことができる。これは、その action がすでに5回実行されており、 比較は現在の action を status 値と比較しなければならないことを意味する。

2.5.2 Logical Constraint クラス

Logical Constraint クラスは、既存の Constraints である2つ以上の operands を、1つの論理演算子で 比較する式に用いられる。比較が論理的一致を返す場合、 Logical Constraint は満たされる。そうでない場合は満たされない。 例えば、3つの Constraints が論理的に and で結合され、3つすべてが true でなければ Logical Constraint が満たされないことを示せる。

Logical Constraint クラスには次のプロパティがある:

  • Logical Constraint は、その Logical Constraint を識別するために、uid プロパティ値(型は IRI [rfc3987])を 0個または1個持つことができる MAY
  • Logical Constraint は、比較される既存 constraints の論理関係を示す operand サブプロパティを1つ持たなければならない MUST。その値は既存の Constraint インスタンスのリストである。

ODRL evaluator は、operand の次のサブプロパティをサポートしなければならない MUST:

  • or - Constraints の少なくとも1つが満たされなければならない MUST
  • xone - Constraints のうち1つのみ、かつそれ以上ではなく、満たされなければならない MUST
  • and - すべての Constraints が満たされなければならない MUST
  • andSequence - すべての Constraints が、順番に、満たされなければならない MUST

追加の operand サブプロパティは、ODRL Profiles によって定義できる MAY

Logical Constraints に関する ODRL 検証要件には次が含まれる:

  1. operand は、サブプロパティ orxoneandandSequence のみでなければならない MUSToperand の追加サブプロパティは、Logical Constraints の使用に限り、ODRL Profiles によって定義できる MAY
  2. すべての operand 値は、一意の Constraint インスタンスでなければならない MUST

Constraint インスタンスは評価されなければならず MUST、 その結果は、論理関係が満たされるかどうかを判断するために用いられる( operand サブプロパティの意味論に基づく)。

andSequence など、順番に評価する必要がある論理 operand を使用する場合、 serialisations はリストのメンバーの順序を保持しなければならない MUST。JSON-LD では、順序付きコレクションを表すために @list キーワードを使用しなければならない MUST

2.5.3 Rule に伴う Constraint プロパティ

Rule(Permission、Prohibition、または Duty など)は、Rule に対する条件を示すために constraint プロパティを含むことができる MAY。 この条件を満たすには、constraint プロパティによって参照されるすべての Constraints/Logical Constraints が満たされなければならない MUST

ユースケース例: 下の Policy Offer の例では、permission は target asset を distribute することを許可し、その permission が 2018-01-01 までしか 実行できないという dateTime 条件の constraint を含む。

例 13
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:6163",
    "profile": "http://example.com/odrl:profile:10",
    "permission": [{
       "target": "http://example.com/document:1234",
       "assigner": "http://example.com/org:616",
       "action": "distribute",
       "constraint": [{
           "leftOperand": "dateTime",
           "operator": "lt",
           "rightOperand":  { "@value": "2018-01-01", "@type": "xsd:date" }
       }]
   }]
}

2.5.4 Action に伴う Refinement プロパティ

Action は、Action 操作の意味論を直接狭める Constraint/Logical Constraint を示すために refinement プロパティを含むことができる MAY。 Action に対するより狭い意味論のこの条件を満たすには、 refinement プロパティによって参照されるすべての Constraints/Logical Constraints が、満たされた状態を生成するものとして使用されなければならない MUST

注: Action に refinement を適用した結果は、null 操作になってはならない SHOULD NOT

ユースケース例: 下の Policy Offer の例では、permission は target asset を print することを許可し、1200 dpi 以下の解像度という refinement Constraint も 含んでいる。この refinement は printing のより狭い意味論であり、この場合は特定の最大解像度で printing することである。

例 14
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:6161",
    "profile": "http://example.com/odrl:profile:10",
    "permission": [{
       "target": "http://example.com/document:1234",
       "assigner": "http://example.com/org:616",
       "action": [{
          "rdf:value": { "@id": "odrl:print" },
          "refinement": [{
             "leftOperand": "resolution",
             "operator": "lteq",
             "rightOperand": { "@value": "1200", "@type": "xsd:integer" },
             "unit": "http://dbpedia.org/resource/Dots_per_inch"
          }]
      }]
   }]
}

ユースケース例: 下の Policy は、target asset を online media または print media の いずれか一方で reproduce する permission を示すが、 両方ではない。これは、他の場所で宣言された2つの既存 Constraints を 参照する Logical Constraint(xone operand を伴う)として表現される。

例 15
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:88",
    "profile": "http://example.com/odrl:profile:10",
    "permission": [{
        "target": "http://example.com/book/1999",
        "assigner": "http://example.com/org/paisley-park",
        "action": [{
           "rdf:value": { "@id": "odrl:reproduce" },
           "refinement": {
               "xone": { 
	           "@list": [ 
		       { "@id": "http://example.com/p:88/C1" },
                       { "@id": "http://example.com/p:88/C2" } 
		   ]
	       }
            }
        }]
    }]
}
 
{
   "@context": "http://www.w3.org/ns/odrl.jsonld",
   "@type": "Constraint",
   "uid": "http://example.com/p:88/C1",
   "leftOperand": "media",
   "operator": "eq",
   "rightOperand": { "@value": "online", "@type": "xsd:string" }
}
 
{
   "@context": "http://www.w3.org/ns/odrl.jsonld",
   "@type": "Constraint",
   "uid": "http://example.com/p:88/C2",
   "leftOperand": "media",
   "operator": "eq",
   "rightOperand": { "@value": "print", "@type": "xsd:string" }
}

Action に伴って refinement プロパティを使用する場合、rdf:value プロパティは、namespace 識別子(例 odrl)を使用しなければならない MUST Action のインスタンスを表し、それが @id キーであることを表明するために用いられる。さらに、Constraint インスタンス (logical constraint operands 用)の識別子は、それらを @id キーとして 表明しなければならない。

2.5.5 Asset Collection に伴う Refinement プロパティ

AssetCollection は、完全なコレクションの個別 Asset(s) を識別する際の refinement context を示すために、refinement プロパティを含むことができる MAYrefinement プロパティは、 コレクションの各メンバーの特性に適用される(リソース全体には適用されない)。 完全な AssetCollection の個別 Asset(s) を識別するというこの条件を満たすには、 refinement プロパティによって参照されるすべての Constraints/Logical Constraints が 満たされなければならない MUST

注: AssetCollection に refinements を適用した結果は、null 集合になってはならない SHOULD NOT

refinement プロパティを使用する場合、uid プロパティは AssetCollection識別するために使用してはならない MUST NOT。代わりに、 AssetCollection参照するために source プロパティを 使用しなければならない MUST

ユースケース例: この Policy は、マルチメディア動画の AssetCollection である target source http://example.com/media-catalogue を定義する。 target には、AssetCollection メンバーの特性を指定する refinement もある。この場合、 Assets の target subset は、running time が60分未満のものとなり、それらの各々を再生できる。なお、 runningTime leftOperand は、play action とともに ODRL Profile http://example.com/odrl:profile:11 で定義されている。

例 16
{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "@type": "Offer",
  "uid": "http://example.com/policy:4444",
  "profile": "http://example.com/odrl:profile:11",
  "permission": [{
    "assigner": "http://example.com/org88",
    "target": {
      "@type": "AssetCollection",
      "source":  "http://example.com/media-catalogue",
      "refinement": [{
        "leftOperand": "runningTime",
        "operator": "lt",
        "rightOperand": { "@value": "60", "@type": "xsd:integer" },
        "unit": "http://qudt.org/vocab/unit/MinuteTime"
      }]
    },
    "action": "play"
  }]
}

2.5.6 Party Collection に伴う Refinement プロパティ

PartyCollection は、完全なコレクションの個別 Party(ies) を識別する際の refinement context を示すために、refinement プロパティを含むことができる MAYrefinement プロパティは、 コレクションの各メンバーの特性に適用される(リソース全体には適用されない)。 完全な PartyCollection の個別 Party(ies) を識別するというこの条件を満たすには、 refinement プロパティによって参照されるすべての Constraints/Logical Constraints が 満たされなければならない MUST

注: PartyCollection に refinements を適用した結果は、null 集合になってはならない SHOULD NOT

refinement プロパティを使用する場合、uid プロパティは PartyCollection識別するために使用してはならない MUST NOT。代わりに、 PartyCollection参照するために source プロパティを 使用しなければならない MUST

ユースケース例: target Asset http://example.com/myPhotos:BdayParty は、 写真の assigner http://example.com/user44 によってソーシャルネットワークサイトに 投稿された写真の集合である。assignee source は PartyCollection http://example.com/user44/friends であり、assigner のすべての friends を表す。 assignee には、collection のうち foaf:age が18を超えるメンバーのみに、 ex:view permission(Profile によって定義される)が割り当てられることを示す refinement もある。

例 17
{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "@type": "Agreement",
  "uid": "http://example.com/policy:4444",
  "profile": "http://example.com/odrl:profile:12",
  "permission": [{
    "target": "http://example.com/myPhotos:BdayParty",
    "assigner": "http://example.com/user44",
    "assignee": {
      "@type": "PartyCollection",
      "source":  "http://example.com/user44/friends",
      "refinement": [{
        "leftOperand": "foaf:age",
        "operator": "gt",
        "rightOperand": { "@value": "17", "@type": "xsd:integer" }
      }]
    },
    "action": { "@id": "ex:view" }
  }]
}

2.6 Rule クラス

Rule クラスは、Permission、Prohibition、および Duty クラスの親である。Rule クラスは、 これら3つのクラスに共通する特性を表す。Rule クラスは、他のすべての Rule サブクラスと 互いに素でなければならない MUST

Rule クラスには次のプロパティがある:

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、 規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

抽象 relationrelation および failure プロパティの明示的なサブプロパティを使用しなければならず、 その選択は対象となる Rule のサブクラスに依存する。

Rules の3つのクラスは、Duty Rule とも重要な関係を形成する。プロパティ関係は 下の図にまとめられている。

ODRL Rule 関係
3 ODRL Rule 関係(SVG 形式でも利用可能)

2.6.1 Permission クラス

Permission は、すべての refinements が満たされ、すべての constraints が 満たされ、かつすべての duties が履行されている場合に、 Asset に対して action が実行されることを許可する。

Permission クラスは Rule クラスのサブクラスであり、Rule クラスからすべてのプロパティを継承する。 さらに、次の追加のプロパティ意味論を持つ:

  • Permission は、Asset 型の target プロパティ値を1つ持たなければならない MUST。(他の relation サブプロパティを使用できる MAY。)
  • Permission は、機能的役割のために、Party 型の assigner および/または assignee プロパティ値を 0個または1個持つことができる MAY。(他の function サブプロパティを使用できる MAY。)
  • Permission は、Duty 型の duty プロパティ値を 0個、1個、または複数持つことができる MAY

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

duty プロパティは、履行されなければならない MUST 合意された義務を表す。すなわち、duty プロパティは Permission と Duty の間の事前条件を表明する。詳細については Permission に伴う Duty の節を参照。

ユースケース例: assigner http://example.com/org:xyz からの Policy Offer は、target Asset http//example.com/game:9090 に対する play action を表し、その permission は 2017年末まで有効である。

例 18
{
   "@context": "http://www.w3.org/ns/odrl.jsonld",
   "@type": "Offer",
   "uid": "http://example.com/policy:9090",
   "profile": "http://example.com/odrl:profile:07",
   "permission": [{
       "target": "http://example.com/game:9090",
       "assigner": "http://example.com/org:xyz",
       "action": "play",
       "constraint": [{
           "leftOperand": "dateTime",
           "operator": "lteq",
           "rightOperand": { "@value": "2017-12-31", "@type": "xsd:date" }
       }]
   }]
}

2.6.2 Prohibition クラス

Prohibition は、すべての refinements が満たされ、すべての constraints が 満たされている場合に、Asset に対して action が実行されることを 禁止する。Prohibition が action の実行によって侵害された場合、 Prohibition の状態を未侵害に設定するために、すべての remedies が MUST 履行されなければならない。

Prohibition クラスは Rule クラスのサブクラスであり、Rule クラスからすべてのプロパティを継承する。 さらに、次の追加のプロパティ意味論を持つ:

  • Prohibition は、Asset 型の target プロパティ値を1つ持たなければならない MUST。(他の relation サブプロパティを使用できる MAY。)
  • Prohibition は、機能的役割のために、Party 型の assigner および/または assignee プロパティ値を 0個または1個持つことができる MAY。(他の function サブプロパティを使用できる MAY。)
  • Prohibition は、Duty 型の remedy プロパティ値を 0個、1個、または複数持つことができる MAY

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

remedy プロパティ(failure プロパティのサブプロパティ)は、 Prohibition が侵害された場合に履行されなければならない MUST 合意された義務を表す。すなわち、remedy プロパティは、 Prohibition の action が実行された場合に履行されなければならない Duty を表明する。詳細については Prohibition に伴う Remedy の節を参照。

ユースケース例: target Asset http://example.com/photoAlbum:55 の assigner は、 Permission と Prohibition の両方を持つ Agreement Policy を表す。assigner Party http://example.com/MyPix:55 は、assignee Party http://example.com/assignee:55 に Permission display を割り当てると同時に、 target Asset を archive する Prohibition を割り当てる。さらに、Policy 内で競合 (例: Permissions と Prohibitions の間)が発生した場合、Policyconflict プロパティは perm に設定され、Permissions が優先されることを示す。

例 19
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:5555",
    "profile": "http://example.com/odrl:profile:08",
    "conflict": "perm",
    "permission": [{
        "target": "http://example.com/photoAlbum:55",
        "action": "display",
        "assigner": "http://example.com/MyPix:55",
        "assignee": "http://example.com/assignee:55"
    }],
    "prohibition": [{
        "target": "http://example.com/photoAlbum:55",
        "action": "archive",
        "assigner": "http://example.com/MyPix:55",
        "assignee": "http://example.com/assignee:55"
    }]
}

2.6.3 Duty クラス

Duty は、すべての refinements が満たされた状態で action を 実行する義務である。Duty は、すべての constraints が 満たされ、かつ、その action がすべての refinements が満たされた状態で 実行されている場合に履行される。その action が実行されていない場合、 Duty を履行するには、すべての consequence も履行されなければならない。 すなわち、consequences は、同様に履行されなければならない追加の Duties である。 (注: duty または obligation プロパティによって参照される Duties のみが consequence プロパティを使用できる。)

Duty クラスは Rule クラスのサブクラスであり、Rule クラスからすべてのプロパティを継承する。 さらに、次の追加のプロパティ意味論を持つ:

  • Duty は、その Duty が直接適用される主対象である Asset を示すために、Asset 型の target プロパティ値を 0個または1個持つことができる MAY。 (他の relation サブプロパティを使用できる MAY。)
  • Duty は、機能的役割のために、Party 型の assigner および/または assignee プロパティ値を 0個または1個持つことができる MAY。 (他の function サブプロパティを使用できる MAY。)
  • Duty は、その Duty が duty または obligation プロパティを持つ Rule によって参照される場合にのみ、 Duty 型の consequence プロパティ値を 0個、1個、または複数持つことができる MAY

注: 上記のプロパティ・カーディナリティは、規範的な ODRL 情報モデルを反映している。場合によっては、 一部のプロパティの繰り返し出現もサポートされる(Policy Rule Composition および Compact Policy に記述される)が、規範的な原子的 Policy は上記のプロパティ・カーディナリティと一致する。

Duty クラスには、次の追加要件もある:

  • duty を実行する義務を負う Party は、Duty Action を実行する能力を持たなければならない MUST
  • duty を実行する義務を負う Party は、Duty を満たさなければならない MUST

consequence プロパティ(failure プロパティのサブプロパティ)は、 Permission に対する合意された Policy obligation または duty を履行しないことの影響を表すために 利用される。これらのいずれかが履行されない場合、その結果として consequence Duties も同様に新たな要件となり、元の obligation または duty に加えて、 consequence Duties もすべて MUST 履行されなければならないことを意味する。

場合によっては、consequence を引き起こした元の duty/obligation を履行するために、 元の duty/obligation に対する一部の constraints および/または refinements がもはや 満たせない場合、それらを緩和することが必要になることがある MAY

例えば、固定日までにデータを提供する obligation が履行されない場合、結果として 100ドルの罰金も支払うべきものとなる。その日付が過ぎている場合、元の duty は(日付 constraint を満たせないため)技術的には履行できない。

そのような場合、ODRL 実装は、consequence の発生後に元の duty/obligation を 満たせるようにする機構を提供するべきである SHOULD

なお、consequence プロパティは、Permission duty または Policy obligation の consequence で すでにある Duty には使用してはならない MUST NOT

2.6.4 Policy に伴う Obligation プロパティ

Policy は、Duty を履行する obligation を含むことができる MAY。 その obligation は、すべての constraints が満たされ、かつ、その action が すべての refinements が満たされた状態で実行されている場合に 履行される。

ユースケース例: 下の Agreement は、assigner http://example.com/org:43 から assignee http://example.com/person:44 への、 EU500.00 の支払い額について assigner に compensate する obligation を含む。

例 20
{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "@type": "Agreement",
  "uid": "http://example.com/policy:42",
  "profile": "http://example.com/odrl:profile:09",
  "obligation": [{
      "assigner": "http://example.com/org:43",
      "assignee": "http://example.com/person:44",
      "action": [{
          "rdf:value": {
            "@id": "odrl:compensate"
          },
          "refinement": [
            {
              "leftOperand": "payAmount",
              "operator": "eq",
              "rightOperand": { "@value": "500.00", "@type": "xsd:decimal" },
              "unit": "http://dbpedia.org/resource/Euro"
            }]
        }]
    }]
}

Policy は、obligation を履行しないことの consequence を含むこともできる MAY

ユースケース例: 下の Agreement は、assigner http://example.com/org:43 から assignee http://example.com/person:44 への、 target Asset を delete する obligation を含む。obligation が履行されない場合、consequence として、 assigner は指名された慈善団体にも EU10.00 の支払いを compensate しなければならない MUST(obligation Duty の履行に加えて)。

例 21
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:42B",
    "profile": "http://example.com/odrl:profile:09",
    "assigner": "http://example.com/org:43",
    "assignee": "http://example.com/person:44",
    "obligation": [{
	   "action": "delete",
	   "target": "http://example.com/document:XZY",
	   "consequence": [{
	   	 "action": [{
	   	     "rdf:value": { "@id": "odrl:compensate" },
	   	     "refinement": [{
	   	        "leftOperand": "payAmount",
	   	        "operator": "eq",
	   	        "rightOperand": { "@value": "10.00", "@type": "xsd:decimal" },
	   	        "unit": "http://dbpedia.org/resource/Euro"
	   	     }]
	   	 }],
	   	 "compensatedParty": "http://wwf.org"
         }]
    }]
}

2.6.5 Permission に伴う Duty プロパティ

Duty は、Permission から Duty への duty プロパティ関係を用いて履行を要求する事前条件として 指定できる MAY

Permission が複数の Duties を持つ場合、すべての Duties が履行されることに 合意されなければならない MUST。複数の Permissions が 同じ Duty(その uid プロパティによる)を参照する場合、その Duty は一度だけ 履行されればよい。

Duty に function サブプロパティが宣言されていない場合、これらの 機能的役割は、参照元 Permission で宣言されたものと同じになる。

ユースケース例: Party http://example.com/assigner:sony は、 target asset http://example.com/music/1999.mp3 を play する Offer を行う。 permission は、payAmount が $EU5.00 である refinement を持つ compensate action の duty を含む。duty には、eventpolicyUsage より小さいという constraint もあり、permission rule を実行する前に duty rule(すなわち compensation)を実行しなければならないことを意味する。

例 22
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Offer",
    "uid": "http://example.com/policy:88",
    "profile": "http://example.com/odrl:profile:09",
    "permission": [{
        "assigner": "http://example.com/assigner:sony",
        "target": "http://example.com/music/1999.mp3",
        "action": "play",
        "duty": [{
           "action": [{
              "rdf:value": { "@id": "odrl:compensate" },
              "refinement": [{
                 "leftOperand": "payAmount",
                 "operator": "eq",
                 "rightOperand": { "@value": "5.00", "@type": "xsd:decimal" },
                 "unit": "http://dbpedia.org/resource/Euro"
              }]
            }],
            "constraint": [{
                "leftOperand": "event",
                "operator": "lt",
                "rightOperand": { "@id": "odrl:policyUsage" }
            }]
        }]
    }]
}  

2.6.6 Permission/Obligation Duty に伴う Consequence プロパティ

Permission の duty、および Policy の obligation は、その duty または obligation を履行しないことに対する consequence Duty を含むことができる MAY。 この場合、Permission/Obligation Duty の最終状態を 履行済みに設定するために、すべての consequence Duties も MUST 履行されなければならない。

consequence プロパティは、failure プロパティのサブプロパティである。consequence プロパティの詳細については Duty クラス の節を参照。

ユースケース例: assigner http://example.com/org:99 と assignee http://example.com/person:88 の間の下の Agreement は、assignee が Asset http://example.com/data:77 を distribute することを、asset を Party http://australia.gov.au/ に attribute する事前条件の下で許可する。 assignee が duty を履行しない場合、または duty を履行せずに asset を distribute する場合、 consequence として、assignee は http://example.com/dept:100 によって track されることにもなる。

例 23
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:66",
    "profile": "http://example.com/odrl:profile:09",
    "permission": [{
        "target": "http://example.com/data:77",
        "assigner": "http://example.com/org:99",
        "assignee": "http://example.com/person:88",
        "action": "distribute",
        "duty": [{
            "action": "attribute",
            "attributedParty": "http://australia.gov.au/",
            "consequence": [{
               "action": "acceptTracking",
               "trackingParty": "http://example.com/dept:100"
            }]
        }]
    }]
}

2.6.7 Prohibition に伴う Remedy プロパティ

remedy プロパティは、Prohibition が実行されることによって 侵害された場合に履行されなければならない MUST 合意された Duty を表す。Prohibition action が実行された場合、 その Prohibition の侵害に対処して状態を未侵害に設定するために、すべての remedy Duties が MUST 履行されなければならない。 remedy プロパティは failure プロパティのサブプロパティである。

remedy は、consequence Duty を含む Duty を参照してはならない MUST NOT

ユースケース例: assigner http://example.com/person:88 と assignee http://example.com/org:99 の間の下の Agreement は、assignee が Asset http://example.com/data:77 を index することを禁止する。 assignee が実際に target asset を index した場合、remedy として assignee は target asset http://example.com/data:77 を anonymize しなければならない MUST

例 24
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:33CC",
    "profile": "http://example.com/odrl:profile:09",
    "prohibition": [{
        "target": "http://example.com/data:77",
        "assigner": "http://example.com/person:88",
        "assignee": "http://example.com/org:99",
        "action": "index",
        "remedy": [{
            "action": "anonymize",
            "target": "http://example.com/data:77"
        }]
    }]
}

2.7 Policy Rule 構成

ODRL 情報モデルは、Rules に対するプロパティ関係の規範的なカーディナリティを提供する。中核レベルでは、 ODRL Rule は1つの Asset、1つ以上の Party 機能的役割、1つの Action(および場合によっては Constraints および/または Duties)に関連付けられる。

Policy Rules Composition は、各 Rule が ODRL 情報モデルのカーディナリティ要件を拡張し、1つの Rule が複数の Assets、Parties、および Actions に 関連付けられることをサポートできるようにする。その目的は、共通プロパティを(単一の Rule 内で)組み合わせ、 より複合的な Policy を表現することである。その Policy はその後、規範的な原子的 等価物へ処理されるべきである SHOULD

下の例は、Policy の原子的レベルを示しており、これは既約な Rule (すなわち、縮約またはさらなる単純化ができないもの)である。

例 25
{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "@type": "Policy",
  "uid": "http://example.com/policy:7777",
  "profile": "http://example.com/odrl:profile:20",
  "permission": [{
    "target": "http://example.com/music/1999.mp3",
    "assigner": "http://example.com/org/sony-music",
    "action": "play"
  }]
} 

下の Policy 例は、同じ permission Rule 内に2つの target Assets と2つの actions を含む。

例 26
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:20",
    "permission": [{
        "target": [ "http://example.com/music/1999.mp3",
                    "http://example.com/music/PurpleRain.mp3" ],
        "assigner": "http://example.com/org/sony-music",
        "action": [ "play", "stream" ]
    }]
}

上の例は、4つの原子的 permission Rules に縮約できる。各 permission Rule は、 単一の target と単一の action を含む。

例 27
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:20",
    "permission": [{
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "play"
    },
    {
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "stream"
    },
	{
        "target": "http://example.com/music/PurpleRain.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "play"
    },
	{
        "target": "http://example.com/music/PurpleRain.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "stream"
    }]
}

Policy 内に原子的 Rules を作成するために、複数の Assets、Parties、および Actions を持つ Rules に対する ODRL 検証要件には次が含まれる:

  1. 複数の Assets(同じ relation を持つ)がある場合、既存の Rule を新たに作成された Rules(それらの Assets ごとに1つ)で置き換え、各 Rule に1つの Asset relation のみを含め、 それ以外のすべての(非 Asset)プロパティを含める。
  2. 複数の Parties(同じ function を持つ)がある場合、既存の Rule を新たに作成された Rules(それらの Parties ごとに1つ)で置き換え、各 Rule に1つの Party function のみを含め、 それ以外のすべての(非 Party)プロパティを含める。
  3. 複数の Actions がある場合、既存の Rule を新たに作成された Rules(それらの Actions ごとに1つ)で 置き換え、各 Rule に1つの Action のみを含め、それ以外のすべての(非 Action)プロパティを 含める。

2.7.1 コンパクト Policy

ODRL Policy は、そのすべての Rules に共有され共通する、Policy レベルで宣言されたプロパティを 保持できる MAY。これは、よりコンパクトな serialisations をサポートするためのショートカット方法としてのみ意図されている。 これらの共有プロパティは、Policy レベルのプロパティ(Policy クラス節で 定義されたものなど)として解釈してはならない MUST NOT

共有できる MAY プロパティ(下の図に示す)には次が含まれる:

  • 1つまたは複数の action プロパティ。
  • relation の1つまたは複数のサブプロパティ(target など)。
  • function の1つまたは複数のサブプロパティ(assigner および assignee など)。
ODRL 共有プロパティ
4 ODRL 共有プロパティ(SVG 形式でも利用可能)

Policy 内のショートカットを展開するための ODRL 検証要件は次のとおりである:

  1. Policy 内の各 Rule について:
    • 関連する共有プロパティ(Policy レベル)を検証する。
    • これらのプロパティを Rule に複製する。
  2. Policy レベルで宣言された共有プロパティを削除する。

さらに、前の節で定義された ODRL 検証要件に従い、Policy 内に原子的 Rules を 作成する。

コンパクトな ODRL Policies は、適合性のために処理される際に原子的 Policies へ展開されることが 推奨される RECOMMENDED

下の例は、そのような共有共通プロパティを Policy に適用したものを示す:

例 28
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:21",
    "target": "http://example.com/music/1999.mp3",
    "assigner": "http://example.com/org/sony-music",
    "action": "play",
    "permission": [{
        "assignee": "http://example.com/people/billie"
        },
        {
        "assignee": "http://example.com/people/murphy"
        }]
}  

下の例は、これらの共有プロパティが上記の ODRL 検証要件に従って Policy の Permissions に 展開される方法を示す。

例 29
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:21",
    "permission": [{
        "assignee": "http://example.com/people/billie",
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "play"
        },
        {
        "assignee": "http://example.com/people/murphy",
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "action": "play",
        }]
}  

2.8 Policy メタデータ

追加のメタデータ・プロパティは、外部語彙からさらなる真正性および完全性の目的をサポートするために、 Policy に追加できる MAY。ODRL 情報モデルは、 ODRL Policies に Dublin Core Metadata Terms [dcterms] を使用することを推奨する。

次の Dublin Core Metadata Terms [dcterms] プロパティを使用すべきである SHOULD:

上記のメタデータ・プロパティを持つ Policies に対する ODRL 検証要件には次が含まれる:

  1. Policy が dc:isReplacedBy プロパティを持つ場合、プロセッサは最初の Policy を 無効とみなさなければならず MUST、識別された Policy を取得して処理しなければならない MUST

ユースケース例: 下の例は、誰が Policy を作成したか、説明、Policy がいつ発行されたか、 Policy が適用される管轄区域(オーストラリア、クイーンズランド州の識別子)、および それが置き換える Policy の古いバージョンの識別子を示すメタデータ・プロパティを示している。

例 30
{
    "@context": [
        "http://www.w3.org/ns/odrl.jsonld",
        { "dc": "http://purl.org/dc/terms/" }
    ],
    "@type": "Policy",
    "uid": "http://example.com/policy:8888",
    "profile": "http://example.com/odrl:profile:22",
    "dc:creator": "Billie Enterprises LLC",
    "dc:description": "This policy covers...",
    "dc:issued": "2017-01-01T12:00",
    "dc:coverage": { "@id": "https://www.iso.org/obp/ui/#iso:code:3166:AU-QLD" },
    "dc:replaces": { "@id": "http://example.com/policy:8887" },
    "permission": [ { } ]
}  

注: Dublin Core メタデータ・プロパティで使用される文字列値は、正規化されていない場合があるため、 Policy メタデータの比較用には設計されていない。

2.9 Policy 継承

ODRL は、(子)Policy が1つ以上の(親)Policies のすべての原子的 Rules を継承できる継承機構を サポートする。 inheritFrom プロパティは、親 Policy から継承する子 Policy で使用されなければならず MUST、 親 Policies の複数の識別子を含むことができる MAY

継承を使用する場合、次が適用される:

ユースケース例: 下の(親)Policy http://example.com/policy:default を考える。 これは(Policy レベルの)assigner と、target asset policy document を review する Obligation を 含む。

例 31
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:default",
    "profile": "http://example.com/odrl:profile:30",
    "assigner": "http://example.com/org-01",
    "obligation": [{
        "target": "http://example.com/asset:terms-and-conditions",
        "action": "reviewPolicy"
    }]
}  

下の子 AgreementPolicy http://example.com/policy:4444 は、 親 Policy http://example.com/policy:default(上記)を指す inheritFrom プロパティを示している。 子 Policy は、Agreement のための target Asset、actions(Asset を display すること)、 および assignee Party を示す。

例 32
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:4444",
    "profile": "http://example.com/odrl:profile:30",
    "inheritFrom": "http://example.com/policy:default",
    "assignee": "http://example.com/user:0001",
    "permission": [{
        "target": "http://example.com/asset:5555",
        "action":  "display"
    }]
}  

継承が実行された後(親 Policy Rules と Policy レベルのプロパティが子 Policy に追加される)、 さらに Rules が原子的にされた後、結果の Policy は下に示される。元の子 Permission rule は、 親 Policy からの(Policy レベルの)assigner を含むようになる。親 Obligation rule は、 元の子(Policy レベルの)assignee を伴って、更新された子 policy に現れる。

例 33
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Agreement",
    "uid": "http://example.com/policy:4444",
    "profile": "http://example.com/odrl:profile:30",
    "inheritFrom": "http://example.com/policy:default",
    "permission": [{
        "target": "http://example.com/asset:5555",
        "action": "display",
        "assigner": "http://example.com/org-01",
        "assignee": "http://example.com/user:0001"
    }],
    "obligation": [{
        "target": "http://example.com/asset:terms-and-conditions",
        "action": "reviewPolicy",
        "assigner": "http://example.com/org-01",
        "assignee": "http://example.com/user:0001"
    }]
}

ODRL Policy Inheritance に対する ODRL 検証要件には次が含まれる:

  1. 子 Policy は親 Policy にアクセスし、更新された子 Policy に次を複製しなければならない MUST:
    • 親 Policy からのすべての Policy レベルの Assets、Parties、Actions。
    • すべての profile 識別子。
    • すべての conflict プロパティ。
    • 親 Policy からのすべての Rules。
  2. 識別された各親 Policy について上記を繰り返す。
  3. 最終的に更新された子 Policy は、Policy Composition 節で定義された ODRL 検証要件に従って、 さらに(原子的 Rules へ)展開できる MAY

2.10 Policy 競合戦略

conflict プロパティは、Policies のマージにより生じる競合、または同じ Policy 内の Permissions と Prohibitions の間の競合を解決する戦略を確立するために用いられる。競合は、 Policy Inheritance の結果として Policies をマージし、その結果の Rules が 一貫しない場合に発生することがある。

conflict プロパティは、次の Conflict Strategy Preference 値(ConflictTerm クラスの インスタンス)のいずれかを取るべきである SHOULD:

conflict プロパティが明示的に設定されていない場合、既定値の invalid が 使用される。

追加の conflict プロパティ値は、ODRL Profiles によって定義できる MAY

Conflict Strategy 要件には次が含まれる:

  1. Policy が permconflict プロパティを持つ場合、競合する Permission Rule は Prohibition Rule を上書きしなければならない MUST
  2. Policy が prohibitconflict プロパティを持つ場合、競合する Prohibition Rule は Permission Rule を上書きしなければならない MUST
  3. Policy が invalidconflict プロパティを持つ場合、競合する Rules は Policy 全体を無効にしなければならない MUST
  4. Policy が複数の conflict プロパティ値を持つ場合(例えば、Policy のマージまたは 継承の後)、競合する Rules があるなら、Policy 全体は無効でなければならない MUST

ユースケース例: 2つの Policies が同じ target Asset http://example.com/asset:1212 に関連付けられている。最初の Policy http://example.com/policy:0001 は Asset を use することを許可する。2番目の Policy http://example.com/policy:0002 は Asset の display を許可するが、 print を禁止する。両方の policies は、conflict プロパティを perm に設定することで、競合をどのように扱うかを明示的に述べている。 したがって、Permissions は常に Prohibitions を上書きする。このユースケースでは、 print Action が use Action の特殊化であるため、競合が発生する可能性がある。 しかし、perm conflict strategy により、use Permission は print Prohibition を上書きすることになる。

例 34
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:0001",
    "profile": "http://example.com/odrl:profile:40",
    "conflict": "perm",
    "permission": [{
        "target": "http://example.com/asset:1212",
        "action": "use",
        "assigner": "http://example.com/owner:181"
    }]
}
例 35
{
    "@context": "http://www.w3.org/ns/odrl.jsonld",
    "@type": "Policy",
    "uid": "http://example.com/policy:0002",
    "profile": "http://example.com/odrl:profile:40",
    "conflict": "perm",
    "permission": [{
        "target": "http://example.com/asset:1212",
        "action": "display",
        "assigner": "http://example.com/owner:182"
    }],
    "prohibition": [{
        "target": "http://example.com/asset:1212",
        "action": "print"
    }]
}

上のユースケースで、2番目の Policy が prohibit の conflict 値を持っていた場合、 結果は直接的な矛盾となり、その結果は無効な Policy となる。

3. ODRL Profiles

3.1 ODRL Profile の目的

ODRL 情報モデルは、ポリシーを表現するための中核的なフレームワークおよび語彙として機能する。ODRL Core Vocabulary [odrl-vocab] は、この一連の 語彙用語を明示する。ODRL policy は ODRL Core Vocabulary を用いて表現でき、これは 最小限サポートされるポリシー表現を表す。

ODRL Profile は、追加の意味論を必要とする ODRL policies で使用できる語彙用語(ODRL Profile Mechanism 節で 範囲付けられるもの)を提供するために定義されなければならない MUST。ODRL Profile は、ODRL policy 表現で サポートされる必要がある語彙用語を指定することにより、コミュニティのニーズに明示的に対応する。 これらの用語は明示的に定義してもよく、ODRL Common Vocabulary から採用してもよい。

ODRL Common Vocabulary [odrl-vocab] は、 Permissions、Prohibition、および Duties のための共通 actions の汎用的な範囲に加えて、Policy サブクラス、Constraint left operands および operators、Asset relations、ならびに Party functions を 提供する。

3.2 ODRL Profile 適合性

ODRL Policy が ODRL Profile に適合する場合、ODRL Profile の識別子(IRI)を示すために profile プロパティを指定しなければならない MUST。ODRL Policy が複数の ODRL Profiles に適合することを 示すために、複数の識別子を使用できる MAY

ODRL Policy で ODRL Profile(s) が使用される場合、ODRL Processing system は、識別された ODRL Profile(s) の意味論を理解しなければならない MUST。ODRL Processing system が ODRL Profile identifier(s) を認識しない場合、 policy の処理を停止しなければならない MUST

3.3 ODRL Profile Mechanism

ODRL Profile を作成するには、ODRL Core Vocabulary のクラス、プロパティ、および インスタンスへの直接的な拡張を、次の方法で定義する:

ODRL Profile 定義
追加の Policy サブクラス:
ODRL Policy クラスのサブクラスを作成し、 他のすべての Policy サブクラス(Set を除く)と互いに素であると定義する。
ex:myPolicyType rdfs:subClassOf odrl:Policy .
owl:disjointWith :Agreement :Offer, :Privacy, :Request, :Ticket, :Assertion .
追加の Asset 関係:
抽象 relation プロパティのサブプロパティを作成する。
ex:myRelation rdfs:subPropertyOf odrl:relation .
追加の Party 機能的役割:
抽象 function プロパティのサブプロパティを作成する。
ex:myFunctionRole rdfs:subPropertyOf odrl:function .
Rules のための追加 Actions:
Action のインスタンスを作成し、その includedIn 親 Action を定義する。
新しい Action は、任意の既存 Action に includedIn として定義できる MAY
新しい Action が別の新規または既存 Action と依存関係を形成する場合、implies プロパティで 2つの actions を定義する。
ex:myAction a odrl:Action .
ex:myAction odrl:includedIn odrl:use .


ex:myAction odrl:implies odrl:distribute .
追加の Constraint left operands:
LeftOperand クラスのインスタンスを作成する。
ex:myLeftOperand a odrl:LeftOperand .
追加の Constraint right operands:
RightOperand クラスのインスタンスを作成する。
ex:myRightOperand a odrl:RightOperand .
追加の Constraint 関係演算子:
Operator クラスのインスタンスを作成する。
ex:myOperator a odrl:Operator .
追加の Logical Constraint operands:
抽象 operand プロパティのサブプロパティを作成する。
ex:myLogicalOp rdfs:subPropertyOf odrl:operand .
追加の Policy 競合戦略:
ConflictTerm クラスのインスタンスを作成する。
ex:myStrategy a odrl:ConflictTerm .
追加の Rule クラス:
Rule クラスのサブクラスを作成し、 他のすべての Rule サブクラスと互いに素であると定義する。
ex:myRule rdfs:subClassOf odrl:Rule ;
owl:disjointWith odrl:Prohibition, odrl:Duty, odrl:Permission .

すべての新しいクラス(rdfs:Class, owl:Class)、プロパティ(rdf:Property, owl:ObjectProperty)、およびインスタンス(owl:NamedIndividual)も、 skos:Concept として定義されなければならない。クラスについては、適切な rdfs:domain および rdfs:range も定義すべきである。

各新規用語について、人間可読な文書化も推奨される。名前には rdfs:label、 形式的定義には skos:definition、使用に関する追加コメントには skos:note を 用いる。

3.4 ODRL Core Profile

ODRL Core Profile を識別する必要がある状況、すなわち Policy が ODRL Core Vocabulary のみに適合する場合、Core Profile には次の識別子を使用できる MAY: http://www.w3.org/ns/odrl/2/core

4. プライバシーに関する考慮事項

この節は非規範的である。

ODRL 情報モデルは、Parties に関連するそのようなデータを含む Assets の存在の同一性など、 機微な個人情報を直接表現しない。しかし、ODRL 語彙(ODRL Common Vocabulary [odrl-vocab] や ODRL Profiles など)は、個人情報に関連し得る用語を定義する場合がある。これらの仕様は、 そのような ODRL 表現を生成または消費する実装に対し、policy が使用される方法、その policy が 共有される相手となる他の party の同一性、および policy が他の parties と共有される理由を、 すべての関連ユーザーに伝達するための措置を講じるよう知らせるべきである。

A. 謝辞

POE Working Group は、ODRL Community Group および以前の ODRL Initiative の貢献に 深く感謝する。特に編集者は、過去の編集上の貢献について、Susanne Guth、Daniel Paehler、および Andreas Kasten に感謝したい。

B. 候補勧告終了 基準

この仕様が Proposed Recommendation に進むには、下記の各機能について少なくとも2つの独立した 実装が存在しなければならない。各機能は異なる製品群によって実装されてもよく、単一の製品が すべての機能を実装しなければならないという要件はない。

機能

終了基準を評価する目的では、次のものを機能とみなす:

ある機能の存在または欠如によって動作を変更しないソフトウェアは、候補勧告段階を終了する目的において、 その機能を実装しているとはみなされない。

C. W3C ODRL Community Group 報告書との関係

Permissions & Obligations Expression Working Group の成果物の基礎は、W3C ODRL Community Group によって作成された報告書である。 ODRL Community Group は、コンテンツ・サービスの公開、配布、および消費に関する資産利用の革新的な表現を サポートするため、一連の仕様を開発した。 ODRL Community Group の最終成果物は ODRL Version 2.1 仕様であり、これは ODRL の大幅な更新であり、 元の ODRL Version 1.1 [odrl](W3C NOTE として公開)を置き換えた。

次の文書は ODRL Community Group 報告書シリーズの一部である:

ODRL 情報モデルは、ODRL V2.1 Core Model Community Group 報告書から派生したものである。 W3C Working Group 成果物と ODRL Community Group 報告書との相違点の詳細は、付録に維持されている。 すべての新しい ODRL 実装は、Permissions & Obligations Expression Working Group の成果物を使用することが期待される。

D. 以前のバージョンからの変更

2016年7月21日 First Public Working Draft からの変更:

2017年2月23日 Working Draft からの変更:

2017年9月26日 Candidate Recommendation からの変更:

2018年1月4日 Proposed Recommendation からの変更:

E. 参考文献

E.1 規範的参考文献

[odrl-vocab]
ODRL Vocabulary & Expression 2.2. Renato Iannella; Michael Steidl; Stuart Myles; Víctor Rodríguez-Doncel. W3C. 2018年2月15日. W3C Recommendation. URL: https://www.w3.org/TR/odrl-vocab/
[RFC2119]
RFC において要件レベルを示すために用いる キーワード. S. Bradner. IETF. 1997年3月. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119
[rfc3987]
Internationalized Resource Identifiers (IRIs). M. Duerst; M. Suignard. IETF. 2005年1月. Proposed Standard. URL: https://tools.ietf.org/html/rfc3987

E.2 参考情報文献

[dcterms]
DCMI Metadata Terms. Dublin Core metadata initiative. 2012年6月14日. DCMI Recommendation. URL: http://dublincore.org/documents/dcmi-terms/
[foaf]
FOAF Vocabulary Specification 0.99 (Paddington Edition). Dan Brickley; Libby Miller. FOAF project. 2014年1月14日. URL: http://xmlns.com/foaf/spec
[json-ld]
JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 2014年1月16日. W3C Recommendation. URL: https://www.w3.org/TR/json-ld/
[odrl]
Open Digital Rights Language (ODRL) Version 1.1. Renato Iannella. W3C. 2002年9月19日. W3C Note. URL: https://www.w3.org/TR/odrl
[odrl2-req]
ODRL Version 2 Requirements. Susanne Guth; Renato Iannella. ODRL Initiative. 2005年2月13日. Working Draft. URL: https://www.w3.org/2012/09/odrl/archive/odrl.net/2.0/v2req.html
[odrl21-json]
ODRL Version 2.1 JSON Encoding. Jonas Öberg; Stuart Myles; Lu Ai. W3C. 2015年3月5日. W3C Community Group Final Specification. URL: https://www.w3.org/community/odrl/json/2.1/
[odrl21-model]
ODRL Version 2.1 Core Model. Renato Iannella; Susanne Guth; Daniel Paehler; Andreas Kasten. W3C. 2015年3月5日. W3C Community Group Final Specification. URL: https://www.w3.org/community/odrl/model/2.1/
[odrl21-onto]
ODRL Version 2.1 Ontology. Mo McRoberts; Víctor Rodríguez Doncel. W3C. 2015年3月5日. W3C Community Group Final Specification. URL: https://www.w3.org/ns/odrl/2/ODRL21
[odrl21-vocab]
ODRL Version 2.1 Common Vocabulary. Renato Iannella; Michael Steidl; Susanne Guth. W3C. 2015年3月5日. W3C Community Group Final Specification. URL: https://www.w3.org/community/odrl/vocab/2.1/
[odrl21-xml]
ODRL Version 2.1 XML Encoding. Renato Iannella. W3C. 2015年3月5日. W3C Community Group Final Specification. URL: https://www.w3.org/community/odrl/xml/2.1/
[vcard-rdf]
vCard Ontology - for describing People and Organizations. Renato Iannella; James McKinney. W3C. 2014年5月22日. W3C Note. URL: https://www.w3.org/TR/vcard-rdf/