Previous Page | Next Page

Using the SAS Metadata Model

Understanding Root Properties

Root Attributes

Attributes for the Root metadata type define basic descriptive information that is stored for metadata types that describe application elements. The Root attributes include Id, Name, Desc, MetadataCreated, MetadataUpdated, ChangeState, LockedBy, and UsageVersion.

Id, MetadataCreated, and MetadataUpdated are assigned by the SAS Metadata Server when a metadata object is created in a SAS Metadata Repository. MetadataUpdated is updated when the metadata object is changed. Name, Desc and UsageVersion are user-defined values. That is, the client defines values for these attributes when adding a metadata object to the SAS Metadata Server. A value for Name is required to create an object. Desc (which stands for description) and UsageVersion are optional attributes.

The Id and Name attributes provide general, identifying information about a metadata object. Id is a system-generated, 17-character metadata object identifier in the form Reposid.Objectid. For example, Id="A2345678.A3000001". The first eight characters identify the repository in which the object is located. The second eight characters uniquely identify the object within the repository. Name is a user-defined value up to 60 characters. The name cannot start or end with a blank space and cannot contain backslash, forward slash, or control characters. Names can contain Unicode characters with the previous restrictions. Most metadata APIs require Id to be specified to identify a metadata object and return Id and Name values in response to queries.

ChangeState is a protected attribute that is used by SAS Data Integration Studio to track an object's location and disposition in the change management subsystem. When a metadata object is copied from a public repository to a private repository by change management processes, the ChangeState attribute in the source object stores the 17-character metadata object identifier of the private repository to which the object was copied. This makes the information available to public queries. The ChangeState attribute in the copied object stores a two-part value in the form CMState:SrcIdentifier. CMState identifies the change management process that copied the object into the private repository. Srcidentifier is the 17-character metadata object identifier of the public repository, or an empty string if the object is new. The change management subsystem uses the information in ChangeState to manage the copied object through the change management process.

The LockedBy attribute is updated by the change management subsystem. And, it can be used by clients to get an optional source lock. Source-locking is an alternative to the change management provided by SAS Data Integration Studio. An object is locked by issuing the SAS Open Metadata Interface GetMetadata method with the OMI_LOCK flag. An object is unlocked by issuing an UpdateMetadata method call with the OMI_UNLOCK or OMI_UNLOCK_FORCE flag. The lock is issued to the caller and the metadata object identifier of the caller is stored in the LockedBy attribute. Ttherefore, the calling user ID must have a metadata object identity (Person object) defined in the SAS Metadata Server to lock and unlock objects. The LockedBy attribute is not a process lock. It does not protect against different requests from the same user ID.


The UsageVersion attribute enables clients to manage versions of object usage patterns. The usage version can be incremented when the set of metadata objects that comprise the logical metadata definition of an application entity changes. Or, it can be incremented to indicate a change to the application entity that occurred externally from the metadata, such as a change to the structure of a cube or report.

The UsageVersion attribute supports a value that has a major version number (0<=major<=999), a minor version number (0<=minor<=99), and a build number (0<=build<=9999). UsageVersion values are persisted in metadata as a double value in the form MMMmmbbbb.0. Major version number zero is reserved to indicate that an object was created before SAS 9.2, or that the object is not versioned. Incrementing the major version makes an object inaccessible to earlier clients. That is, a version 2.0 object is not accessible by a client that was written for version 1. Incrementing the minor version means that an object can be read and interpreted by an earlier client. However, it cannot be modified, deleted, or copied. For example, a client that is written for version 1.3 objects can interpret version 1.4 objects, but it canot modify, delete, or copy them. The build number is reserved for future use.

Version 1.0 (stored on the SAS Metadata Server as 1000000) is the starting point for most common and shared objects, unless the object type had a preexisting versioning scheme prior to SAS 9.2 that necessitated starting at a higher version number. When referencing a common or shared object, clients should check the version number and make appropriate decisions based on the version number. The range of supported version numbers is indicated in the SupportObjectVersionMin and SupportObjectVersionMax attributes of the object's SAS type dictionary type definition. A SAS Metadata Server administrator can view the type definitions from the SAS Management Console Folders tab by opening the System folder, then opening the Types folder.

External clients are responsible for determining when and how to use the UsageVersion attribute.

The SAS Open Metadata Interface GetMetadataObjects XMLSELECT search functionality can be used to return objects based on value ranges. For information about how to list objects by usage version, see "Examples of Search Strings That Filter Objects Based on UsageVersion" in "Filtering a GetMetadataObjects Request" in the SAS Open Metadata Interface: Reference and Usage.

Root Associations

Associations for the Root metadata type define the metadata relationships that every SAS namespace metadata type supports. Each relationship has an association name and cardinality defined for it. The global associations defined in the Root metadata type include AccessControls, Changes, CustomAssociations, Documents, Extensions, LocalizedAttributes, Notes, Properties, and Responsibilities, among many others. For a complete list of the associations defined in the Root metadata type, see Root.

The AccessControls association enables security to be assigned to any object by associating one or more AccessControlEntry or AccessControlTemplate objects with it. The Root metadata type defines security inheritance: A metadata object inherits the permissions of its owning container. A PrimaryType metadata type typically inherits security from its containing folder, which is modeled by the Tree metadata type, if it has one. A SecondaryType metadata type inherits security from its owning PrimaryType object. Any additional security inheritance is noted in each metadata type description. For more information about security features in the SAS Open Metadata Architecture, see the SAS Intelligence Platform: Security Administration Guide. For information about the SAS Metadata Server interfaces to create and manage access controls, and to request authorizations based on access controls, see SAS Open Metadata Interface: Reference and Usage.

The LocalizedAttributes association enables the storage of localized information for an object in Property and LocalizedResource metadata objects.

The Extensions association enables users to define additional attributes for an object that are not part of the object's metadata type.

The Properties association enables application developers to define additional application-specific attributes for an object that are not part of the object's metadata type.

The Documents association references information about the object that needs to be shared with other objects. The information is stored in a Document object.

The Notes association references information that is to be contained by the object. This information is stored in a TextStore object.

The Responsibilities association lists responsibilities assigned to the object and who is responsible for them.

The PrimaryPropertyGroup association allows a hierarchy of Property objects to be associated with any object.

The Prompts association allows private or shared Prompt objects to be associated with any object.

The PropertySets association points to Property objects that might be defined in the usage of any object.

The SourceTransformations association points to transformations that might be used in the object as input.

The TargetTransformations association points to TransformationActivity objects that might have created the object as output.

Previous Page | Next Page | Top of Page