next up previous
Next: Lexical rules Up: DATR techniques Previous: Finite state transduction

Representing lists

 

DATR 's foundation in path/value specifications means that many of the representational idioms of unification formalisms transfer fairly directly. A good example is the use of first and rest attributes to represent list-structured features, such as syntactic arguments and subcategorised complements. The following definitions could be used to extend our verb fragment by introducing the path <syn args>, which determines a list of syntactic argument specifications.

    NIL:
        <> == nil
        <rest> == UNDEF
        <first> == UNDEF.
    VERB:
        <syn cat> == verb
        <syn args first syn cat> == np
        <syn args first syn case> == nominative
        <syn args rest> == NIL:<>.
Here extensions of <syn args first> specify properties of the first syntactic argument, while extensions of <syn args rest> specify the others (as a first/rest list). UNDEF is the name of a node that is not defined in the fragment, thus ensuring that <syn args rest first>, <syn args rest rest>, and so forth are all undefined. The fragment above provides a default specification for <syn args> for verbs consisting of just one argument, the subject NP. Subclasses of verb may, of course, override any part of this default; for instance, transitive verbs add a second syntactic argument for their direct object:
    TR_VERB:
        <> == VERB
        <syn args rest first syn cat> == np
        <syn args rest first syn case> == accusative
        <syn args rest rest> == NIL:<>.
The description can be improved by using a separate node, NP_ARG, to represent the (default) properties of noun-phrase arguments:
    NP_ARG:
        <first syn cat> == np
        <first syn case> == accusative
        <rest> == NIL:<>.
    VERB:
        <syn cat> == v
        <syn args> == NP_ARG:<>
        <syn args first syn case> == nominative.
    TR_VERB:
        <> == VERB
        <syn args rest> == NP_ARG:<>.
TR_VERB accepts the NP_ARG default unconditionally for the direct object argument, but VERB overrides the default case for its subject argument. The effect of the empty path (<>) specification in the NP_ARG inheritances is to ``strip off'' the leading subpath from the path whose value is inherited. The default mechanism adds the same path extension to both sides, giving rise to statements such as the following:
    VERB:<syn args first syn cat> == NP_ARG:<first syn cat>.
    TR_VERB:<syn args rest first syn cat> == NP_ARG:<first syn cat>.
    TR_VERB:<syn args rest first syn case> == NP_ARG:<first syn case>.
Three element argument lists, such as that needed for ditransitive verbs, are constructed in the obvious way (where PP_ARG is assumed to be like NP_ARG but for prepositional-phrase complements):
    DI_VERB:
        <> == TR_VERB
        <syn args rest rest> == PP_ARG:<>.


Copyright © Roger Evans, Gerald Gazdar & Bill Keller
Wed Feb 26 12:00:02 GMT 1997