If all human beings spoke the same language, there would be a much more less misunderstanding in the world. The problem regarding with software engineering in general is that there are oftenly slips in communication that mean, what we think we've told an agent and what we've actually told it are two different things. One way is to reduce this, naturally, is to justify and agree upon some concrete rules for the language we need to represent information. To justify a language, we use to specify the syntax of the language and semantics of language. To identify the syntax of a language, we must say what symbols are allowed in the language and what are legal constructions (sentences) requireing those symbols. To identify the semantics of a language, we might say that how the legal sentences are to be read, i.e., what they mean.
If we choose a particular well defined language and stick to it, that we are need a logical representation. Certain logics are very popular for the representation of information, and so range in terms of their expressiveness. Much more expressive logics allow us to translate more sentences from our natural language (e.g., English) in the language defined by the logic.