In is simplest way:
:- use_module(library(terms)).
mapdot(In, Out) :-
In =.. [.,A,B],
Out = dot(A,B).
term_expansion(In, Out) :-
mapsubterms(mapdot, In, Out).
hello(a.b) :-
world(c.d).
Now, if we load this file and list hello/1 we get
?- listing(hello).
hello(dot(a, b)) :-
world(dot(c, d)).
Not the In =.. [.,A,B]
where we cannot write .(A,B) as that would evaluate …