# LEXICAL Score v0.1

**Discovery Family:** `LEXICAL`\
**Version:** `v0.1`\
**Status:** implementiert; initiale Evaluation Rule\
**Eingeführt mit:** RX-P6-009\
**Evidence-Voraussetzung:** RX-P6-008 Normalized Candidate Discovery
Evidence

## 1. Scope

LEXICAL Score v0.1 definiert die erste Reconcilix Scoring Rule für
Candidates, die durch lexical Discovery gefunden wurden.

Die Version ist bewusst eng gefasst. Sie soll eine deterministische und
nachvollziehbare Baseline schaffen, die anhand realer Reconciliation
Cases evaluiert werden kann, bevor weitere Evidence Dimensions
hinzukommen.

Sie ist **nicht** als endgültiges oder universell kalibriertes
Confidence Model gedacht.

## 2. Input Evidence

Die Scoring Rule verwendet:

-   den für lexical Discovery verwendeten Discovery Value,
-   den normalisierten `matched_value`,
-   die durch die Discovery Method beschriebene lexical Relationship.

Aktuell relevant sind:

-   `EXACT_STRING`
-   `RIGHT_TRUNCATED`
-   `LEFT_TRUNCATED`
-   `BOTH_TRUNCATED`

Der Match wird gegen den tatsächlich gematchten Vocabulary Value
bewertet und nicht zwingend gegen `CandidateItem.display_label`.

Beispiel:

``` text
Discovery Value:     Granulat
Discovery Method:    LEFT_TRUNCATED
matched_value:       Blähglasgranulat
matched_value_role:  altLabel
Candidate Label:     Blähglas
```

Der Lexical Score basiert damit auf `Granulat` ↔ `Blähglasgranulat`.

## 3. Coverage

Für truncated Matches gilt:

``` text
coverage =
UnicodeLength(discovery_value)
/
UnicodeLength(matched_value)
```

Die Zeichenlänge wird Unicode-aware bestimmt. Die UTF-8 Byte Length darf
nicht ersatzweise als Character Length verwendet werden.

## 4. Scoring Formula

### EXACT_STRING

``` text
score = 1.00
```

Ein exact lexical Match repräsentiert maximale lexical Evidence.

### RIGHT_TRUNCATED

``` text
score = 0.50 + (0.40 × coverage)
```

### LEFT_TRUNCATED

``` text
score = 0.50 + (0.40 × coverage)
```

### BOTH_TRUNCATED

``` text
score = 0.35 + (0.40 × coverage)
```

Damit bleibt ein one-sided truncated Match unterhalb eines exact Match.
Ein both-sided contains Match erhält eine niedrigere Baseline.

## 5. Reference Cases

### Kirchhof

``` text
discovery_value = Kirchhof
matched_value   = Kirchhof
method          = EXACT_STRING

LEXICAL score   = 1.00
```

Der xTree `step_score` kann weiterhin `0.8` betragen. Er ist Provider
Evidence und wird durch den Reconcilix Lexical Score nicht
überschrieben.

### Granulat → Blähglas

``` text
discovery_value    = Granulat
matched_value      = Blähglasgranulat
matched_value_role = altLabel
method             = LEFT_TRUNCATED

coverage ≈ 0.50
LEXICAL score ≈ 0.70
```

Der Preferred Candidate Label `Blähglas` wird für die Coverage nicht
verwendet, weil der tatsächlich gematchte Vocabulary Term
`Blähglasgranulat` ist.

### Granulat → Getreidegranulat

``` text
discovery_value = Granulat
matched_value   = Getreidegranulat
method          = LEFT_TRUNCATED

coverage ≈ 0.50
LEXICAL score ≈ 0.70
```

LEXICAL v0.1 entscheidet bewusst nicht, ob dieser Candidate semantisch
geeigneter ist als `Blähglas`. Bewertet wird ausschließlich die lexical
Evidence.

### Schatz → Schatzkammer

``` text
discovery_value = Schatz
matched_value   = Schatzkammer
method          = RIGHT_TRUNCATED

coverage = 0.50
LEXICAL score = 0.70
```

Eine korrekte lexical Discovery ist nicht gleichbedeutend mit einer
bestätigten semantischen Reconciliation.

### Span

