Numeralia im Glossarium
Überblick
Numeralia (Zahlwörter) stellen eine hochspezialisierte Wortart im Hermeneus-Glossarium dar. Sie umfassen vier verschiedene Formen: Kardinalzahlen, Ordinalzahlen, Distributivzahlen und Multiplikativzahlen. Die Morphologisierung erfolgt ausschließlich automatisch und berücksichtigt die spezifischen Eigenheiten lateinischer Zahlwörter.
Model: App\Models\NumeraleTabelle: glossarium_numeraliaBasis-Klasse: Erbt von VocabMorpher: App\Morpher\NumeraleMorpherMorph Info Handler: App\Morpher\NumeraleMorphInfoHandler
Charakteristika
- Vier Zahlformen: Kardinal, Ordinal, Distributiv, Multiplikativ
- Ausschließlich automatische Morphologisierung
- Spezielle Felder für alle vier Zahlformen
- Optionales Feld für Zahlenwert
- Komplexe Validierung (IsValid() prüft alle lemma_*-Felder)
- Sonderbehandlung für unus, duo, tres und Hunderterzahlen
Datenbankstruktur
Tabelle: glossarium_numeralia
| Feld | Typ | Beschreibung | Beispiel |
|---|---|---|---|
id | Integer | Primärschlüssel | 1 |
lemma | String | Kardinalzahl (Grundform) | unus, duo, tres, quattuor |
lemma_ordinal | String | Ordinalzahl | primus, secundus, tertius |
lemma_distributiv | String | Distributivzahl | singuli, bini, trini |
lemma_multiplikativ | String | Multiplikativzahl | semel, bis, ter |
info | String (nullable) | Zusätzliche Informationen | null |
zahlenwert | Integer (nullable) | Numerischer Wert | 1, 2, 3, 4, ... |
bedeutung | String | Deutsche Bedeutung | eins, zwei, drei |
bedeutungen_alle | Text (nullable) | Alle Bedeutungen | null |
morph | JSON | Morphologische Formen als JSON | |
status | Integer | Verifizierungsstatus | 0-3 |
created_at | Timestamp | Erstellungszeitpunkt | |
updated_at | Timestamp | Aktualisierungszeitpunkt | |
deleted_at | Timestamp (nullable) | Löschzeitpunkt (Soft Delete) | |
created_by_id | Integer (nullable) | Ersteller-ID | |
updated_by_id | Integer (nullable) | Bearbeiter-ID |
Erforderliche Felder
Minimale Anforderung
public array $RequiredFields = [
'lemma', // Kardinalzahl
'bedeutung' // Deutsche Bedeutung
];Vollständige Validierung
public function IsValid(): bool
{
if (
! empty($this->lemma) &&
! empty($this->lemma_ordinal) &&
! empty($this->lemma_distributiv) &&
! empty($this->lemma_multiplikativ)
) {
return true;
}
return false;
}Wichtig: Für eine vollständige Morphologisierung müssen alle vier lemma_*-Felder gefüllt sein!
Typische Fehler und Hinweise zum Ausfüllen
Numeralia sind die komplexeste nicht-verbale Wortart mit vier verschiedenen Zahlformen. Die häufigsten Fehler entstehen durch unvollständige Einträge oder falsche Zuordnungen. Die folgende Tabelle zeigt kritische Fehlerquellen:
| Feld | Typischer Fehler | Auswirkung | Richtig | Hinweis |
|---|---|---|---|---|
lemma | Großschreibung: "Unus" | Formenerkennung versagt | unus | Numeralia IMMER kleinschreiben |
lemma | Ordinalzahl als Kardinalzahl: "primus" | Falsche Kategorisierung, fehlende Kardinalform | unus | Kardinalzahl (eins, zwei, drei) ins lemma-Feld |
zahlenwert | Falsch oder leer: "tres" mit zahlenwert=4 | Sortierung und Filterung fehlerhaft | tres mit zahlenwert=3 | Zahlenwert muss zur Kardinalzahl passen |
zahlenwert | Text statt Zahl: "drei" | Datenbankfehler, keine Sortierung möglich | 3 | Nur numerische Werte (1, 2, 3, ...) |
lemma_ordinal | Leer bei vollständigem Eintrag | IsValid() gibt false zurück, keine Morphologisierung | tertius | Für vollständige Morphologisierung ALLE vier Felder nötig |
lemma_distributiv | Leer oder vergessen: "trini" fehlt | Unvollständige Morphologie, keine Distributivformen | trini | Distributivformen sind Teil des vollständigen Paradigmas |
lemma_multiplikativ | Leer oder vergessen: "ter" fehlt | Unvollständige Morphologie | ter | Auch Multiplikativform erfassen |
| Allgemein | Adjektiv als Numerale: "multus" | Falsche Wortart, Morphologie passt nicht | multus als Adjektiv | "viel/viele" ist Adjektiv, kein Numerale |
| Allgemein | Verschiedene Formen als separate Einträge: "primus" separat | Datenredundanz, keine Verlinkung | primus als lemma_ordinal von unus | Alle vier Formen gehören zu EINEM Eintrag |
lemma_ordinal | Kardinalzahl statt Ordinalzahl: "duo" statt "secundus" | Morphologisierung schlägt fehl | secundus | Ordinalzahl: der erste, zweite, dritte, ... |
bedeutung | Unvollständig: nur "eins" | Lernende kennen andere Formen nicht | eins (primus, singuli, semel) | Alle vier Bedeutungen nennen oder zumindest Hauptform |
lemma_distributiv | Verwechslung mit Multiplikativ: "bis" statt "bini" | Falsche Formen | bini | Distributiv: je zwei, Multiplikativ: zweimal |
Checkliste für korrekte Numeralia-Einträge
Vor dem Speichern eines Numerale sollten folgende Punkte geprüft werden:
- Ist das Lemma kleingeschrieben?
- Ist die Kardinalzahl (nicht die Ordinalzahl) im
lemma-Feld? - Sind alle vier lemma_*-Felder ausgefüllt (kardinal, ordinal, distributiv, multiplikativ)?
- Ist der
zahlenwertkorrekt und numerisch (nicht als Text)? - Wurde geprüft, dass es sich nicht um ein Adjektiv handelt (wie "multus")?
- Sind nicht mehrere separate Einträge für dieselbe Zahl angelegt worden?
- Passt die
bedeutungzu allen vier Zahlformen? - Ist bei deklinablen Formen (unus, duo, tres, Hunderterzahlen) der Stamm korrekt?
Morphologisierung
Morphologisierbarkeit
public bool $IsManuellMorphologisierbar = false; // Keine manuelle Morphologisierung!
public bool $IsMorphologisierbar = true; // Automatische Morphologisierung möglichNumeralia werden ausschließlich automatisch morphologisiert. Die Komplexität der vier verschiedenen Zahlformen und die zahlreichen Sonderformen machen eine manuelle Eingabe unpraktikabel.
Morphologie-Struktur
JSON-Schema
Die Morphologie von Numeralia enthält vier Hauptebenen:
{
"1_kardinal": {
"1_sg": {
"1_mask": { ... },
"2_fem": { ... },
"3_neutr": { ... }
},
"2_pl": {
"1_mask": { ... },
"2_fem": { ... },
"3_neutr": { ... }
}
},
"2_ordinal": {
"1_sg": { ... },
"2_pl": { ... }
},
"3_distributiv": {
"1_sg": { ... },
"2_pl": { ... }
},
"4_multiplikativ": "ter"
}Detaillierte Struktur am Beispiel "tres"
{
"1_kardinal": {
"1_sg": {
"1_mask": { "1_nom": "", "2_gen": "", ... },
"2_fem": { "1_nom": "", "2_gen": "", ... },
"3_neutr": { "1_nom": "", "2_gen": "", ... }
},
"2_pl": {
"1_mask": {
"1_nom": "tres",
"2_gen": "trium",
"3_dat": "tribus",
"4_akk": "tres",
"5_vok": "tres",
"6_abl": "tribus"
},
"2_fem": {
"1_nom": "tres",
"2_gen": "trium",
"3_dat": "tribus",
"4_akk": "tres",
"5_vok": "tres",
"6_abl": "tribus"
},
"3_neutr": {
"1_nom": "tria",
"2_gen": "trium",
"3_dat": "tribus",
"4_akk": "tria",
"5_vok": "tria",
"6_abl": "tribus"
}
}
},
"2_ordinal": {
"1_sg": {
"1_mask": {
"1_nom": "tertius",
"2_gen": "tertii",
"3_dat": "tertio",
"4_akk": "tertium",
"5_vok": "tertii",
"6_abl": "tertio"
},
"2_fem": {
"1_nom": "tertia",
"2_gen": "tertiae",
"3_dat": "tertiae",
"4_akk": "tertiam",
"5_vok": "tertia",
"6_abl": "tertia"
},
"3_neutr": {
"1_nom": "tertium",
"2_gen": "tertii",
"3_dat": "tertio",
"4_akk": "tertium",
"5_vok": "tertium",
"6_abl": "tertio"
}
},
"2_pl": { ... }
},
"3_distributiv": {
"1_sg": {
"1_mask": {
"1_nom": "ternus",
"2_gen": "terni",
...
},
"2_fem": { ... },
"3_neutr": { ... }
},
"2_pl": { ... }
},
"4_multiplikativ": "ter"
}Zugriff auf Morphologie
// Zugriff auf verschiedene Zahlformen
$numerale = Numerale::find(3); // tres
$forms = $numerale->getMorphArrayAttribute();
// Kardinalzahl: Nominativ Plural neutrum
echo $forms['1_kardinal']['2_pl']['3_neutr']['1_nom']; // "tria"
// Ordinalzahl: Nominativ Singular maskulin
echo $forms['2_ordinal']['1_sg']['1_mask']['1_nom']; // "tertius"
// Distributivzahl: Akkusativ Plural feminin
echo $forms['3_distributiv']['2_pl']['2_fem']['4_akk']; // "ternas"
// Multiplikativzahl (String, nicht deklinierbar)
echo $forms['4_multiplikativ']; // "ter"Zahlformen
1. Kardinalzahlen (Grundzahlen)
Die Kardinalzahl ist die Grundform und steht im lemma-Feld.
Beispiele:
- unus (eins)
- duo (zwei)
- tres (drei)
- quattuor (vier)
- decem (zehn)
- centum (hundert)
Besonderheiten:
- unus wird dekliniert (nur Singular)
- duo, tres haben spezielle Pluralformen
- quattuor bis decem sind indeklinabel
- Hunderterzahlen (ducenti, trecenti, ...) werden wie Adjektive der a/o-Deklination dekliniert
2. Ordinalzahlen (Ordnungszahlen)
Ordinalzahlen stehen im lemma_ordinal-Feld und werden wie Adjektive der a/o-Deklination dekliniert.
Beispiele:
- primus (der erste)
- secundus (der zweite)
- tertius (der dritte)
- quartus (der vierte)
- decimus (der zehnte)
3. Distributivzahlen (Verteilungszahlen)
Distributivzahlen stehen im lemma_distributiv-Feld und werden wie Adjektive der a/o-Deklination dekliniert.
Beispiele:
- singuli (je einer)
- bini (je zwei)
- trini (je drei)
- quaterni (je vier)
4. Multiplikativzahlen (Vervielfältigungszahlen)
Multiplikativzahlen stehen im lemma_multiplikativ-Feld und sind nicht deklinierbar (Adverbien).
Beispiele:
- semel (einmal)
- bis (zweimal)
- ter (dreimal)
- quater (viermal)
- quinquies (fünfmal)
Sonderbehandlung im Morpher
unus (eins)
case 'unus':
$this->StaticFormKardinal = $this->FormenVonUnus;
$this->StammOrdinal = 'prim';
$this->EndungenOrdinal = $this->EndungenAO;
$this->StammDistributiv = 'singul';
$this->EndungenDistributiv = $this->EndungenAO;
$this->StaticFormMultiplikativ = $this->lemma_multiplikativ;
$this->NurSingular = true;
break;Besonderheit: Nur Singularformen, Genitiv auf -ius, Dativ auf -i.
duo (zwei)
case 'duo':
$this->StaticFormKardinal = $this->FormenVonDuo;
// ...
break;Besonderheit: Nur Pluralformen, unterschiedliche Formen für m./f./n.
tres (drei)
case 'tres':
$this->StaticFormKardinal = $this->FormenVonTres;
// ...
break;Besonderheit: Nur Pluralformen, neutrales Neutrum "tria".
Hunderterzahlen (ducenti, trecenti, ...)
if ($this->IsHunderter()) {
$this->setAllValuesFor($this->StaticFormKardinal, '');
$this->StammKardinal = $this->KardinalOhneEndung_1;
$this->EndungenKardinal = $this->EndungenAO;
}Besonderheit: Werden wie reguläre Adjektive dekliniert.
getLemmaInfo()
public function getLemmaInfo(): string
{
return $this->getInfoColumn();
}Numeralia geben nur den Inhalt des info-Feldes zurück (meist leer).
Verwendungsbeispiele
Numerale abrufen
use App\Models\Numerale;
// Numerale laden
$tres = Numerale::where('lemma', 'tres')->first();
// Zahlenwert anzeigen
echo $tres->zahlenwert; // 3
// Alle vier Zahlformen anzeigen
echo "Kardinal: " . $tres->lemma . "\n";
echo "Ordinal: " . $tres->lemma_ordinal . "\n";
echo "Distributiv: " . $tres->lemma_distributiv . "\n";
echo "Multiplikativ: " . $tres->lemma_multiplikativ . "\n";Morphologische Formen abrufen
$numerale = Numerale::find(2); // duo
$formen = $numerale->getMorphArrayAttribute();
// Kardinalzahl Femininum Nominativ Plural
echo $formen['1_kardinal']['2_pl']['2_fem']['1_nom']; // "duae"
// Ordinalzahl Maskulinum Akkusativ Singular
echo $formen['2_ordinal']['1_sg']['1_mask']['4_akk']; // "secundum"Neues Numerale erstellen
use App\Models\Numerale;
$numerale = Numerale::create([
'lemma' => 'sex',
'lemma_ordinal' => 'sextus',
'lemma_distributiv' => 'seni',
'lemma_multiplikativ' => 'sexies',
'zahlenwert' => 6,
'bedeutung' => 'sechs',
'status' => 1,
'created_by_id' => auth()->id()
]);
// Morphologisieren
$numerale->morphologisieren();Numeralia nach Zahlenwert sortieren
// Alle Numeralia aufsteigend sortiert
$numeralia = Numerale::orderBy('zahlenwert', 'asc')->get();
// Numeralia zwischen 1 und 10
$einstellig = Numerale::whereBetween('zahlenwert', [1, 10])->get();Validierung prüfen
$numerale = Numerale::find(1);
if ($numerale->IsValid()) {
echo "Numerale ist vollständig und kann morphologisiert werden.";
} else {
echo "Numerale ist unvollständig. Fehlende Felder: ";
if (empty($numerale->lemma_ordinal)) echo "lemma_ordinal ";
if (empty($numerale->lemma_distributiv)) echo "lemma_distributiv ";
if (empty($numerale->lemma_multiplikativ)) echo "lemma_multiplikativ ";
}Beispieldaten aus der Datenbank
unus (eins) – Nur Singular
[
'id' => 1,
'lemma' => 'unus',
'lemma_ordinal' => 'primus',
'lemma_distributiv' => 'singuli',
'lemma_multiplikativ' => 'semel',
'zahlenwert' => 1,
'bedeutung' => 'eins',
'status' => 1
]Morphologische Besonderheiten:
- Kardinal nur Singular: unus, una, unum
- Gen. Sg. auf -ius: unius (alle Genera)
- Dat. Sg. auf -i: uni (alle Genera)
duo (zwei) – Nur Plural
[
'id' => 2,
'lemma' => 'duo',
'lemma_ordinal' => 'secundus',
'lemma_distributiv' => 'bini',
'lemma_multiplikativ' => 'bis',
'zahlenwert' => 2,
'bedeutung' => 'zwei',
'status' => 3
]Morphologische Besonderheiten:
- Kardinal nur Plural: duo (m./n.), duae (f.)
- Gen. Pl.: duorum (m./n.), duarum (f.)
- Dat./Abl. Pl.: duobus (m./n.), duabus (f.)
tres (drei) – Nur Plural
[
'id' => 3,
'lemma' => 'tres',
'lemma_ordinal' => 'tertius',
'lemma_distributiv' => 'trini',
'lemma_multiplikativ' => 'ter',
'zahlenwert' => 3,
'bedeutung' => 'drei',
'status' => 1
]Morphologische Besonderheiten:
- Kardinal nur Plural: tres (m./f.), tria (n.)
- Gen. Pl.: trium (alle Genera)
- Dat./Abl. Pl.: tribus (alle Genera)
quattuor (vier) – Indeklinabel
[
'id' => 4,
'lemma' => 'quattuor',
'lemma_ordinal' => 'quartus',
'lemma_distributiv' => 'quaterni',
'lemma_multiplikativ' => 'quater',
'zahlenwert' => 4,
'bedeutung' => 'vier',
'status' => 1
]Morphologische Besonderheiten:
- Kardinal indeklinabel: quattuor (alle Kasus/Genera/Numeri)
- Ordinal, Distributiv deklinierbar
quinque (fünf) – Indeklinabel
[
'id' => 5,
'lemma' => 'quinque',
'lemma_ordinal' => 'quintus',
'lemma_distributiv' => 'quini',
'lemma_multiplikativ' => 'quinquies',
'zahlenwert' => 5,
'bedeutung' => 'fünf',
'status' => 1
]Besonderheiten
Keine manuelle Morphologisierung
Die komplexe Struktur mit vier verschiedenen Zahlformen und die zahlreichen Sonderregeln machen eine manuelle Morphologisierung unmöglich. Der NumeraleMorpher behandelt alle Spezialfälle automatisch.
Multiplikativzahlen sind Strings
Im Gegensatz zu den anderen drei Zahlformen, die als vollständige Deklinationsparadigmen gespeichert werden, ist 4_multiplikativ ein einfacher String, da Multiplikativzahlen nicht dekliniert werden.
IsValid() vs. RequiredFields
Die IsValid()-Methode ist strenger als RequiredFields:
- RequiredFields: Nur
lemmaundbedeutungerforderlich - IsValid(): Alle vier
lemma_*-Felder müssen gefüllt sein
Dies ermöglicht das Speichern unvollständiger Numeralia, die später vervollständigt werden können.
Zahlenwert optional
Das Feld zahlenwert ist optional und dient primär zur Sortierung und Filterung. Es wird nicht für die Morphologisierung benötigt.
Konstanten
const ROUTE_NAME = 'numeralia';
const MODEL_NAME = 'numerale';
const CLASS_NAME = 'Numerale';
const MORPHER = NumeraleMorpher::class;
const MORPH_INFO_HANDLER = NumeraleMorphInfoHandler::class;Vererbungshierarchie
Vocab (Basis-Model)
└── NumeraleNumeralia erben von Vocab und nutzen folgende Traits:
HasAlleFormenAttributeMorphableReportableVerifiablehasStatushasVerweisebelongsToLerneinheiten
Weitere Informationen
Für Details zur Morphologisierung siehe:
- NumeraleMorpher-Dokumentation (falls vorhanden)
Für allgemeine Glossarium-Informationen siehe:
- Glossarium-Übersicht (falls vorhanden)