1. A method for performing a search of a virtual repository formed from a plurality of repositories, each repository of the virtual repository being associated with a separate database system, the method comprising: receiving a string-based search expression; generating an expression tree of nodes based on the string-based search expression, one or more of the nodes of the expression tree being an attribute node, each attribute node corresponding to an attribute included in the string-based search expression; adding repository-location information to the expression tree by associating metadata with each attribute node in the expression tree, the metadata associated with a given attribute node identifying one or more repositories of the virtual repository that support the attribute represented by that attribute node; generating, for each repository identified by the metadata associated with the one or more attribute nodes, a query expression specifically for that repository; and determining whether sub-trees of a particular node of the expression tree have attribute nodes associated with metadata identifying different types of repositories, and, if the metadata associated with the attribute nodes identify different types of repositories, constructing the particular node as a federation node for merging search results returned by the child sub-trees; searching each repository identified by the metadata associated with the one or more attribute nodes using the query expression specifically generated for that repository.