summaryrefslogtreecommitdiff
path: root/grammars/resource/abstract/ResAbs.gf
blob: 7828e51ac780a6d94ccda7b7cdcfdb5c741b2b76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
--1 Abstract Syntax for Multilingual Resource Grammar
--
-- Aarne Ranta 2002 -- 2003
--
-- Although concrete syntax differs a lot between different languages,
-- many structures can be found that are common, on a certain level
-- of abstraction. What we will present in the following is an abstract 
-- syntax that has been successfully defined for English, Finnish, French, German, 
-- Italian, Russian, and Swedish. It has been applied to define language
-- fragments on technical or near-to-technical domains: database queries,
-- video recorder dialogue systems, software specifications, and a 
-- health-related phrase book. Each new application helped to identify some
-- missing structures in the resource and suggested some additions, but the
-- number of them was usually small.
-- 
-- To use the resource in applications, you need the following 
-- $cat$ and $fun$ rules in $oper$ form, completed by taking the
-- $lincat$ and $lin$ judgements of a particular language. This is done
-- by using the $reuse$ module with the desired concrete syntax of
-- $ResAbs$ as argument.


--2 Categories
--
-- The categories of this resource grammar are mostly 'standard' categories
-- of linguistics. Their is no claim that they correspond to semantic categories
-- definable in type theory: to define such correspondences is the business
-- of applications grammars.
--
-- Categories that may look special are $Adj2$, $Fun$, and $TV$. They are all
-- instances of endowing another category with a complement, which can be either
-- a direct object (whose case may vary) or a prepositional phrase. This, together
-- with the category $Adv$, removes the need of a category of 
-- 'prepositional phrases', which is too language-dependent to make sense
-- on this level of abstraction.
--

