This specification outlines a Profile of the W3C ODRL policy expression language for the music industry.

Status of this Document

This is a work in progress. No section should be considered final, and the absence of any content does not imply that such content is out of scope, or may not appear in the future. If you feel something should be covered, updated, or removed, then please tell the editors.

Introduction

The W3C ODRL policy expression language enables Profiles to be created by communities to provide specific details on how to express policies relevant to their business cases. The specification defines the ODRL Music Profile by including specific music business use cases and how they should be expressed. In doing so, the ODRL Music Profile presents precise semantics for music use cases, and defines the scope of the existing ODRL information model and vocabulary that should be supported.

ODRL Music Profile

The ODRL Music Profile MUST support the ODRL Information Model [[!ODRL-MODEL]] and ODRL Vocabulary & Expression [[!VOCAB-ODRL]] specifications.

The ODRL Music Profile MUST support the JSON-LD encoding.

The ODRL Music Profile defines the following identifier that MUST be used in all ODRL expressions to indicate it is following the rules of this specification:

http://dotbc.info/music/

ADD HERE Provenance? Conflict/undefined? Inheritance?

Example below...

{
    "@context": [ "odrl": "http://www.w3.org/ns/odrl/2/",
                  "music": "http://dotbc.info/music/" ],
    "profile": "http://dotbc.info/music/",
    "@type": "odrl:Agreement",
    "@id": "http://example.com/policy:8888",
    "permission": [{
        "target": "http://example.com/music/1999.mp3",
        "assigner": "http://example.com/org/sony-music",
        "assignee": "http://example.com/people/billie",
        "action": "odrl:play",
        "constraint": "...",
        "duty": "..."
        }]
    }]
}  

Blanket Licenses

Organisations that manage collections of musical works (such as Professional Rights Organisations) will typically license their entire catalogue to third parties for performance rights.

Agreement V Offer

Asset - refer to identifier of organisation catalogue AND use the "scope" with value http://dotbc.info/music/catalogue

License Period - use dateTime constraint

Territory?

Permission odrl:play

New Constraint value: Define the public performance by constraining the play action to the recipient: http://dotbc.info/music/public

New Constraint operands: Many blanket licenses are based on various compensation methods for different purposes, for example:

These use cases require new constraints (left operands) to enable the business rules to be expressed:

Processors of the ODRL Music Profile MUST support the consumption of the data variable used to calculate the above expressions. For example, the consumer MUST supply the gross revenue figure for their organisation to enable the grossRevenuePercentage expression to be successfully evaluated.

Each of the above constraints (left operands) MUST be augmented with the unit property in order to precisely capture:

The above use cases require new operators to ensure that the constraint logic is processed correctly:

Additional defined terms:

Example: Blanket License for Skating Rinks. Permission is to play any catalogue works to the public, until the end of 2017. Skating rink must pay either $CAN104.31 or 1.2% of their gross annual ticket sales (whichever is highest).

{
    "@context": [{ "odrl": "http://www.w3.org/ns/odrl/2/",
                   "music": "http://dotbc.info/music/" }],
    "@type": "odrl:Agreement",
    "@id": "http://example.com/policy:8888",
    "profile": "http://dotbc.info/music/",
    "permission": {
        "target": {
                "@id": "http://example.com/org/pro/all-works",
                "scope": "music:catalogue"	},
        "assigner": "http://example.com/org/pro",
        "assignee": "http://example.com/local-skating-rink",
        "action": "odrl:play",
        "constraint": [{
                "leftOperand": "odrl:recipent",
                "operator": "odrl:eq",
                "rightOperand": "music:public" },
            {
                "leftOperand": "odrl:dateTime",
                "operator": "odrl:lteq",
                "rightOperand": "2017-12-31"
            }],
        "duty": {
            "action": "odrl:compensate",
            "constraint": {
                "leftOperand": "http://example.com/policy:8888/C1",
                "operator": "music:greaterValue",
                "rightOperand": "http://example.com/policy:8888/C2",
                "unit": "http://cvx.iptc.org/iso4217a/CAN"
            }
         }
     },
   "constraint": [{
       "@id": "http://example.com/policy:8888/C1",
       "leftOperand": "odrl:payAmount",
       "operator": "odrl:eq",
       "rightOperand": "104.31",
       "datatype": "xsd:decimal"
    },{
       "@id": "http://example.com/policy:8888/C2",
       "leftOperand": "music:grossTicketPercentage",
       "operator": "odrl:eq",
       "rightOperand": "1.2",
       "datatype": "xsd:decimal",
       "unit": "P1Y"
   }]
}  

