Produktmodell: Produktbaum und Instanzbaum

Das Produktmodell der Norm besteht aus zwei Vokabularen, die denselben Baum aus zwei Blickwinkeln beschreiben:

  • Die Produktdefinition (Präfix p:) beschreibt vorab – a priori – und für alle Kunden gleich, was möglich ist: welche Bausteine ein Produkt hat, wie oft sie vorkommen dürfen, welche Attribute sie tragen (siehe Versicherungsprodukte als Regelwerke).

  • Die Produktinstanzen (Präfix i:) beschreiben den konkreten Fall: welche Bausteine für einen Kunden tatsächlich gewählt sind und welche Werte die Attribute haben.

Beide Vokabulare sind gleich aufgebaut: ein abstrakter Knoten, eine Wurzel und beliebig tief geschachtelte Unterknoten. Jeder Knoten des Instanzbaums verweist mit i:basedOn auf den Knoten des Produktbaums, auf dem er beruht. Der Produktbaum ist damit die Schablone, der Instanzbaum die Ausprägung.

produktbaum-instanzbaum

Produktbaum (Produktwissen, p:)

Der Produktbaum, fachlich auch Deckungsbaum genannt, ist die hierarchische Struktur eines Versicherungsprodukts. Er wird von der Versicherung definiert und zur Laufzeit an die Clients übermittelt.

Produktknoten (p:ProductNode)

Der Produktknoten ist der abstrakte Oberbegriff für jeden Knoten im Produktbaum. Er bündelt, was Produkt und Produktkomponente gemeinsam haben:

  • Bezeichnung und Beschreibung (rdfs:label, rdfs:comment), jeweils sprachmarkiert, mindestens eine Bezeichnung auf Deutsch,

  • Verfügbarkeit (verfügbar ab, verfügbar bis), gegen die der → Stichtag geprüft wird,

  • untergeordnete Produktkomponenten (p:hasComponent),

  • Produktattribute wie Versicherungssumme oder Selbstbehalt (p:hasAttribute),

  • zugeordnete Versicherungsbedingungen und Klauseln.

Ein Produktknoten kommt im Produktbaum nie selbst vor: Jeder Knoten ist entweder ein Produkt oder eine Produktkomponente. Der Begriff wird gebraucht, wenn eine Aussage für alle Knoten gilt, etwa „jeder Produktknoten hat einen Namen“.

Produkt (p:Product)

Das Produkt ist die Wurzel des Produktbaums: das, was einem Kunden zum Abschluss angeboten wird. Es entspricht dem Verkaufsprodukt in OMDS 3. Ein Produktbaum hat genau ein Produkt; es hat kein übergeordnetes Element. Beispiele: die „Kfz-Versicherung“ (ex:Motor) und die „Lebensversicherung“ (ex:Life) des Beispielkatalogs der Norm.

Produktkomponente (p:ProductComponent)

Die Produktkomponente, auch Produktbaustein genannt, ist ein Unterknoten des Produktbaums. Sie liegt entweder direkt unter dem Produkt oder tiefer unter einer anderen Produktkomponente. Zusätzlich zu den Eigenschaften eines Produktknotens legt sie fest, wie oft sie in einer Instanz vorkommen muss bzw. darf (p:minOccurrence, p:maxOccurrence). Damit unterscheidet die Produktdefinition Pflichtbausteine (mindestens einmal) von optionalen Bausteinen (mindestens null Mal). Beispiele: die Kfz-Haftpflicht als Pflichtbaustein, darunter die optionale Pannenhilfe; die Vollkasko als optionaler Baustein neben der Haftpflicht, der bis zu dreimal vorkommen darf.

OMDS 3 gibt den Ebenen des Produktbaums unterschiedliche Namen (Verkaufsprodukt, Produktbaustein, Deckung, …). Für die Schnittstelle genügt es, Wurzel und Unterknoten zu unterscheiden; die Norm kennt daher nur Produkt und Produktkomponente. Die Tiefe des Baums ist nicht begrenzt.

Instanzbaum (Produktinstanzen, i:)

Der Instanzbaum ist die konkrete Ausprägung eines Produktbaums für einen Fall. Er entsteht beim Vermittler oder KI-Agenten aus der Produktdefinition (zunächst als → Default-Instanz), wird konfiguriert und durchläuft dann die Antragsstrecke.

Instanzknoten (i:InstanceNode)

Der Instanzknoten ist der abstrakte Oberbegriff für jeden Knoten im Instanzbaum, das Gegenstück zum Produktknoten. Jeder Instanzknoten

  • verweist mit i:basedOn auf genau den Produktknoten, auf dem er beruht,

  • kann untergeordnete Instanzkomponenten haben (i:hasComponent),

  • trägt die Instanzattribute mit den konkreten Werten (i:hasAttribute).