abstract ResAbs = {

--3 Nouns and noun phrases
--

cat
  N ;      -- simple common noun,    e.g. "car"
  CN ;     -- common noun phrase,    e.g. "red car", "car that John owns"
  NP ;     -- noun phrase,           e.g. "John", "all cars", "you"
  PN ;     -- proper name,           e.g. "John", "New York"
  Det ;    -- determiner,            e.g. "every", "all"
  Fun ;    -- function word,         e.g. "mother (of)"
  Fun2 ;   -- two-place function,    e.g. "flight (from) (to)"

--3 Adjectives and adjectival phrases
--

  Adj1 ;   -- one-place adjective,   e.g. "even"
  Adj2 ;   -- two-place adjective,   e.g. "divisible (by)"
  AdjDeg ; -- degree adjective,      e.g. "big/bigger/biggest"
  AP ;     -- adjective phrase,      e.g. "divisible by two", "bigger than John"

--3 Verbs and verb phrases
--

  V ;      -- one-place verb,        e.g. "walk"
  TV ;     -- two-place verb,        e.g. "love", "wait (for)", "switch on"
  V3 ;     -- three-place verb,      e.g. "give", "prefer (stg) (to stg)"
  VS ;     -- sentence-compl. verb,  e.g. "say", "prove"
  VP ;     -- verb phrase,           e.g. "switch the light on"

--3 Adverbials
--

  AdV ;    -- adverbial              e.g. "now", "in the house"
  AdA ;    -- ad-adjective           e.g. "very"
  AdS ;    -- sentence adverbial     e.g. "therefore", "otherwise"

--3 Sentences and relative clauses
--

  S ;      -- sentence,              e.g. "John walks"
  Slash ;  -- sentence without NP,   e.g. "John waits for (...)"
  RP ;     -- relative pronoun,      e.g. "which", "the mother of whom"
  RC ;     -- relative clause,       e.g. "who walks", "that I wait for"

--3 Questions and imperatives
--

  IP ;     -- interrogative pronoun, e.g. "who", "whose mother", "which yellow car"
  IAdv ;   -- interrogative adverb., e.g. "when", "why" 
  Qu ;     -- question,              e.g. "who walks"
  Imp ;    -- imperative,            e.g. "walk!"

--3 Coordination and subordination
--

  Conj ;   -- conjunction,           e.g. "and"
  ConjD ;  -- distributed conj.      e.g. "both - and"
  Subj ;   -- subjunction,           e.g. "if", "when"

  ListS ;  -- list of sentences
  ListAP ; -- list of adjectival phrases
  ListNP ; -- list of noun phrases

--3 Complete utterances
--

  Phr ;    -- full phrase,           e.g. "John walks.","Who walks?", "Wait for me!"
  Text ;   -- sequence of phrases    e.g. "One is odd. Therefore, two is even."


--2 Rules
--
-- This set of rules is minimal, in the sense of defining the simplest combinations
-- of categories and not having redundant rules.
-- When the resource grammar is used as a library, it will often be useful to
-- access it through an intermediate library that defines more rules as 
-- 'macros' for combinations of the ones below.

--3 Nouns and noun phrases
--

fun 
  UseN : N -> CN ;                         -- "car"
  ModAdj : AP -> CN -> CN ;                -- "red car"
  DetNP : Det -> CN -> NP ;                -- "every car"
  IndefOneNP, IndefManyNP : CN -> NP ;     -- "a car", "cars"
  DefOneNP, DefManyNP : CN -> NP ;         -- "the car", "the cars"
  ModGenOne, ModGenMany : NP -> CN -> NP ; -- "John's car", "John's cars"
  UsePN : PN -> NP ;                       -- "John"
  UseFun : Fun -> CN ;                     -- "successor"
  AppFun : Fun -> NP -> CN ;               -- "successor of zero"
  AppFun2 : Fun2 -> NP -> Fun ;            -- "flight from Paris"
  CNthatS : CN -> S -> CN ;                -- "idea that the Earth is flat"

--3 Adjectives and adjectival phrases
--

  AdjP1 : Adj1 -> AP ;                     -- "red"
  ComplAdj : Adj2 -> NP -> AP ;            -- "divisible by two"
  PositAdjP : AdjDeg -> AP ;               -- "old"
  ComparAdjP : AdjDeg -> NP -> AP ;        -- "older than John"
  SuperlNP : AdjDeg -> CN -> NP ;          -- "the oldest man"

--3 Verbs and verb phrases
--

  PosV, NegV : V -> VP ;                   -- "walk", "doesn't walk"
  PosA, NegA : AP -> VP ;                  -- "is old", "isn't old"
  PosCN, NegCN : CN -> VP ;                -- "is a man", "isn't a man"
  PosTV, NegTV : TV -> NP -> VP ;          -- "sees John", "doesn't see John"
  PosPassV, NegPassV : V -> VP ;           -- "is seen", "is not seen"
  PosNP, NegNP : NP -> VP ;                -- "is John", "is not John"
  PosVS, NegVS : VS -> S -> VP ;           -- "says that I run", "doesn't say..."
  PosV3, NegV3 : V3 -> NP -> NP -> VP ;    -- "prefers wine to beer"
  VTrans : TV -> V ;                       -- "loves"

--3 Adverbials
--

  AdvVP : VP -> AdV -> VP ;                -- "always walks", "walks in the park" 
  LocNP : NP -> AdV ;                      -- "in London"
  AdvCN : CN -> AdV -> CN ;                -- "house in London", "house today"

  AdvAP : AdA -> AP -> AP ;                -- "very good"


--3 Sentences and relative clauses
--

  PredVP : NP -> VP -> S ;                     -- "John walks"
  PosSlashTV, NegSlashTV : NP -> TV -> Slash ; -- "John sees", "John doesn's see"
  OneVP : VP -> S ;                            -- "one walks"

  IdRP : RP ;                              -- "which"
  FunRP : Fun -> RP -> RP ;                -- "the successor of which"
  RelVP : RP -> VP -> RC ;                 -- "who walks"
  RelSlash : RP -> Slash -> RC ;           -- "that I wait for"/"for which I wait" 
  ModRC : CN -> RC -> CN ;                 -- "man who walks"
  RelSuch : S -> RC ;                      -- "such that it is even"

--3 Questions and imperatives
--

  WhoOne, WhoMany : IP ;                   -- "who (is)", "who (are)"
  WhatOne, WhatMany : IP ;                 -- "what (is)", "what (are)"
  FunIP : Fun -> IP -> IP ;                -- "the mother of whom"
  NounIPOne, NounIPMany : CN -> IP ;       -- "which car", "which cars"

  QuestVP : NP -> VP -> Qu ;               -- "does John walk"
  IntVP : IP -> VP -> Qu ;                 -- "who walks"
  IntSlash : IP -> Slash -> Qu ;           -- "whom does John see"
  QuestAdv : IAdv -> NP -> VP -> Qu ;      -- "why do you walk"

  ImperVP : VP -> Imp ;                    -- "be a man"

  IndicPhrase : S -> Phr ;                 -- "I walk."
  QuestPhrase : Qu -> Phr ;                -- "Do I walk?"
  ImperOne, ImperMany : Imp -> Phr ;       -- "Be a man!", "Be men!"

  AdvS : AdS -> S -> Phr ;                 -- "Therefore, 2 is prime."

--3 Coordination
--
-- We consider "n"-ary coordination, with "n" > 1. To this end, we have introduced
-- a *list category* $ListX$ for each category $X$ whose expressions we want to
-- conjoin. Each list category has two constructors, the base case being $TwoX$.

-- We have not defined coordination of all possible categories here,
-- since it can be tricky in many languages. For instance, $VP$ coordination
-- is linguistically problematic in German because $VP$ is a discontinuous
-- category.

  ConjS  : Conj -> ListS -> S ;            -- "John walks and Mary runs"
  ConjAP : Conj -> ListAP -> AP ;          -- "even and prime"
  ConjNP : Conj -> ListNP -> NP ;          -- "John or Mary"

  ConjDS  : ConjD -> ListS -> S ;          -- "either John walks or Mary runs"
  ConjDAP : ConjD -> ListAP -> AP ;        -- "both even and prime"
  ConjDNP : ConjD -> ListNP -> NP ;        -- "either John or Mary"

  TwoS  : S -> S -> ListS ;
  ConsS : ListS -> S -> ListS ;

  TwoAP  : AP -> AP -> ListAP ;
  ConsAP : ListAP -> AP -> ListAP ;

  TwoNP  : NP -> NP -> ListNP ;
  ConsNP : ListNP -> NP -> ListNP ;

--3 Subordination
--
-- Subjunctions are different from conjunctions, but form
-- a uniform category among themselves.

  SubjS     : Subj -> S -> S -> S ;        -- "if 2 is odd, 3 is even"
  SubjImper : Subj -> S -> Imp -> Imp ;    -- "if it is hot, use a glove!"
  SubjQu    : Subj -> S -> Qu -> Qu ;      -- "if you are new, who are you?"
  SubjVP    : VP -> Subj -> S -> VP ;      -- "(a man who) sings when he runs"

--2 One-word utterances
--
-- These are, more generally, *one-phrase utterances*. The list below
-- is very incomplete.

  PhrNP : NP -> Phr ;                      -- "Some man.", "John."
  PhrOneCN, PhrManyCN : CN -> Phr ;        -- "A car.", "Cars."
  PhrIP : IAdv -> Phr ;                    -- "Who?"
  PhrIAdv : IAdv -> Phr ;                  -- "Why?"

--2 Text formation
--
-- A text is a sequence of phrases. It is defined like a non-empty list.
  
  OnePhr  : Phr -> Text ;
  ConsPhr : Phr -> Text -> Text ;

--2 Examples of structural words
-- 
-- Here we have some words belonging to closed classes and appearing
-- in all languages we have considered.
-- Sometimes they are not really meaningful, e.g. $TheyNP$ in French
-- should really be replaced by masculine and feminine variants.

  EveryDet, AllDet, WhichDet, MostDet : Det ; -- every, all, which, most
  INP, ThouNP, HeNP, SheNP, ItNP : NP ;       -- personal pronouns in singular
  WeNP, YeNP, TheyNP : NP ;                   -- personal pronouns in plural
  YouNP : NP ;                                -- the polite you
  WhenIAdv,WhereIAdv,WhyIAdv,HowIAdv : IAdv ; -- when, where, why, how
  AndConj, OrConj : Conj ;                    -- and, or
  BothAnd, EitherOr, NeitherNor : ConjD ;     -- both-and, either-or, neither-nor
  IfSubj, WhenSubj : Subj ;                   -- if, when
  PhrYes, PhrNo : Phr ;                       -- yes, no
  VeryAdv, TooAdv : AdA ;                     -- very, too
  OtherwiseAdv, ThereforeAdv : AdS ;          -- therefore, otherwise            
} ;