1. A computer-implemented method, comprising: receiving a request for a plurality of data items, the request specifying a search condition; searching a data store comprising a plurality of data objects representing data items for data items satisfying the search condition, the plurality of data objects comprising one or more media objects, one or more tag objects and one or more page objects, where: a media object represents an item of digital media and is an instantiation of a media object class; a tag object represents a category of digital media and is an instantiation of a tag object class and each media object can be associated with zero or more tag objects; and a page object defines a relationship between a tag object and a media object; generating a collection of data objects representing data items that satisfy the search condition; using an iterator to sequentially access the data items represented by the data objects in the collection; and providing the data items to a user interface.