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.