Logic Programming and Knowledge Representation - the A-Prolog perspective