🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
OCL Operators product
This page was created by Stephanie on 2023-03-28. Last edited by Wikiadmin on 2026-07-29.

You can use product in an OCL expression when you need every pairing between the objects in one collection and the objects in another collection.

Syntax

product ( c2 : Collection(T2) ) : Set(Tuple(first : T, second : T2))

What product returns

product returns a Set of Tuple values representing the Cartesian product of the collection before product and c2.

A Cartesian product contains one tuple for every possible pair:

  • first is an element from the collection before product.
  • second is an element from c2.

The result is a Set, so the result contains tuple values rather than an ordered sequence.

Example

If the first collection contains 1 and 2, and the second collection contains 'A' and 'B', the expression below creates all four possible pairs.

Set{1, 2}.product(Set{'A', 'B'})

The result is a set equivalent to:

Set{
  Tuple{first = 1, second = 'A'},
  Tuple{first = 1, second = 'B'},
  Tuple{first = 2, second = 'A'},
  Tuple{first = 2, second = 'B'}
}

Use product when the rule or query needs to consider every combination of two collections. For example, a model can use the returned tuples as the input to a further OCL expression that evaluates each pair.

Empty collections

If either collection has no elements, there are no pairs to create. The Cartesian product is therefore an empty set.

Related OCL operators

product is a collection operation. For the wider operator set and guidance on finding available operators in the OCL editor, see Documentation:OCLOperators and Documentation:OCL General Operators. OCL expressions are declarative and must not have side effects; see Documentation:OCL Expressions.

See also