User:Kipcool/Inflexions
There are various types of inflexions, mainly declensions, genders and conjugations
Inflexions are expressions (?)
Each inflexion should allow to indicate its pronunciation.
It has to allow that some inflexions do not exist (the English verb "to rain", ?"you rain"; the English noun "rice" has no plural ?"rices"), and for some others, there can be alternatives (the German singular noun "Wort" has two plurals: "Worte" and "Wörter" having differing semantics - "this article has 512 words" versus "words of wisdom"; the English singular "brother" has two associated plurals, "brothers" and "brethren", depending on context and time in history)
Contents
Language with no inflexions[edit]
Some very nice languages have no inflexion. This is the case for Mandarin (I'm sure) and Japanese (I think)
Declensions and genders[edit]
They often work together.
Adjectives[edit]
In English, it is a vector : positive, comparative, superlative
In French, it is a table : column are singular/plural, rows are masculine/feminine
In German, it is a supercube of 4 dimensions: columns are Positiv, Komparativ, Superlativ(=Elativ); rows are Singular, Plural; panes are maskulin, feminin, neutrum, superpanes are Nominativ, Genitiv, Dativ, Akkusativ.
Nouns[edit]
In English, it is a vector : singular, plural
In French, it is a vector : singular, plural
In German, it is a table: columns are Singular, Plural, rows are Nominativ, Genitiv, Dativ, Akkusativ
Conjugation of Verbs[edit]
In French, See emboiter
In German, see denken
Derivations, attributes and declensions[edit]
Derivations, indicators of directions, owners, other attributes, and declensions often go together into one declensed word in languages, so that pretty large tables having many dimensons are necessary to collect them all (the Turkish word "evjiklerimize" is analyzed as "ev-jik-ler-im-iz-e" : house-little-(plural of noun)-(owner="1st person")-(plural of owner)-(direction="to") : to our little houses. Adding more derivational and declensing morphemes would be possible)
Polysynthetic languages[edit]
For polysynthetic languages, we are likely chanceless to have complete lists of all inflected forms of their words, since that would likely yield the magnitude of enumerating most valid sentences worth of data, for which we cannot have sufficient storage capacity in the solar system.
SQL implementation[edit]
Solution 1 that is not so great[edit]
In principle, an inflexion is a given expression (spelling e.g. "ate" + lang e.g. "English") that is attached to a syntrans (expression + definition, e.g. "eat" as a verb) for a certain kind of inflexion (e.g. "simple past"), which is a dm.
So a simple inflexion table could look like:
inflexion_id | syntrans_id | definedmeaning_id (inflexion_type) |
expression_id |
---|---|---|---|
1 | =>eat(verb) | =>simple past | =>ate |
In principle, this works. The practical problems are:
- how to group inflexions that belong together, e.g. comparative, superlative ; or all declensions of a given word
- how to display inflexions as a table (German declensions, conjugations)
- how to reuse inflexions, so that if "be" has 2 definitions, the same inflexions can be attached to both instead of defining it for each ( !! sometimes, different inflexions are needed for the same expression with different meanings).
Solution 2[edit]
So, instead of a syntrans linked to one inflexion, we can imagine a syntrans linked to a table of inflexions.
syntrans_inflexion_id | syntrans_id | inflexion_set_id |
---|---|---|
1 | =>eat(verb) | 42 |
With this system, to different definitions of the same verb "eat" can be linked to the same inflexion_set.
Then we need to define inflexion_values which links to the expression_id which represent the actual inflexions (ate, eaten, etc.). A given inflexion (inflexion_id) belongs to a set/table of inflexions (inflexion_set_id), and the name of this inflexion is given by (inflexion_names_id)
inflexion_id | inflexion_set_id | inflexion_names_id | table_number | column | row | expression_id |
---|---|---|---|---|---|---|
XXX | 42 | 8 | 1 | 1 | 1 | => ate |
XXX | 42 | 8 | 1 | 2 | 1 | => eaten |
And we need to define inflexion_names which gives the names of the inflexions.
name_id | inflexion_names_id | table_number | type (col, row, title) | position | definedmeaning_id |
---|---|---|---|---|---|
XXX | 8 | 1 | title | 0 | =>conjugation |
XXX | 8 | 1 | col | 1 | =>simple past |
XXX | 8 | 1 | col | 2 | =>past participle |
The rows and column define a table. A position 0 gives the title of the table. In the case of conjugation, the conjugation of a verb is a set of tables, each table having a name. For example, French:
- table 1 = indicatif
- table 2 = subjonctif
- table 1 rows = premiere personne du singulier , deuxieme personne du singulier, ...
- table 1 columns = present, passé composé, imparfait, etc.
The last column "overview" gives the possibility to have a summarized inflexion table containing only some important inflexions. For example in German there are small tables http://de.wiktionary.org/wiki/essen and full tables http://de.wiktionary.org/wiki/essen_%28Konjugation%29
Solution 2 with German declension[edit]
value_id | inflexion_set_id | inflexion_names_id | table_number | column | row | expression_id |
---|---|---|---|---|---|---|
1 | 42 | 8 | 1 | 1 | 1 | =>Aufruhr |
2 | 42 | 8 | 1 | 1 | 2 | =>Aufruhrs |
3 | 42 | 8 | 1 | 1 | 3 | =>Aufruhr |
4 | 42 | 8 | 1 | 1 | 4 | =>Aufruhr |
5 | 42 | 8 | 1 | 2 | 1 | =>Aufruhre |
6 | 42 | 8 | 1 | 2 | 2 | =>Aufruhre |
7 | 42 | 8 | 1 | 2 | 3 | =>Aufruhren |
8 | 42 | 8 | 1 | 2 | 4 | =>Aufruhre |
Alternatively, it could be written this way, which would then allow to move columns/rows around more easily:
value_id | inflexion_set_id | name_id (col ?) |
name_aux_id (row? or null) |
expression_id |
---|---|---|---|---|
1 | 42 | 2 | 4 | =>Aufruhr |
2 | 42 | 2 | 5 | =>Aufruhrs |
3 | 42 | 2 | 6 | =>Aufruhr |
4 | 42 | 2 | 7 | =>Aufruhr |
5 | 42 | 3 | 4 | =>Aufruhre |
6 | 42 | 3 | 5 | =>Aufruhre |
7 | 42 | 3 | 6 | =>Aufruhren |
8 | 42 | 3 | 7 | =>Aufruhre |
And we need to define inflexion_names which gives the names of the inflexions.
name_id | inflexion_names_id | table_number | type (col, row, title) | position | definedmeaning_id |
---|---|---|---|---|---|
1 | 8 | 1 | title | 0 | =>declension |
2 | 8 | 1 | col | 1 | =>singular |
3 | 8 | 1 | col | 2 | =>plural |
4 | 8 | 1 | row | 1 | =>nominative |
5 | 8 | 1 | row | 2 | =>genitive |
6 | 8 | 1 | row | 3 | =>dative |
7 | 8 | 1 | row | 4 | =>accusative |
And in the annotation table, we have
- annotation_id = XXXX
- annotation type = inflexion
- depends on lang = German
- depends on pos = noun
Solution 3: any-dimensional mixing storable and rule-generated[edit]
Instead of rows and columns, we store a string of the form "{110,222,333}", where e.g. 110 is the dm_id for "present", 222 for "first person" and 333 for "singular".
I still have to think about this one...
The actual display of information (what is a row, what is a column) would be done by user-generated templates/tables?
The numbers would be used as headers of that table, the system does the rest?
Some inflexions are stored in the system, some are only generated by rules. Those that are stored can be annotated. Those that are generated don't have the "{110,222,333}" entry in the database, cannot be modified by hand.
Inflexion structure[edit]
On top, select "language" (dropdown list) and "part of speech" (dropdown list). This gives the name of the inflexion structure. E.g. "fr-noun".
One or more tables, with (at least) 1 header on top ("th") and potentially the first column can serve as lateral header (1st person, second person). The names of the headers are DM numbers (=> automatically translated), dropdown list to select the dm.
javascript buttons "add header", "add row", "add column", "add table".
javascript button: "store this inflexion", will be stored "{110,222,333}" according to the dm numbers of row and column.
The result is saved with a custom format (not wikitable, we just need to save the list of headers) in a wikipage, using maybe ContentHandler
Modify with care (use testwiki first).
Inflexion templates[edit]
On top select "inflexion structure" to be used by that template. Name of the template is free. Option "copy from template".
each value can be filled in, using $1, $2, ... where base values are required. "manger" : $1 = mang . Then we have {$1}ent for "mangent". "eurent {$1}é".
Also use ContentHandler? Or store it in an "inflexion template table"?
This can be modified by any user. Caution if it is in use, it might break existing tables.
Inflexion table[edit]
On top select "use structure" (mandatory, or the structure is guessed automatically from lang+pos?) + "use template" (this is optional)
Values that are storable can be modified manually. Values that are not cannot be modified and will be empty if no template is used.
When filling in the table, first it searches if a "storable" value is stored, otherwise it tries to fill it with the template.