Skip to content

Verben im Glossarium-System

Überblick

Verben bilden eine der zentralen Wortarten im Glossarium-System von Hermeneus. Das Verb-Model (App\Models\Verb) erweitert die abstrakte Basisklasse Vocab und implementiert die vollständige lateinische Verbmorphologie mit allen Tempora, Modi, Genera (Aktiv/Passiv) sowie Partizipien, Gerundium, Gerundiv und Supin.

Das Verb-System unterstützt:

  • Alle fünf Konjugationsklassen (a, e, i, k, ki)
  • Deponentien und Semideponentien
  • Perfektopräsentia
  • Anomalia (unregelmäßige Verben wie esse, posse, ferre, velle, ire)
  • Defectiva und Impersonalia
  • Automatische und manuelle Morphologisierung
  • PPP (Partizip Perfekt Passiv) und PFA (Partizip Futur Aktiv)

Model: app\Models\Verb.phpMorpher: app\Morpher\VerbMorpher.phpTabelle: glossarium_verbenRoute-Name: verben

Datenbankfelder

Basisfelder (von Vocab geerbt)

FeldTypBeschreibung
idintPrimärschlüssel
created_attimestampErstellungszeitpunkt
updated_attimestampLetzter Änderungszeitpunkt
deleted_attimestampSoft-Delete-Zeitpunkt (nullable)
created_by_idintForeign Key zu users.id (nullable)
updated_by_idintForeign Key zu users.id (nullable)

Verbspezifische Felder

Grundlegende Identifikation

FeldTypBeschreibungBeispielwert
lemmavarcharGrundform (Infinitiv Präsens Aktiv)accipere
infovarcharZusatzinformation zum Lemma(mit acc. und inf.)
bedeutungvarcharHauptbedeutung (erforderlich)annehmen, empfangen
bedeutungen_alletextAlle Bedeutungen als Textannehmen; empfangen; erhalten; vernehmen
statusintVerifikationsstatus (0-2)2 (verifiziert)

Formbildungsfelder (fb_*)

FeldTypBeschreibungBeispielwert (accipere)
fb_stammvarcharPräsensstamm mit Stammauslautaccipi
fb_kklasseenumKonjugationsklasseki
fb_1pssgprvarchar1. Person Singular Präsens Aktivaccipio
fb_1pssgpfvarchar1. Person Singular Perfekt Aktivaccepi
fb_hat_pppint (boolean)Hat Partizip Perfekt Passiv1
fb_pppvarcharPartizip Perfekt Passiv (Nominativ Singular Neutrum)acceptum
fb_hat_pfaint (boolean)Hat Partizip Futur Aktiv1
fb_pfavarcharPartizip Futur Aktiv (Nominativ Singular Maskulinum)accepturus
fb_ist_deponensint (boolean)Ist ein Deponens0
fb_ist_perfektopraesensint (boolean)Ist ein Perfektopräsens0

Morphologie-Daten

FeldTypBeschreibung
morphjsonVollständige Morphologie aller Formen
morph_modeintMorphologisierungsmodus (0 = automatisch, 1 = manuell)

Erforderliche Felder

Die RequiredFields-Property im Verb-Model definiert folgende Pflichtfelder:

php
public array $RequiredFields = [
    'lemma',           // Grundform (Infinitiv)
    'fb_stamm',        // Präsensstamm
    'fb_kklasse',      // Konjugationsklasse
    'fb_1pssgpr',      // 1. Ps. Sg. Präsens
    'fb_1pssgpf',      // 1. Ps. Sg. Perfekt
    'fb_ist_deponens', // Deponens-Flag
    'bedeutung'        // Hauptbedeutung
];

Hinweis: Die Felder fb_hat_ppp und fb_hat_pfa sind nicht zwingend erforderlich, sollten aber bei der Morphologisierung gesetzt werden. Bei Deponentien wird kein PPP benötigt.

Typische Fehler und Hinweise zum Ausfüllen

Beim Anlegen und Pflegen von Verben im Glossarium treten häufig Fehler auf, die zu fehlerhaften morphologischen Formen führen. Die folgende Tabelle zeigt typische Fehlerquellen und wie sie vermieden werden können.

