발행 이후 보고된 오류나 이슈가 있는지 정오표를 확인해 주십시오
번역본도 참조하십시오.
Copyright © 2018 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
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의 역할은 해당 명세에 주의를 환기하고 그 광범위한 배포를 촉진하는 것입니다. 이는 웹의 기능성과 상호 운용성을 향상시킵니다.
이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성했습니다. W3C는 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지하며, 해당 페이지에는 특허 공개 지침도 포함되어 있습니다. 실제로 어떤 특허가 필수 청구항을 포함한다고 믿을 만한 지식을 가진 개인은 W3C 특허 정책 6절에 따라 그 정보를 공개해야 합니다.
이 문서는 2018년 2월 1일 W3C 프로세스 문서의 적용을 받습니다.
이 섹션은 비규범적입니다.
여러 비즈니스 시나리오에서는 리소스에 대해 허용되거나 금지된 동작이 무엇인지 표현해야 합니다. 이러한 허용/금지된 동작은 일반적으로 정책의 형태, 즉 기존 규정이나 소유자가 지정한 제약 조건에 부합하는 콘텐츠의 사용 및 재사용을 나타내는 표현으로 기술됩니다. 정책은 또한 추가 정보로 보강될 수 있습니다. 즉, 그러한 Policy의 정의를 담당하는 엔터티와 이를 준수해야 하는 엔터티가 누구인지, Policy가 표현하는 Permissions, Prohibitions 및 Duties와 연결될 추가 제약 조건이 무엇인지 등을 포함할 수 있습니다. 이러한 개념과 관계를 표현하는 능력은 콘텐츠 생산자에게도 중요합니다. 즉, 오용을 방지하기 위해 허용된 동작과 금지된 동작을 명확하게 명시할 수 있기 때문이며, 소비자에게도 중요합니다. 즉, 규칙, 법률 또는 소유자의 제약 조건을 위반하지 않기 위해 어떤 리소스를 사용하고 재사용할 수 있는지 정확히 알 수 있기 때문입니다. 이 명세는 이러한 정책 개념을 표현하는 공통 접근 방식을 설명합니다.
ODRL 정보 모델은 콘텐츠 사용을 설명하는 허가, 금지 및 의무 진술을 위한 기본 의미 모델을 정의합니다. 정보 모델은 콘텐츠 사용 진술을 위한 기초 모델을 제공하는 핵심 개념, 엔터티 및 관계를 다룹니다. 이러한 기계 판독 가능 정책은 소비자가 이 정보를 쉽게 검색할 수 있도록 관련 콘텐츠와 직접 연결될 수 있습니다.
ODRL 정보 모델의 주요 목표는 일반적인 콘텐츠와 연결될 허가, 금지 및 의무 진술을 표현하기 위한 표준 설명 모델과 형식을 제공하는 것입니다. 이러한 진술은 리소스의 사용 및 재사용 조건을 설명하는 데 사용됩니다. 이 모델은 가능한 한 많은 허가, 금지 및 의무 사용 사례를 포괄해야 하며, 복잡한 경우를 다룰 때에도 정책 모델링을 쉽게 유지해야 합니다.
ODRL 정보 모델은 모든 이해관계자가 사용할 수 있는 단일하고 일관된 모델입니다. 수용해야 하는 기존 표준이 있거나 단일 방법만 사용하는 데 상당한 비용이 따르는 경우가 아니라면, 사용 사례를 충족하는 단일 방법이 여러 방법보다 강하게 선호됩니다. ODRL 정보 모델은 Linked Data 원칙을 사용하여 구축되었지만, 설계는 그래프 기반이 아닌 구현도 허용하도록 의도되었습니다.
비규범으로 표시된 섹션뿐 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제, 참고 사항은 비규범적입니다. 이 명세의 그 밖의 모든 것은 규범적입니다.
핵심 단어 MAY, MUST, MUST NOT, RECOMMENDED, SHOULD, 및 SHOULD NOT은 [RFC2119]에 설명된 대로 해석해야 합니다.
문서 전체의 예제는 [json-ld]로 직렬화되어 있습니다. JSON 컨텍스트를 포함한 규범적 직렬화에 대해서는 ODRL Vocabulary and Expression [odrl-vocab]을 참조하십시오.
ODRL 정보 모델은 Asset 리소스의 사용과 관련된 Permissions, Prohibitions 및 Duties를 표현하는 Policies를 나타냅니다. 정보 모델은 Policy에 의해 무엇이 허용되고 무엇이 허용되지 않는지뿐 아니라, 관련된 다른 조건, 요구 사항 및 당사자를 명시적으로 표현합니다. ODRL 정보 모델의 목표는 정책 작성자가 Policies에 많거나 적은 세부 정보를 포함할 수 있도록 하여 유연한 Policy 표현을 가능하게 하는 것입니다.
아래 그림은 ODRL 정보 모델을 보여 줍니다.
ODRL 정보 모델에는 다음 클래스가 포함됩니다:
Policy - Permissions(permission 속성을 통해) 및/또는 Prohibitions
(prohibition 속성을 통해) 및/또는 Duties(obligation 속성을 통해)로 이루어진 비어 있지 않은
그룹. Policy 클래스는 Set, Offer 및 Agreement 하위 클래스의
부모 클래스입니다:
Set - 일반 Rules 표현을 지원하는 Policy의 하위 클래스.Offer - assigner Parties로부터 Rules 제안을 지원하는 Policy의 하위 클래스.Agreement - assigner에서 assignee Parties로 Rules 부여를 지원하는 Policy의 하위 클래스. Asset - Rule의 대상이 되는 리소스 또는 리소스의 컬렉션(추상
relation 속성을 통해). Asset 클래스는 다음의 부모 클래스입니다:
AssetCollection - 리소스 컬렉션을 식별하는 Asset의 하위 클래스.
Party - Rule에서 Roles를 맡는 엔터티 또는 엔터티의 컬렉션(추상
function 속성을 통해). Party 클래스는 다음의 부모 클래스입니다:
PartyCollection - 엔터티 컬렉션을 식별하는 Party의 하위 클래스.
Action - Asset에 대한 연산.Rule - Permissions,
Prohibitions 및 Duties의 공통 특성을 나타내는 추상 개념.
Permission - Asset에 대해 Action을 수행할 수 있는 능력. Permission은 MAY 또한 합의된 Action을 표현하는 duty
속성을 가질 수 있으며, 이 Action은 Permission을 부여받기 위한 사전 조건으로
수행되어야(MUST) 합니다.Prohibition - Asset에 대해 Action을 수행할 수 없음.Duty - Action을 수행해야 하는 의무.Constraint/LogicalConstraint - Action 및
Party/Asset 컬렉션 또는 Rule에 적용되는 조건을 정제하는 boolean/논리 표현식.ODRL 정보 모델에는 클래스 간의 속성 관계가 포함됩니다. 대부분은 명시적으로 이름이 붙은 속성이며, 일부는 추상 속성(구체적으로 relation, function, operand, 및 failure)입니다. 추상 속성은 명시적인 의미론을 가진 하위 속성(하위 유형)으로 표현되도록 설계된 일반적인 부모 속성입니다.
예를 들어, 그림 1의 두 속성 relation과 function은 Rule과 Asset 및 Party
클래스 사이의 개념적 관계를 나타내도록 설계되었습니다.
그림은 Asset이 Rule의 주요 대상임을 표현하기 위해 하위 유형 target을 가진
relation 속성을 보여 줍니다. function 속성에는 Rule을 발행하는 Party를
표현하는 하위 유형 assigner와 Rule의 수신 Party를 표현하는 하위 유형
assignee가 있습니다.
ODRL 정보 모델은 Policy 모델 구성 요소의 논리적 관점을 제공합니다. ODRL 정보 모델의 구현 가능한 관점은 ODRL Vocabulary & Expression 문서 [odrl-vocab]에서 규범적으로 설명한 다양한 인코딩 직렬화로 제공됩니다. 논리적 정보 모델 구성 요소를 구현 가능한 직렬화에 매핑할 때에는 직렬화 언어가 지원하는 기능에 따라 일부 절충 및/또는 차이가 필요할 수 있습니다.
다음 섹션에서는 ODRL 정보 모델에 대한 추가 세부 정보를 제공합니다.
Policy 클래스에는 다음 속성이 있습니다:
uid 속성 값(IRI [rfc3987] 유형)을
하나 가져야(MUST) 합니다.
permission,
prohibition, 또는 obligation 속성 값을 적어도 하나
가져야(MUST) 합니다. (자세한 내용은 Permission,
Prohibition, 및 Obligation 섹션을 참조하십시오.)
profile
속성 값(IRI [rfc3987] 유형)을 없거나,
하나 또는 여러 개 가질 수(MAY) 있습니다. (자세한 내용은
ODRL
Profiles 섹션을 참조하십시오.)
inheritFrom
속성 값(IRI [rfc3987] 유형)을 없거나,
하나 또는 여러 개 가질 수(MAY) 있습니다. (자세한 내용은 ODRL
Inheritance 섹션을 참조하십시오.) conflict 속성 값(ConflictTerm 유형)을 없거나 하나 가질 수
(MAY) 있습니다. (자세한 내용은 Policy Conflict
Strategy
섹션을 참조하십시오.)
ODRL Policy는 모든 Rules에 공유되고 공통되는 속성을 선언할 수도
(MAY) 있습니다. 구체적으로는 action 속성,
relation의 하위 속성(target 등), 그리고 function의
하위 속성(assigner 및 assignee 등)입니다.
이러한 공유 속성의 검증 요구 사항은 Compact Policy 섹션을
참조하십시오.
ODRL Policy는 다음 중 하나여야 합니다:
후자의 경우, profile 속성은 ODRL Profile(들)의 IRI를 나타내는 데 사용되어야(MUST) 합니다. ODRL Profiles를 정의하는 메커니즘과 적합성 요구 사항에 대한 자세한 내용은 ODRL Profiles 섹션을 참조하십시오. (이 문서의 예제는 설명 목적만을 위해 ODRL Profile 식별자를 사용합니다.)
ODRL Policy는 Policy의 사용 맥락을 더 정확하게 설명하기 위해 하위 클래스로 만들 수 (MAY) 있으며, 여기에는 ODRL 프로세서가 이해해야 (MUST) 하는 추가 제약 조건이 포함될 수 (MAY) 있습니다. 추가 Policy 하위 클래스는 ODRL Common Vocabulary [odrl-vocab] 또는 ODRL Profiles에 문서화될 수 있습니다. Policy 클래스는 Set을 제외한 모든 Policy 하위 클래스와 서로소여야(MUST) 합니다.
Set 하위 클래스의 ODRL Policy는 Rules의 모든 조합을 나타냅니다. Set
Policy 하위 클래스는 Policy의 기본 하위 클래스이기도 합니다(아무것도 지정되지 않은 경우).
예제 사용 사례: 아래
SetPolicy는 대상 Assethttp//example.com/asset:9898.movie을use할 수 있는 Permission을 보여 줍니다.
{
"@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 속성을 사용하지 않습니다.
Offer 하위 클래스의 ODRL Policy는 assigner
Parties로부터 제공되는 Rules를 나타냅니다. Offer는 일반적으로 더 넓은 대상에게
Policies를 제공하는 데 사용되지만, 어떤 Rules도 부여하지는 않습니다.
Offer 하위 클래스의 ODRL Policy는:
assigner 속성 값(Party
유형)을 하나 가져야(MUST) 합니다.참고: 기능적 역할에 대한 자세한 내용은 Function Property 섹션을 참조하십시오.
참고: 위 속성 카디널리티는 규범적 ODRL 정보 모델을 반영합니다. 일부 경우에는 일부 속성의 반복 출현도 지원되지만(Policy Rule Composition 및 Compact Policy에 설명됨), 규범적 원자 Policy는 위 속성 카디널리티와 일관됩니다.
예제 사용 사례: 아래
OfferPolicy(이전 예제 기반)는 assigner Partyhttp://example.com/party:org:abc로부터 대상 Assethttp//example.com/asset:9898.movie을play할 수 있는 Permission을 보여 줍니다.
{
"@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 섹션을 참조하십시오.
Agreement 하위 클래스의 ODRL Policy는 assigner에서
assignee Parties로 부여된 Rules를 나타냅니다. Agreement는 일반적으로 Parties
사이에서 Rules의 조건을 부여하는 데 사용됩니다.
Agreement 하위 클래스의 ODRL Policy는:
assigner 속성 값(Party
유형)을 하나 가져야(MUST) 합니다.assignee 속성 값(Party
유형)을 하나 가져야(MUST) 합니다.참고: 기능적 역할에 대한 자세한 내용은 Function Property 섹션을 참조하십시오.
참고: 위 속성 카디널리티는 규범적 ODRL 정보 모델을 반영합니다. 일부 경우에는 일부 속성의 반복 출현도 지원되지만(Policy Rule Composition 및 Compact Policy에 설명됨), 규범적 원자 Policy는 위 속성 카디널리티와 일관됩니다.
예제 사용 사례: 아래
AgreementPolicy(이전 예제 기반)는 assigner Partyhttp://example.com/party:org:abc로부터 assignee Partyhttp://example.com/party:person:billie에게 대상 Assethttp//example.com/asset:9898.movie을play할 수 있는 Permission을 부여하는 것을 보여 줍니다.
{
"@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"
}]
}
Asset 클래스는 Rule의 대상이 되는 리소스 또는 리소스의 컬렉션입니다. Asset은
데이터/정보, 콘텐츠/미디어, 애플리케이션, 서비스 또는 물리적 산출물과 같이 식별 가능한
리소스의 어떤 형태든 될 수 있습니다. 또한 Duty에서처럼 Policy 표현을 수행하는 데 필요한
다른 Asset 클래스를 나타내는 데 사용할 수 있습니다. Asset은
Permission 및/또는 Prohibition이 참조하며, Duty도 참조합니다.
Asset 클래스에는 다음 속성이 있습니다:
uid 속성 값(IRI [rfc3987] 유형)을
하나 가져야(SHOULD) 합니다.
partOf
속성 값(AssetCollection 유형)을 없거나, 하나 또는 여러 개 가질 수(MAY)
있습니다.Asset이 uid 속성을 사용하여 식별자를 명시하지 않는 경우, ODRL
Policies의 ODRL Validators 및 Evaluators에 미치는 영향과 같은 전체 함의를 이해해야
합니다.
Asset 클래스에는 다음 하위 클래스가 있습니다:
AssetCollection - 멤버 리소스 집합을 나타내는 단일 리소스인 Asset입니다.
이는 집합의 모든 멤버가 Rule의 대상이 됨을 나타냅니다.AssetCollection 클래스에는 다음 속성이 있습니다:
source 속성 값(IRI [rfc3987] 유형)을
하나 가질 수(MAY) 있습니다.refinement 속성 값을 없거나, 하나 또는 여러 개
가질 수(MAY) 있습니다. 자세한 내용은 Asset
Collection을 가진 Refinement 속성을 참조하십시오.
ODRL Policies는 모든 종류의 Asset을 다룰 수 있으므로, ODRL 정보 모델은 특정 미디어 유형의 Assets를 설명하기 위한 추가 메타데이터를 제공하지 않습니다. Asset 유형이나 목적에 적합한 Dublin Core Metadata Terms와 같은 기존 메타데이터 표준을 사용하는 것이 권장됩니다.
추상 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가targetAssethttp://example.com/asset:3333을 표시하도록 제안합니다.
{
"@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는 target Asset
http://example.com/archive1011에 대한indexaction Permission을 보여 줍니다. target asset은 해당 리소스가 리소스 컬렉션임을 나타내기 위해AssetCollection으로도 선언됩니다. 추가 Asset relationsummary는 인덱싱 출력이 저장되어야 하는 Assethttp://example.com/x/database를 나타냅니다. ODRL Profilettp://example.com/odrl:profile:03은 이 새로운 relation 하위 속성을 정의합니다.
{
"@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"
}]
}
partOf 속성은 Asset 리소스가 멤버로 속해 있는 AssetCollection을
식별하는 데 사용됩니다. 목적은 Assets와 AssetCollections 사이의 멤버십 관계를
명시적으로 표현하는 것입니다. 이를 통해 AssetCollection과 관련된 Rule이 해당 Rule이
적용될 수 있는 개별 Assets가 무엇인지 이해할 수 있습니다. 또한
Asset/AssetCollection 멤버십 관계는 Rules의 충돌을 잠재적으로 감지할 수 있습니다.
예제 사용 사례: 아래 스니펫은 문서를 설명하는 일부 Dublin Core 메타데이터를 보여 줍니다.
odrl:partOf속성은 Assethttp://example.com/asset:111.doc이 위 예제의 Policy에서 사용되는http://example.com/archive1011AssetCollection의 멤버임을 명시합니다. 이는http://example.com/asset:111.doc이 Policy의 target Assets 중 하나이며 인덱싱될 수 있음을 의미합니다.
{
"@type": "dc:Document",
"@id": "http://example.com/asset:111.doc",
"dc:title": "Annual Report",
...
"odrl:partOf": "http://example.com/archive1011",
...
}
ODRL Policy 클래스는 hasPolicy 속성에 의해 참조될 수도
(MAY) 있습니다. 이는 ODRL Policy Rules가 외부
메타데이터 표현(Asset을 식별하는 표현)의 객체가 되는 것을 지원합니다.
hasPolicy가 메타데이터 표현과 ODRL Policy 사이에 명시되었을 때,
식별되는 Asset은 해당 Policy의 모든 Rules의 target Asset으로 추론되어야
(MUST) 합니다. Policy에 여러 Rules가 있는 경우,
추론된 Asset은 Policy의 모든 Rule에 대한 target Asset이 됩니다.
예제 사용 사례: 아래 스니펫은 영화 Asset을 설명하는 일부 Dublin Core 메타데이터를 보여 줍니다.
odrl:hasPolicy속성은 ODRL Policyhttp://example.com/policy:1010(위에서 설명한 Set Policy)에 연결됩니다. 이 경우 Assethttp://example.com/asset:9999.movie는 이제 Policyhttp://example.com/policy:1010의 Permission에 대한 target Asset이기도 합니다. 이 Policy에 추가 Rules가 있다면, 동일한 Asset이 각 Rule의 target Asset이 됩니다.
{
"@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",
...
}
Party 클래스는 Rule에서 기능적 역할을 맡는 엔터티 또는 엔터티의 컬렉션입니다. 예를 들어 사람, 사람들의 컬렉션, 조직 또는 에이전트가 이에 해당합니다. 에이전트는 능동적 역할을 수행하거나 지정된 효과를 만들어 내는 사람 또는 사물입니다. Party는 Actions를 수행하거나 (또는 수행하지 않거나), Duty에서 기능을 갖습니다(즉, Rule에서 수행하는 function과 연결하여 Party를 Rule에 할당합니다).
Party 클래스에는 다음 속성이 있습니다:
uid 속성 값(IRI [rfc3987] 유형)을
하나 가져야(SHOULD) 합니다.
partOf
속성 값(PartyCollection 유형)을 없거나, 하나 또는 여러 개 가질 수(MAY)
있습니다.Party가 uid 속성을 사용하여 식별자를 명시하지 않는 경우, ODRL
Policies의 ODRL Validators 및 Evaluators에 미치는 영향과 같은 전체 함의를 이해해야
합니다.
Party 클래스에는 다음 하위 클래스가 있습니다:
PartyCollection - 멤버 엔터티 집합을 나타내는 단일 엔터티인 Party입니다.
이는 집합의 모든 멤버가 Rule에서 동일한 기능적 역할을 수행함을 나타냅니다.PartyCollection 클래스에는 다음 속성이 있습니다:
source 속성 값(IRI [rfc3987] 유형)을
하나 가질 수(MAY) 있습니다.refinement 속성 값을 없거나, 하나 또는 여러 개
가질 수(MAY) 있습니다. 자세한 내용은 Party
Collection을 가진 Refinement 속성을 참조하십시오.
ODRL 정보 모델은 Party 클래스에 대한 추가 메타데이터를 제공하지 않습니다. W3C vCard Ontology [vcard-rdf] 또는 FOAF Vocabulary [foaf]와 같은 기존 메타데이터 표준을 사용하는 것이 권장됩니다.
function 속성은 Rule을 Party에 연결하여, 이를 연결하는 Rule과
관련하여 Party가 수행하는 기능을 나타내는 데 사용됩니다. function
속성 자체는 추상적이며, 하위 속성은 Party와 Rule 사이의 기능적 역할에 대한 명시적
의미론을 나타냅니다.
ODRL validator는 다음 function의 하위 속성을 지원해야
(MUST) 합니다:
assigner: Rule을 발행하는 Party를 나타냅니다. 예를 들어 Permission을
부여하거나 합의된 Duty의 이행을 요구하는 Party입니다.assignee: Rule의 수신자인 Party를 나타냅니다. 예를 들어 Permission을
부여받거나 합의된 Duty를 이행해야 하는 Party입니다.추가 function 하위 유형 속성은 ODRL Common Vocabulary [odrl-vocab] 및 ODRL Profiles에서 정의될 수
(MAY) 있습니다.
예제 사용 사례: 이 Policy는
assigner와assignee의 기능적 역할을 가진 두 Parties가 포함된 Agreement를 보여 줍니다.assigner는assignee에게 target asset에 대한 play action을 부여합니다.
{
"@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의 기능적 역할을 가진 두 Parties가 포함된 Agreement를 보여 줍니다.assigner는assignee에게 target asset의 사용을 부여합니다. 이 경우assigner는Party이자 vcard:Organisation 및 일부 추가 외부 속성으로 명시적으로 선언됩니다.assignee는PartyCollection이자 vcard:Group 및 일부 추가 외부 속성으로 명시적으로 선언됩니다. 이는http://example.com/team/A로 식별되는 모든 엔터티가 각각 동일하게 부여된 action을 갖게 됨을 의미합니다
{
"@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"
}]
}
partOf 속성은 Party 엔터티가 멤버로 속해 있는 PartyCollection을
식별하는 데 사용됩니다. 목적은 Parties와 PartyCollections 사이의 멤버십 관계를
명시적으로 표현하는 것입니다. 이를 통해 PartyCollection과 관련된 Rule이 해당 Rule이
적용될 수 있는 개별 Parties가 무엇인지 이해할 수 있습니다. 또한
Party/PartyCollection 멤버십 관계는 Rules의 충돌을 잠재적으로 감지할 수 있습니다.
예제 사용 사례: 아래 스니펫은 Party를 설명하는 일부 vCard 메타데이터를 보여 줍니다.
odrl:partOf속성은 Partyhttp://example.com/person/murphy가 위 예제의 Policy에서 사용되는http://example.com/team/APartyCollection의 멤버임을 명시합니다. 이는http://example.com/person/murphy가 assignee이며 Policy의 target asset을 사용할 수 있음을 의미합니다.
{
"@type": "vcard:Individual",
"@id": "http://example.com/person/murphy",
"vcard:fn": "Murphy",
"vcard:hasEmail": "murphy@example.com",
...
"odrl:partOf": "http://example.com/team/A",
...
}
ODRL Policy 클래스는 assignerOf 및 assigneeOf 속성에 의해
참조될 수도(MAY) 있습니다. 이는 ODRL Policy Rules가
외부 메타데이터 표현(Party를 식별하는 표현)의 객체가 되는 것을 지원합니다.
assignerOf가 메타데이터 표현과 ODRL Policy 사이에 명시되었을 때,
식별되는 Party는 해당 Policy의 모든 Rules에서 assigner 기능적 역할을
수행하는 것으로 추론되어야(MUST) 합니다.
assigneeOf가 메타데이터 표현과 ODRL Policy 사이에 명시되었을 때,
식별되는 Party는 해당 Policy의 모든 Rules에서 assignee 기능적 역할을
수행하는 것으로 추론되어야(MUST) 합니다.
Policy에 여러 Rules가 있는 경우, 추론된 Party는 Policy의 모든 Rule에
대해 기능적 역할을 수행합니다.
예제 사용 사례: 아래 스니펫은 individual Party를 설명하는 일부 vCard 메타데이터를 보여 줍니다.
odrl:assigneeOf속성은 ODRL Policyhttp://example.com/policy:1011(위에서 설명한 Offer Policy)에 연결됩니다. 이 경우 Partyhttp://example.com/person/billie는 이제 Policyhttp://example.com/policy:1011의 Permission에 대한 assignee이기도 합니다. 이 Policy에 추가 Rules가 있다면, 동일한 Party가 각 Rule의 assignee가 됩니다.
{
"@type": "vcard:Individual",
"@id": "http://example.com/person/billie",
"vcard:fn": "Billie",
"vcard:hasEmail": "billie@example.com",
...
"odrl:assigneeOf": "http://example.com/policy:1011",
...
}
Action 클래스는 Asset에 대해 수행할 수 있는 연산을 나타냅니다. Action은 Rule에서 action 속성을 통해 Asset과 연결됩니다.
Rule은 Action에 대한 구체적인 해석을 제공합니다. 예를 들어, Permission과 관련된 경우 Action은 target Asset에 대해 수행하는 것이 허용됩니다. Prohibition과 관련된 경우, Action은 target Asset에 대해 수행하는 것이 금지된 연산을 나타냅니다. Duty와 관련된 경우, Action은 Party가 이행해야 하는 합의된 연산이 의무적임을 나타냅니다
ODRL 정보 모델은 다음 최상위 Actions를 정의합니다:
use - parties의 일반적인 사용과 관련된 actions. transfer - 제3자에게 소유권을 이전하는 것과 관련된 actions.Action 클래스에는 다음 속성이 있습니다:
refinement
속성 값(Constraint 유형)을 없거나, 하나 또는 여러 개 가질 수(MAY)
있습니다. 자세한 내용은 Constraints 섹션을 참조하십시오.use와 transfer 제외)은 이 Action의 연산 의미론을
포괄하는 Action을 전이적으로 명시하기 위해 includedIn 속성 값(Action
유형)을 하나 가져야(MUST) 합니다.
implies 속성 값(Action 유형)을 없거나, 하나 또는 여러 개 가질 수
(MAY) 있습니다.
Action 용어는 포괄하는 Action을 참조하는 includedIn 속성을 사용하고,
전이적 방식으로 use 또는 transfer를 최상위 부모 용어로 하여
정의되어야(MUST) 합니다.
includedIn 속성의 목적은 참조된 다른 Action 인스턴스의 의미론이 이 Action
인스턴스의 의미론을 포괄(포함)한다는 것을 명시적으로 선언하는 것입니다.
includedIn 속성은 전이적이므로 Actions는 조상
관계를 형성합니다.
includedIn 속성의 함의는 포괄하는 Action에 대한 Permission 또는 Prohibition이
includedIn 관계를 가진 모든 Actions에 상속된다는 것입니다.
예를 들어, play Action이 use와 함께 includedIn으로
정의되어 있고, Policy에서 play가 허용되며 동일한 Policy에서
use가 금지되고, 두 Actions가 동일한 target Asset에 적용된다면, 두 Action
사이에 명시된 이 관계 때문에 Policy에 충돌이 발생합니다. (자세한 내용은 Policy Conflict Strategy를
참조하십시오.)
implies 속성은 Action의 한 인스턴스가 Action의 다른 인스턴스가 금지되지
않았음을 함의한다고 명시합니다. implies 속성은 두 Action 인스턴스 사이에
includedIn 관계가 없는 경우 그러한 명시를 설정할 수 있습니다.
예를 들어, 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에 대해 Asset을play하는 Action을 가진 Offer를 표현합니다(play는use의includedIn용어로 정의됩니다).
{
"@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"
}]
}
Constraints는 Action 및 Party/Asset Collection의 의미론을 정제하거나 Rule에 적용되는 조건을 선언하는 데 사용할 수 있는 boolean/논리 표현식입니다. Constraints는 Constraint 클래스 또는 Logical Constraint 클래스로 표현할 수 있습니다. Logical Constraint는 기존 Constraints를 자신의 operands로 참조합니다. 여러 Constraints가 동일한 Rule, Action, Party/Asset Collection에 적용되는 경우, 이들은 논리곱으로 해석되며 모두 충족되어야(MUST) 합니다.
Constraint 및 Logical Constraint 클래스는 Party Collection, Asset Collection, Action 및 Rule 클래스와 의미론적 및 조건적 관계를 형성합니다. 속성 관계는 아래 그림에 요약되어 있습니다.
Constraint 클래스는 하나의 관계 연산자로 두 operands(Constraints가 아닌 것)를 비교하는
표현식에 사용됩니다. 비교가 일치하면 Constraint는
충족되고, 그렇지 않으면 충족되지 않습니다. Constraint 클래스는
예를 들어 사용 횟수(leftOperand)가 숫자 10(rightOperand)보다
작아야 한다(operator)는 식의 비교 표현식을 공식화합니다.
Constraint 클래스에는 다음 속성이 있습니다:
uid 속성 값(IRI [rfc3987] 유형)을
없거나 하나 가질 수(MAY) 있습니다.leftOperand
속성 값을 하나 가져야(MUST) 합니다.operator 속성 값을 하나
가져야(MUST) 합니다.dataType
속성 값을 없거나 하나 가질 수(MAY) 있습니다.unit 속성 값(IRI [rfc3987] 유형)을
없거나 하나 가질 수(MAY) 있습니다.
status 속성 값을 없거나 하나 가질 수
(MAY) 있습니다.leftOperand 속성 값은 LeftOperand 클래스의 인스턴스로 정의됩니다.
leftOperand 인스턴스는 Constraint의 의미론을 나타내도록 명확히
정의되어야(MUST) 하며,
비교할 값을 어떻게 검색하거나 생성해야 하는지를 선언할 수(MAY) 있습니다.
ODRL Common Vocabulary [odrl-vocab]는
ODRL Profiles가 사용할 수(MAY) 있는
leftOperand들을 정의합니다.
operator 속성 값은 Operator 클래스의 인스턴스로 정의됩니다.
operator 인스턴스는 left operand와 right operand 사이의 “보다 큼” 또는
“같음”과 같은 관계 연산을 식별합니다.
rightOperand 속성 값은 RightOperand 클래스의 인스턴스, IRI 또는 Literal
값으로 정의됩니다. rightOperand는 leftOperand와 비교될
Constraint의 값입니다. rightOperandReference는 rightOperand의
실제 값을 얻기 위해 먼저 역참조되어야(MUST) 하는
IRI를 나타냅니다. rightOperandReference는 rightOperand의 값을
먼저 IRI 역참조를 통해 얻어야(MUST) 하는 경우에
사용됩니다. Constraint에는 rightOperand 또는
rightOperandReference 중 하나만 나타나야(MUST)
합니다.
rightOperand는 값을 나타내고, rightOperandReference는 값을 얻기
위해 역참조해야 하는 IRI를 나타냅니다. rightOperand가
http://example.com/c100이라면, 이는 표현식에서 비교할 값으로 해석됩니다.
rightOperandReference가 동일한 값인 http://example.com/c100이라면,
해당 IRI를 먼저 역참조해야 하며 반환된 데이터는 표현식에서 비교할 값으로 해석되어야
합니다.
dataType은 xsd:decimal 또는 xsd:datetime과 같은
rightOperand/Reference의 유형을 나타내며, unit은 “EU 통화”와
같은 rightOperand/Reference의 단위 값을 나타냅니다.
status는 비교 표현식에서 사용되어야(MUST) 하는,
leftOperand action에서 생성된
값을 제공합니다. 예를 들어, count constraint가 rightOperand 값
10과 status 값 5를 가질 수 있습니다. 이는 action이 이미 5번 수행되었으며,
비교에서는 현재 action을 status 값과 비교해야 함을 의미합니다.
Logical Constraint 클래스는 기존 Constraints인 두 개 이상의 operands를 하나의 논리 연산자로 비교하는 표현식에 사용됩니다. 비교가 논리적으로 일치하면 Logical Constraint는 충족되고, 그렇지 않으면 충족되지 않습니다. 예를 들어, 세 Constraints가 논리적으로 and 처리되어 세 가지 모두가 참이어야 Logical Constraint가 충족됨을 나타낼 수 있습니다.
Logical Constraint 클래스에는 다음 속성이 있습니다:
uid
속성 값(IRI [rfc3987] 유형)을 없거나
하나 가질 수(MAY) 있습니다.operand 하위 속성을 하나 가져야(MUST)
하며, 그 값은 기존 Constraint 인스턴스의 목록입니다.
ODRL evaluator는 다음 operand의 하위 속성을 지원해야
(MUST) 합니다:
or - Constraints 중 적어도 하나가 충족되어야(MUST)
합니다xone - Constraints 중 하나만, 그리고 그 이상은 아니게 충족되어야(MUST) 합니다and - Constraints 모두가 충족되어야(MUST)
합니다andSequence - Constraints 모두가 순서대로 충족되어야(MUST) 합니다추가 operand 하위 속성은 ODRL Profiles에 의해 정의될 수
(MAY) 있습니다.
Logical Constraints에 대한 ODRL 검증 요구 사항에는 다음이 포함됩니다:
operand는 or, xone, and,
andSequence 하위 속성 중 하나여야(MUST)
합니다. 추가 operand 하위 속성은 Logical Constraints의 사용만을
위해 ODRL Profiles에 의해 정의될 수(MAY) 있습니다.
Constraint 인스턴스는 평가되어야(MUST) 하며, 그 결과는
(operand 하위 속성의 의미론에 따라) 논리적 관계가 충족되는지
판단하는 데 사용됩니다.
andSequence와 같이 순서대로 평가되어야 하는 논리 operand를 사용할 때,
serialisations는 목록 멤버의 순서를 보존해야(MUST)
합니다. JSON-LD에서는 순서 있는 컬렉션을 나타내기 위해 @list 키워드를
사용해야(MUST) 합니다.
Rule(Permission, Prohibition 또는 Duty 등)은 Rule에 대한 조건을 나타내기 위해
constraint 속성을 포함할 수(MAY) 있습니다.
이 조건을 충족하려면, constraint 속성이 참조하는 모든
Constraints/Logical Constraints가 충족되어야(MUST)
합니다.
예제 사용 사례: 아래 Policy Offer 예제에서 permission은 target asset이
distribute될 수 있도록 허용하며, permission이 2018-01-01까지만 수행될 수 있다는dateTime조건의 constraint를 포함합니다.
{
"@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" }
}]
}]
}
Action은 Action 연산의 의미론을 직접 좁히는 Constraint/Logical Constraint를 나타내기 위해
refinement 속성을 포함할 수(MAY) 있습니다.
Action에 대한 더 좁은 의미론이라는 이 조건을 충족하려면, refinement
속성이 참조하는 모든 Constraints/Logical Constraints가 충족 상태를 생성하는 데
사용되어야(MUST) 합니다.
참고: Action에 refinements를 적용한 결과는 null 연산이 되어서는 안 됩니다(SHOULD NOT).
예제 사용 사례: 아래 Policy Offer 예제에서 permission은 target asset이
{
"@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을 온라인 미디어 또는 인쇄 미디어를 통해 둘 중 하나로 복제할 수 있지만 둘 다는 아님을 보여 줍니다. 이는 다른 곳에 선언된 두 기존 Constraints를 참조하는 Logical Constraint(
xoneoperand 사용)로 표현됩니다.
{
"@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 인스턴스의 식별자(논리 constraint
operands용)는 이를 @id 키로 명시해야 합니다.
AssetCollection은 전체 컬렉션의 개별 Asset(s)을 식별할 refinement 맥락을
나타내기 위해 refinement 속성을 포함할 수(MAY)
있습니다. refinement 속성은 컬렉션의 각 멤버의 특성에 적용됩니다(리소스
전체에는 적용되지 않음).
전체 AssetCollection의 개별 Asset(s)을 식별하는 이 조건을 충족하려면,
refinement 속성이 참조하는 모든 Constraints/Logical Constraints가
충족되어야(MUST) 합니다.
참고: AssetCollection에 refinements를 적용한 결과는 null 집합이 되어서는 안 됩니다(SHOULD NOT).
refinement 속성을 사용할 때에는 uid 속성을 사용하여
AssetCollection을 식별해서는 안 됩니다(MUST
NOT). 대신 source 속성을
사용하여 AssetCollection을 참조해야(MUST) 합니다.
예제 사용 사례: Policy는 멀티미디어 비디오의 AssetCollection인 target source
http://example.com/media-catalogue를 정의합니다. target에는 AssetCollection 멤버의 특성을 지정하는 refinement도 있습니다. 이 경우 target Assets의 하위 집합은 running time이 60분 미만인 것들이며, 이들 각각은 재생될 수 있습니다.runningTimeleftOperand는playaction과 함께 ODRL Profilehttp://example.com/odrl:profile:11에 정의되어 있음을 유의하십시오.
{
"@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"
}]
}
PartyCollection은 전체 컬렉션의 개별 Party(ies)를 식별할 refinement 맥락을
나타내기 위해 refinement 속성을 포함할 수(MAY)
있습니다. refinement 속성은 컬렉션의 각 멤버의 특성에 적용됩니다(리소스
전체에는 적용되지 않음).
전체 PartyCollection의 개별 Party(ies)를 식별하는 이 조건을 충족하려면,
refinement 속성이 참조하는 모든 Constraints/Logical Constraints가
충족되어야(MUST) 합니다.
참고: PartyCollection에 refinements를 적용한 결과는 null 집합이 되어서는 안 됩니다(SHOULD NOT).
refinement 속성을 사용할 때에는 uid 속성을 사용하여
PartyCollection을 식별해서는 안 됩니다(MUST
NOT). 대신 source 속성을
사용하여 PartyCollection을 참조해야(MUST) 합니다.
예제 사용 사례: target Asset
http://example.com/myPhotos:BdayParty는 사진의 assigner인http://example.com/user44가 소셜 네트워크 사이트에 게시한 사진들의 집합입니다. assignee source는 PartyCollectionhttp://example.com/user44/friends이며 assigner의 모든 친구를 나타냅니다. assignee에는 또한 컬렉션 멤버 중foaf:age가 18을 초과하는 사람에게만ex:viewpermission(Profile에 의해 정의됨)이 할당됨을 나타내는 refinement가 있습니다.
{
"@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" }
}]
}
Rule 클래스는 Permission, Prohibition 및 Duty 클래스의 부모입니다. Rule 클래스는 이 세 클래스의 공통 특성을 나타냅니다. Rule 클래스는 다른 모든 Rule 하위 클래스와 서로소여야(MUST) 합니다.
Rule 클래스에는 다음 속성이 있습니다:
action 속성 값을 하나 가져야(MUST)
합니다.relation
하위 속성 값을 없거나 하나 가질 수(MAY) 있습니다.function 하위 속성 값을 없거나, 하나 또는 여러 개 가질 수(MAY)
있습니다.
failure
하위 속성 값을 없거나, 하나 또는 여러 개 가질 수(MAY) 있습니다.constraint
속성 값을 없거나, 하나 또는 여러 개 가질 수(MAY) 있습니다.uid 속성 값(IRI [rfc3987] 유형)을
없거나 하나 가질 수(MAY) 있습니다.
참고: 위 속성 카디널리티는 규범적 ODRL 정보 모델을 반영합니다. 일부 경우에는 일부 속성의 반복 출현도 지원되지만(Policy Rule Composition 및 Compact Policy에 설명됨), 규범적 원자 Policy는 위 속성 카디널리티와 일관됩니다.
추상 relation, relation
및 failure 속성의 명시적 하위 속성을 사용해야 하며, 선택은 해당
Rule 하위 클래스에 따라 달라집니다.
Rules의 세 클래스는 Duty Rule과도 중요한 관계를 형성합니다. 속성 관계는 아래 그림에 요약되어 있습니다.
Permission은 모든 refinements가 충족된 action이, 모든 constraints가 충족되고 모든 duties가 이행된 경우 Asset에 대해 수행될 수 있도록 허용합니다.
Permission 클래스는 Rule 클래스의 하위 클래스이며, Rule 클래스의 모든 속성을 상속하고 다음과 같은 추가 속성 의미론을 가집니다:
target 속성 값을 하나 가져야(MUST)
합니다. (다른 relation 하위 속성이 사용될 수(MAY)
있습니다.)assigner
및/또는 assignee 속성 값을 없거나 하나 가질 수(MAY) 있습니다.
(다른 function 하위 속성이 사용될 수(MAY) 있습니다.)
duty
속성 값을 없거나, 하나 또는 여러 개 가질 수(MAY) 있습니다.참고: 위 속성 카디널리티는 규범적 ODRL 정보 모델을 반영합니다. 일부 경우에는 일부 속성의 반복 출현도 지원되지만(Policy Rule Composition 및 Compact Policy에 설명됨), 규범적 원자 Policy는 위 속성 카디널리티와 일관됩니다.
duty 속성은 이행되어야(MUST) 하는 합의된 의무를 표현합니다. 즉, duty 속성은 Permission과 Duty 사이의 사전 조건을 명시합니다. 자세한 내용은 Permission을 가진 Duty 섹션을 참조하십시오.
예제 사용 사례: assigner
http://example.com/org:xyz의 PolicyOffer는 target Assethttp//example.com/game:9090에 대한 play action을 표현하며, permission은 2017년 말까지 유효합니다.
{
"@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" }
}]
}]
}
Prohibition은 모든 refinements가 충족된 action이, 모든 constraints가 충족된 경우 Asset에 대해 수행되는 것을 허용하지 않습니다. action이 수행되어 Prohibition이 위반된 경우, Prohibition의 상태를 위반되지 않음으로 설정하려면 모든 remedies가 MUST 이행되어야 합니다.
Prohibition 클래스는 Rule 클래스의 하위 클래스이며, Rule 클래스의 모든 속성을 상속하고 다음과 같은 추가 속성 의미론을 가집니다:
target 속성 값을 하나 가져야(MUST)
합니다. (다른 relation 하위 속성이 사용될 수(MAY)
있습니다.)assigner
및/또는 assignee 속성 값을 없거나 하나 가질 수(MAY) 있습니다.
(다른 function 하위 속성이 사용될 수(MAY) 있습니다.)
remedy 속성 값을 없거나, 하나 또는 여러 개 가질 수(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 Partyhttp://example.com/MyPix:55는 assignee Partyhttp://example.com/assignee:55에게 Permissiondisplay를 할당하는 동시에 target Asset을archive하는 것을 Prohibition으로 설정합니다. 또한 Policy에 충돌(예: Permissions와 Prohibitions 사이)이 있는 경우,Policy의conflict속성은perm으로 설정되어 Permissions가 우선함을 나타냅니다.
{
"@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"
}]
}
Duty는 모든 refinements가 충족된 action을 수행해야 하는
의무입니다. 모든 constraints가 충족되고, 모든 refinements가
충족된 해당 action이 수행된 경우 Duty는
이행됩니다. 해당 action이 수행되지 않은 경우, Duty를
이행하려면 모든 consequence도 이행되어야 합니다. 즉,
consequences는 함께 이행되어야 하는 추가 Duties입니다. (참고: duty 또는 obligation
속성이 참조하는 Duties만 consequence 속성을 사용할 수 있습니다.)
Duty 클래스는 Rule 클래스의 하위 클래스이며, Rule 클래스의 모든 속성을 상속하고 다음과 같은 추가 속성 의미론을 가집니다:
target 속성 값을 없거나 하나 가질 수(MAY)
있습니다. (다른 relation 하위 속성이 사용될 수(MAY)
있습니다.)
assigner 및/또는
assignee 속성 값을 없거나 하나 가질 수(MAY) 있습니다.
(다른 function 하위 속성이 사용될 수(MAY) 있습니다.)
consequence 속성 값을 없거나, 하나 또는 여러 개 가질 수
(MAY) 있습니다.참고: 위 속성 카디널리티는 규범적 ODRL 정보 모델을 반영합니다. 일부 경우에는 일부 속성의 반복 출현도 지원되지만(Policy Rule Composition 및 Compact Policy에 설명됨), 규범적 원자 Policy는 위 속성 카디널리티와 일관됩니다.
Duty 클래스에는 다음 추가 요구 사항도 있습니다:
consequence 속성(failure 속성의 하위 속성)은
Permission에 대한 합의된 Policy obligation 또는 duty를 이행하지 않은 결과를 표현하는 데
사용됩니다. 이 중 하나라도 이행되지 않으면, consequence Duties도 또한 새로운
요구 사항이 되며, 이는 원래 obligation 또는 duty뿐 아니라 consequence Duties도 모두
MUST 이행되어야 함을 의미합니다.
일부 경우에는 consequence를 트리거한 원래 duty/obligation을 이행하기 위해, 원래 duty/obligation에 대한 일부 constraints 및/또는 refinements가 더 이상 충족될 수 없다면 완화될 필요가 있을 수(MAY) 있습니다.
예를 들어, 고정된 날짜까지 데이터를 제공해야 하는 obligation이 이행되지 않은 경우, $100 벌금이라는 consequence도 지급해야 합니다. 날짜가 지난 경우, 원래 duty는 날짜 constraint를 충족할 수 없기 때문에 기술적으로 이행될 수 없습니다.
이러한 경우, ODRL 구현은 consequence가 트리거된 후에도 원래 duty/obligation이 충족 가능하도록 하는 메커니즘을 제공해야(SHOULD) 합니다.
consequence 속성은 Permission duty 또는 Policy obligation에 대한 consequence인 Duty에서 사용되어서는 안 됩니다(MUST NOT).
Policy는 Duty를 이행해야 하는 obligation을 포함할 수(MAY) 있습니다. 모든 constraints가 충족되고, 모든 refinements가 충족된 해당 action이 수행된 경우 obligation은 이행됩니다.
예제 사용 사례: 아래 Agreement는 assigner
http://example.com/org:43에서 assigneehttp://example.com/person:44에게 EU500.00의 payment amount로 assigner를 보상해야 하는 obligation을 포함합니다.
{
"@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에서 assigneehttp://example.com/person:44에게 target Asset을 삭제해야 하는 obligation을 포함합니다. obligation이 이행되지 않으면, consequence로 assigner는 이제 지명된 자선 단체에 EU10.00을 보상해야(MUST) 합니다(obligation Duty를 이행하는 것과 함께).
{
"@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"
}]
}]
}
Duty는 Permission에서 Duty로 이어지는 duty 속성 관계를 사용하여 이행을 요구하는 사전 조건으로 지정될 수(MAY) 있습니다.
Permission에 여러 Duties가 있는 경우, 모든 Duties는 이행되기로 합의되어야
(MUST) 합니다. 여러 Permissions가 동일한 Duty를
(uid 속성을 통해) 참조하는 경우, Duty는 한 번만 이행되면 됩니다.
Duty에 function 하위 속성이 선언되어 있지 않은 경우, 이러한
기능적 역할은 참조하는 Permission에 선언된 것과 동일합니다.
예제 사용 사례: Party
http://example.com/assigner:sony는 target assethttp://example.com/music/1999.mp3을 play하도록 Offer를 만듭니다. permission에는payAmount가 $EU5.00인 refinement를 가진compensateaction에 대한 duty가 포함됩니다. duty에는 또한event가policyUsage보다 작다는 constraint가 있으며, 이는 permission rule이 수행되기 전에 duty rule(즉 보상)이 수행되어야 함을 의미합니다.
{
"@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" }
}]
}]
}]
}
Permission의 duty와 Policy의 obligation은 해당 duty 또는 obligation을 이행하지 않은 것에 대한
consequence Duty를 포함할 수(MAY) 있습니다.
이 경우, Permission/Obligation Duty의 최종 상태를
이행됨으로 설정하려면 모든 consequence Duties도
MUST 이행되어야 합니다.
consequence 속성은 failure
속성의 하위 속성입니다. consequence 속성에 대한 자세한 내용은 Duty 클래스
섹션을 참조하십시오.
예제 사용 사례: 아래 Agreement는 assigner
http://example.com/org:99와 assigneehttp://example.com/person:88사이에서, assignee가 Assethttp://example.com/data:77을 배포할 수 있도록 허용하되 해당 asset을 Partyhttp://australia.gov.au/에 귀속해야 한다는 사전 조건을 둡니다. assignee가 duty를 이행하지 않거나, duty를 이행하지 않고 asset을 배포하면, consequence로http://example.com/dept:100에 의해 추적되는 것도 포함됩니다.
{
"@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"
}]
}]
}]
}
remedy 속성은 Prohibition이 수행되어
위반된 경우 이행되어야(MUST) 하는 합의된 Duty를 표현합니다.
Prohibition action이 수행되면,
Prohibition의 위반을 처리하고 그 상태를 위반되지 않음으로 설정하기 위해
모든 remedy Duties가 MUST 이행되어야
합니다. remedy 속성은 failure 속성의 하위 속성입니다.
remedy는 consequence Duty를 포함하는 Duty를 참조해서는 안 됩니다(MUST NOT).
예제 사용 사례: 아래 Agreement는 assigner
http://example.com/person:88와 assigneehttp://example.com/org:99사이에서, assignee가 Assethttp://example.com/data:77을 index하는 것을 금지합니다. assignee가 실제로 target asset을 index하는 경우, remedy는 target assethttp://example.com/data:77을 anonymize해야(MUST) 하는 것입니다.
{
"@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"
}]
}]
}
ODRL 정보 모델은 Rules에 대한 속성 관계의 규범적 카디널리티를 제공합니다. 핵심 수준에서 ODRL Rule은 하나의 Asset, 하나 이상의 Party 기능적 역할, 하나의 Action(그리고 잠재적으로 Constraints 및/또는 Duties)에 관련됩니다
Policy Rules 구성은 각 Rule이 ODRL 정보 모델의 카디널리티 요구 사항을 확장하여 Rule이 여러 Assets, Parties 및 Actions와 관련될 수 있도록 허용합니다. 목적은 공통 속성(단일 Rule 안에서)을 결합하여 더 복합적인 Policy를 표현하는 것입니다. 그런 다음 Policy는 그 규범적 atomic 동등 형태로 처리되어야(SHOULD) 합니다.
아래 예제는 더 이상 줄이거나 단순화할 수 없는 Rule, 즉 atomic 수준의 Policy를 보여 줍니다.
{
"@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 안에 두 개의 target Assets와 두 개의 actions를 포함합니다.
{
"@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" ]
}]
}
위 예제는 네 개의 atomic permission Rules로 축소될 수 있습니다. 각 permission Rule은 하나의 target과 하나의 action을 포함합니다.
{
"@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에서 atomic Rules를 만들기 위해, 여러 Assets, Parties 및 Actions를 가진 Rules에 대한 ODRL 검증 요구 사항에는 다음이 포함됩니다:
ODRL Policy는 Policy 수준에서 선언되고 모든 Rules에 공유되며 공통되는 속성을 보유할 수 (MAY) 있습니다. 이는 더 compact한 직렬화를 지원하기 위한 short-cut 방법만을 목적으로 합니다. 이러한 공유 속성은 Policy 수준 속성(Policy Class 섹션에 정의된 것과 같은)으로 해석되어서는 안 됩니다(MUST NOT).
공유될 수(MAY) 있는 속성(아래 그림에 표시됨)은 다음을 포함합니다:
action 속성.relation 하위 속성(target 등).
function 하위 속성(assigner 및
assignee 등).
Policy에서 short-cuts를 확장하기 위한 ODRL 검증 요구 사항은 다음과 같습니다:
또한 Policy에서 atomic Rules를 만들기 위한 ODRL 검증 요구 사항(이전 섹션에서 정의됨)을 따릅니다.
compact ODRL Policies는 적합성 처리를 할 때 atomic Policies로 확장하는 것이 권장됩니다(RECOMMENDED).
아래 예제는 그러한 공유 공통 속성이 Policy에 적용된 모습을 보여 줍니다:
{
"@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로 확장되는 방식을 보여 줍니다.
{
"@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",
}]
}
외부 어휘로부터 추가적인 진정성 및 무결성 목적을 지원하기 위해 추가 메타데이터 속성이 Policy에 추가될 수(MAY) 있습니다. ODRL 정보 모델은 ODRL Policies에 Dublin Core Metadata Terms [dcterms]의 사용을 권장합니다.
다음 Dublin Core Metadata Terms [dcterms] 속성을 사용해야(SHOULD) 합니다:
dc:creator 속성 값 - Policy를 작성한 개인,
에이전트 또는 조직.dc:description 속성 값 - Policy에 대한
사람이 읽을 수 있는 표현 또는 요약.dc:issued 속성 값 - Policy가 처음 발행된 날짜(및 시간).dc:modified 속성 값 - Policy가 갱신된 날짜(및 시간).
dc:coverage 속성 값 - Policy가 관련되는
관할권.dc:replaces 속성 값(Policy 유형) - 이 Policy가 대체하는
Policy의 식별자.dc:isReplacedBy 속성 값(Policy 유형) - 이 Policy를 대체하는
Policy의 식별자.위 메타데이터 속성을 가진 Policies에 대한 ODRL 검증 요구 사항에는 다음이 포함됩니다:
dc:isReplacedBy 속성이 있는 경우, 프로세서는 첫 번째 Policy를
무효로 간주해야(MUST) 하며, 식별된 Policy를 검색하고 처리해야(MUST) 합니다.예제 사용 사례: 아래 예제는 누가 Policy를 만들었는지, 설명, Policy가 발행된 시점, Policy가 적용되는 관할권(호주 Queensland의 식별자), 그리고 대체되는 Policy의 이전 버전 식별자를 나타내는 메타데이터 속성을 보여 줍니다.
{
"@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 메타데이터 비교를 위해 설계된 것이 아닙니다.
ODRL은 (자식) Policy가 하나 이상의 (부모) Policies의 모든 atomic Rules를 상속할 수 있는
상속 메커니즘을 지원합니다.
inheritFrom 속성은 부모 Policy에서 상속하는 자식 Policy에서 사용되어야
(MUST) 하며, 부모 Policies의 여러 식별자를 포함할 수
(MAY) 있습니다.
상속을 사용할 때 다음이 적용됩니다:
status 정보는 부모 Policy에서 자식 Policy로 이전되지 않습니다.
즉, 부모 Policy가 값을 가진 status 속성을 가지고 있었다면 이러한 값은
null이 됩니다.예제 사용 사례: 아래 (부모) Policy
http://example.com/policy:default를 생각해 보십시오. 여기에는 (policy-level) assigner와 target asset policy 문서를 검토해야 하는 Obligation이 포함됩니다.
{
"@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는
inheritFrom 속성이 (위의) 부모 Policy
http://example.com/policy:default를 가리키는 것을 보여 줍니다. 자식 Policy는
Agreement에 대한 target Asset, actions(Asset을 표시하기 위한) 및 assignee Party를
보여 줍니다.
{
"@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-level 속성이 자식 Policy에 추가되고 Rules가 atomic으로 만들어진 후의 결과 Policy가 아래에 표시됩니다. 원래 자식 Permission rule에는 이제 부모 Policy의 (policy-level) assigner가 포함됩니다. 부모 Obligation rule은 원래 자식 (policy-level) assignee와 함께 갱신된 자식 policy에 나타납니다.
{
"@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 상속에 대한 ODRL 검증 요구 사항에는 다음이 포함됩니다:
conflict 속성은 Policies 병합에서 발생하는 충돌 또는 동일 Policy 안의
Permissions와 Prohibitions 사이의 충돌을 해결하기 위한 전략을 설정하는 데 사용됩니다.
충돌은 Policy 상속의 결과로 Policies를 병합할 때, 그리고 결과
Rules가 일관되지 않을 때 발생할 수 있습니다.
conflict 속성은 다음 Conflict Strategy Preference 값(ConflictTerm 클래스의 인스턴스)
중 하나를 가져야(SHOULD) 합니다:
perm: Permissions가 Prohibitions를 재정의해야(MUST)
합니다prohibit: Prohibitions가 Permissions를 재정의해야(MUST)
합니다invalid: 충돌이 감지되면 전체 Policy가 무효가 되어야(MUST)
합니다conflict 속성이 명시적으로 설정되지 않은 경우, 기본값 invalid가
사용됩니다.
추가 conflict 속성 값은 ODRL Profiles에 의해 정의될 수(MAY)
있습니다.
Conflict Strategy 요구 사항에는 다음이 포함됩니다:
perm의 conflict 속성을 가진 경우, 충돌하는
Permission Rule은 Prohibition Rule을 재정의해야(MUST)
합니다.prohibit의 conflict 속성을 가진 경우, 충돌하는
Prohibition Rule은 Permission Rule을 재정의해야(MUST)
합니다.invalid의 conflict 속성을 가진 경우, 충돌하는
Rules는 전체 Policy를 무효화해야(MUST) 합니다.conflict 속성 값(예: Policy 병합 또는 상속 후)을 가지고 있고
충돌하는 Rules가 있는 경우, 전체 Policy는 무효가 되어야(MUST) 합니다.예제 사용 사례: 두 Policies가 동일한 target Asset
http://example.com/asset:1212에 연결되어 있습니다. 첫 번째 Policyhttp://example.com/policy:0001는 Asset을use하도록 허용합니다. 두 번째 Policyhttp://example.com/policy:0002는 Asset의 display를 허용하지만conflict속성을perm으로 설정하여 충돌을 처리하는 방법을 명시적으로 나타냅니다. 따라서 Permissions는 항상 모든 Prohibitions를 재정의합니다. 이 사용 사례에서useAction의 특수화이므로 충돌이 있을 수 있습니다. 그러나permconflict 전략은usePermission이
{
"@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"
}]
}
{
"@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"
}]
}
위 사용 사례에서 두 번째 Policy의 conflict 값이 prohibit이었다면,
결과는 직접적인 모순이 되며, 결과는 무효 Policy가 됩니다.
ODRL 정보 모델은 정책을 표현하기 위한 핵심 프레임워크와 어휘 역할을 합니다. ODRL Core Vocabulary [odrl-vocab]는 이러한 어휘 용어 집합을 명시합니다. ODRL policy는 ODRL Core Vocabulary를 사용하여 표현될 수 있으며, 이는 최소한으로 지원되는 policy 표현을 나타냅니다.
ODRL Profile은 추가 의미론이 필요한 ODRL policies에서 사용할 수 있는 어휘 용어(ODRL Profile Mechanism 섹션에서 범위가 정해짐)를 제공하도록 정의되어야(MUST) 합니다. ODRL Profile은 ODRL policy 표현에서 지원되어야 하는 어휘 용어를 지정함으로써 커뮤니티의 요구를 명시적으로 충족합니다. 이러한 용어는 명시적으로 정의될 수도 있고 ODRL Common Vocabulary에서 채택될 수도 있습니다.
ODRL Common Vocabulary [odrl-vocab]는 Policy 하위 클래스, Constraint left operands 및 operators, Asset relations, Party functions뿐만 아니라 Permissions, Prohibition 및 Duties를 위한 일반적인 공통 actions 범위를 제공합니다.
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) 합니다.
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 또는 기존 Action과 의존성을 형성하는 경우, 두 actions를 implies 속성으로 정의합니다. |
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 관계 operators: Operator 클래스의 인스턴스를 만듭니다. |
ex:myOperator a odrl:Operator . |
| 추가 Logical Constraint operands: 추상 operand 속성의 하위 속성을 만듭니다. |
ex:myLogicalOp rdfs:subPropertyOf odrl:operand . |
| 추가 Policy Conflict strategies: 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를 사용한 사람이 읽을 수 있는 문서화도
권장됩니다.
ODRL Core Profile을 식별해야 하는 상황, 즉 Policy가 ODRL Core Vocabulary만을
준수하는 경우, Core Profile에 대해 다음 식별자가 사용될 수(MAY) 있습니다:
http://www.w3.org/ns/odrl/2/core
이 섹션은 비규범적입니다.
ODRL 정보 모델은 Parties와 관련된 그러한 데이터를 포함하는 Assets의 존재나 신원과 같은 민감한 개인정보를 직접 표현하지 않습니다. 그러나 ODRL vocabularies(예: ODRL Common Vocabulary [odrl-vocab] 및 ODRL Profiles)는 개인정보와 관련될 수 있는 용어를 정의할 수 있습니다. 이러한 명세는 그러한 ODRL 표현을 생산하거나 소비하는 구현에, policy가 사용되는 방식, 해당 policy가 공유되는 다른 party의 신원, 그리고 policy가 다른 parties와 공유되는 이유를 모든 관련 사용자에게 전달하기 위한 조치를 취하도록 알려야 합니다.
POE Working Group은 ODRL Community Group 및 이전 ODRL Initiative의 기여에 깊이 감사드립니다. 특히 편집자들은 과거 편집 기여에 대해 Susanne Guth, Daniel Paehler 및 Andreas Kasten에게 감사의 뜻을 전합니다.
이 명세가 제안 권고안으로 진행되려면, 아래에 설명된 각 기능에 대해 최소 두 개의 독립적인 구현이 있어야 합니다. 각 기능은 서로 다른 제품 집합에 의해 구현될 수 있으며, 단일 제품이 모든 기능을 구현해야 한다는 요구 사항은 없습니다.
기능종료 기준 평가의 목적상, 다음이 기능으로 간주됩니다:
특정 기능의 존재 여부에 따라 동작을 변경하지 않는 소프트웨어는 후보 권고안 단계를 종료하기 위한 목적상 해당 기능을 구현한 것으로 간주되지 않습니다.
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 report에서 파생되었습니다. W3C Working Group 산출물과 ODRL Community Group Reports 사이의 차이에 대한 세부 사항은 부록에서 관리됩니다. 모든 새로운 ODRL 구현은 Permissions & Obligations Expression Working Group의 산출물을 사용할 것으로 기대됩니다.
2016년 7월 21일 첫 공개 작업 초안으로부터의 변경 사항:
2017년 2월 23일 작업 초안으로부터의 변경 사항:
2017년 9월 26일 후보 권고안으로부터의 변경 사항:
2018년 1월 4일 제안 권고안으로부터의 변경 사항: