Resource datamodel:aggregated-model

Overview

The datamodel:aggregated-model resource represents an aggregated data model of all systems on the Media Central Platform.

Properties

The datamodel:aggregated-model resource has the following properties:

systems

Information about all systems, which where used to form the aggregated data model.

Example:

{
  "systems":[{
      "interplay-pam":"7dce7194-f6ee-48b0-97c5-a923689ee44e"
    }, {
      "interplay-pam":"d2d0bba1-cfe9-48e5-b103-18a2920ffe4e"
    }, {
      "interplay-mam":"a4167b8d-bb17-4113-b006-c4e995a78ff4"
    }
   ],
  ...
}

attributes

Information about the aggregated attributes from all systems. It contains two sub properties:

Notes:

  • There can be multiple entries with the same attribute ID. For example, if two systems know an attribute with the same ID, but have different types for the attribute, or if one is a single-value and the other a multi-value attribute, then there will be two entries.

  • By default only attributes without the flag 'internal' are put into the aggregated datamodel. To learn how internal attributes can be included, please see Aggregated Datamodel including internal Attributes.

asset-types

Information about all asset types, which where used to form the aggregated data model. This property contains an array of asset type descriptions.

The datamodel:aggregated-model resource has no link relations.

Description

The datamodel:aggregated-model resource represents an aggregated data model of all systems on the Media Central Platform.

This includes information about the attributes that are available for assets and location items in the different systems. The aggregated information does not include all of the information from the systems. If you need any specific details you must query the datamodel:system-model resource of the system.

Example:

{
    "systems":[
        // aggregated systems
    ],
    "asset-types":[
        // aggregated asset types
    ],
    "attributes": {
        "common": [
            // description of common attributes
        ],
        "custom": [
            // description of custom attributes
        ]
    }
}

In the following sections the meaning of the top-level properties "attributes", "asset-types" and "systems" will be described in detail.

The "attributes" Property

"attributes" contains an object, which has two properties "common" and "custom". "common" and "custom" are arrays, which contain descriptions of individual "attribute"s.

Example (a specific "attribute" object):

{
    "id": "COMMENT",
    "systems": {
        "interplay-mam": [ "1234", "5678" ],
        "interplay-pam": [ "*" ]
    },
    "appliesTo": [
        "aa:asset",
        "loc:item"
    ],
    "description": "comment",
    "labels": {
        "en": "Comment"
    },
    "tooltips": {
        "en": "Comment"
    },
    "type": {
        "baseType": "string",
        "multiValue": false
    }
}

id

Identifier of the attribute. For common attributes, it is the same as the property name used in the common representation, e.g. "startTC", "name", or "description".

systems

appliesTo

An array of resource names (link rels) that use the attribute. Currently, the following link rels are supported:

  • aa:asset: the attribute is used for assets

  • loc:item: the attribute is used for location items

type

Specifies the type of the attribute. The information is reduced to the core type information. If you need the full information for a system, you must query the datamodel:system-model resource for it.

Example:

"type": {
    "baseType": "string",
    "multiValue": false
}

baseType