FeldTypischer FehlerAuswirkungRichtigHinweis
lemmaGroßschreibung: "Convocare"Falsche Sortierung im Wörterbuch, SuchproblemeconvocareLemma immer kleinschreiben, außer bei Eigennamen (z.B. "Romanus")
lemmaDoppelte Einträge: "adquirere" und "acquirere" separat angelegtDatenredundanz, verschiedene Morphologien für gleiche BedeutungHauptlemma: acquirere, zweiter Eintrag mit Verweis oder als Schreibvariante markierenBei Schreibvarianten sollte ein Haupteintrag definiert werden
lemmaInkonsistente Schreibweise bei VariantenschreibungSuchfunktion findet nicht alle TrefferHauptform bevorzugen (z.B. "quaerere" statt "querere")In info-Feld kann auf Varianten hingewiesen werden
fb_stammFalscher Stamm bei i-Konjugation: "cap" statt "capi" bei capereFalsche Formen: "capo", "capis" statt "capio", "capis"capiBei ki-Konjugation den Stamm MIT i-Erweiterung angeben
fb_stammStamm mit Personalendung: "capi-o"Parser-Fehler, doppelte Endungen: "capio-mus"capi (ohne -o)Der Stamm darf KEINE Personalendung enthalten
fb_stammPerfektstamm statt Präsensstamm: "cep" bei capereAlle Präsensformen falschcapiImmer den Präsensstamm verwenden, nicht den Perfektstamm
fb_stammFehlendes -i bei konsonantischen Stämmen (ki-Klasse): "accip" statt "accipi"Fehlende i-Erweiterung in Formen, z.B. "accipmus" statt "accipimus"accipiBei ki-Konjugation immer das stammerweiternde -i angeben
fb_kklasseFalsche Konjugationsklasse: capere als "a" statt "ki"Völlig falsche Konjugation (capo, capas, capat)kiBei Verben auf -ere (kurz) meist ki-Konjugation prüfen
fb_kklasseVerwechslung e-/ki-Konjugation: delere als "ki" statt "e"Falsche Formen im Präsense (bei delere)e-Konjugation: langer Stammvokal (-ēre), ki-Konjugation: kurzer Stammvokal (-ĕre)
fb_kklassei-Konjugation statt ki: capere als "i"Falsche Stammbildung, fehlende Besonderheitenkii-Konjugation: Verben auf -ire, ki-Konjugation: Verben auf -ere mit i-Erweiterung
fb_1pssgprFalsche Form: "capeo" statt "capio"Inkorrekte Ableitung aller PräsensformencapioDie 1. Person Präsens muss exakt der korrekten lateinischen Form entsprechen
fb_1pssgprInfinitiv statt 1. Person: "capere"Alle finiten Formen falschcapioNicht den Infinitiv, sondern die 1. Person Singular Indikativ Präsens Aktiv eintragen
fb_1pssgpfPerfektstamm statt Perfektform: "cep" statt "cepi"Keine Perfektmorphologie generierbarcepiDie vollständige 1. Person Singular Perfekt Aktiv eintragen, nicht nur den Stamm
fb_1pssgpfPräsensform statt Perfekt: "capio"Perfekt identisch mit PräsenscepiPerfekt und Präsens unterscheiden sich fast immer
fb_1pssgpfPPP statt Perfekt: "captum"Falsche Perfektmorphologiecepifb_1pssgpf erwartet die finite 1. Person ("cepi"), nicht das Partizip
fb_hat_pppAuf 1 gesetzt, aber fb_ppp ist leerPassiv-Perfekt-Formen können nicht generiert werden, System erwartet PPPfb_hat_ppp = 0 oder PPP eintragenWenn kein PPP existiert, fb_hat_ppp auf 0 setzen
fb_hat_pppAuf 0 gesetzt, obwohl PPP existiertKeine Passiv-Perfekt-Formen, keine esse-Periphrasefb_hat_ppp = 1 und PPP eintragenDie meisten Verben haben ein PPP
fb_pppSupinum statt PPP: "captum" (aber als Supinum dekliniert)PPP muss deklinierbar sein (o/a-Deklination)captum (als Neutrum der o/a-Dekl.)PPP = Partizip Perfekt Passiv, Supinum = Verbalsubstantiv
fb_pppNominativ Maskulinum statt Neutrum: "captus" statt "captum"Falsche PPP-Deklinationcaptum (Nom. Sg. Neutrum)Immer Nom. Sg. Neutrum angeben (Endung -um)
fb_pppGenitiv statt Nominativ: "capti"Falsche GrundformcaptumNominativ Singular Neutrum ist die Grundform
fb_pppInfinitiv Perfekt Passiv: "captum esse"Parser-FehlercaptumNur das Partizip, nicht die Periphrase
fb_ist_deponensDeponens-Flag falsch bei normalem Verb: amare als Deponens markiertNur Passivformen generiert, obwohl Verb aktiv0Nur echte Deponentien (loqui, sequi, etc.) als Deponens markieren
fb_ist_deponensDeponens nicht als Deponens markiert: loqui mit fb_ist_deponens = 0Aktiv- und Passivformen generiert, aber Deponens hat nur Passiv1Deponentien konsequent als solche markieren
fb_ist_deponensSemideponens als vollständiges Deponens: audere als fb_ist_deponens = 1Falsche Morphologie0 (mit spezieller Behandlung)Semideponentien erfordern differenzierte Behandlung
fb_pfaNominativ Neutrum statt Maskulinum: "capturum"Falsche PFA-Deklinationcapturus (Nom. Sg. Mask.)PFA = Partizip Futur Aktiv: Nominativ Singular Maskulinum (Endung -urus)
fb_pfaSupinum II statt PFA: "captu"Völlig falsche FormcapturusPFA ist ein Partizip (-urus), Supinum II ist ein Verbalsubstantiv (-u)
bedeutungInkonsistente Angaben: "lieben, mögen" vs. "lieben; mögen"Suchprobleme, uneinheitliche DarstellungTrennzeichen konsistent verwenden (Komma oder Semikolon)Konvention: Komma für enge Synonyme, Semikolon für verschiedene Bedeutungsfelder
bedeutungZu viele Bedeutungen in HauptfeldUnübersichtlichkeitHauptbedeutung(en) in bedeutung, alle in bedeutungen_alleIm bedeutung-Feld maximal 2-3 Kernbedeutungen angeben
bedeutungLeer gelassenVerb nicht nutzbar, Pflichtfeld-FehlerMindestens eine Bedeutung eintragenbedeutung ist ein erforderliches Feld
AllgemeinDoppelte Einträge desselben Verbs mit verschiedenen BedeutungenDateninkonsistenz, verwirrende SuchergebnisseEin Eintrag mit allen BedeutungenVerschiedene Bedeutungen in bedeutungen_alle zusammenfassen
AllgemeinUnvollständige FormbildungsfelderMorphologisierung schlägt fehlAlle Pflichtfelder ausfüllenVor dem Morphologisieren Checkliste durchgehen