Wie der Produktknoten kommt der Instanzknoten nie selbst vor; jeder Knoten ist entweder eine Instanz oder eine Instanzkomponente.

Instanz (i:Instance)

Die Instanz ist die Wurzel eines Instanzbaums: die konkrete Instanz eines Produkts. Sie beruht auf einem Produkt (i:basedOn zeigt auf ein p:Product), hat kein übergeordnetes Element und trägt die Angaben, die den Baum als Ganzes betreffen, etwa den Versicherungsbeginn.

Ein und dieselbe Instanz begleitet den gesamten Prozess: Die → Produktkonfiguration ist eine Instanz, die die Produktregeln erfüllt. Die → Berechnung ermittelt zu einer Instanz die Prämie. → Offert, → Antrag und → Vertrag enthalten dieselbe Instanz, erweitert um Angaben, die das jeweilige Geschäftsobjekt braucht, etwa Antragsfragen, Personen und Zahlungsdetails (siehe Versicherungsprodukte als Regelwerke). Der Instanzbaum selbst ändert dabei seine Struktur nicht; nur die Regeln, die an ihn angelegt werden, hängen vom Geschäftsobjekt und seinem Zustand ab.

Instanzkomponente (i:InstanceComponent)

Die Instanzkomponente ist ein Unterknoten des Instanzbaums. Sie beruht auf einer Produktkomponente (i:basedOn zeigt auf eine p:ProductComponent) und hat genau ein übergeordnetes Element (i:isComponentOf), das wiederum auf dem übergeordneten Produktknoten beruhen muss. So bleibt die Hierarchie der Instanz mit der des Produkts deckungsgleich. Wie oft eine Instanzkomponente unter ihrem Elternknoten vorkommen darf, bestimmt die Produktkomponente über ihre minimale und maximale Häufigkeit.

Instanzattribut (i:InstanceAttribute)

Das Instanzattribut ist die konkrete Ausprägung eines Produktattributs an einem Instanzknoten. Es beruht auf dem Produktattribut (i:basedOn), hängt an genau einem Instanzknoten (i:isAttributeOf) und trägt höchstens einen Wert (i:value). Der Datentyp des Werts folgt der Attributklasse: Text (i:StringAttribute), ganze Zahl (i:IntAttribute), Dezimalzahl (i:DecimalAttribute) oder Wahrheitswert (i:BooleanAttribute). Vorbelegung, Grenzen und Pflicht stehen nicht am Instanzattribut, sondern am Produktattribut; eine neue Instanz übernimmt die Vorbelegung als Wert.

Gegenüberstellung

Rolle im Baum Produktbaum (p:) Instanzbaum (i:) Verknüpfung

Abstrakter Knoten

Produktknoten (p:ProductNode)

Instanzknoten (i:InstanceNode)

i:basedOn zeigt auf einen Produktknoten

Wurzel

Produkt (p:Product)

Instanz (i:Instance)

i:basedOn zeigt auf das Produkt

Unterknoten

Produktkomponente (p:ProductComponent)

Instanzkomponente (i:InstanceComponent)

i:basedOn zeigt auf die Produktkomponente

Eigenschaft eines Knotens

Produktattribut (p:ProductAttribute)

Instanzattribut (i:InstanceAttribute)

i:basedOn zeigt auf das Produktattribut

Risikoobjekte

Verweisregel (p:riskObjectRule): Art, Mindest- und Höchstzahl

Liste an der Instanz (i:hasRiskObject), Verweis am Instanzknoten (i:riskObject)

die Regel des Produktknotens bestimmt die Verweise seiner Instanzknoten (siehe Risikoobjekte)

Hierarchie

p:hasComponent / p:isComponentOf

i:hasComponent / i:isComponentOf

beide Richtungen müssen zueinander passen

Die Baumstruktur ist in beiden Vokabularen in beide Richtungen verknüpft: Der Elternknoten kennt seine Komponenten, jede Komponente kennt ihren Elternknoten. Attribute, Risikoobjekte, Personen und Rollen sind keine Knoten des Baums, sondern hängen an einem Knoten oder werden von ihm referenziert (siehe Objekte).

Beispielkatalog der Norm

Die Norm wird mit einem kleinen, informativen Beispielkatalog ausgeliefert, der jedes Konzept des Produktmodells mindestens einmal zeigt. Er gehört keinem Versicherer, ist von keinem der Beispielversicherer abgeleitet und ändert sich nur mit der Norm. Die Prüfregeln der Norm werden gegen ihn getestet, ebenso gegen Negativbeispiele, die je eine Regel verletzen.

Merkmal Wert

Namensraum, Präfix

https://vvo.at/omds/ld/example/sample#, ex:

Katalog im Repository

