# WP3-001-001 – Discovery Route Model

- **Status:** Draft
- **Version:** 0.2
- **Scope:** WP3 – Discovery Framework Foundation
- **Owner:** ED
- **Review:** PL, LA

## Änderungsstand

### Version 0.2

Einarbeitung von LA Review 001.

**Änderungen**

- `scopeVocabularyUri` ergänzt.
- `priority` vollständig entfernt.
- Beschreibung von `targetVocabularyUri` präzisiert.
- Eigenschaften und Invarianten aktualisiert.
- Beispiele für Target Vocabulary und Discovery Scope ergänzt.
- KISS-Prinzip beibehalten.

---

## Referenzen

- WP3-001 – Discovery Framework Foundation
- PRE_WP3-001 – Architekturübersicht Discovery Framework
- ADR002 – Source Delivery Model
- DM001 – Domain Model

---

# 1. Ziel

Dieses Work Package führt das Konfigurationsmodell **DiscoveryRoute** ein.

Eine Discovery Route beschreibt die fachliche Konfiguration einer Candidate Discovery für ein bestimmtes Target Vocabulary oder einen definierten Discovery Scope innerhalb eines Target Vocabulary.

Sie definiert,

- aus welcher Candidate Source Kandidaten bezogen werden,
- welche Discovery Method verwendet wird,
- und welcher CandidateDiscoveryAdapter die technische Umsetzung übernimmt.

Die Discovery Route enthält keine Discovery-Logik.

---

# 2. Scope

Dieses Work Package umfasst ausschließlich

- Einführung der Klasse `DiscoveryRoute`
- Definition der fachlichen Eigenschaften
- Definition der Invarianten
- Unit Tests

Nicht Bestandteil sind

- DiscoveryConfigurationRegistry
- CandidateDiscoveryRouter
- Runtime Integration
- CandidateDiscoveryAdapter
- produktive Discovery

---

# 3. Architekturbezug

Die Discovery Route ist Bestandteil des Discovery Frameworks gemäß PRE_WP3-001.

Sie repräsentiert ausschließlich die fachliche Konfiguration einer Discovery.

Die eigentliche Candidate Discovery erfolgt erst in späteren Work Packages.

---

# 4. Klassenübersicht

| Klasse | Typ | Status | Verantwortung |
|---------|-----|--------|----------------|
| DiscoveryRoute | Class | Neu | Repräsentiert die Konfiguration einer Discovery Route |

---

# 5. Eigenschaften

Eine `DiscoveryRoute` besitzt mindestens folgende Eigenschaften.

| Eigenschaft | Beschreibung |
|--------------|--------------|
| targetVocabularyUri | Fachliches Target Vocabulary des Reconciliation-Prozesses |
| scopeVocabularyUri | Vocabulary oder SubVocabulary, für das diese Discovery Route gilt |
| candidateSource | Fachliche Candidate Source |
| discoveryMethod | Fachliche Discovery Method |
| adapterKey | Referenz auf den CandidateDiscoveryAdapter |
| enabled | Aktivierungsstatus |

---

## 5.1 Target Vocabulary und Discovery Scope

Das fachliche Target Vocabulary und der technische Discovery Scope können identisch sein, müssen es jedoch nicht.

Beispiele:

| Target Vocabulary | Discovery Scope | Adapter |
|-------------------|-----------------|---------|
| MCT | MCT | xTree JSON API |
| MCT | MCT – Object Facet | Local Reconciliation Store |
| MCT | MCT – Profession Facet | xTree JSON API |

`targetVocabularyUri` beschreibt das fachliche Zielvokabular des Reconcilix-Reconciliation-Prozesses.

`scopeVocabularyUri` beschreibt den Vocabulary-Bereich, für den diese Discovery Route gilt.

---

# 6. Invarianten

Eine `DiscoveryRoute` ist nur gültig, wenn

- `targetVocabularyUri` gesetzt ist,
- `scopeVocabularyUri` gesetzt ist,
- `candidateSource` gesetzt ist,
- `discoveryMethod` gesetzt ist,
- `adapterKey` gesetzt ist.

`enabled` besitzt den Standardwert `true`.

---

# 7. Deliverables

## Neue Klasse

- DiscoveryRoute

## Neue Tests

- DiscoveryRouteTest

---

# 8. Akzeptanzkriterien

Das Work Package ist abgeschlossen, wenn

- DiscoveryRoute implementiert ist,
- alle Pflichtattribute vorhanden sind,
- `targetVocabularyUri` und `scopeVocabularyUri` getrennt modelliert sind,
- Invarianten geprüft werden,
- Standardwerte gesetzt werden,
- Unit Tests erfolgreich sind.

---

# 9. Out of Scope

Nicht Bestandteil sind

- DiscoveryConfigurationRegistry
- CandidateDiscoveryRouter
- CandidateDiscoveryAdapter
- Runtime Integration
- HTTP
- REST
- SPARQL
- xTree
- Local Reconciliation Store
- Discovery Routing
- Discovery Configuration

---

# 10. Auswirkungen auf Folgepakete

WP3-001-002 verwendet `DiscoveryRoute` zur Verwaltung aller Discovery-Konfigurationen.

WP3-001-003 verwendet `DiscoveryRoute` zur Zuordnung der CandidateDiscoveryAdapter.

WP3-001-004 verwendet `DiscoveryRoute` für das Routing der Discovery-Anfragen.

WP3-001-005 integriert `DiscoveryRoute` in den produktiven Runtime-Pfad.