KDM 1.0 Annotated Reference

This page contains complete annotated reference to the Object Management Group Knowledge Discovery Metamodel KDM 1.0 specification. We are constantly working to improve the quality of this reference. The current official OMG KDM 1.0 specification is available at OMG document formal/08-01-01. This is the “formal OMG specification”. This specification is maintained by the OMG KDM RTF (the KDM Revision Task Force). The next revision will be KDM 1.1.

Front Matter
This part of the document describes the KDM Compliance points. There are multiple scenarios in which software development tools and application lifecycle management tools can leverage Knowledge Discovery Metamodel and therefore we created several formal compliance points. A compliance point defines the “contract” which a tool implements, and which determines the plug and play capabilities of the tool in the KDM ecosystem. KDM compliance point determines the interoperability of the tool. This is a very important part to read, when placing the Knowledge Discovery Metamodel on the roadmap for your organization. This is not necessarily the most efficient entry point into the specification though.

This part of the document also provides the list of the authors of the KDM specification.

Specification Overview
This part of the document provides an overview of the Knowledge Discovery Metamodel, its layers and main guidelines.

Knowledge Discovery Metamodel
This part of the document provides a short logical overview of all packages of the Knowledge Discovery Metamodel

Part 1. KDM Infrastructure Layer
This part of the specification defines three packages that constitute the infrastructure for the KDM specification. They include the KDM Core package (logical organization of the KDM repository), the KDM package (the top level logical organization of the KDM repository) and the KDM Source package (the inventory of software assets and the traceability from logical software entities to the physical software artifacts in the inventory).

Part 2. Program Elements Layer
This part of the specification defines a common language-independent representation of logical program elements (those things determined by various programming languages, like procedures, variables, statements, etc.). The information represented by the KDM Program Elements Layer is similar to that found in an Abstract Syntax Tree for a particular programming language. KDM Program Elements layer is significantly different from Abstract Syntax Trees, because the constructs of the KDM Program Elements are language-independent (the same common meta-element is used to represent a procedure in C and in Fortran), KDM constructs are based on the KDM Core which is an entity-relationship model. Semantic information is represented as micro KDM constructs (similar to a compiler intermediate representation rather than an Abstract Syntax Tree node) or as extensions to the common KDM constructs. The main purpose of the KDM is to provide a uniform environment for developing language-independent code for analyzing software assets.

Part 3. Runtime Resources Layer
This part of the specification defines the operational environment of a software application, including the runtime platform elements, user-interfaces, event-driven behavior, as well as persistent data. Runtime resources are used to integrate applications into a large cohesive software system.

Each component of the Runtime Resource Layer is defined as an individual compliance point in the KDM Ecosystem.

Part 4. Abstractions Layer
This part of the specification defines application-specific abstractions, domain-specific abstractions, architectural views as well as the engineering views of the software systems.

Appendix 1. Semantics of the micro KDM action elements
This part of the document defines the fine grained foundation of the KDM intermediate representation, which some people have called The KDM Virtual Machine. Micro KDM is defined as a separate compliance point.