Next: Entries, Previous: Dag, Up: Principles list
principle.dutch
D1
, D2
Dutch
(priority 110)
This principle assumes that the Graph principle (Graph) is used on
dimensions D1
and D2
. It also assumes that an order
principle is used on D1
, and that the set of edge labels on
D2
contains subj
, iobj
and obj
.
The dutch principle is fairly specialized, and so far only used in the Dutch grammar (Dutch). It posits the conjunction of the following two constraints:
subj
) daughter of v
precedes the indirect object (iobj
) daughter, which in turn
precedes the direct object daughter (obj
).
subj
, iobj
or obj
) precede the set of noun
daughters of v
Here is the definition of the Dutch
constraint functor:
%% Copyright 2001-2008 %% by Ralph Debusmann <rade@ps.uni-sb.de> (Saarland University) and %% Denys Duchier <duchier@ps.uni-sb.de> (LIFO, Orleans) and %% Jorge Marques Pelizzoni <jpeliz@icmc.usp.br> (ICMC, Sao Paulo) and %% Jochen Setz <info@jochensetz.de> (Saarland University) %% functor import % System(show) Helpers(checkModel) at 'Helpers.ozf' export Constraint define NounLAs = [subj iobj obj] %% proc {Constraint Nodes G Principle FD FS Select} DVA2DIDA = Principle.dVA2DIDA %% D2DIDA = {DVA2DIDA 'D2'} %% id in %% MfOrder3 principle (xdg/parser/dg/Plugins-nl.oz) %% subj < iobj < obj if {Helpers.checkModel 'Dutch.oz' Nodes [D2DIDA#daughtersL]} then PosMs = {Map Nodes fun {$ Node} Node.pos end} in for Node in Nodes do PosNounsDaughterMs = {Map NounLAs fun {$ LA} M = Node.D2DIDA.model.daughtersL.LA in {Select.union PosMs M} end} in {FS.int.seq PosNounsDaughterMs} end end %% MfOrder4 principle (xdg/parser/dg/Plugins-nl.oz) if {Helpers.checkModel 'Dutch.oz' Nodes [D2DIDA#daughtersL D2DIDA#up]} then PosMs = {Map Nodes fun {$ Node} Node.pos end} %% NounDaughtersMs = {Map Nodes fun {$ Node} Ms = {Map NounLAs fun {$ LA} Node.D2DIDA.model.daughtersL.LA end} M = {FS.unionN Ms} in M end} in for Node in Nodes I in 1..{Length Nodes} do NounDaughtersUpM = {Select.union NounDaughtersMs Node.D2DIDA.model.up} PosNounDaughtersUpM = {Select.union PosMs NounDaughtersUpM} %% NounDaughtersM = {Nth NounDaughtersMs I} PosNounDaughtersM = {Select.union PosMs NounDaughtersM} in {FS.int.seq [PosNounDaughtersUpM PosNounDaughtersM]} end end end end