I'm trying to output the following sentence in Italian un anno e mezzo where the sentence is a noun-phrase-list. My code:
lin
Sentence = mkUtt(mkNP
(and_Conj)
(mkNP (aSg_Det) (mkN("anno")))
(mkNP (mkN("mezzo")))
);
But the output of the above code is un anno ed il mezzo. Why I have the il determiner in my output? I couldn't find the reason behind this problem. Thank you!
Mass nouns in the RGL
You're getting the output with il, because the
N -> NPinstance ofmkNPmakes mass nouns. The canonical example is "I drink water", where water is constructed withmkNP water_N.In some resource grammars, this
mkNPinstance creates NPs without any article: like English "I drink water". In other languages like French, it creates a NP in partitive: "je bois de l'eau". Italian gives, not the bare form like English, nor a partitive like French, but a normal definite article: "bevo l'acqua".Why would the RGL creators do this? When writing an application grammar, the
mkNP : N -> NPinstance is a higher-level construct for mass noun, rather than a lower-level question of "do I put an article or not".The downsides are that it's almost impossible to ever output a bare form in the languages where
mkN : N -> NPadds an article. As far as I understand, it's possible only as a standalone utterance, see e.g. this answer on the GF mailing list.If you want true articleless NPs on the NP level, you can add such a function (
CN -> NP) to the Extend module, or create an issue on RGL's github asking that someone else creates such a function.How to solve your current problem
So what to do if you want to output un anno e mezzo? I would just be lazy and make "e mezzo" into an adverbial, and then attach it to anno. Like this:
You can do this safely, because e mezzo doesn't inflect. Anno is the head of the noun phrase, and only it needs to inflect.