- Birds can fly
- Birds have wings
- Penguins are birds
- Penguins cannot fly
Bird -----[movement]--> Fly
^ \------[has-part]--> Wings
|
[is-a]
|
Penguin --[movement]--> WalkHere, the Penguin category is a sub-set of the Bird category but overrides the "movement" attribute. This type of reasoning is sometimes called non-monotonic as it breaks the monotonic property of logic (i.e., that adding new knowledge to a database doesn't invalidate anything we previously knew). In this case, we state that "all birds can fly" and then later partly contradict ourselves by stating that penguins are birds that cannot fly. Various other mechanisms to achieve this kind of "commonsense" default reasoning have been proposed including frames, default logic, autoepistemic logic, nonmonotonic logic, and circumscription. Inheritance in OO is another form of default reasoning, and is one of the reasons why OO and the relational paradigm don't get on so well together.[ Category Glossary | Category Concept | Category AI ]
