Next: , Previous: ESSLLI04_idlpdsPW, Up: Grammars


5.22 ESSLLI04_idlpdspa

This is the fourth part of the grammar developed in the ESSLLI 2004 course, using the ID, LP, DS and PA graph dimensions. It was written by Ralph Debusmann and Denys Duchier. The ESSLLI 2004 course slides can be found here: http://www.ps.uni-sb.de/~rade/talks.html.

usedim id
usedim lp
usedim ds
usedim pa
usedim lex
usedim multi
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension id
defdim id {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "id.agr" {nom acc}
  deftype "id.agrs" iset("id.agr")
  deftype "id.attrs" {agr: "id.agr"}
  deftype "id.entry" {in: valency("id.label")
                      out: valency("id.label")
                      agrs: "id.agrs"
                      agree: set("id.label")
                      govern: vec("id.label" "id.agrs")}
  deftype "id.label" {det subj obj vbse vprt vinf part root}
  defattrstype "id.attrs"
  defentrytype "id.entry"
  deflabeltype "id.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: id}}
  useprinciple "principle.tree" {
    dims {D: id}}
  useprinciple "principle.valency" {
    dims {D: id}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
  useprinciple "principle.agr" {
    dims {D: id}
    args {Agr: _.D.attrs.agr
          Agrs: _.D.entry.agrs}}
  useprinciple "principle.agreement" {
    dims {D: id}
    args {Agr1: ^.D.attrs.agr
          Agr2: _.D.attrs.agr
          Agree: ^.D.entry.agree}}
  useprinciple "principle.government" {
    dims {D: id}
    args {Agr2: _.D.attrs.agr
          Govern: ^.D.entry.govern}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.latex"
  output "output.latex1"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension lp
defdim lp {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "lp.entry" {in: valency("lp.label")
                      out: valency("lp.label")
                      on: iset("lp.label")}
  deftype "lp.label" {d
                      p
                      df n
                      mf vcf pf v vxf
                      root r}
  defentrytype "lp.entry"
  deflabeltype "lp.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: lp}}
  useprinciple "principle.tree" {
    dims {D: lp}}
  useprinciple "principle.valency" {
    dims {D: lp}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
  useprinciple "principle.order" {
    dims {D: lp}
    args {On: _.D.entry.on
          Order: [d
                  p
                  df n
                  mf vcf pf v vxf
                  root r]
          Yields: true}}
  useprinciple "principle.projectivity" {
    dims {D: lp}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.latex"
  output "output.latex1"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension ds
defdim ds {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "ds.entry" {in: valency("ds.label")
                      out: valency("ds.label")}
  deftype "ds.label" {detd subjd objd vcd partd root}
  defentrytype "ds.entry"
  deflabeltype "ds.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: ds}}
  useprinciple "principle.dag" {
    dims {D: ds}
    args {Connected: true
          DisjointDaughters: true}}
  useprinciple "principle.valency" {
    dims {D: ds}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.latex"
  output "output.latex1"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension pa
defdim pa {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "pa.entry" {in: valency("pa.label")
                      out: valency("pa.label")}
  deftype "pa.label" {arg1 arg2 arge del root}
  defentrytype "pa.entry"
  deflabeltype "pa.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: pa}}
  useprinciple "principle.dag" {
    dims {D: pa}
    args {Connected: true
          DisjointDaughters: true}}
  useprinciple "principle.valency" {
    dims {D: pa}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.latex"
  output "output.latex1"
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension lex
defdim lex {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  defentrytype {word: string}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.dags"
  output "output.dags1"
  %%
  useoutput "output.dags1"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension multi
defdim multi {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  defentrytype {blocks_lpid: set("id.label")
                %%
                linkEnd_dsid: vec("ds.label" set("id.label"))
                linkEnd_idds: vec("id.label" set("ds.label"))
                %%
                linkBelowStart_pads: vec("pa.label" set("ds.label"))
                linkBelowEnd_pads: vec("pa.label" set("ds.label"))}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.climbing" {
    dims {D1: lp
          D2: id}
    args {MotherCards: true}}
  useprinciple "principle.barriers" {
    dims {D1: lp
          D2: id
          D3: multi}
    args {Blocks: _.D3.entry.blocks_lpid}}
  %%
  useprinciple "principle.climbing" {
    dims {D1: id
          D2: ds}
    args {MotherCards: false}}
  useprinciple "principle.linkingEnd" {
    dims {D1: ds
          D2: id
          D3: multi}
    args {End: ^.D3.entry.linkEnd_dsid}}
  useprinciple "principle.linkingEnd" {
    dims {D1: id
          D2: ds
          D3: multi}
    args {End: ^.D3.entry.linkEnd_idds}}
  %%
  useprinciple "principle.linkingBelowStartEnd" {
    dims {D1: pa
          D2: ds
          D3: multi}
    args {Start: ^.D3.entry.linkBelowStart_pads
          End: ^.D3.entry.linkBelowEnd_pads}}
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define lexical classes

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% general classes

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% id
defclass "root_id" {
  dim id {in: {}
          out: {root!}}}

defclass "det_id" {
  dim id {in: {det? root?}}}

defclass "cnoun_id" {
  dim id {in: {subj? obj? root?}
          out: {det!}
          agree: {det}}}

defclass "pname_id" {
  dim id {in: {subj? obj? root?}}}

defclass "fin_id" {
  dim id {in: {root?}
          out: {subj!}
          govern: {subj: {nom}}}}

defclass "part_id" {
  dim id {in: {part? root?}}}

defclass "vbse_id" {
  dim id {in: {vbse? root?}}}

defclass "vinf_id" {
  dim id {in: {vinf? root?}
          out: {part!}}}

defclass "vprt_id" {
  dim id {in: {vprt? root?}}}

defclass "ersatz_id" {
  dim id {in: {vbse? vprt? root?}}}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% lp
defclass "root_lp" {
  dim lp {in: {}
          out: {root!}
          on: {r}}}

defclass "det_lp" {
  dim lp {in: {df? root?}
          on: {d}}}

defclass "cnoun_lp" {
  dim lp {in: {mf? root?}
          out: {df!}
          on: {n}}
  dim multi {blocks_lpid: {det}}}

defclass "pname_lp" {
  dim lp {in: {mf? root?}
          on: {n}}}

defclass "fin_lp" {
  dim lp {in: {root?}
          out: {mf* vcf? vxf?}
          on: {v}}
  dim multi {blocks_lpid: {subj obj vbse vprt vinf part}}}

defclass "part_lp" {
  dim lp {in: {pf? root?}
          on: {p}}}

defclass "vinf_lp" {
  dim lp {out: {pf!}}}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ds
defclass "root_ds" {
  dim ds {in: {}
          out: {root!}}}

defclass "det_ds" {
  dim ds {in: {detd? root?}}}

defclass "cnoun_ds" {
  dim ds {in: {subjd* objd? root?}
          out: {detd!}}}

defclass "pname_ds" {
  dim ds {in: {subjd* objd? root?}}}

defclass "fin_ds" {
  dim ds {in: {root?}}
  dim multi {linkEnd_dsid: {subjd: {subj}}}}

defclass "part_ds" {
  dim ds {in: {partd?}}}

defclass "vbse_ds" {
  dim ds {in: {vcd?}}}

defclass "vinf_ds" {
  dim ds {in: {vcd?}
          out: {partd!}}}

defclass "vprt_ds" {
  dim ds {in: {vcd?}}}

defclass "ersatz_ds" {
  dim ds {in: {vcd?}}}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% pa
defclass "root_pa" {
  dim pa {in: {}
          out: {root* del*}}}

defclass "det_pa" {
  dim pa {in: {arg1* arg2*}}}

defclass "cnoun_pa" {
  dim pa {in: {root!}
          out: {arg1!}}
  dim multi {linkBelowEnd_pads: {arg1: {detd}}}}

defclass "pname_pa" {
  dim pa {in: {root! arg1* arg2*}}}

defclass "part_pa" {
  dim pa {in: {del!}}}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% altogether
defclass "root" Word {
  "root_id"
  "root_lp"
  "root_ds"
  "root_pa"
  dim lex {word: Word}}

defclass "det" Word Agrs {
  "det_id"
  "det_lp"
  "det_ds"
  "det_pa"
  dim id {agrs: Agrs}
  dim lex {word: Word}}

defclass "cnoun" Word Agrs {
  "cnoun_id"
  "cnoun_lp"
  "cnoun_ds"
  "cnoun_pa"
  dim id {agrs: Agrs}
  dim lex {word: Word}}

defclass "pname" Word {
  "pname_id"
  "pname_lp"
  "pname_ds"
  "pname_pa"
  dim lex {word: Word}}

defclass "part" Word {
  "part_id"
  "part_lp"
  "part_ds"
  "part_pa"
  dim lex {word: Word}}

defclass "fin" Word {
  "fin_id"
  "fin_lp"
  "fin_ds"
  dim lex {word: Word}}

defclass "vbse" Word {
  "vbse_id"
  "vbse_ds"
  dim lex {word: Word}}

defclass "vinf" Word {
  "vinf_id"
  "vinf_lp"
  "vinf_ds"
  dim lex {word: Word}}

defclass "vprt" Word {
  "vprt_id"
  "vprt_ds"
  dim lex {word: Word}}

defclass "ersatz" Word {
  "ersatz_id"
  "ersatz_ds"
  dim lex {word: Word}}

defclass "mainverb" Word1 Word2 Word3 {
    "fin" {Word: Word1}
  | ("vbse" {Word: Word2} & "can")
  | ("vprt" {Word: Word3} & "can")
  | ("vinf" {Word: Word2} & ("can" | "noncan"))}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% special classes

%% requiring an object (in accusative case)
defclass "objc" {
  dim id {out: {obj!}
          govern: {obj: {acc}}}}

%% offer the surface subject as a deep subject
defclass "subjsubj" {
  dim multi {linkEnd_idds: {subj: {subjd}}}}

%% offer the surface object as a deep subject
defclass "objsubj" {
  dim multi {linkEnd_idds: {obj: {subjd}}}}

%% require a deep object realized by a surface object
defclass "objdobj" {
  dim ds {out: {objd!}}
  dim multi {linkEnd_dsid: {objd: {obj}}}}

%% require arg1 realized by a deep subject
defclass "arg1subjd" {
  dim pa {out: {arg1!}}
  dim multi {linkBelowStart_pads: {arg1: {subjd}}
             linkBelowEnd_pads: {arg1: {subjd detd}}}}

%% require arg2 realized by a deep object
defclass "arg2objd" {
  dim pa {out: {arg2!}}
  dim multi {linkBelowStart_pads: {arg2: {objd}}
             linkBelowEnd_pads: {arg2: {objd detd}}}}

%% require a deep subject
defclass "subjdc" {
  dim ds {out: {subjd!}}}

%% require a deep object realized by a surface object
defclass "objdc" {
  "objc"
  "objdobj"}

%% require arg1 realized by a deep subject
defclass "arg1" {
  "subjdc"
  "arg1subjd"}

%% require arg2 realized by a deep object, realized by a surface
%% object
defclass "arg2" {
  "objdc"
  "arg2objd"}

%% requiring an infinite verb with id label Label
defclass "Labelc" Label {
  dim id {out: {Label!}}}

%% require a deep verbal complement realized by an infinite verb with
%% id label Label
defclass "vcdLabel" Label {
  "Labelc" {Label: Label}
  dim ds {out: {vcd!}}
  dim multi {linkEnd_dsid: {vcd: {Label}}}}

%% require arge realized by the deep verbal complement, realized by the
%% infinite verb with id label Label
defclass "arge" Label {
  "vcdLabel" {Label: Label}
  dim pa {out: {arge!}}
  dim multi {linkBelowEnd_pads: {arge: {vcd}}}}


%% verbs in canonical position
defclass "can" {
  dim lp {in: {vcf? root?}
          on: {v}
          out: {vcf?}}}

%% verbs in non-canonical position
defclass "noncan" {
  dim lp {in: {vxf? root?}
          on: {v}
          out: {mf* vcf? vxf?}}}

%% words with semantic content
defclass "cont" {
  dim pa {in: {root!|arge!}}}

%% words without semantic content
defclass "nocont" {
  dim pa {in: {del!}}}

%% intransitive verbs
defclass "intransitive" {
  "cont"
  "arg1"}

%% transitive verbs
defclass "transitive" {
  "cont"
  "arg1"
  "arg2"}

%% subject-to-subject raising
defclass "subjraising" {
  "cont"
  "arge" {Label: vinf}
  "subjsubj"}

%% subject-to-subject control
defclass "subjcontrol" {
  "subjraising"
  "arg1"}

%% subject-to-object control
defclass "objcontrol" {
  "cont"
  "arge" {Label: vinf}
  "objsubj"
  "arg1"
  "arg2"}

%% auxiliaries
defclass "aux" Label {
  "nocont"
  "vcdLabel" {Label: Label}
  "subjsubj"}

%% auxiliaries (past participle)
defclass "auxprt" { "aux" {Label: vprt} }

%% auxiliaries (bare infinitive), also used for modals
defclass "auxbse" { "aux" {Label: vbse} }

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define entries

% Roots
defentry {
  "root" {Word: "."}}

% Determiners
defentry {
  "det" {Agrs: {nom}
         Word: "ein"}}
defentry {
  "det" {Agrs: {acc}
         Word: "einen"}}
defentry {
  "det" {Agrs: {nom acc}
         Word: "eine"}}

% Common nouns
defentry {
  "cnoun" {Agrs: {nom acc}
           Word: "frau"}}

defentry {
  "cnoun" {Agrs: {nom acc}
           Word: "mann"}}

defentry {
  "cnoun" {Agrs: {nom acc}
           Word: "roman"}}

% Proper names
defentry {
  "pname" {Word: "maria"}}

defentry {
  "pname" {Word: "peter"}}

defentry {
  "pname" {Word: "hans"}}

% zu-particle
defentry {
  "part" {Word: "zu"}}

% Auxiliaries
defentry {
  "fin" {Word: "wird"}
  "auxbse"}

defentry {
  "fin" {Word: "hat"}
  "auxprt"}

defentry {
  "vbse" {Word: "haben"}
  "auxprt"
  "noncan"}

% Modals
defentry {
  "vbse" {Word: "koennen"}
  "auxbse"
  "can"}
defentry {
  "ersatz" {Word: "koennen"}
  "auxbse"
  "noncan"}

% Main verbs
defentry {
  "intransitive"
  "mainverb" {Word1: "lacht"
              Word2: "lachen"
              Word3: "gelacht"}}

defentry {
  "transitive"
  "mainverb" {Word1: "liebt"
              Word2: "lieben"
              Word3: "geliebt"}}

defentry {
  "transitive"
  "mainverb" {Word1: "schreibt"
              Word2: "schreiben"
              Word3: "geschrieben"}}

defentry {
  "subjraising"
  "mainverb" {Word1: "scheint"
              Word2: "scheinen"
              Word3: "geschienen"}}

defentry {
  "subjcontrol"
  "mainverb" {Word1: "versucht"
              Word2: "versuchen"
              Word3: "versucht"}}

defentry {
  "subjcontrol"
  "mainverb" {Word1: "verspricht"
              Word2: "versprechen"
              Word3: "versprochen"}}

defentry {
  "objcontrol"
  "mainverb" {Word1: "ueberredet"
              Word2: "ueberreden"
              Word3: "ueberredet"}}