standard/standard-definition/…/omds-ld/examples/products/sample/ (SampleMotor.ttl, SampleLife.ttl, SampleProcessKnowledge.ttl)

Beispielinstanzen

…/omds-ld/examples/instances/SampleInstance_01_Motor_Min.ttl, SampleInstance_02_Motor_Max.ttl, SampleInstance_03_Life.ttl

Die „Kfz-Versicherung“ ex:Motor hat diesen Produktbaum:

Produktkomponente Art Häufigkeit Attribute

Kfz-Haftpflicht (ex:Motor_Liability)

Pflichtbaustein

1..1

Versicherungssumme (Dezimal, Pflicht), Leistung in kW (Ganzzahl, Pflicht)

  Pannenhilfe (ex:Motor_BreakdownService)

Wahlbaustein unter der Haftpflicht

0..1

–

Vollkasko 2025 (ex:Motor_FullCasco_2025)

Wahlbaustein, verfügbar bis 2025-12-31

0..3

Selbstbehalt (Dezimal)

Vollkasko 2026 (ex:Motor_FullCasco_2026)

Wahlbaustein, Nachfolger der Vollkasko 2025

0..3

Selbstbehalt (Dezimal), Neuwertentschädigung (Ja/Nein)

Teilkasko (ex:Motor_PartialCasco)

Wahlbaustein

0..1

–

Assistance (ex:Motor_Assistance)

Wahlbaustein ohne Obergrenze

0..

–

Am Produkt selbst hängt das Attribut Kennzeichen (Text). Die Vollkasko 2025 und die Vollkasko 2026 sind zwei Versionen desselben Bausteins (p:hasPrevious, p:hasSuccessor); welche gilt, entscheidet der Stichtag. Die „Lebensversicherung“ ex:Life ist ein Produkt ohne Baustein: Ihre Instanz besteht nur aus der Wurzel.

Beispiel

Eine Instanz der Kfz-Versicherung mit Beginn 2026-07-01, bei der Haftpflicht, Pannenhilfe und Vollkasko 2026 gewählt sind, sieht als Instanzbaum so aus (Attribute weggelassen; vollständig in SampleInstance_02_Motor_Max.ttl):

i:Motor_JD_8812 a i:Instance ;
    i:basedOn      ex:Motor ;                   # das Produkt
    i:startDate    "2026-07-01"^^xs:date ;
    i:hasComponent i:JD_Liability ;
    i:hasComponent i:JD_FullCasco .

i:JD_Liability a i:InstanceComponent ;
    i:basedOn       ex:Motor_Liability ;        # Produktkomponente Kfz-Haftpflicht
    i:isComponentOf i:Motor_JD_8812 ;
    i:hasComponent  i:JD_BreakdownService .

i:JD_BreakdownService a i:InstanceComponent ;
    i:basedOn       ex:Motor_BreakdownService ; # Produktkomponente Pannenhilfe
    i:isComponentOf i:JD_Liability .

i:JD_FullCasco a i:InstanceComponent ;
    i:basedOn       ex:Motor_FullCasco_2026 ;   # Produktkomponente Vollkasko 2026
    i:isComponentOf i:Motor_JD_8812 .

Lässt man die Vollkasko weg, bleibt die Instanz gültig, weil die Vollkasko optional ist. Lässt man die Haftpflicht weg, ist sie ungültig, weil die Produktkomponente mindestens einmal verlangt ist.

Prüfung durch Shapes

Die Norm legt die Struktur beider Bäume mit SHACL-Shapes fest, die Client und Server gleichermaßen auswerten können. Geprüft wird unter anderem:

  • Produktknoten und Instanzknoten werden nie direkt verwendet, nur ihre konkreten Unterklassen.

  • Ein Produkt bzw. eine Instanz hat kein übergeordnetes Element; eine Produkt- bzw. Instanzkomponente hat genau eines.

  • Jeder Instanzknoten verweist auf genau einen Produktknoten des passenden Typs: Instanz auf Produkt, Instanzkomponente auf Produktkomponente.

  • Der Elternknoten einer Instanzkomponente beruht auf dem Elternknoten der zugehörigen Produktkomponente.

  • Die Anzahl der Instanzkomponenten unter einem Knoten liegt innerhalb der minimalen und maximalen Häufigkeit der Produktkomponente.

  • Der Wert eines Instanzattributs hat den Datentyp seiner Attributklasse und liegt innerhalb der Grenzen des Produktattributs; ein Pflichtattribut hat einen Wert.

Verletzungen werden als → Meldung am betroffenen Knoten oder Attribut zurückgegeben; ein Element kann mehrere Meldungen tragen. Die Versicherung prüft immer vollständig, auch wenn der Client dieselben Shapes schon selbst ausgewertet hat (siehe Lösungsansatz, Produktwissen).