The package metadata file describes the identity of the Software Package, the target for the installation, the compatibility to the device and optionally the usage of individual files within the Software Package. The package_metadata.json is stored in the META folder.

The JSON schema for the package_metadata.json file associated with this version of the specification can be found here:

https://reference.opcfoundation.org/files/uamodel.di.packagemetadata.jsonschema.json?u=http://opcfoundation.org/UA/DI/&v=1.05.0

The JSON schema associated with the latest version of the specification can be found here:

https://reference.opcfoundation.org/files/uamodel.di.packagemetadata.jsonschema.json?u=http://opcfoundation.org/UA/DI/

The JSON schema follows the conventions for the Compact DataEncoding defined in OPC 10000-6.

The elements of the JSON schema are described in Table 120, Table 124, Table 126, Table 128, Table 130, Table 132, Table 134, Table 136, Table 138 and Table 140.

A Software Package is uniquely defined with the ManufacturerUri, PackageType, TargetProductCodes, PackageRevision and Name.

The PackageMetadata structure and all contained types are encoded using the JSON VerboseEncoding.

Note: The following tables describe the package_metadata.json with structures and enumerations as a separate OPC UA namespace. These types typically do not show up in the AddressSpace of an OPC UA Server.

Table 120 – PackageMetadata structure

Name

Type

Description

Optional

PackageMetadata

0:Structure

Name

0:String

Names the package (the package file name can be changed)

False

Description

0:String

Description of the content of the Software Package.

True

ManufacturerUri

0:String

Identification of the manufacturer of the package (used with PackageType and SoftwareRevision to uniquely identify the package)

False

Manufacturer

0:String

Manufacturer of the package (for display purposes)

False

PackageRevision

0:String

Version of the software package

False

PackageType

2:PackageType

Type of the Software Package.Other values are reserved for future use.

False

SoftwareSubClass

0:String

Name of the application (in case of SoftwareClass Application)

True

DeployCompletePackage

0:Boolean

If true the complete package shall be sent to the device. Otherwise only the contained files that are marked as DeploymentItem are deployed (default: false).

True

SoftwareRevision

0:String

Version of the software in the package. Optional for solution packages.

True

ReleaseDate

0:DateTime

Additional information for the user

True

TargetManufacturerUri

0:String

Identification of the target Node on the device. Used to find suitable Software Packages for a device.

True

TargetManufacturer

0:String

Manufacturer of the target (for display purposes). Used to find suitable Software Packages for a device.

True

UpdateTargets[]

2:UpdateTarget

Identification of the target Node on the deviceUsed to find suitable Software Packages for a device.Optional for solution packages.

True

Files[]

2:FileDescriptor

Describes the files that require special treatment by the update client.

True

Compatibilities[]

2:CompatibilityOption

List of options: At least one of them must match to be compatible.

True

Assignments[]

2:Assignment

Assignments of Software Packages to components that support SoftwareUpdate Only for solution packages (see 8.7.5)

True

Table 121 – PackageMetadata definition

Attribute

Value

BrowseName

2:PackageMetadata

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 122 – UpdateTarget structure

Name

Type

Description

Optional

UpdateTarget

0:Structure

ProductCode

0:String

ProductCode of the target Node on the device.

False

Model

0:String

Model of the target Node on the device.

False

Table 123 – UpdateTarget definition

Attribute

Value

BrowseName

2:UpdateTarget

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 124 – FileDescriptor structure

Name

Type

Description

Optional

FileDescriptor

0:Structure

FileType

2:FileType

Describes how the client shall use the file.

False

FileName

0:String

Relative path and file name to the file in the ZIP package

False

MimeType

0:String

Machine understandable type of file (default: “application/octet-stream”)

True

Language

0:String

Used to support multiple languages of the same document

True

Table 125 – FileDescriptor definition

Attribute

Value

BrowseName

2:FileDescriptor

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 126 – CompatibilityOption structure

Name

Type

Description

Optional

CompatibilityOption

0:Structure

One set of compatibility requirements

CompatibilityRequirements[]

2:CompatibilityRequirement

List of requirements: All of them must match to be compatible

