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

Metadata of attributes from all systems' aggregated data model. 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

Metadata of asset types from all systems' aggregated data model. This property contains an array of asset type descriptions.

time-based

Metadata of time based information ("layers") from all systems' aggregated data model. This property contains an array of time based 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
        ]
    },
    "time-based":[
        // aggregated time-based information
    ]
}

In the following sections the meaning of the top-level properties "attributes", "asset-types", "time-based" 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
    }
}
  • Attribute descriptions are similar to the ones described here, but they add information about system aggregation into the systems property.

  • Localized data like labels and tooltips are controlled as described in section filtered labels.

  • (Cloud UX 2023.7) The property "description" will only be provided if the query parameter doc is set to true (doc=true).

systems

The "asset-types" Property

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

Example (a specific "asset-type" object in the "asset-types" array):

{
    "id":"asset.AUDIO",
    "labels":{
        "en":"Audio"
    },
    "description":"the asset type asset.AUDIO",
    "systems":{
        "interplay-mam": [ "1234", "5678" ],
        "interplay-pam": [ "*" ]
    }
}
  • Asset type descriptions are similar to the ones described here, but they add information about system aggregation into the systems property.

  • Localized data like labels are controlled as described in section filtered labels.

  • (Cloud UX 2023.7) The property "description" will only be provided if the query parameter doc is set to true (doc=true).

systems

The "time-based" Property

"time-based" is an array, which contains descriptions of individual layers.

Example (a specific "time-based" object in the "time-based" array):

{
    "id":"EDITORIAL_CONTENT",
    "systems":[
        {
            "interplay-mam":[
                "*"
            ]
        }
    ],
    "description":"Editorial content",
    "labels":{
        "en":"Editorial content"
    },
    "tooltips":{
        "en":"Editorial content"
    },
    "ranged":true,
    "gaps":true,
    "overlap":false,
    "flags":[
        "indexed",
        "readonly"
    ],
    "attributes":[
        {
            "id":"comment",
            "description":"Comment for the segment",
            "labels":{
                "en":"Comment"
            },
            "tooltips":{
                 "en":"Comment"
            },
            "type":{
                "baseType":"string"
            },
            "flags":[
                "readonly"
            ]
        },
        {
            "id":"reporter",
            "labels":{
                "en":"Reporter"
            },
            "type":{
                "baseType":"string"
            }
        }
    ]
}
  • Time based descriptions are similar to the ones described in section datamodel:asset-model.

  • Localized data like labels and tooltips are controlled as described in section filtered labels.

  • (Cloud UX 2023.7) The property "description" will only be provided if the query parameter doc is set to true (doc=true).

systems

The "systems" Property and Systems Aggregation

For the CTMS Datamodel Aggregator (prior Cloud UX 2023.12) the relevant services for aggregation are those bus services, which provide the CTMS_getDataModel operation. For the CTMS Datamodel Aggregator version delivered with Cloud UX 2023.12 and newer the relevant services for aggregation are specified by the resources, which are listed at the linkrel "datamodel:aggregated-model" of the CTMS Registry.

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.

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 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 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 system: 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" ] }