This paper presents a novel approach for semantic web service composition based on the formalism of fluent calculus. We show how the planning capabilities of the fluent calculus can be used to automatically generate an abstract composition model. For describing web service capabilities we have used an OWL-S ontology. Based on the OWL-S ontology semantics, we encode the web service description in the fluent calculus formalism and provide a planning strategy for service composition. For testing our composition method, we have implemented an experimental framework that automatically composes and executes web services.