sig
  type vertex = {
    vertex_id : Utils.UTF8.t;
    vertex_cluster : Utils.UTF8.t option;
    vertex_label : Utils.UTF8.t option;
    vertex_properties : (Utils.UTF8.t * Utils.UTF8.t) list;
  }
  and edge = {
    edge_id : Utils.UTF8.t;
    edge_directed : bool;
    edge_vertices : (Utils.UTF8.t * Utils.UTF8.t) list;
    edge_label : Utils.UTF8.t option;
    edge_properties : (Utils.UTF8.t * Utils.UTF8.t) list;
  }
  and t = {
    vertices : Graph.vertex list;
    edges : Graph.edge list;
    vertice_types : (Utils.UTF8.t * Utils.UTF8.t) list;
    edge_types : (Utils.UTF8.t * Utils.UTF8.t) list;
  }
  type builder
  val make : unit -> Graph.builder
  val to_graph : Graph.builder -> Graph.t
  val add_vertex :
    ?cluster:Utils.UTF8.t ->
    ?label:Utils.UTF8.t ->
    ?properties:(Utils.UTF8.t * Utils.UTF8.t) list ->
    id:Utils.UTF8.t -> Graph.builder -> unit
  val add_edge :
    ?directed:bool ->
    ?label:Utils.UTF8.t ->
    ?properties:(Utils.UTF8.t * Utils.UTF8.t) list ->
    id:Utils.UTF8.t ->
    vertices:(Utils.UTF8.t * Utils.UTF8.t) list -> Graph.builder -> unit
  val add_vertice_type :
    Utils.UTF8.t -> Utils.UTF8.t -> Graph.builder -> unit
  val add_edge_type : Utils.UTF8.t -> Utils.UTF8.t -> Graph.builder -> unit
  type format = Dot | GraphML | GEXF
  val all_formats : Graph.format list
  val string_of_format : Graph.format -> string
  val dump : Graph.format -> Graph.t -> Utils.UTF8Buffer.t -> unit
end