Überprüfen Sie, ob die Variable leer oder gefüllt ist

Ich habe folgendes Problem:

Prolog Prog:

man(thomas, 2010).
man(leon, 2011).
man(thomas, 2012).
man(Man) :- once(man(Man, _).

Problem:

?- man(thomas).
true ;        %i want only on true even if there are more "thomas" *working because of once()*

?- man(X).
X = thomas ;  %i want all man to be listed *isn't working*

Tor:

?- man(thomas).
true ;

?- man(X).
X = thomas ;
X = leon ;
X = thomas ;

Ich verstehe zwar, warum das passiert, möchte aber trotzdem die Namen aller Menschen erfahren. Meine Lösung wäre also zu schauen, ob "Man" initialisiert ist, wenn ja, als "einmal ...", dann ... in etwa so:

man(Man) :- (->check<-,once(man(Man, _)); man(Man, _).

Auf "check" soll der Code gesetzt werden, der prüft, ob die Variable "Man" gefüllt ist.

Ist das möglich?