A plugin for modelling morphology in CLLD apps.
The models largely reflect the structure of the morphological components of the cldf-ldd collection.
The basic mechanism of segmentation is implemented such that Wordform
s and Stem
s have a list column parts
containing the segmentation.
These parts are referenced via indices by WordformPart
s, StemPart
s, and WordformStem
s, so these entities "know" their constituents.
XParts
can in turn be referenced by Inflection
s, meaning that InflectionalValue
s (which belong to InflectionalCategorie
s) are associated with part of a wordform.
Wordform structure and inflectional information is rendered as follows:
Morpheme
detail view with Morph
s, 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 MorphoPhonoInstance
s connecting MorphoPhonologicalChange
s with one or more of the following things: an Inflection
, a WordformPart
, or a StemPart
:
Since InflectionalValue
s are connected via Inflection
s to WordformPart
s, their exponents can be easily visualized:
Stems
can have a Lexeme
, and WordformPart
s + Wordforms
+ InflectionalValue
+ InflectionalCategory
contain all the necessary information to automatically generate inflectional paradigms for lexemes:
Derivation
s connect Stems
with other Stem
s (or Morph
s, when derived from a root) and DerivationalProcess
es.
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:
DerivationalProcess
es know what stems they create (optionally using specific morphs):
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>