Skip to content

COOM Language Profiles

The COOM language offers a rich set of elements designed to articulate product configuration knowledge. However, not all elements are essential for every project. For instance, simpler dependencies between configurable components might only require more basic relations being formed by very basic language elements. This variability allows for different implementations of reasoners that cater to the varying complexities of knowledge elements. As a result, more efficient reasoners can be developed specifically for knowledge bases only using particular language elements. Furthermore, it is not necessary for all COOM reasoner implementations to support every language feature.

graph LR
  classDef exampleClass fill:#f2dea5 
  classDef profileClass fill:#c1d6f7 
  classDef categoriesClass fill:#d9dbde     

  CORE:::categoriesClass -->|0..1| NUM;
  CORE -->|0..1| CARDINALITIES; 
  CORE -->|0..1| DEFAULTS;  
  click CORE "../profile_core" _blank;

  subgraph NUM
      direction LR;
      N-OUT(N-OUT):::profileClass -.- WeightyBike{{WeightyBike}}:::exampleClass;
      N-LIN(N-LIN):::profileClass -.- ComfortBike{{ComfortBike}}:::exampleClass;
      N-LIN --> N-FULL(N-FULL):::profileClass;
      N-FULL -.- SundayBike{{SundayBike}}:::exampleClass;
      click N-LIN "../profile_N-LIN" _blank
      click N-OUT "../profile_N-OUT" _blank
      click N-FULL "../profile_N-FULL" _blank
  end

  subgraph CARDINALITIES
      direction LR;
      C-FIX(C-FIX):::profileClass -.- ShoppingBike{{ShoppingBike}}:::exampleClass;
      C-USER(C-USER):::profileClass -.- CityBike{{CityBike}}:::exampleClass;
      C-OPEN(C-OPEN):::profileClass -.- CargoBike{{CargoBike}}:::exampleClass;
      click C-FIX "../profile_C-FIX" _blank
      click C-USER "../profile_C-USER" _blank
      click C-OPEN "../profile_C-OPEN" _blank
  end

  subgraph DEFAULTS
      direction LR;
      D-BASE(D-BASE):::profileClass -.- WhiteBike{{WhiteBike}}:::exampleClass;
      D-BASE --> D-COND(D-COND):::profileClass;
      D-COND -.- SoftBrakesBike{{SoftBrakesBike}}:::exampleClass;
      D-COND -.- PoorLightBike{{PoorLightBike}}:::exampleClass;
      click D-BASE "../profile_D-BASE" _blank
      click D-COND "../profile_D-COND" _blank
  end

We introduce profiles for the COOM language handling specific aspects of the knowledge representation.

  1. Core (CORE)
  2. N: Numerical calculations
    1. ... of arbitrary kind, that can be done outside the solution space (N-OUT).
    2. ... non-linear, that are relevant for the solution space (N-FULL)
    3. ... linear, that are relevant for the solution space (N-LIN)
  3. C: Cardinalities and instances
    1. Fixed cardinalities (C-FIX)
    2. User-generated cardinalities (C-USER)
    3. Smart generated cardinalities (C-OPEN)
  4. D: Defaults
    1. Basic defaults (D-BASE)
    2. Conditioned defaults (D-COND)

Please note, that the CORE profile is a required COOM profile, whereas variances of N, C, and D can be combined with each other.

We illustrate each profile by a small demonstration implementation, each introducing a new type of bike.