A Context-Knowledge Model for Architectural Design: A holistic approach by means of artificial intelligence techniques