The above example is sufficient to express the Skating Rink blank license from:

Example: Blank License for Music Streaming (subscription). Paid streaming: 7.6% of amounts paid by subscribers; 5.02% for sites offering music videos only, Free streaming: the lesser of 50.67¢ per unique visitor or 0.13¢ for each stream.

{
    "@context": [{ "odrl": "http://www.w3.org/ns/odrl/2/",
                   "music": "http://dotbc.info/music/" }],
    "@type": "odrl:Agreement",
    "@id": "http://example.com/policy:8888",
    "profile": "http://dotbc.info/music/",
    "assigner": "http://example.com/org/pro",
    "assignee": "http://example.com/my-cool-streaming-service",
    "action": "odrl:stream",
    "permission": [{
        "target": {
                "@id": "http://example.com/org/pro/all-works",
                "scope": "music:catalogue"
                },
        "constraint": [  "http://example.com/policy:8888/C1",
                         "http://example.com/policy:8888/C2",
                         "http://example.com/policy:8888/C3",
                         {
                         "leftOperand": "odrl:product",
                         "operator": "odrl:eq",
                         "rightOperand": "music:subscription:paid"
                         }
                       ],
        "duty": {
            "action": "odrl:compensate",
            "constraint": {
                 "leftOperand": "music:grossSubscriptionPercentage",
                 "operator": "odrl:eq",
                 "rightOperand": "7.6",
                 "unit": ["http://cvx.iptc.org/iso4217a/CAN", "P1M"]
            }
         }
     },
     {
       "target": { 
                "@id": "http://example.com/org/pro/all-works",
                "scope": ["music:catalogue", "music:genre:video"]
                },
        "constraint": [ "http://example.com/policy:8888/C1",
                         "http://example.com/policy:8888/C2",
                         "http://example.com/policy:8888/C3",
                          {
                         "leftOperand": "odrl:product",
                         "operator": "odrl:eq",
                         "rightOperand": "music:subscription:free"
                         }
                       ],
        "duty": {
            "action": "odrl:compensate",
            "constraint": {
                "leftOperand": "http://example.com/policy:8888/C4",
                "operator": "music:lesserValue",
                "rightOperand": "http://example.com/policy:8888/C5",
                "unit": "http://cvx.iptc.org/iso4217a/CAN"
            }
         }
    }],
   "constraint": [{
        "@id": "http://example.com/policy:8888/C1",
        "leftOperand": "odrl:recipent",
        "operator": "odrl:eq",
        "rightOperand": "music:public" },
        {
        "@id": "http://example.com/policy:8888/C2",
        "leftOperand": "odrl:dateTime",
        "operator": "odrl:lteq",
        "rightOperand": "2017-06-30"},
        {
        "@id": "http://example.com/policy:8888/C3",
        "leftOperand": "odrl:deliveryChannel",
        "operator": "odrl:lteq",
        "rightOperand": "music:internet"},
        {
        "@id": "http://example.com/policy:8888/C4",
        "leftOperand": "music:uniqueVisitor",
        "operator": "odrl:eq",
        "rightOperand": "0.5067",
        "datatype": "xsd:decimal",
        "unit": "P1M"},
        {
        "@id": "http://example.com/policy:8888/C5",
        "leftOperand": "music:totalStream",
        "operator": "odrl:eq",
        "rightOperand": "0.0013",
        "datatype": "xsd:decimal",
        "unit": "P1M"}
    ]
} 

