A framework for modeling Semantic Web Service is proposed. It is based on Description Logic (DL), hence it is endowed with a formal semantics and, in addition, it allows for expressing constraints in service descriptions of different strengths, i.e. Hard and Soft Constraints. Semantic service discovery can be performed by matching DL descriptions, expressing both Hard and Soft constraints, and exploiting DL inferences. Additionally, a method for solving the problem of ranking services is proposed which is based on the use of a semantic similarity measure for DL. This method can rank (matched) service descriptions on the grounds of their semantic similarity w.r.t. the service request, by preferring those that are able to better satisfy both Hard and Soft Constraints.