Service Oriented Computing (SOC) is a popular computing paradigm for the development of distributed Web applications. Service composition, a key element of SOC, is severely hampered by various types of semantic heterogeneity among the services. In this paper, we address the various semantic differences from the context perspective and use a lightweight ontology to describe the concepts and their specializations. Atomic conversions between the contexts are implemented using XPath functions and external services. The correspondences between the syntactic service descriptions and the semantic concepts are established using a flexible, standard-compliant mechanism. Given the naive BPEL composition ignoring semantic differences, our reconciliation approach can automatically determine and reconcile the semantic differences. The mediated BPEL composition incorporates necessary conversions to convert the data exchanged between different services. Our solution has the desirable properties (e.g., adaptability, extensibility and scalability) and can significantly alleviate the reconciliation efforts for Web services composition.