Service-Oriented Architectures enable the consumption of existing services in a standardized way to solve some specific needs. In order to consume some services made available by cooperating parties e.g. for performing some business activity, such services must be located based on different criteria. In this paper, we investigate how the semantic description of the capability of Web services and of customer goals can be exploited for (semi)automating Web service discovery based on functional requirements. For this purpose, we propose a two-phased Web service discovery model. In a first phase, relevant Web services in terms of the results they potentially provide are efficiently located. In a second phase, the inputs required by relevant Web services are considered and only Web services for which the customer can provide appropriate input and for which this input can lead to the expected results are selected. The first phase relies on subsumption reasoning with Description Logics, while the second one relies on a combination of query answering for Logic Programs and subsumption reasoning with Description Logics.