A system and method for typing resources in a distributed system is
provided which enables flexible searching mechanisms for finding
distributed resources. The distributed system includes at least three
types of resources: service, vocabulary and contract resources. The
service resource includes the implementation logic for the service. A
contract resource contains interface data used for accessing resources.
The vocabulary resource contains an attribute schema defining attributes
used to describe resources. Each resource--including service, vocabulary
and contract resources--is typed by associating one or more vocabulary
resources and one or more contract resources with the resource. The
vocabulary resources explain the meaning of attribute lists describing
the resource and enable the resource to be discovered. The contract
resources provide data for accessing the resource. Because vocabulary and
contract resources are themselves resources, they are also typed by
vocabulary and contract resources and are, accordingly, discoverable and
accessible. Typing resources with vocabularies and contracts that are
themselves discoverable resources, provides a structural mechanism for
supporting robust resource discovery processes suitable for large,
loosely-coupled distributed systems.