Checkliste vor der Morphologisierung

Vor dem Speichern und Morphologisieren eines Verbs sollten folgende Punkte geprüft werden:

  • Lemma klein schreiben (außer bei Eigennamen wie "Romanus")
  • Stamm ohne Personalendung (z.B. "capi", nicht "capio")
  • Korrekte Konjugationsklasse bestimmen:
    • a-Konjugation: -are (laudare)
    • e-Konjugation: -ēre lang (monere)
    • i-Konjugation: -ire (audire)
    • k-Konjugation (konsonantische Konjugation): -ĕre kurz ohne i-Erweiterung (legere → leg)
    • ki-Konjugation (konsonantische Konjugation mit i-Erweiterung): -ĕre kurz mit i-Erweiterung (capere → capi) oder -uere (statuere → statu)
  • fb_stamm mit Stammauslaut (bei ki-Konjugation immer mit -i: "accipi", nicht "accip")
  • fb_1pssgpr: Vollständige 1. Person Sg. Präsens Aktiv (z.B. "capio")
  • fb_1pssgpf: Vollständige 1. Person Sg. Perfekt Aktiv (z.B. "cepi", nicht "cep")
  • fb_ppp: Nominativ Singular Neutrum (Endung -um, z.B. "captum")
  • fb_pfa: Nominativ Singular Maskulinum (Endung -urus, z.B. "capturus")
  • fb_hat_ppp und fb_hat_pfa konsistent mit tatsächlich vorhandenen Formen setzen
  • fb_ist_deponens nur bei echten Deponentien auf 1 setzen (loqui, sequi, pati, etc.)
  • Bedeutung vorhanden und konsistent formatiert
  • Keine Duplikate im Glossarium (vor dem Anlegen suchen)
  • Schreibvarianten als Verweise oder im info-Feld vermerken

Hinweis: Das Morphologisierungssystem ist darauf angewiesen, dass die Formbildungsfelder präzise und vollständig ausgefüllt sind. Fehler in diesen Feldern führen zu systematisch falschen Formen in allen abgeleiteten Tempora und Modi.

Konjugationsklassen

Der VerbMorpher unterscheidet fünf Konjugationsklassen:

Übersicht

KlasseWertStammauslautBeispielBeschreibung
A-Konjugationa-alaudare (lauda-)Verben auf -are
E-Konjugatione-emonere (mone-)Verben auf -ere (lang)
I-Konjugationi-iaudire (audi-)Verben auf -ire
Konsonantische Konjugationkkons.legere (leg-)Verben auf -ere (kurz) ohne i-Erweiterung
Konsonantische Konjugation mit i-Erweiterungki-i / -uaccipere (accipi-), statuere (statu-)Verben auf -ere (kurz) mit i-Erweiterung oder Verben auf -uere

