1. A software development tool for compiling a natural language software application based on a set of programming constructs utilized to model semantics of a natural language, the software development tool comprising: a programming language comprising a set of programming constructs for facilitating natural language programming, the set of programming constructs including a plurality of types that correspond to declarative linguistic elements of a linguistic object model, each type of the plurality of types being independent of a particular spoken language, the plurality of types comprising: an entity type derived from an entity base class having data members, properties, and methods, the entity type adapted to model noun phrases and adjective phrases; a frame type derived from a frame base class and adapted to model semantic events including verbs and nouns; a restriction type derived from a restriction base class and adapted to model oblique arguments, modifiers, and other semantic elements, the restriction type to define semantic relationships between entities and constraints on objects derived from the plurality of types, the restriction type adapted to normalize relationship semantics across syntactic representations; a denoter representing a privileged data member to map entity objects instantiated from the entity type to natural language words; and a compiler executable by a processor to receive a software program from a computer readable storage medium, the software program containing instances of the set of programming constructs, the compiler executable by the processor to generate a software application from the instances of the set of programming constructs, the generated software application comprising a natural language software application.