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:<>.