Besonderheiten

k-Konjugation (Konsonantische Konjugation ohne i-Erweiterung):

  • Ursprünglich konsonantischer Stamm ohne feste i-Erweiterung
  • Stammerweiterungsvokale werden je nach Form dynamisch hinzugefügt (z.B. -e-, -i-, -u-)
  • Beispiele: legere → Stamm leglego, legis, legit, legimus, legitis, legunt

ki-Konjugation (Konsonantische Konjugation mit i-Erweiterung):

  • Ursprünglich konsonantischer Stamm mit fester i-Erweiterung im Präsensstamm
  • Der Stamm endet immer auf -i (z.B. accipere → Stamm accipiaccipio, accipis, accipit)
  • Oder Verben auf -uere mit Stammauslaut -u- (z.B. statuere → Stamm statustatuo, statuis, statuit)
  • Beispiele: accipere, capere, statuere, minuere, tribuere

Unterschied zwischen k und ki:

  • k: Der Stamm endet auf einen Konsonanten, Stammerweiterungsvokale werden je nach Form variabel hinzugefügt
  • ki: Der Stamm endet bereits auf -i (oder -u bei Verben auf -uere), die i-Erweiterung ist fest im Stamm enthalten

Morphologie-Struktur

Das morph-Feld enthält die vollständige Verbmorphologie als JSON. Die Struktur ist hierarchisch aufgebaut:

Hierarchie-Ebenen

morph (JSON-Root)
├── 1_aktiv
│   ├── 1_praesens
│   │   ├── 0_infinitiv
│   │   ├── 1_indikativ
│   │   ├── 2_konjunktiv
│   │   ├── 3_imperativ
│   │   └── 4_partizip (PPA)
│   ├── 2_imperfekt
│   ├── 3_perfekt
│   ├── 4_plusquamperfekt
│   ├── 5_futur
│   └── 6_futur2
├── 2_passiv
│   ├── 1_praesens
│   ├── 2_imperfekt
│   ├── 3_perfekt (mit esse-Periphrase)
│   ├── 4_plusquamperfekt
│   ├── 5_futur
│   └── 6_futur2
├── 3_gerundium
├── 4_gerundiv
└── 5_supin

Detaillierte Schlüsselstruktur

Genus (Oberste Ebene)

SchlüsselBeschreibung
1_aktivAlle Aktivformen
2_passivAlle Passivformen
3_gerundiumGerundium (nur Aktiv, Neutrum Singular)
4_gerundivGerundiv (Passiv, adjektivische Deklination)
5_supinSupin I und II

Tempora (zweite Ebene)

Aktiv:

  • 1_praesens - Präsens
  • 2_imperfekt - Imperfekt
  • 3_perfekt - Perfekt
  • 4_plusquamperfekt - Plusquamperfekt
  • 5_futur - Futur I
  • 6_futur2 - Futur II

Passiv:

  • Gleiche Struktur wie Aktiv
  • Bei Perfekt/Plusquamperfekt/Futur II: Periphrase mit esse + PPP

Modi (dritte Ebene)

SchlüsselBeschreibung
0_infinitivInfinitiv
1_indikativIndikativ
2_konjunktivKonjunktiv
3_imperativImperativ
4_partizipPartizip

Personae (vierte Ebene - bei finiten Verben)

SchlüsselBeschreibung
1_sg11. Person Singular
2_sg22. Person Singular
3_sg33. Person Singular
4_pl11. Person Plural
5_pl22. Person Plural
6_pl33. Person Plural

Hinweis: Bei Imperativ nur 2_sg2 und 5_pl2 (bzw. im Futur zusätzlich 3_sg3 und 6_pl3)

Partizipien (zusätzliche Ebenen)

Partizipien werden dekliniert nach Numerus, Genus, Kasus:

4_partizip
├── 1_sg (Singular)
│   ├── 1_mask (Maskulinum)
│   │   ├── 1_nom, 2_gen, 3_dat, 4_akk, 5_vok, 6_abl
│   ├── 2_fem (Femininum)
│   │   └── ...
│   └── 3_neutr (Neutrum)
│       └── ...
└── 2_pl (Plural)
    └── ...

Gerundium

3_gerundium
├── 2_gen  - Genitiv (z.B. "accipiendi")
├── 3_dat  - Dativ (z.B. "accipiendo")
├── 4_akk  - Akkusativ (z.B. "accipiendum")
└── 6_abl  - Ablativ (z.B. "accipiendo")

Hinweis: Gerundium hat keinen Nominativ und Vokativ.

