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 (verb "to rain", "you rain??"), and for some others, there can be alternatives (I don't have an example right now)
Contents |
[edit] Language with no inflexions
Some very nice languages have no inflexion. This is the case for Mandarin (I'm sure) and Japanese (I think)
[edit] declensions and genders
They often work together.
[edit] Adjective
In English, it is a vector : comparative, superlative
In French, it is a table : column are singular/plural, rows are masculine/feminine
In German, it is a vector : komparativ, superlativ
[edit] Noun
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, Akkusativ, Dativ, Genitif.
[edit] Conjugation of Verbs
In French, See emboiter
In German, see denken
[edit] SQL implementation
[edit] Solution 1 that is not so great
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).
[edit] Solution 2
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
[edit] Solution 2 with German declension
| 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