Specifies the base type. Currently, the following base types are supported:

  • string: String Attribute.

  • int: Integer Attribute.

  • float: Floating point attribute. The value uses a "." as decimal separator and no thousands separator.

  • date: Date attribute. The value is expected in the format YYYY-MM-DD.

  • time: Time attribute. The value is expected in the format HH:MM:SS.

  • datetime: Date/time attribute. The value is expected in ISO-8601 format (see https://en.wikipedia.org/wiki/ISO_8601). Example: 2017-06-12T17:29:43+02:00.

  • boolean: Boolean attribute.

  • timecode: SMPTE timecode. The value is expected in the format HH:MM:SS:FF (for non-drop-frame formats), HH:MM:SS.FF (for drop-frame formats), and HH:MM:SS.FFF (for unknown frame rates; with FFF as milliseconds).

  • duration: Duration. The value is expected in the format HH:MM:SS:FF (for non-drop-frame formats), HH:MM:SS.FF (for drop-frame formats), and HH:MM:SS.FFF (for unknown frame rates; with FFF as milliseconds).

  • list: List attribute.

  • thesaurus: Thesaurus attribute.

  • masterdata: Master Data attribute.

  • compound: Indicates, that the value of the attribute is basically a combination of other recursively applied sub attributes, like a record. Typically, the type compound comes in combination with the flag multiValue = true, to define a multi-value compound attribute, which makes a list of records, so effectively, it is a table.

multiValue

(Optional) Specifies that the attribute is a multi-value or single-value attribute. If the property is missing, the attribute is a single-value attribute.

description

(Optional) A description of the attribute. This is only used for human users of the API.

labels

(Optional) Contains a map having one label for the specified language. The language filter is also effective on the labels of subattributes, if any. See filtered labels.

tooltips

(Optional) Specifies localized tool tips for the attribute. The structure is similar to the one for labels.

For attributes that are common across multiple systems, the aggregate service will resolve conflicts by picking up the tooltips from one of the systems.

subattributes

(Optional) Specifies an array of attribute descriptions, in case this attribute’s type should be compound.

The "asset-types" Property

"asset-types" is an array, which contain descriptions of individual "asset-types"s.

Example (a specific "asset type" object):

{
    "id":"asset.AUDIO",
    "labels":{
        "en":"Audio"
    },
    "description":"the asset type asset.AUDIO",
    "systems":{
        "interplay-mam": [ "1234", "5678" ],
        "interplay-pam": [ "*" ]
    }
}

id

Identifier of the asset type.

labels

(Optional) Contains a map having one label for the specified language. See filtered labels.

description

(Optional) A description of the asset type. This is only used for human users of the API.

systems

The "systems" Property and Systems Aggregation

This is the core aggregation functionality of the CTMS Datamodel Aggregator A map of systems that know the attribute or asset type. The keys are the system types, like "interplay-mam" or "interplay-pam". The values are arrays of system IDs.

The special value "*" indicates a wildcard for both system type and system ID. Following, we discuss some typical constellations on specific platform configurations. For the CTMS Datamodel Aggregator the "platform" is the set of bus services, which provide the CTMS_getDataModel operation.

The most compact aggregation possible: An attribute or asset type that is common across all systems on the platform:

"systems": {
    "*": [ "*" ]
}

An attribute or asset type that is common across all systems of a specific system type (here "interplay-mam") on the platform:

"systems": {
    "interplay-mam": [ "*" ]
}

An attribute or asset type that is specific to one or more systems on the platform:

"systems": {
    "interplay-mam": [ "1234", "5678" ],
    "interplay-pam": [ "ABC" ]
}

When are attributes considered being common on the platform, justifying aggregation?

Attributes are considered common:

  • (1) If their "id"s properties are the equal,

  • (2) and if their baseType is equal

  • (3) and in case their baseType is compound and they have the same count of subattributes in the same order, and all their subattributes fulfill the criteria starting at (1). (appliesTo is not considered in this algorithm!)

When are asset types considered being common on the platform, justifying aggregation?

Asset types are considered common:

  • (1) Simply, if their "id"s properties are the equal.

Detail: Label Aggregation

For attributes and asset types, that are common across multiple systems, the aggregate service will resolve conflicts by picking up the labels from one (i.e. non-deterministically) of the systems and aggregating missing l10ns as far as possible.

Detail: Tooltip Aggregation

Currently tooltips are not getting aggregated.

Detail: Description Aggregation

For attributes and asset types, that are common across multiple systems, the aggregate service will pick up the non-empty description from one (i.e. non-deterministically) of the systems and sets missing descriptions as far as possible.

Detail: Labels Filter (Language)

"labels": {
    "en-US": "Aluminum"
}

Custom Attributes/Sub Attributes and Asset Types

  • (1) If no language filter is specified, the labels' l10ns of the default language 'en' are provided. In case an attribute does not provide an l10n for 'en', the id of the attribute will be provided as l10n.

  • (2) If a language is specified, the respective labels' l10ns are provided. In case an attribute does not provide an l10n for the specified language, the algorithm falls back to (1).

  • (3) If a language with region code (such as 'fr-CA') is specified, the respective labels' l10ns are provided. In case an attribute does not provide an l10n for the specified language with region code, l10n for the primary language tag (such as 'fr') is provided. In case an attribute does not provide an l10n for the primary language tag, the algorithm falls back to (1).

Common Attributes

For common attributes, the CTMS Datamodel Aggregator applies fixed/ hard coded l10ns. Currently, only 'en' l10n is provided.

  • (1) If no language filter is specified, the labels' l10ns of the default language 'en' are provided.

  • (2) If a language is specified, still the 'en' labels l10ns are provided, but pose to be labels of the specified language (i.e. the 'en' l10n is provided, but is associated to the language 'fr').

Complete Example:
 
{
    "systems":[{
            "interplay-mam":"1234"
        }, {
            "interplay-mam":"5678"
        }, {
            "interplay-mam":"4321"
        },{
            "interplay-pam":"ABCD"
        }
    ],
    "attributes": {
        "common": [{
                "id": "name",
                "systems": {
                    "*": [ "*" ]
                },
                "appliesTo": [
                    "aa:asset",
                    "loc:item"
                ],
                "description": "display name",
                "labels": {
                    "en": "Name"
                },
                "tooltips": {
                    "en": "Name"
                },
                "type": {
                    "baseType": "string",
                    "multiValue": false
                }
            }
        ],
        "custom": [{
                "id": "COMMENT",
                "systems": {
                    "interplay-mam": [ "*" ]
                },
                "description": "comment field",
                "appliesTo": [
                    "aa:asset"
                ],
                "labels": {
                    "en": "Comment"
                },
                "tooltips": {
                    "en": "Comment"
                },
                "type": {
                    "baseType": "string",
                    "multiValue": false
                }
            }, {
                "id": "CULTURE",
                "systems": {
                    "interplay-mam": [ "1234", "5678" ],
                    "interplay-pam": [ "*" ]
                },
                "description": "ISO culture code",
                "appliesTo": [
                    "aa:asset"
                ],
                "labels": {
                    "en": "Culture"
                },
                "tooltips": {
                    "en": "ISO culture code"
                },
                "type": {
                    "baseType": "list",
                    "multiValue": false
                }
            }
        ]
    },
    "asset-types":[{
            "id":"asset.ARCHIVED_SEQUENCE",
            "labels":{
                "en":"Archived Sequence"
            },
            "description":"Template for an object class representing a PAM sequence in MAM. Template contains necessary DM attributes.",
            "systems": {
                "interplay-mam": [ "1234", "5678" ],
                "interplay-pam": [ "*" ]
            }
        }, {
            "id":"asset.GRAPHICS",
            "labels":{
                "en":"Graphics"
            },
            "systems": {
                "interplay-mam": [ "*" ]
            }
        }
    ]
}
 

Typical use cases

Group attributes by systems

Assumption:

  • You show all systems in MediaCentral Cloud UX that are registered in the CTMS Registry service and provide a datamodel:system-model link.

  • You want to show attributes of assets that are referenced in a folder, and attributes of the location items like a name that is used for the reference.

  • You want to group the available attributes according to their usage:

    • Attributes that are common across all systems.

    • Attributes that are common across all systems of a specific type. For example: all attributes that are common across all MediaCentral | Asset Management systems that are attached to the platform.

    • Attributes of specific systems.

Here’s how to do that:

  • Take only attribute descriptions that have loc:item or aa:asset in the appliesTo property.

    • Attributes that apply to both loc:item and aa:asset could appear twice in the list for the user, one with, for example, indicator "(asset)", one with "(folder entry)".

  • Attributes should be grouped like this:

    • Common across all systems: systems contains the key "*". Example: "systems": { "*" : [ "*" ] }

    • Common across all systems of a specific system type: systems contains an entry with the system type as key, containing the string "*" in the value array. Example: "systems": { "interplay-mam" : [ "*" ] }

    • Specific to a systems: systems contains an entry with the system type as key, containing the system ID of the system in the value array. Example: "systems": { "interplay-mam" : [ "1234" ] }

Show attributes of one system

Show the attributes where:

  • aa:asset is in the appliesTo property AND

  • systems contains an entry with the type of the system as key, containing the ID of the system in the value array. Example: "systems": { "interplay-mam" : [ "1234" ] }