Gerundiv

Gleiche Struktur wie Partizipien (alle Genera, Numeri, Kasus).

Supin

5_supin
├── 1_supin1  - Supin I (Akkusativ, z.B. "acceptum")
└── 2_supin2  - Supin II (Ablativ, z.B. "acceptu")

Beispiel: Vollständige morph-JSON-Struktur (Auszug)

json
{
  "1_aktiv": {
    "1_praesens": {
      "0_infinitiv": "accipere",
      "1_indikativ": {
        "1_sg1": "accipio",
        "2_sg2": "accipis",
        "3_sg3": "accipit",
        "4_pl1": "accipimus",
        "5_pl2": "accipitis",
        "6_pl3": "accipiunt"
      },
      "2_konjunktiv": {
        "1_sg1": "accipiam",
        "2_sg2": "accipias",
        "3_sg3": "accipiat",
        "4_pl1": "accipiamus",
        "5_pl2": "accipiatis",
        "6_pl3": "accipiant"
      },
      "3_imperativ": {
        "2_sg2": "accipe",
        "5_pl2": "accipite"
      },
      "4_partizip": {
        "1_sg": {
          "1_mask": {
            "1_nom": "accipiens",
            "2_gen": "accipientis",
            "3_dat": "accipienti",
            "4_akk": "accipientem",
            "5_vok": "accipiens",
            "6_abl": "accipiente / accipienti"
          }
        }
      }
    },
    "3_perfekt": {
      "0_infinitiv": "accepisse",
      "1_indikativ": {
        "1_sg1": "accepi",
        "2_sg2": "accepisti",
        "3_sg3": "accepit",
        "4_pl1": "accepimus",
        "5_pl2": "accepistis",
        "6_pl3": "acceperunt"
      }
    }
  },
  "2_passiv": {
    "1_praesens": {
      "0_infinitiv": "accipi",
      "1_indikativ": {
        "1_sg1": "accipior",
        "2_sg2": "acciperis",
        "3_sg3": "accipitur",
        "4_pl1": "accipimur",
        "5_pl2": "accipimini",
        "6_pl3": "accipiuntur"
      }
    },
    "3_perfekt": {
      "0_infinitiv": "acceptum esse",
      "1_indikativ": {
        "1_sg1": "acceptus sum / accepta sum / acceptum sum",
        "2_sg2": "acceptus es / accepta es / acceptum es",
        "3_sg3": "acceptus est / accepta est / acceptum est",
        "4_pl1": "accepti sumus/ acceptae sumus/ accepta sumus",
        "5_pl2": "accepti estis / acceptae estis / accepta estis",
        "6_pl3": "accepti sunt / acceptae sunt / accepta sunt"
      },
      "4_partizip": {
        "1_sg": {
          "1_mask": {
            "1_nom": "acceptus",
            "2_gen": "accepti",
            "3_dat": "accepto",
            "4_akk": "acceptum",
            "5_vok": "accepte",
            "6_abl": "accepto"
          }
        }
      }
    }
  },
  "3_gerundium": {
    "2_gen": "accipiendi",
    "3_dat": "accipiendo",
    "4_akk": "accipiendum",
    "6_abl": "accipiendo"
  },
  "4_gerundiv": {
    "1_sg": {
      "1_mask": {
        "1_nom": "accipiendus",
        "2_gen": "accipiendi",
        "3_dat": "accipiendo",
        "4_akk": "accipiendum",
        "5_vok": "accipiende",
        "6_abl": "accipiendo"
      }
    }
  },
  "5_supin": {
    "1_supin1": "acceptum",
    "2_supin2": "acceptu"
  }
}

Besonderheiten

Deponentien

Deponentien sind Verben, die nur Passivformen besitzen, aber aktive Bedeutung haben.

Identifikation: fb_ist_deponens = 1

Beispiele: conari, loqui, sequi, pati, uti

Morphologische Besonderheiten:

  • Nur Passivformen werden generiert
  • PPP hat passive Bedeutung
  • PFA existiert (z.B. locuturus)
  • Gerundium und Gerundiv vorhanden

Code-Beispiel:

php
$verb = Verb::where('lemma', 'loqui')->first();
echo $verb->fb_ist_deponens; // 1
echo $verb->morph['2_passiv']['1_praesens']['1_indikativ']['1_sg1']; // "loquor"

Semideponentien

Verben, die teilweise aktiv, teilweise passiv konjugiert werden.

