Das Vokabular zur Beschreibung von Versicherungsservices muss modular aufgebaut sein und folgt einer Hierarchie von der allgemeinen semantischen Bedeutung bis hin zur spezifischen lokalen Ausprägung. Dabei wird zwischen der **strukturellen Beschreibung** (Daten) und der **funktionalen Beschreibung** (API-Verhalten) unterschieden. Ziel ist, zwei Artefakte konsistent zu definieren: * Austauschobjekte (Datenobjekte): Welche Felder und Typen werden übertragen und validiert? * Prozessvarianten (Abläufe): Welche Zustände existieren, welche Aktionen sind in welchem Zustand erlaubt? ** Welche der normierten Prozessvarianten werden von der Versicherungsgesellschaft tatsächlich unterstützt ** Welche zusätzlichen Services gibt es für ein spezielles Themengebiet (z.B. Versicherungsbestätigung für Sparte Kfz) ** Wie genau wurde ein Prozess von der Versicherungsgesellschaft implementiert: Bei der Antragsstrecke haben wir derzeit eine stateles und eine stateful Variante. Es sollte für den Client erkennbar sein, welche Variante implementiert wurde. ** Welche zusätzlichen Services werden von der Versicherungsgesellschaft angeboten === Schichtenmodell des Vokabulars Die Vokabulare bauen aufeinander auf ("Inheritance & Extension"), um Interoperabilität zu gewährleisten. [cols="1,1,2,2"] |=== |Kategorie |Bezeichnung | Zweck | Lieferobjekt .2+| **Technische Ebene** (API & Validierung) | Hydra | Definiert die *Dynamik* und *Businessprozesse*. Beschreibt Hypermedia-Controls, Operationen (z.B. `POST`, `PUT`) und wie Clients durch den Service navigieren können (State Transitions). | Operation, Link, Collection, Erwartungen an Zustandswechsel | SHACL | Definiert die *Validierungslogik*. Es beschränkt die offenen Vokabulare (FIBO, Schema.org) auf konkrete, validierbare Shapes ("Welche Felder sind Pflicht?", "Welche Wertebereiche sind erlaubt?"). | Shape, Constraint, Severity | **Allgemeine Semantik** | Schema.org | Bietet das *gemeinsame Vokabular* (Upper Ontology) für Suchmaschinen (SEO) und KI-Agenten. Basisklassen wie `Person`, `Organization` oder `FinancialProduct` werden hier verankert. | Klassen/Properties als generische Basistermine .2+| **Fachdomäne** (Core Domain) | FIBO | Die *Financial Industry Business Ontology* liefert die präzise, branchenübergreifende Definition von Finanzbegriffen (Vertragsrecht, Zinsen, wirtschaftliche Eigentümer), die Schema.org fehlen. | Fachklassen/Properties, referenzierbare Definitionen | **Schema4i** | (Optional) Spezifische Erweiterung für die *Versicherungswirtschaft*, basierend auf BiPro-Modellen, um Lücken zwischen FIBO (Finanzfokus) und Versicherungsprodukten zu schließen. | Versicherungs-spezifische Klassen/Properties .4+| **Lokalisierung** (Specific Domain) | OMDS Commons | Marktübergreifende Begriffe, die spezifisch für den OMDS-Standard sind, aber noch keine nationale Besonderheit darstellen. | Harmonisiertes Domänenvokabular | OMDS Austria | Begriffe von lokaler österreichischer Bedeutung (z.B. Abbildung spezifischer Steuergesetze z.B. motorbezogene Kfz-Steuer, lokale Elemente wie "Bonus-Malus"). | Lokale Erweiterungen/Constraints | OMDS Domänen & Sparten | Festlegung von Begriffen und Regeln für einzelne Domänen und Sparten. | Produkt-/Spartenprofile | VU-spezifische Ergänzungen | VU-spezifische Ergänzungen für Domänen und Sparten. | Lokale Profile/Regeln |=== === Unterscheidung: Geschäftsobjekte vs. Prozesse Für eine saubere Architektur ist die Trennung der Anliegen (Separation of Concerns) im Vokabular notwendig: 1. **Geschäftsobjekte (Structural Vocabulary):** Beschreiben das "WAS". * Hierbei handelt es sich um RDF-Klassen und Properties (z.B. definiert durch Schema.org/FIBO). * Beispiel: Eine Instanz einer `InsurancePolicy` mit Attributen wie `startDate`, `premium`. * Diese Definitionen sind meist zustandslos und wiederverwendbar. 2. **Businessprozesse (Behavioural Vocabulary / Hydra):** Beschreiben das "WIE". * Hier wird definiert, welche *Aktionen* auf den Geschäftsobjekten ausgeführt werden dürfen. * Hydra `Operation`: Definiert den API-Aufruf (z.B. `SubmitClaim`). * Status-Modelle: Definition von Prozesszuständen (z.B. `ClaimProcessingStage`), die oft im OMDS-Layer definiert werden müssen, da sie sehr spezifisch für die Abwicklungslogik sind. === Prozessvarianten modellieren (Hydra + Zustandsmodell) Um Varianten sauber zu kommunizieren, wird ein Prozess als Zustandsmaschine beschrieben. Wichtig ist: Die **zulässigen Operationen sind objekt- und kontextabhängig zur Laufzeit**. Ein Objekt signalisiert also seinen aktuellen Handlungsspielraum durch die angebotenen Hydra-Operationen (Hypermedia als State of the Resource). * **State**: benannter Zustand eines Geschäftsobjekts (z.B. `ClaimDraft`, `ClaimSubmitted`). * **Transition**: definierter Wechsel zwischen Zuständen, ausgelöst durch eine Operation. * **Preconditions**: fachliche Bedingungen, die vor Ausführung erfüllt sein müssen. * **Result-Objekt**: welches Objekt bzw. welcher Status nach der Operation resultiert. Hydra definiert dabei die Operationen und Links, SHACL validiert die Datenobjekte, die als Input/Output der Operationen verwendet werden. === Austauschobjekte & Profile (SHACL) Ein **Profil** definiert ein austauschbares Datenobjekt als Kombination aus: * **Subset** der Klassen/Properties aus Schema.org/FIBO/OMDS. * **Constraints** (Pflichtfelder, Kardinalität, Wertebereiche). * **Businessregeln** (z.B. bedingte Pflichtfelder) als SHACL-Constraints. So lassen sich Datenobjekte eindeutig und testbar zwischen Partnern definieren. === Minimales Beispiel (Skizze) ```json { "@context": "https://schema.org", "@type": "InsuranceProduct", "name": "Haushalt Premium", "category": "PropertyInsurance" } ``` * **Hydra Operation**: `RequestOffer` auf `InsuranceProduct` erlaubt nur im Zustand `ProductActive`. * **SHACL Shape**: `InsuranceProductShape` fordert `name` und `category` als Pflichtfelder.