Structuring Metadata: Asset IDs, Content Structure, Metadata, and Bundles

 

Authors: Jim Taylor, DECE; Craig Seidel, MovieLabs

 

The following technical note provides guidance on how to structure and create data. It includes guidance on identifiers, content structure (e.g., how to construct episodes), bundles, etc. (Also see the note and examples below.)

Important Note: Implementers should ensure there is one Rights Token per TV episode and should not use the SoldAs/Bundle structure for episodes or series (see example below of what not to do). Properly creating one Rights Token per episode may result in multiple entries appearing in some locker views (e.g., 22 separate items for a single season), which is not ideal, but this is due to the lack of hierarchical content display in some implementations. Implementers should follow the Requirements and Best Practices for Locker Views guidelines and are strongly encouraged to provide collapsed/expandable content display in Locker views.

An example fragment from a non-compliant Rights Token:

   <rightstokeninfo alid="urn:dece:alid:org:xxx" contentid="urn:dece:cid:org:xxx">
       <soldas>
            <displayname language="en">TV Series, Season 1</displayname>
            <productid>id</productid>
            <bundleid>urn:dece:bid:org:yyy</bundleid>
        </soldas>
       <rightsprofiles>
            <purchaseprofile mediaprofile="urn:dece:type:mediaprofile:pd">
                <discretemediarightsremaining>
                <candownload>true</candownload>
                <canstream>true</canstream>
            </discretemediarightsremaining></purchaseprofile>
            <purchaseprofile mediaprofile="urn:dece:type:mediaprofile:sd">
                <discretemediarightsremaining fulfillmentmethod="urn:dece:type:discretemediaformat:bluray:packaged">0</discretemediarightsremaining>
                <candownload>true</candownload>
                <canstream>true</canstream>
            </purchaseprofile>
        </rightsprofiles>
        <resourcestatus>
        ...
        </resourcestatus>
  </rightstokeninfo>

With a Bundle such as:

 <dece:bundle xmlns="&lt;nowiki" xmlns:dece="http://www.decellc.org/schema/2011/08/coordinator">"http://www.movielabs.com/schema/md/v1.07/md"
    BundleID="urn:dece:bid:org:yyy"&gt;
    <dece:displayname language="en-US">TV Series, Season 1</dece:displayname>
    <dece:logicalassetreference>
        <dece:contentid>urn:dece:cid:org:xxx</dece:contentid>
        <dece:alid>urn:dece:alid:org:xxx</dece:alid>
    </dece:logicalassetreference>
    <dece:logicalassetreference>
        <dece:contentid>urn:dece:cid:org:aaa</dece:contentid>
        <dece:alid>urn:dece:alid:org:aaa</dece:alid>
    </dece:logicalassetreference>
    <dece:logicalassetreference>
        <dece:contentid>urn:dece:cid:org:bbb</dece:contentid>
        <dece:alid>urn:dece:alid:org:bbb</dece:alid>
    ...

  </dece:logicalassetreference>
 </dece:bundle>

The primary problem with this approach is that SoldAs is informational, so the Rights Token does not actually grant Rights to individual ALIDs listed in the Bundle. There are also problems relating LogicalAsset elements to Rights Tokens, problems with streaming and so forth. It’s possible to work around each problem individually, but each workaround is a hack that falls apart under more general usage scenario. For example, grouping by Bundle does not solve the grouping problem when episodes are purchased piecemeal and inserted individually — the User will have different views of equivalent data.

It is therefore non-compliant to use the SoldAs element of the Rights Token in conjunction with a Bundle record to represent television seasons.

See also:

Series/Season/Episode Relationships

Tips for Retailers:

Tips for Content Providers: