Integrating inconsistent and incomplete data sources