One fundamental problem of designing a knowledge representation
language is the fundamental tradeoff between (1) a
language that is expressive enough to represent the important objects
and relations in a problem domain, yet (2) allows for a
tractable (i.e., efficient) means of reasoning and answering
questions about implicit information in a reasonable amount of time
Logic is a well-studied, general-purpose language for
describing what's true and false in the world, along with
mechanical procedures that can operate on sentences in the language
to perform reasoning (i.e., to determine what "implicitly
follows" from what is explicitly represented)