`Span` zeigt, warum Coverage verwendet wird, statt jedem
`RIGHT_TRUNCATED` Result denselben Score zu geben. Kürzere Erweiterungen
des Discovery Value erhalten stärkere lexical Evidence als deutlich
längere Matched Values.

Beispiele aus dem Evaluation Set:

``` text
Span → Spange
Span → Spankorb
Span → Spannsäge
Span → Spannbetonbrücke
Span → Spanischer Pfeffer       [altLabel]
Span → Spannungsgleichrichter   [altLabel]
```

Der Provider Rank wird nicht zur Berechnung des Lexical Score verwendet.

### Mühle und Schloss

Mehrere Concepts können denselben Matched Value besitzen:

``` text
Mühle → Mühle
Mühle → Mühle
Mühle → Mühle
```

und:

``` text
Schloss → Schloss
Schloss → Schloss
Schloss → Schloss
```

Alle erhalten:

``` text
LEXICAL score = 1.00
```

Das ist beabsichtigt. Die lexical Evidence ist jeweils gleich exakt.
Homonym Disambiguation ist ein separates Scoring Problem und darf nicht
implizit in den Lexical Score eingebaut werden.

## 6. Label Role und Language

In v0.1 werden `prefLabel` und `altLabel` **nicht unterschiedlich
gewichtet**.

Ein exact oder starker lexical Match gegen einen legitimen Alternative
Label gilt nicht allein deshalb als schwächer, weil das Vocabulary
diesen Value als `altLabel` ausweist.

`matched_value_role` und `matched_value_language` bleiben als
normalisierte Evidence erhalten und können in späteren Scoring Versions
berücksichtigt werden.

## 7. Provider Score und Provider Rank

Folgende Werte bleiben Evidence, sind aber keine Bestandteile des
LEXICAL Score v0.1:

``` text
CandidateDiscoveryEvidence.step_score
CandidateDiscoveryEvidence.step_rank
```

Im aktuellen xTree-Pfad kann beispielsweise gelten:

``` text
step_score = 0.8
CandidateItem.score = 1.0
```

für einen `EXACT_STRING` Match.

Der Provider Rank kann bei identischen Reconcilix Scores als
deterministischer Tie-breaker dienen, erhöht oder reduziert aber nicht
den Score selbst.

## 8. Ranking

Candidates werden primär nach dem Reconcilix Score geordnet:

``` text
1. CandidateItem.score DESC
2. Provider/Step Rank ASC als Tie-breaker
3. Candidate URI als stabiler finaler Tie-breaker
```

Der Tie-breaker beeinflusst die Reihenfolge, nicht die Stärke der
lexical Evidence.

## 9. Bewusst nicht Bestandteil von v0.1

LEXICAL Score v0.1 verwendet noch nicht:

-   ContextItems
-   Qualifier Matching
-   Hierarchy Evidence
-   Semantic Similarity
-   Provider Score
-   Provider Rank als Score Component
-   unterschiedliche Gewichtung von `prefLabel` und `altLabel`
-   Vocabulary-specific Rules
-   Cross-Family Evidence
-   Vector Similarity
-   automatische Homonym Disambiguation

Diese Abgrenzung ist beabsichtigt. Dadurch kann die lexical Baseline
zunächst isoliert evaluiert werden.

## 10. Interpretation des Score

Der Score beschreibt die **Stärke der lexical Evidence** gemäß v0.1.

Er darf noch nicht als universelle Wahrscheinlichkeit interpretiert
werden, dass ein Candidate das korrekte Reconciliation Target ist.

Beispielsweise kann:

``` text
Schatz → Schatzkammer
```

eine gültige `RIGHT_TRUNCATED` Discovery mit reproduzierbarem Lexical
Score sein und für einen konkreten Source Record dennoch semantisch
ungeeignet sein.

## 11. Versioning und Evaluation

Die Konstanten von v0.1 sind eine initial dokumentierte Rule:

``` text
one-sided truncation:  base 0.50 + 0.40 × coverage
both-sided truncation: base 0.35 + 0.40 × coverage
```

Sie werden nicht als dauerhaft kalibrierte Werte verstanden.

Wenn die Evaluation eine Anpassung begründet, entsteht beispielsweise
`LEXICAL Score v0.2`. v0.1 bleibt unverändert als Specification des
Scoring Model erhalten, das für frühere Evaluation Runs verwendet wurde.

Damit bleiben Vergleiche von Discovery Profiles und Scoring Versions
reproduzierbar.
