Produced by gfdoc - a rudimentary GF document generator. (c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.

#

# -path=.:../abstract:../../prelude

# German Lexical Paradigms

Aarne Ranta 2003

This is an API to the user of the resource grammar for adding lexical items. It give shortcuts for forming expressions of basic categories: nouns, adjectives, verbs. Closed categories (determiners, pronouns, conjunctions) are accessed through the resource syntax API, `Resource.gf`. Their original typings via abstract syntax are in `Structural.gf`, which also contains documentation.

The main difference with `MorphoGer.gf` is that the types referred to are compiled resource grammar types. We have moreover had the design principle of always having existing forms, not stems, as string arguments of the paradigms.

The following modules are presupposed:

      resource ParadigmsGer =
        open Prelude, (Morpho=MorphoGer), SyntaxGer, ResourceGer in {

## Parameters

To abstract over gender names, we define the following identifiers.

      oper
        masculine : Gender ;
        feminine  : Gender ;
        neuter    : Gender ;

To abstract over case names, we define the following.

        nominative : Case ;
        accusative : Case ;
        dative     : Case ;
        genitive   : Case ;

To abstract over number names, we define the following.

        singular : Number ;
        plural   : Number ;

## Nouns

Worst case: give all four singular forms, two plural forms (others + dative), and the gender.

        mkN  : (_,_,_,_,_,_ : Str) -> Gender -> N ;
                                       -- mann, mann, manne, mannes, männer, männern

Often it is enough with singular and plural nominatives, and singular genitive. The plural dative is computed by the heuristic that it is the same as the nominative this ends with n or s, otherwise n is added.

        nGen : Str -> Str -> Str ->  Gender -> N ; -- punkt,punktes,punkt

Here are some common patterns. Singular nominative or two nominatives are needed. Two forms are needed in case of Umlaut, which would be complicated to define. For the same reason, we have separate patterns for multisyllable stems. The weak masculine pattern `nSoldat` avoids duplicating the final e.

        nRaum   : (_,_ : Str) -> N ;    -- Raum, (Raumes,) Räume (masc)
        nTisch  : Str -> N ;            -- Tisch, (Tisches, Tische) (masc)
        nVater  : (_,_ : Str) -> N ;    -- Vater, (Vaters,) Väter (masc)
        nFehler : Str -> N ;            -- Fehler, (fehlers, Fehler) (masc)
        nSoldat : Str -> N ;            -- Soldat (, Soldaten) ; Kunde (, Kunden) (masc)

Neuter patterns.

        nBuch   : (_,_ : Str) -> N ;    -- Buch, (Buches, Bücher) (neut)
        nMesser : Str -> N ;            -- Messer, (Messers, Messer) (neut)
        nAuto   : Str -> N ;            -- Auto, (Autos, Autos) (neut)

Feminine patterns. Duplicated e is avoided in `nFrau`.

        nHand   : (_,_ : Str) -> N ;    -- Hand, Hände; Mutter, Mütter (fem)
        nFrau   : Str -> N ;            -- Frau (, Frauen) ; Wiese (, Wiesen) (fem)

Nouns used as functions need a preposition. The most common is von.

        mkFun  : N -> Preposition -> Case -> Fun ;
        funVon : N -> Fun ;

Proper names, with their possibly irregular genitive. The regular genitive is s, omitted after s.

        mkPN  : (karolus, karoli : Str) -> PN ; -- karolus, karoli
        pnReg : (Johann : Str) -> PN ;          -- Johann, Johanns ; Johannes, Johannes

On the top level, it is maybe `CN` that is used rather than `N`, and `NP` rather than `PN`.

        mkCN  : N -> CN ;
        mkNP  : (karolus,karoli : Str) -> NP ;

        npReg : Str -> NP ;   -- Johann, Johanns

In some cases, you may want to make a complex `CN` into a function.

        mkFunCN  : CN -> Preposition -> Case -> Fun ;
        funVonCN : CN -> Fun ;

## Adjectives

Non-comparison one-place adjectives need two forms in the worst case: the one in predication and the one before the ending e.

        mkAdj1 : (teuer,teur : Str) -> Adj1 ;

Invariable adjective are a special case.

        adjInvar : Str -> Adj1 ;          -- prima

The following heuristic recognizes the the end of the word, and builds the second form depending on if it is e, er, or something else. N.B. a contraction is made with er, which works for teuer but not for bitter.

        adjGen : Str -> Adj1 ;            -- gut; teuer; böse

Two-place adjectives need a preposition and a case as extra arguments.

        mkAdj2 : Adj1 -> Str -> Case -> Adj2 ;  -- teilbar, durch, acc

Comparison adjectives may need three adjective, corresponding to the three comparison forms.

        mkAdjDeg : (gut,besser,best : Adj1) -> AdjDeg ;

In many cases, each of these adjectives is itself regular. Then we only need three strings. Notice that contraction with er is not performed (bessere, not bessre).

        aDeg3 : (gut,besser,best : Str) -> AdjDeg ;

In the completely regular case, the comparison forms are constructed by the endings er and st.

        aReg : Str -> AdjDeg ;    -- billig, billiger, billigst

The past participle of a verb can be used as an adjective.

        aPastPart : V -> Adj1 ;   -- gefangen

On top level, there are adjectival phrases. The most common case is just to use a one-place adjective. The variation in `adjGen` is taken into account.

        apReg : Str -> AP ;

## Verbs

The fragment only has present tense so far, but in all persons. It also has the infinitive and the past participles. The worst case macro needs four forms: : the infinitive and the third person singular (where Umlaut may occur), the singular imperative, and the past participle. The function recognizes if the stem ends with s or t and performs the appropriate contractions.

        mkV : (_,_,_,_ : Str) -> V ;   -- geben, gibt, gib, gegeben

Regular verbs are those where no Umlaut occurs.

        vReg  : Str -> V ;             -- führen

The verbs 'be' and 'have' are special.

        vSein  : V ;
        vHaben : V ;

Some irregular verbs.

        vFahren : V ;

Verbs with a detachable particle, with regular ones as a special case.

        vPart    :  (_,_,_,_,_ : Str) -> V ;     -- sehen, sieht, sieh, gesehen, aus
        vPartReg :  (_,_     : Str) -> V ;       -- bringen, um
        mkVPart  :  V -> Str -> V ;              -- vFahren, aus

Two-place verbs, and the special case with direct object. Notice that a particle can be included in a `V`.

        mkTV     : V   -> Str -> Case -> TV ;    -- hören, zu, dative

        tvReg    : Str -> Str -> Case -> TV ;    -- hören, zu, dative
        tvDir    : V -> TV ;                     -- umbringen
        tvDirReg : Str -> TV ;                   -- lieben

Three-place verbs require two prepositions and cases.

        mkV3 : V -> Str -> Case -> Str -> Case -> V3 ;  -- geben,[],dative,[],accusative

Sentence-complement verbs are just verbs.

        mkVS : V -> VS ;

Verb-complement verbs either need the zu particle or don't. The ones that don't are usually auxiliary verbs.

        vsAux : V -> VV ;
        vsZu  : V -> VV ;

## Adverbials

Adverbials for modifying verbs, adjectives, and sentences can be formed from strings.

        mkAdV : Str -> AdV ;
        mkAdA : Str -> AdA ;
        mkAdS : Str -> AdS ;

Prepositional phrases are another productive form of adverbials.

        mkPP : Case -> Str -> NP -> AdV ;

One can also use the function `ResourceGer.PrepNP` with one of the given prepositions or a preposition formed by giving a string and a case:

        mkPrep : Str -> Case -> Prep ;

The definitions should not bother the user of the API. So they are hidden from the document.