Zwei Typen:

  1. Mit Passiv im Perfekt (fb_ist_deponens = 0, aber Perfektstamm passiv)

    • Beispiele: fidere, confidere, diffidere
    • Präsens/Imperfekt/Futur I: aktiv
    • Perfekt/Plusquamperfekt/Futur II: passiv
  2. Mit Passiv im Präsens

    • Beispiele: reverti, deverti
    • Präsens: passiv
    • Perfekt: aktiv

Behandlung im VerbMorpher: Spezielle Arrays $semideponentia definieren diese Verben.

Perfektopräsentia

Verben, deren Perfektformen präsentische Bedeutung haben.

Identifikation: fb_ist_perfektopraesens = 1

Beispiele: memini (ich erinnere mich), odi (ich hasse), novi (ich kenne)

Morphologische Besonderheiten:

  • Perfektformen haben Präsensbedeutung
  • Plusquamperfektformen haben Imperfektbedeutung
  • Futur II hat Futurbedeutung
  • Kein echtes Präsens vorhanden

Verben ohne PPP/PFA

Manche Verben bilden kein PPP oder PFA.

Steuerung:

php
$verb->fb_hat_ppp = 0; // Kein PPP
$verb->fb_hat_pfa = 0; // Kein PFA

Beispiele:

  • Verben ohne PPP: fugere (nur poetisch fugitus)
  • Verben ohne PFA: viele Deponentien

Auswirkung:

  • Keine Passivformen im Perfektstamm (wenn kein PPP)
  • Kein Partizip Futur Aktiv (wenn kein PFA)
  • Keine esse-Periphrase im Passiv Perfekt

Verwendungsbeispiele

Erstellen eines neuen Verbs

php
use App\Models\Verb;

$verb = Verb::create([
    'lemma' => 'reperire',
    'bedeutung' => 'finden, wiederfinden',
    'fb_stamm' => 'reperi',
    'fb_kklasse' => 'ki',
    'fb_1pssgpr' => 'reperio',
    'fb_1pssgpf' => 'repperi',
    'fb_hat_ppp' => 1,
    'fb_ppp' => 'repertum',
    'fb_hat_pfa' => 1,
    'fb_pfa' => 'reperturus',
    'fb_ist_deponens' => 0,
    'fb_ist_perfektopraesens' => 0,
    'status' => 0, // Unverifiziert
    'morph_mode' => 0, // Automatische Morphologisierung
]);

// Morphologisierung durchführen
$verb->morphologisieren();
$verb->save();

Morphologisierung eines Verbs

php
use App\Models\Verb;
use App\Morpher\VerbMorpher;

$verb = Verb::find(11); // accipere

// Automatische Morphologisierung
$morpher = new VerbMorpher($verb);
$morpher->autoMorph();

// Morphologie in das Model übernehmen
$verb->morph = $morpher->getFormen();
$verb->morph_mode = 0; // Automatisch
$verb->save();

Alternative: Über das Morphable-Trait

php
$verb = Verb::find(11);
$verb->morphologisieren(); // Ruft intern den VerbMorpher auf

Zugriff auf spezifische Formen

php
$verb = Verb::where('lemma', 'accipere')->first();

// JSON dekodieren (falls nicht automatisch)
$morph = is_string($verb->morph) ? json_decode($verb->morph, true) : $verb->morph;

// Infinitiv Präsens Aktiv
$infPraes = $morph['1_aktiv']['1_praesens']['0_infinitiv'];
echo $infPraes; // "accipere"

// 1. Person Singular Präsens Indikativ Aktiv
$praesSg1 = $morph['1_aktiv']['1_praesens']['1_indikativ']['1_sg1'];
echo $praesSg1; // "accipio"

// 3. Person Plural Perfekt Indikativ Aktiv
$perfPl3 = $morph['1_aktiv']['3_perfekt']['1_indikativ']['6_pl3'];
echo $perfPl3; // "acceperunt"

// Infinitiv Perfekt Passiv
$infPerfPass = $morph['2_passiv']['3_perfekt']['0_infinitiv'];
echo $infPerfPass; // "acceptum esse"

// PPP Nominativ Singular Maskulinum
$pppNomSgMask = $morph['2_passiv']['3_perfekt']['4_partizip']['1_sg']['1_mask']['1_nom'];
echo $pppNomSgMask; // "acceptus"

// PPA Akkusativ Plural Neutrum
$ppaAkkPlNeutr = $morph['1_aktiv']['1_praesens']['4_partizip']['2_pl']['3_neutr']['4_akk'];
echo $ppaAkkPlNeutr; // "accipientia"

// Gerundium Genitiv
$gerGen = $morph['3_gerundium']['2_gen'];
echo $gerGen; // "accipiendi"

