37.10.1 Classification of Birds

This example illustrates how Prolog object can be used in classification of certain concepts. This style is common in expert system application for describing its domain.

     animal :: {
             super(object) &
             relative_size(S) :-
                     size(Obj_size),
                     super(Obj_prototype),
                     Obj_prototype :: size(Prototype_size),
                     :(S is Obj_size/Prototype_size * 100)
                     }.
     
     bird :: {
             super(animal) &
             moving_method(fly) &
             active_at(daylight)
             }.
     
     albatross :: {
             super(bird) &
             color(black_and_white) &
             size(115)
             }.
     
     kiwi :: {
             super(bird) &
             moving_method(walk) &
             active_at(night) &
             size(40) &
             color(brown)
             }.
     
     albert :: {
             super(albatross) &
             size(120)
             }.
     
     ross :: {
             super(albatross) &
             size(40)
             }.
     
     | ?- ross :: relative_size(R).
     
     R = 34.78