1. A system for accessing data items, the system comprising: a client subsystem comprising at least one programmable processor configured to: receive a request to access one or more data items, the request specifying a search condition; translate the request into terms of an object model, wherein the object model defines a plurality of data object classes, the data object classes including a media object class for representing items of digital media, a tag object class for representing categories of digital media, and a page object class, wherein a media object, being an instantiation of the media object class, can be associated with one or more tag objects and a tag object, being an instantiation of the tag object class, can be associated with a plurality of media objects and wherein a page object, being an instantiation of the page object class, defines an association between a tag object and a media object; communicate the translated request to a server subsystem; the server subsystem comprising at least one programmable processor configured to: generate a collection including one or more media objects, tag objects and page objects that include one or more data objects instantiated from the data object classes representing data items satisfying the search condition; and generate an iterator to sequentially access the data items represented by the collection of data objects; and use the iterator to sequentially access the data items represented by the collection of data objects.