With the advent of web services standards and a serviceoriented Grid architecture, it is foreseeable that competing as well as complimenting computational services will proliferate. Current efforts in standardising service interface focuses on how one can execute these services in terms of their syntactic descriptions. Their capabilities and relations with other service types are only articulated through natural language in the form of documentation. In this paper, we seek to capture the capability of services by annotating their programmatic interface using the Web Ontology Language (OWL) in relation to some domain concepts thereby allowing services to be semantically matched based on their ontological annotation. By inferences on this metadata, syntactically different but semantically equivalent service implementations may be autonomously adapted and substituted. We will conclude by applying this independent annotation to Java RMI and WSDL service interface to show the autonomic adaptation process over multiple service oriented-architectures. Combining it with familiar high-level programming language, we demonstrate a practical service-oriented programming model.