The above example is sufficient to express the Streaming blanket license from:

Royalty Splits

Royalty Splits are formal agreements between the creators of Compositions and with publishers to commercialise the works, such as to get a recording deal to fixate the Composition into a Recording. As such, the Music Profile defines a new Policy Type (music:RoyaltySplit) as the semantics are slightly different from an o:Agreement (where there is the assigner/assignee relationship). The other Music Profile addition is the o:Performance action for the Permission, and there maybe others such as Mechanical, Synch etc (TBD).

Example: The example below shows the ODRL Policy for a Royalty Split. The target is the Composition identified with the ISWC, and other MVD properties are expressed, including existing known recordings of the composition. The Permission action (public o:Performance) is constrained until the end of 2020 (end of contract) for a Global territory. There are three Parties that are obliged to be compensated (Note: who is the compensatingParty?). The primary author (Addie) will get 50%, Murphy (the composer) will get 30%, and Billie Music (the publisher) will get 20% of all royalty income.

{
    "@context": [  "o": "http://www.w3.org/ns/odrl/2/",
                   "music": "http://dotbc.info/music/",
                   "mvd": "http://dotbc.info/mvd/",
                   "v": "http://www.w3.org/2006/vcard/ns#" ],
    "@type": "music:RoyaltySplit",
    "@id": "http://example.com/policy:8888",
    "o:profile": "http://dotbc.info/music/",
    "o:target": { "@type": "mvd:Composition",
                  "@id": "http://iswc.info/T-034.524.680-1",
                  "mvd:title": "Fly Me to the Moon",
                  "mvd:duration": "P3:55Min",
                  "mvd:date": "2017-01-01",
                  "mvd:language": "en" 
                  "mvd:realisedBy": [
                       "http://isrc.info/AUVFJ1600001",
                       "http://isrc.info/AUVFJ1600002" ]
                },
    "o:permission": {
        "o:action": "o:Performance",
        "o:constraint": [{
                "o:leftOperand": "o:recipent",
                "o:operator": "o:eq",
                "o:rightOperand": "music:public" },
                {
                "o:leftOperand": "o:spatial",
                "o:operator": "o:eq",
                "o:rightOperand": "mvd:Global" },
                {
                "o:leftOperand": "odrl:dateTime",
                "o:operator": "odrl:lteq",
                "o:rightOperand": "2020-12-31"
            }],
        "o:duty": [{
            "o:action": "o:compensate",
            "o:compensatedParty": {
                "@type": [ "o:Party", "v:Individual" ],
                "@id": "ipi:socan:43523012",
                "v:fn": "Addie Cents",
                "v:hasEmail": "addie@cents.com",
                "o:function": "http://cisac.org/role/A",
                "mvd:pro": "http://socan.ca",},
            "o:constraint": {
                "o:leftOperand": "o:Percentage",
                "o:operator": "o:eg",
                "o:rightOperand": "50" },
         },
         {
            "o:action": "o:compensate",
            "o:compensatedParty": {
                "@type": [ "o:Party", "v:Individual" ],
                "@id": "ipi:apra:737373299",
                "v:fn": "Murphy Boy",
                "v:hasEmail": "murphy@boy.com",
                "o:function": "http://cisac.org/role/CA",
                "mvd:pro": "http://apra.org.au",},
            "o:constraint": {
                "o:leftOperand": "o:Percentage",
                "o:operator": "o:eg",
                "o:rightOperand": "30" },
         },
         {
            "o:action": "o:compensate",
            "o:compensatedParty": {
                "@type": [ "o:Party", "v:Organisation" ],
                "@id": "ipi:ascap:88811100",
                "v:fn": "Billie Music",
                "v:hasEmail": "billie@music.com",
                "o:function": "http://cisac.org/role/E",
                "mvd:pro": "http://ascap.org",},
            "o:constraint": {
                "o:leftOperand": "o:Percentage",
                "o:operator": "o:eg",
                "o:rightOperand": "20" },
         }  
     ]
}