Next: , Previous: ema_th, Up: Grammars


5.44 igk

This grammar covers a small fragment of English, and includes the two graph dimensions of Prosodic Structure (PS) and Information Structure (IS). It was written by Ralph Debusmann, in a project at the IGK annual meeting 2004 in Edinburgh together with Ciprian Gerstenberger, Oana Postolache, Stefan Thater and Maarika Traat. It is described in A Modular Account of Information Structure in Extensible Dependency Grammar (References).

usedim id
usedim lp
usedim ps
usedim is
usedim lex
usedim multi
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension id
defdim id {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "id.entry" {in: valency("id.label")
                      out: valency("id.label")}
  deftype "id.label" {subj obj det adj root}
  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}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% 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" {topf subjf f objf
                      detf adjf n
                      d a
                      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: [topf subjf f objf
                  detf adjf n
                  d a
                  root r]
          Yields: true}}
  useprinciple "principle.projectivity" {
    dims {D: lp}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension ps
defdim ps {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "ps.entry" {in: valency("ps.label")
                      out: valency("ps.label")
                      on: iset("ps.label")}
  deftype "ps.label" {"L+H*" "H*" "LH%" "LL%" "L+H*_LH%" "H*_LL%" na nb b}
  defentrytype "ps.entry"
  deflabeltype "ps.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: ps}}
  useprinciple "principle.tree" {
    dims {D: ps}}
  useprinciple "principle.valency" {
    dims {D: ps}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
   useprinciple "principle.order1" {
     dims {D: ps}
     args {On: _.D.entry.on
           Order: [{"L+H*" "H*" "LH%" "LL%" "L+H*_LH%" "H*_LL%" na nb} {b}]
           Yields: true}}
   useprinciple "principle.projectivity" {
     dims {D: ps}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension is
defdim is {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  deftype "is.entry" {in: valency("is.label")
                      out: valency("is.label")
                      on: iset("is.label")}
  deftype "is.label" {f nf theme rheme umtheme backgr}
  defentrytype "is.entry"
  deflabeltype "is.label"
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.graph" {
    dims {D: is}}
  useprinciple "principle.tree" {
    dims {D: is}}
  useprinciple "principle.valency" {
    dims {D: is}
    args {In: _.D.entry.in
          Out: _.D.entry.out}}
  useprinciple "principle.order" {
    dims {D: is}
    args {On: _.D.entry.on
          Order: []
          Yields: true}}
   useprinciple "principle.projectivity" {
     dims {D: is}}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.pretty"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension lex
defdim lex {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  defentrytype {word: string}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use and choose outputs
  output "output.dags"
  output "output.dags1"
  output "output.dags2"
  output "output.dags3"
  output "output.latexs"
  output "output.latexs1"
  output "output.latexs2"
  output "output.latexs3"
  %%
  useoutput "output.dags1"
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define dimension multi
defdim multi {
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% define types
  defentrytype {blocks_lpid: set("id.label")
                %%
                linkEnd_lpis: vec("lp.label" set("is.label"))}
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% use principles
  useprinciple "principle.climbing" {
    dims {D1: lp
          D2: id}}
  useprinciple "principle.barriers" {
    dims {D1: lp
          D2: id
          D3: multi}
    args {Blocks: _.D3.entry.blocks_lpid}}
  %%
  useprinciple "principle.subgraphs" {
    dims {D1: is
          D2: ps
          D3: multi}
    args {Start: {theme: {"LH%" "L+H*_LH%"}
                  rheme: {"LL%" "H*_LL%"}
                  umtheme: bot}}}
  %%
  useprinciple "principle.linkingEnd" {
    dims {D1: lp
          D2: is
          D3: multi}
    args {End: ^.D3.entry.linkEnd_lpis}}
}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% define lexical classes

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% syntax

defclass "noun_idlp" {
  (dim id {in: {subj?}} & dim lp {in: {subjf? topf?}} |
   dim id {in: {obj?}} & dim lp {in: {objf? topf?}})
  dim id {in: {root?}}
  dim lp {in: {root?}
          on: {n}}}

defclass "pname_idlp" {
  "noun_idlp"}

defclass "cnoun_idlp" {
  "noun_idlp"
  dim id {out: {det! adj*}}
  dim lp {out: {detf? adjf*}}}
          
defclass "det_idlp" {
  dim id {in: {det? root?}}
  dim lp {in: {detf? root?}
          on: {d}}}

defclass "adj_idlp" {
  dim id {in: {adj? root?}}
  dim lp {in: {adjf? root?}
          on: {a}}}

defclass "tv_idlp" {
  dim id {in: {root?}
          out: {subj! obj!}}
  dim lp {in: {root?}
          out: ({topf! subjf!}|
                {subjf! objf!})
          on: {f}}
  dim multi {linkEnd_lpis: {topf: {theme umtheme}}}}

defclass "root_idlp" {
  dim id {in: {}
          out: {root!}}
  dim lp {in: {}
          out: {root!}
          on: {r}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% prosodic structure

defclass "pa1" Word {
  dim ps {in: {"L+H*"?}
          on: {nb}}
  dim lex {word: Word@"_L+H*"}}

defclass "bo1" Word {
  dim ps {in: {"LH%"?}
          out: {"L+H*"* na*}
          on: {b}}
  dim lex {word: Word@"_LH%"}}

defclass "pa1_bo1" Word {
  dim ps {in: {"L+H*_LH%"?}
          out: {"L+H*"* na*}
          on: {b}}
  dim lex {word: Word@"_L+H*_LH%"}}

%%

defclass "pa2" Word {
  dim ps {in: {"H*"?}
          on: {nb}}
  dim lex {word: Word@"_H*"}}

defclass "bo2" Word {
  dim ps {in: {"LL%"?}
          out: {"H*"* na*}
          on: {b}}
  dim lex {word: Word@"_LL%"}}

defclass "pa2_bo2" Word {
  dim ps {in: {"H*_LL%"?}
          out: {"H*"* na*}
          on: {b}}
  dim lex {word: Word@"_H*_LL%"}}

%%

defclass "na" Word {
  dim ps {in: {na?}
          on: {nb}}
  dim lex {word: Word@""}}

%%

defclass "root_ps" {
  dim ps {in: {}
          out: {"LH%"* "LL%"* "L+H*_LH%"* "H*_LL%"*}
          on: {nb}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% information structure

defclass "tf" {
  dim is {in: {theme?}
          out: {backgr*}
          on: {f}}}

defclass "tnf" {
  dim is {in: {backgr? umtheme?}
          on: {nf}}}

%%

defclass "rf" {
  dim is {in: {rheme?}
          out: {backgr*}
          on: {f}}}

defclass "rnf" {
  dim is {in: {backgr?}
          on: {nf}}}

%%

defclass "root_is" {
  dim is {in: {}
          out: ({theme* rheme+}|{umtheme* rheme+})
          on: {nf}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% prosodic and information structure


defclass "theme_pa" Word {
  "pa1" {Word: Word}
  "tf"}

defclass "theme_bo" Word {
  "bo1" {Word: Word}
  "tnf"}

defclass "theme_pa_bo" Word {
  "pa1_bo1" {Word: Word}
  "tf"}

%%

defclass "rheme_pa" Word {
  "pa2" {Word: Word}
  "rf"}

defclass "rheme_bo" Word {
  "bo2" {Word: Word}
  "rnf"}

defclass "rheme_pa_bo" Word {
  "pa2_bo2" {Word: Word}
  "rf"}

%%

defclass "theme_na" Word {
  "na" {Word: Word}
  "tnf"}

%%

defclass "psis" Word {
  "theme_pa" {Word: Word}|
  "theme_bo" {Word: Word}|
  "theme_pa_bo" {Word: Word}|
  "rheme_pa" {Word: Word}|
  "rheme_bo" {Word: Word}|
  "rheme_pa_bo" {Word: Word}|
  "theme_na" {Word: Word}}

%%

defclass "root_psis" {
  "root_ps"
  "root_is"}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% combined lexical classes

%% proper names

defclass "pname" Word {
  "pname_idlp"
  "psis" {Word: Word}}


%% common nouns

defclass "cnoun" Word {
  "cnoun_idlp"
  "psis" {Word: Word}}

%% transitive verbs

defclass "tv" Word {
  "tv_idlp"
  "psis" {Word: Word}}

%% determiners

defclass "det" Word {
  "det_idlp"
  "psis" {Word: Word}}

%% adjectives

defclass "adj" Word {
  "adj_idlp"
  "psis" {Word: Word}}

%% roots

defclass "root" Word {
  "root_idlp"
  "root_psis"
  dim lex {word: Word}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% lexical entries

defentry { "pname" {Word: "Annie"|"Manny"|"Marcel"|"completeness"} }

defentry { "cnoun" {Word: "man"|"woman"} }

defentry { "tv" {Word: "married"|"proved"} }

defentry { "det" {Word: "the"|"a"} }

defentry { "adj" {Word: "little"|"big"} }

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