The truth is that there is an argument over Prolog's terminology, but i' ll try to make a brief review which will hopefully lead to some answers.
Generally speaking, a Prolog program consists of objects and the relations between them.
The relations are called predicates and the objects are called arguments of the predicate. The number of the arguments is the predicate's arity.
Describing the objects and their relations is being done with clauses. There are three types of clauses: facts, rules and queries.
A fact denotes a relation between objects. This relation is unambiguously true. Syntactically, a fact consists of a name describing a relation, followed by one or more comma separated objects in parenthesis and a period. Example:
male(john).
father_of(adam, cain).
Combining facts, we can define new relations between objects. This is done with a rule, which consists of two parts: a condition section (also called body of the rule) and a conclusion (also called head of the rule). While facts denote relations that are unambiguously true, rules denote relations that are true only if certain conditions are true. These conditions are also relations between objects. Syntactically, the head of the rule is separated from the body with the neck operator (:-) which can be read as if. The conditions of the rule, if more than one, are separated by commas which can be read as and. Example:
father_of(X,Y) :-
parent(X,Y),
male(X).
In conclusion, rules and facts are clauses. A rule has the form Head :- Body.
and a fact has the form Head.
Predicates are relations defined by a name and number of arguments and there can be multiple facts or rules for the same predicate. Ultimately:
father_of/2 is a predicate named father_of with arity 2
father_of(adam, cain). is a fact
father_of(adam, abel). is another fact
father_of(A,B) :- parent(A,B), male(A). is a rule