Modular design patterns for neural-symbolic integration: refinement and combination