In service-oriented computing, a user usually needs to locate a desired service for: (i) fulfilling her requirements or (ii) replacing a service, which disappears or is unavailable for some reasons, to perform an interaction. With the increasing number of services available within an enterprise and over the Internet, locating a service online may not be appropriate from the performance perspective, especially in large Internet-based service repositories. Instead, services usually need to be clustered according to their similarity. Thereafter, services in one or several clusters are necessary to be examined online during dynamic service discovery. In this paper, we propose to cluster data providing (DP) services using a refined fuzzy C-means algorithm. We consider the composite relation between DP service elements (i.e., input, output, and semantic relation between them) when representing DP services in terms of vectors. A DP service vector is assigned to one or multiple clusters with certain degrees. In addition, we introduce some operations for managing service clusters, when new services emerge or existing services disappear or become unavailable. When grouping similar services into one cluster, while partitioning different services into different clusters, the capability of service search engine is improved significantly. We have prototyped our approach and the source code is freely available on the web. We have evaluated our clustering approach in different settings and the results are very promising.