// Gerundiv Nominativ Singular Femininum
$gndNomSgFem = $morph['4_gerundiv']['1_sg']['2_fem']['1_nom'];
echo $gndNomSgFem; // "accipienda"

// Supin I
$supin1 = $morph['5_supin']['1_supin1'];
echo $supin1; // "acceptum"

Alle Formen eines Verbs abrufen

php
$verb = Verb::find(11);

// Über das HasAlleFormenAttribute-Trait
$alleFormen = $verb->alle_formen;

// $alleFormen ist eine Collection mit allen Formen
foreach ($alleFormen as $form) {
    echo $form . "\n";
}

Abfrage nach Konjugationsklasse

php
// Alle Verben der a-Konjugation
$aVerben = Verb::where('fb_kklasse', 'a')->get();

// Alle Verben der konsonantischen Konjugation ohne i-Erweiterung
$kVerben = Verb::where('fb_kklasse', 'k')->get();

// Alle Verben der konsonantischen Konjugation mit i-Erweiterung
$kiVerben = Verb::where('fb_kklasse', 'ki')->get();

// Deponentien der e-Konjugation
$eDeponentien = Verb::where('fb_kklasse', 'e')
    ->where('fb_ist_deponens', 1)
    ->get();

Verben ohne PPP finden

php
$verbenOhnePPP = Verb::where('fb_hat_ppp', 0)->get();

foreach ($verbenOhnePPP as $verb) {
    echo $verb->lemma . " hat kein PPP\n";
}

Verifizierte Verben abrufen

php
// Status: 0 = unverifiziert, 1 = in Prüfung, 2 = verifiziert
$verifiziert = Verb::where('status', 2)->get();

Dictionary Headword (getLemmaInfo)

Die Methode getLemmaInfo() generiert die lexikographische Kopfzeile für ein Verb, wie sie in Wörterbüchern üblich ist.

Format

, [1. Ps. Sg. Präsens], [1. Ps. Sg. Perfekt], [PPP oder PFA]

Beispiele:

  • accipere, accipio, accepi, acceptum (nicht-Deponens)
  • loqui, loquor, locutus sum (Deponens, ohne drittes Stammform-Element)

Implementierung

php
public function getLemmaInfo(): string
{
    $FirstForm = !empty($this->fb_1pssgpr) ? $this->fb_1pssgpr : '-';
    $SecondForm = !empty($this->fb_1pssgpf) ? $this->fb_1pssgpf : '-';
    $ThirdForm = !$this->fb_ist_deponens
        ? !empty($this->fb_ppp)
            ? $this->fb_ppp
            : (!empty($this->pfa) ? $this->pfa : '-')
        : '';

    if ($FirstForm === '-' && $SecondForm === '-' && $ThirdForm === '-') {
        return '';
    } else {
        $ThirdDivider = !empty($ThirdForm) ? ', ' : '';
        return ', ' . $FirstForm . ', ' . $SecondForm . $ThirdDivider . $ThirdForm . $this->getInfoColumn();
    }
}

Verwendung

php
$verb = Verb::where('lemma', 'accipere')->first();

echo $verb->lemma . $verb->getLemmaInfo();
// Ausgabe: "accipere, accipio, accepi, acceptum"

$deponens = Verb::where('lemma', 'loqui')->first();
echo $deponens->lemma . $deponens->getLemmaInfo();
// Ausgabe: "loqui, loquor, locutus sum"

Hinweise:

  • Bei Deponentien wird keine dritte Form (PPP) in der Kopfzeile angezeigt
  • Fehlende Formen werden mit - dargestellt
  • Die Methode getInfoColumn() fügt zusätzliche Info aus dem info-Feld hinzu

Beispieldaten

Beispiel 1: accipere (ki-Konjugation)

php
[
    'id' => 11,
    'lemma' => 'accipere',
    'info' => '',
    'fb_stamm' => 'accipi',
    'fb_kklasse' => 'ki',
    'fb_1pssgpr' => 'accipio',
    'fb_1pssgpf' => 'accepi',
    'fb_hat_ppp' => 1,
    'fb_ppp' => 'acceptum',
    'fb_hat_pfa' => 1,
    'fb_pfa' => 'accepturus',
    'fb_ist_deponens' => 0,
    'fb_ist_perfektopraesens' => 0,
    'bedeutung' => 'annehmen, empfangen, erhalten',
    'status' => 2,
]

Morphologische Merkmale:

  • Konsonantische Konjugation mit i-Erweiterung
  • Vollständiges Paradigma (Aktiv und Passiv)
  • PPP: acceptum → Passiv Perfekt: acceptus sum
  • PFA: accepturus → Futur-Periphrase: accepturus sum

