User:ScottHinkelman/Context Methodology

Context Methodology is a key aspect of UN/CEFACT standardisation activities. UN/CEFACT Context Methodology (UCM) is the fundamental enabling technology to bring the UN/CEFACT Core Component Technical Specification (CCTS) to full promise and useability. Core Components are the syntax-neutral and technology-independent building blocks that can be used for data modeling, based on the foundation design point that derivatives of each Core Component (called Business Information Entities) are design for a specific usage context. Such context is specified as a methodology in UCM.

While UCM is the fundamental strategic underpinnings of UN/CEFACT CCTS, UCM can be used for alternate applications.

The UCM, as a methodology, specifies both static structures & dynamic processing. The dynamic processing aspect of UCM is comprised of two dimensions: assigning context and applying context.

The goal of the UCM is to enable a library of contextually relevant data (with assigned context) reflecting exact usages providing the ability to select data based on exact usage (applying context).

UCM is comprised of 3 aspects:


 * Organized context values
 * An expression grammar
 * A classifier for what is contextualized

Organized context values
A context value is metadata associated to each piece of data in a library. It must be either a code in a code list, or, and identifier based on an identification scheme. Examples are “US” from the ISO Country Codes 3166-1 or “150483782” from Dun & Bradstreet. Specifying context values as formal codes or identifiers recognizes there are well-known authoritative values already established which can be both used as metadata, and contextually organized. UCM itself does not specify any context values – they are defined as needed. The technical organization of context values is based on a Directed Acyclic Graph (DAG). This provides a narrowing and widening capability to contain the context values. This is called a context graph. The graph can be as simple or as complex as needed.

Some attributes of a context graph are:
 * has a URN and a version.
 * contains nodes called context nodes, which have a UUID. Each context node contain a context value.
 * contains edges (or vertex in graph terminology) called context edges, which connect 2 context nodes in a direction (source and target).

An expression Grammar
A context expression (a grammar) is used for both efficiently associating data in a libary to sections of a context graph (and hence a collection of organized values), and, for selecting associated data fom a libary.

A context expression consists of:
 * a UUID which identifies the expression
 * a refeence to a context graph
 * a context clause

The key to an expression is a context clause, which is founded on predicate logic. It is either simple or compound.

A simple context clause identifies a context node in the graph and contains a predicate. The predicate ("==", "<=", ">", etc) indicates direction within the graph from the identified context node. Together, the identifier of a context node and the predicate, resolve in to the which resolves into a collection of values within the context graph.

As an example: <=7897655 would specify “<=“ as the predicate and “7897655” as the identified node. If the expression is being used for associating metadata, the clause is resolved through processing into a collection of values contained in nodes with positions equal to and less than the identified node in the graph. If the expression is being used for selecting data, the clause is resolved through processing into a collection of data associated with values contained in nodes with positions equal to and less than the identified node in the graph.

A compound context clause is used to "and” and “or” 2 clauses (either simple or compound) together. It consists of an operand (either "&&" or "||") and a first and a second context clause (which may be either simple or compound). The ability to contain a compound context clause within a compound context clause provides the expression to be arbitrarily complex as needed to support a wide variety of contextual situations.

As an example: <=7897655)&&(==12343) would specify “&&“ as the operand, “<=7897655” as the first clause, and "==12343" as the second clause. If the expression is being used for associating metadata, the clause is resolved through processing into a collection of values from the first and second clauses. If the expression is being used for selecting data, the clause is resolved through processing into a collection of data associated with values resolved from the first clause and also associated with valuse resolved from the second cluase.

A classifier for what is contextualized
A Contexualized is an entity which has associated context values which indicate relevancy within a context graph. In UCM, this is expressed as a single abstract UML class classifier which contains a single context expression attribute.

A Contextualized is the entity to which context has been assigned. In the case of CCTS, this is a BIE. It may also be other entities in different usage of UCM, such as a business pocess definition which varies per industry, geography, etc.