Provides a set of classes representing lexical items, all implementing a basic LexicalItem interface.

Minimally, a lexical item consists of a baseform. It can also be optionally specified for an ID and a citation form. The ID is useful to distinguish between different items stored in a lexicon, which have the same baseform (as happens in the case of homonyms like bank).

In addition, lexical items are specified for a number of different features pertaining to their grammatical and semantic properties. The features they can be defined for depend on their category. Most such features are values of enumerated types; the exception is the complements that a lexical item can have, which are defined using a template-like representation. All features, including complements, are defined in the {@link simplenlg.features} package, and implement the {@link simplenlg.features.Feature} interface.
Different implementing classes provide getters and setters for the different features, as well as boolean methods to check for the existence of a feature value.

An abstract class implementing LexicalItem is provided, called Word, with an additional abstract class ContentWord extending Word. The concrete classes extand either Word or ContentWord, the latter being the superclass for lexical items belonging to the so-called open classes, namely adjectives, adverbs, nouns and verbs.