False

Table 127 – CompatibilityOption definition

Attribute

Value

BrowseName

2:CompatibilityOption

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 128 – CompatibilityRequirement structure

Name

Type

Description

Optional

CompatibilityRequirement

0:Structure

Variable

0:String

Path to a variable to compare with Examples: variable of a component or its Identification functional group or its parent device or an application on that device…

False

Values[]

0:BaseDataType

Comparison values (zero, one or more values depending on the comparison operator). Can be any Integer or String type.

False

Operation

2:ComparisonOperation

Operation that is used to compare Variable and Values.

False

Table 129 – CompatibilityRequirement definition

Attribute

Value

BrowseName

2:CompatibilityRequirement

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of 0:Structure defined in OPC 10000-3

Table 130 – PackageType Items

Name

Value

Description

Firmware

0

The Software Package contains the firmware of a physical device.

Application

1

The Software Package contains an executable software.

Configuration

2

The Software Package contains the configuration of a device or application.

Solution

3

The Software Package contains a solution with several software package.

Table 131 – PackageType definition

Attribute

Value

BrowseName

2:PackageType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumStrings

0:LocalizedText []

0:PropertyType

Table 132 – FileType Items

Name

Value

Description

DeploymentItem

0

This file shall be deployed to the device.

If Cached-Loading or Direct-Loading is used at most one file can be marked as DeploymentItem.

If File System based Loading is used all files that are marked as DeploymentItem shall be copied to the server using the same file name.

If the complete Software Package is deployed to the device the individual files are not marked explicitly.

ReleaseNotes

1

E.g. link for user to open the document

LicenseInfo

2

E.g. link for user to open the document

PreInstallNote

3

Text that shall be shown to the user at least once before installation

Table 133 – FileType definition

Attribute

Value

BrowseName

2:FileType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumStrings

0:LocalizedText []

0:PropertyType

Table 134 – ComparisonOperation Items

Name

Value

Description

EqualTo

0

Value[0] = Variable

GreaterThan

1

Value[0] > Variable (proper comparison for SemanticVersionString shall be supported)

GreaterEqual

2

Value[0] >= Variable (proper comparison for SemanticVersionString shall be supported)

LessThen

3

Value[0] < Variable (proper comparison for SemanticVersionString shall be supported)

LessEqual

4

Value[0] <= Variable (proper comparison for SemanticVersionString shall be supported)

RegularExpression

5

Value[0] contains a regular expression which must match the value of the Variable

OneOf

6

The Values array must contain the value of the Variable

Exist

7

The Node that is described by the Variable must exist. The Values array shall be empty.

Table 135 – ComparisonOperation definition

Attribute

Value

BrowseName

2:ComparisonOperation

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Other

Subtype of the 0:Enumeration type defined in OPC 10000-5

0:HasProperty

Variable

0:EnumStrings

0:LocalizedText []

0:PropertyType

The compatibility declaration describes the compatibility of a Software Package with a component on the server that supports the SoftwareUpdate AddIn.

This can be simple terms like a minimum SoftwareRevision or a specific HardwareRevision of the component. Or relations to other objects in the AddressSpace e.g. to describe the existence and version of an attached hardware or to restrict the use of an application to a specific firmware version of a device.

Typically, the compatibility declaration outlines the relationship between variables and the corresponding component on the server. However, certain compatibilities can only be articulated through associated components e.g. the device hosting the application or a necessarily attached hardware. For those cases the compatibility declaration can incorporate paths following the UpdateParentReferenceType references (see 8.6.1).

The UpdateParentReferenceType enables the definition of a tree of object on the server which is utilized to describe compatibility. Parent objects are referenced as “..” while child objects are indicated by the BrowseName of the node being referenced. The elements within this path are interconnected using a slash (“/”).

Examples:

“ManufacturerUri”, “ProductCode”, “SoftwareRevision” identify properties of the component that should be updated.

“../ManufacturerUri” and “../ProductCode” identify a specific parent component (e.g. the device that hosts the application).

“../ProfinetExtension/SoftwareRevision” can identify the firmware version of a hardware which is connected to the parent.