Internal Structure

Constituent Structure:
Constructors

  1. Features:

    Predicates that access and instantiate constituent feature values.

  2. Internal structure:

    Predicates that provide access to the internal structure of simple and complex constituents.

  3. Constructors:

    Predicates for building basic constituents and complex constituents out of simpler constituents.


Contents

General Constructors:
mkEC
mkNull
mkFs
mkLexCat
cat/{1,2}(*)
Adjunction:
adjoin

(*) Not actually described here. Reference is to feature access predicates.


General Constructors

mkEC(+C,+Fs,-X) Creates an empty category or constituent X with category label C and features Fs

Note: Fs is not a simple, static list. For example, among other things, updates via addFeature can be made. Fs must be created using mkFs/2 which creates a feature set from an ordinary list. If a true null category is all that's needed, use mkNull which creates an empty category with a null set of features by default.

Example:

(a)   (b) John arrived

Here is the code to create the generic or underspecified empty NP shown in (a). It comes with empty slots that can be instantiated later to make it one of PRO, pro, Wh-trace, or NP trace as shown in (b):

emptyNP(X) :-
	mkFs([agr(_),case(_),theta(_),a(_),p(_),ec(_)],Fs),
	mkEC(np,Fs,X).
Note that emptyNP create a standalone NP. In particular, positional features are not available until the NP is actually attached as part as a phrase. For example, in (b) the empty NP is attached as the base object of the unaccusative verb arrive. By virtue of its position, it will receive features compl (for complement) and apos (for A-position).

In fact, in PAPPI, asking an unattached phrase, for attachment information - such as whether it is an adjunct, A-position, complement, or indirect object or not - is considered to be an error.

References: ec / mkFs / mkNull / addFeature


mkNull(+C,-X) Creates an empty category or constituent X with category label C with null features, i.e. with an empty feature set.

See mkEC to see how to create an empty category with a non-null feature set.

Reference: mkEC


mkFs(+L,-Fs) Creates a feature set Fs from a list L.

See the description in mkEC for an example of its use.

Reference: mkEC


mkLexCat(+C,+Fs,+Word,-X) Creates a constituent X with category label C with features Fs immediately dominating lexical material Word.

Note: X has no sub-constituents. Also, Fs is not an ordinary list. For example, among other things, the feature list may be augmented via addFeature. The primitive mkFs must be used to construct Fs.

Examples:

mkFs([count(_),agr([3,[],[]])],Fs), mkLexCat(det,Fs,the,X)
and:
mkFs([grid([],[]),case(_),theta(_),a(-),p(-),count(+),agr([3,sg,m])],Fs), 
mkLexCat(n,Fs,boy,X)
produce the simple lexical categories (a) and (b) shown below:

(a) (b)

References: mkFs / addFeature


Adjunction


adjoin(+Dir,+Adjunct,+X,-X') Left or right adjoin constituent Adjunct to constituent X giving X'. The direction of adjunction is specified by Dir which may have value left or right.

Examples:

The goal adjoin(left,Adjunct,X,X') with Adjunct and X bound to constituents (a) and (b), respectively, will instantiate X' as (c). If the direction parameter is set to right, X' will be instantiated as (d) instead:

(a) (b)

(c) (d)

References: adjoined / Implementation Notes

Internal Structure