Neural-Symbolic Computing: An Effective Methodology for Principled Integration of Machine Learning and Reasoning