Beispiel 2: reperire (ki-Konjugation)

php
[
    'id' => 21,
    'lemma' => 'reperire',
    'info' => '',
    'fb_stamm' => 'reperi',
    'fb_kklasse' => 'ki',
    'fb_1pssgpr' => 'reperio',
    'fb_1pssgpf' => 'repperi',
    'fb_hat_ppp' => 1,
    'fb_ppp' => 'repertum',
    'fb_hat_pfa' => 1,
    'fb_pfa' => 'reperturus',
    'fb_ist_deponens' => 0,
    'fb_ist_perfektopraesens' => 0,
    'bedeutung' => 'finden, wiederfinden',
    'status' => 2,
]

Morphologische Merkmale:

  • Konsonantische Konjugation mit i-Erweiterung
  • Reduplikation im Perfekt: repperi (nicht reperi)
  • Vollständiges Paradigma

Weitere typische Verben nach Konjugationsklasse

a-Konjugation:

php
[
    'lemma' => 'laudare',
    'fb_stamm' => 'lauda',
    'fb_kklasse' => 'a',
    'fb_1pssgpr' => 'laudo',
    'fb_1pssgpf' => 'laudavi',
    'fb_ppp' => 'laudatum',
]

e-Konjugation:

php
[
    'lemma' => 'monere',
    'fb_stamm' => 'mone',
    'fb_kklasse' => 'e',
    'fb_1pssgpr' => 'moneo',
    'fb_1pssgpf' => 'monui',
    'fb_ppp' => 'monitum',
]

i-Konjugation:

php
[
    'lemma' => 'audire',
    'fb_stamm' => 'audi',
    'fb_kklasse' => 'i',
    'fb_1pssgpr' => 'audio',
    'fb_1pssgpf' => 'audivi',
    'fb_ppp' => 'auditum',
]

ki-Konjugation (Verben auf -uere):

php
[
    'lemma' => 'statuere',
    'fb_stamm' => 'statu',
    'fb_kklasse' => 'ki',
    'fb_1pssgpr' => 'statuo',
    'fb_1pssgpf' => 'statui',
    'fb_ppp' => 'statutum',
]

Traits und Funktionalität

Das Verb-Model verwendet folgende Traits:

TraitZweck
HasAlleFormenAttributeStellt Accessor alle_formen bereit
MorphableMethoden zur Morphologisierung
VerifiableVerifikations-Workflow
hasStatusStatus-Management (0-2)
SoftDeletesSoft-Delete-Funktionalität
ReportableFehlerberichterstattung
belongsToLerneinheitenRelation zu Lerneinheiten
hasVerweiseQuerverweise zu anderen Vokabeln
SearchableLaravel Scout Integration

Morphable-Trait

php
// Morphologisierung durchführen
$verb->morphologisieren();

// Prüfen ob morphologisierbar
if ($verb->IsMorphologisierbar) {
    // ...
}

// Manuell morphologisieren
if ($verb->IsManuellMorphologisierbar) {
    // Manuelle Eingabe erlaubt
}

Verifiable-Trait

php
// Status setzen
$verb->status = 2; // Verifiziert
$verb->save();

// Unverifizierte Verben
$unverifiziert = Verb::where('status', 0)->get();

Relationen

Sachfelder

php
$verb = Verb::find(11);

// Alle zugeordneten Sachfelder
$sachfelder = $verb->sachfelder;

// IDs der Sachfelder
$sachfeldIds = $verb->sachfeld_list;

Lerneinheiten

php
$verb = Verb::find(11);

// Zugeordnete Lerneinheiten
$lerneinheiten = $verb->lerneinheiten;

Performance-Optimierung

Exclude-Scope

Das morph-Feld kann sehr groß werden. Für Performance-Abfragen:

php
// Ohne morph-Feld laden
$verben = Verb::exclude(['morph'])->get();

// Nur Basis-Spalten
$verben = Verb::select(Verb::BASICCOLUMNS)->get();

Searchable Array

php
public function toSearchableArray(): array
{
    return parent::toSearchableArray();
}

Das Verb-Model ist durchsuchbar via Laravel Scout (TNTSearch/Meilisearch).

Weiterführende Ressourcen

  • VerbMorpher: Detaillierte Morphologisierungslogik in app/Morpher/VerbMorpher.php
  • VerbMorphInfoHandler: Zusätzliche Morphologie-Informationen
  • Vocab-Basisklasse: Gemeinsame Funktionalität in app/Models/Vocab.php
  • Migrations: Datenbankstruktur in database/migrations/
  • Tests: Unit-Tests für Verben in tests/Unit/Models/VerbTest.php