Skip to content

fmatter/clld-morphology-plugin

Repository files navigation

clld-morphology-plugin

A plugin for modelling morphology in CLLD apps.

Versions PyPI License

Models

The models largely reflect the structure of the morphological components of the cldf-ldd collection.

The basic mechanism of segmentation is implemented such that Wordforms and Stems have a list column parts containing the segmentation. These parts are referenced via indices by WordformParts, StemParts, and WordformStems, so these entities "know" their constituents. XParts can in turn be referenced by Inflections, meaning that InflectionalValues (which belong to InflectionalCategories) are associated with part of a wordform. Wordform structure and inflectional information is rendered as follows:

Morpheme detail view with Morphs, inflectional values, and wordforms/corpus tokens:

If a WordformPart is not associated with a Morph, this is interpreted as zero marking (usually for inflection):

Morphophonological change is modeled by MorphoPhonoInstances connecting MorphoPhonologicalChanges with one or more of the following things: an Inflection, a WordformPart, or a StemPart:

Since InflectionalValues are connected via Inflections to WordformParts, their exponents can be easily visualized:

Stems can have a Lexeme, and WordformParts + Wordforms + InflectionalValue + InflectionalCategory contain all the necessary information to automatically generate inflectional paradigms for lexemes:

Derivations connect Stems with other Stems (or Morphs, when derived from a root) and DerivationalProcesses. These derivational links can then be used to render the "derivational lineage" of a stem:

Detail views of stems also show all derived (directly or indirectly) stems:

DerivationalProcesses know what stems they create (optionally using specific morphs):

Markdown

Since this plugin is primarily being developed for an interactive digital corpus-based grammar, comments on models are rendered using markdown. However, it is up to the app developer to choose what markdown you want to use; the templates here assume that the parent mako template provides a function markdown(request, content). If you want to use the clld-markdown-plugin, use the following code in your top-level .mako:

<%def name="markdown(request, content)">
    <%from clld_markdown_plugin import markdown%>
    ${markdown(request, content)|n}
</%def>

to use plain markdown instead:

<%def name="markdown(request, content)">
    <%from markdown import Markdown%>
    ${Markdown(content)|n}
</%def>