Learning for Structured Data