1. A method comprising: maintaining a distributed object store to store a plurality of data objects in a network storage system; and operating a metadata subsystem in the network storage system to store and retrieve metadata of a plurality of types, relating to the plurality of data objects, including storing the metadata in locations that are independent of locations where corresponding data objects of the plurality of data objects are stored, the plurality of types of metadata including system defined metadata, inferred metadata and user-defined metadata, wherein the inferred metadata includes latent metadata and discovered metadata, wherein latent metadata includes data gathered by an application from data associated with the plurality of data objects, the gathered data being subsequently stored as metadata relating to the plurality of data objects, wherein discovered metadata includes relational information derived by the application from the data associated with the plurality of data objects, the relational information describing a relationship between two or more data objects of the plurality of data objects, and further operating the metadata subsystem to search the metadata of the plurality of types to identify data objects that satisfy user-specified search queries, wherein operating the metadata subsystem comprises implementing a plurality of mutually isolated query domains, wherein said metadata includes a plurality of metadata attribute-value pairs, wherein each of the metadata attribute-value pairs is assigned to one of the plurality of query domains, wherein each query domain of the plurality of mutually isolated query domains is a logical construct used to isolate the metadata attribute-value pairs assigned to the particular query domain from the metadata attribute-value pairs assigned to the other query domains of the plurality of query domains, and wherein each operation performed by the metadata subsystem is performed within the context of at least one of the plurality of query domains.