do_query (MetadataTypes.obj_tbl ())
     @ do_query MetadataTypes.library_obj_tbl
 
+let topological_sort ~dbd uris =
+ let module OrderedUri =
+  struct
+   type t = UriManager.uri
+   let compare = UriManager.compare
+  end in
+ let module Topo = HTopoSort.Make(OrderedUri) in
+  Topo.topological_sort uris
+   (fun uri -> fst (List.split (direct_deps ~dbd uri)))
+
 module DepGraph =
 struct
   module UriTbl = UriManager.UriHashtbl
 
   dbd:HMysql.dbd ->
   UriManager.uri -> (UriManager.uri * MetadataTypes.position) list
 
+val topological_sort:
+  dbd:HMysql.dbd -> UriManager.uri list -> UriManager.uri list
+
   (** Representation of a (lazy) dependency graph.
    * Imperative data structure. *)
 module DepGraph: