Unification of metadix and parametrized dictionaries
Different language-pair packages use different strategies to generate .dix dictionaries (monodix) and (bidix) from XML files using features not supported by the .dix format. The objectives of these new dix-like formats are:
- being able to use parametrized paradigms (so that a general paradigm may be defined and used with small parametrized variations), as discussed in the metadix page;
- being able to generate different versions of a translator (for instance, for two different varieties of a language, such as Brazilian and European Portuguese) whose names could be ideally tied to mode names
There is currently a debate on a unification of these formats into a single metadix format which in turn could also be used to support other desirable features such as
- having metadata (headers) in dictionaries which defines whether the dictionary is a bilingual or monolingual dictionary and the language pairs and modes it supports (perhaps this could be added to the basic .dix format)
Here is a proposal (open to discussion) on the first two issues.
Contents
Header
It would be useful to have the language name(s) and probably some other information (maybe on varieties?) specified in some kind of a header file.
<dictionary> <header> <type>monolingual</type> <language code="ca" full="Català"/> <alternatives> <alternative code="ca@valencian" full="Valencià"/> <alternative code="ca" full="Català"/> </alternatives> </header> ...
Variants
- After talking with some people and getting some more ideas, I kind of like having the idea of "alternative" (
alt
) instead of variant or variety. so in the following examples we'd have:
<e alt="ca@valencian"> ... <e alt="ca"> ...
- Endowing the
e
element with avnt
(variant) attribute (currentlyv
in some dictionaries andaversion
[sic] in others), so that the corresponding metadix entry will go to the generated .dix only if that variant is selected (entries without avnt
will go to the .dix unconditionally); this will replace the use of thev
attribute as found in the es-ca dictionaries to treat the Valencian dialect or in the es-pt dictionaries to distinguish European and Brazilian Portuguese. Here is an es-ca monodix example:
<e vnt="cat"> <p> <l>haguéssim</l> <r>haver<s n="vbhaver"/><s n="pis"/><s n="p1"/><s n="pl"/><j/></r> </p> </e> <e vnt="val"> <p> <l>haguérem</l> <r>haver<s n="vbhaver"/><s n="pis"/><s n="p1"/><s n="pl"/><j/></r> </p> </e>
And an es-pt monodix example
<e lm="correto" vnt="pt_BR"> <i>corret</i> <par n="abert/o__adj"/> </e> <e lm="correcto" vnt="pt_PT"> <i>correct</i> <par n="abert/o__adj"/> </e>
In structural transfer rule files, rule
's may also have variants as observed in the es-pt package. The proposal is to endow element rule
with the vnt
attribute (currently v
):
- having a way to mark a block of entries as belonging to a certain variant. To that end, a wrapping element
e-group
(name in discussion; currently namedaversion
[sic]) would contain a set of entries and this will be equivalent to having all these entries marked with a certain value of thevnt
attribute so that writing
<e-group vnt="xx"> <e> ... </e> <e> ... </e> </e-group>
would be equivalent to having
<e vnt="xx"> ... </e> <e vnt="xx"> ... </e>
This may be seen as a way to factor out a common value of vnt
. Perhaps one could extend the use of e-group
to factor out other attributes such as r
.
This could be extended to other linguistic data files such as structural transfer files (.t1x, .t2x, etc.). The corresponding element would be rule-group
.
A generalization of this would be a wrap
element having three attributes: element
(the name of the element affected), attribute
(the name of the attribute) and value
(the value of the attribute), so that <wrap element="e" attribute="vnt" value="xx">
would be equivalent to <e-group vnt="xx">
and <wrap element="rule" attribute="vnt" value="xx">
would be equivalent to <rule-group vnt="xx">
, but perhaps this is too general.
Parametrized paradigms
There are two kinds of parametrized paradigms, which may be called word form paradigms and symbol paradigms (word form paradigms are observed in the oc-ca pair and grammatical symbol paradigms are observed in the en-ca dictionaries).
Current usage of word form paradigms
Here is an example of word form paradigms as currently used in the oc-ca dictionaries:
<pardef n="ab/i[T]ar__vblex"> <e aversion="oc@aran-ca"> <p> <l>í</l> <r>i</r> </p> <i><prm/></i> <par n="cànt/iga__vblex"/> </e> <e aversion="oc@aran-ca"> <i>i<prm/></i> <par n="cant/ar__vblex"/> </e> <e aversion="oc-ca"> <i>i<prm/></i> <par n="cant/as__vblex"/> </e> </pardef>
In the example, <prm/>
will be substituted by the value of the single parameter, as in:
<e lm="abitar"> <i>ab</i> <par n="ab/i[T]ar__vblex" prm="t"/> </e> <e lm="abocinar"> <i>aboc</i> <par n="ab/i[T]ar__vblex" prm="n"/> </e> <e lm="originar"> <i>orig</i> <par n="ab/i[T]ar__vblex" prm="n"/> </e> <e lm="brilhar"> <i>br</i> <par n="ab/i[T]ar__vblex" prm="lh"/> </e>
There's only a single unnamed parameter <prm/>
, which may be a limitation in some applications. Don't be misled by the naming of paradigms: it isn't parsed, and it is just for the dictionary writer to remember what is substituted and kept.
Current usage of symbol paradigms
Here's an example of symbol paradigms as used in the en-ca dictionary.
<pardef n="house__n"> <e c="CP: nouns which add -s"> <p> <l/> <r><s n="n"/><sa/><s n="sg"/></r> </p> </e> <e> <p> <l>s</l> <r><s n="n"/><sa/><s n="pl"/></r> </p> </e> </pardef>
Then, the placeholder <sa/> will be substituted by a symbol <s n="...">
named as the value of attribute sa
:
<e lm="time"><i>time</i><par n="house__n" sa="unc"/></e>
This has the same limitations as in the case of word form parameters (single parameter, etc.). Furthermore, the use of the first and second method is heterogeneous and could be unified somehow.
A unifying proposal
Word-form parameters
Here are the two examples above in the new proposed notation, which will be explained below:
<pardef n="ab/i[T]ar__vblex" form-prm-list="cons"> <e vnt="oc@aran"> <p> <l>í</l> <r>i</r> </p> <i><form-prm n="cons"/></i> <par n="cànt/iga__vblex"/> </e> <e vnt="oc@aran"> <i>i<form-prm n="cons"/></i> <par n="cant/ar__vblex"/> </e> <e vnt="oc"> <i>i<form-prm n="cons"/></i> <par n="cant/as__vblex"/> </e> </pardef>
And the call:
<e lm="abitar"> <i>ab</i> <par n="ab/i[T]ar__vblex" form-prms="cons='t'"/> </e> <e lm="abocinar"> <i>aboc</i> <par n="ab/i[T]ar__vblex" form-prms="cons='n'"/> </e> <e lm="originar"> <i>orig</i> <par n="ab/i[T]ar__vblex" form-prms="cons='n'"/> </e> <e lm="brilhar"> <i>br</i> <par n="ab/i[T]ar__vblex" form-prms="cons='lh'"/> </e>
The use of named parameters allows for a simple mechanism for multiple parameters. For instance the parameterized paradigm could have form-prm-list="cons vowel"
and calls could have, for instance, form-prms="cons='lh' vowel='a'"
.
- Fran
I think it would be better to have just one attribute for prm. It would be passed as text, and then have two elements to write out either a symbol or text.
<pardef n="ab/i[T]ar__vblex" prm-list="cons"> <e vnt="oc@aran"> <p> <l>í</l> <r>i</r> </p> <i><prm-txt n="cons"/></i> <par n="cànt/iga__vblex"/> </e> <e vnt="oc"> <i>i<prm-txt n="cons"/></i> <par n="cant/as__vblex"/> </e> </pardef> <pardef n="house__n" prm-list="count"> <e> <p> <l/> <r><s n="n"/><prm-sym n="count"/><s n="sg"/></r> </p> </e> <e> <p> <l>s</l> <r><s n="n"/><prm-sym n="count"/><s n="pl"/></r> </p> </e> </pardef> Calling them: <e lm="time"><i>time</i><par n="house__n" prms="countable='unc'"/></e> <e lm="brilhar"><i>br</i><par n="ab/i[T]ar__vblex" prms="cons='lh'"/></e>
Symbol parameters
Here are the two symbol-parameter examples above in the new notation.
The definition of the paradigm:
<pardef n="house__n" symbol-prm-list="countable"> <e c="CP: nouns which add -s"> <p> <l/> <r><s n="n"/><symbol-prm n="countable"/><s n="sg"/></r> </p> </e> <e> <p> <l>s</l> <r><s n="n"/><symbol-prm n="countable"/><s n="pl"/></r> </p> </e> </pardef>
And the call:
<e lm="time"><i>time</i><par n="house__n" symbol-prms="countable='unc'"/></e>
in a completely analogous way to word-form parameters.