:- module(datenbank,[astronom/1,stern/1,sonne/1,
                     planet/2,mond/2,durchmesser/2,
                     umkreisen/2,entdecken/2]).

% Datensaetze:
% db(Stern,Art,Durchmesser,Entdecker,Zentralstern)

db(  sonne,  sonne, 1392000,        _,     _).
db(   erde, planet,   12756,        _, sonne).
db(jupiter, planet,  142800,        _, sonne). 
db(   mars, planet,    6887,        _, sonne).
db( merkur, planet,    4878,        _, sonne).
db( neptun, planet,   49500,        _, sonne).
db(  pluto, planet,    3000, tombaugh, sonne).

db( saturn, planet,  120600,        _,   sonne).
db( uranus, planet,   51800, herschel,   sonne).
db(  venus, planet,   12100,        _,   sonne).

db( adrastea, mond,      ??,        _, jupiter).
db( amalthea, mond,     270,        _, jupiter).
db(   ananke, mond,      30,nicholson, jupiter).
db(    ariel, mond,     900,  lassell,  uranus).
db(    carme, mond,      30,  melotte, jupiter).
db(   charon, mond,    1500,        _, jupiter).
db(   deimos, mond,      15,     hall,    mars).
db(    diana, mond,    1100,  cassini,  saturn).
db(    dione, mond,      ??, herschel,  saturn).
db(    elara, mond,      30,nicholson, jupiter).
db(enkeladus, mond,     500, herschel,  saturn).
db(   europa, mond,    3126,  galilei, jupiter).
db(  ganymed, mond,    5276,  galilei, jupiter).
db(  himalia, mond,      30,  perrine, jupiter).
db( hyperion, mond,     400,     bond,  saturn).
db(  iapetus, mond,    1500,  cassini,  saturn).
db(       io, mond,    3640,  galilei, jupiter).
db( kallisto, mond,    4848,  galilei, jupiter).
db(    mimas, mond,     390, herschel,  saturn).
db(     mond, mond,    3473,        _,    erde).

db(    titan, mond,    5150, huyghens,  saturn).
db(   triton, mond,    5000,  lassell,  neptun).

% Zugriffspraedikate:

stern(S) :-    db(S,_,_,_,_).
astronom(E) :- db(_,_,_,A,_), nonvar(A), E = A.
sonne(S) :-    db(S,sonne,_,_,_).

planet(S,Z) :- db(S,planet,_,_,Z).
mond(S,Z) :-   db(S,mond,  _,_,Z).

umkreisen(S,Z) :- db(S,_,_,_,U), nonvar(U), Z = U.
entdecken(E,S) :- db(S,_,_,A,_), nonvar(A), E = A.
durchmesser(D,S) :- db(S,_T,D,_E,_Z).

