Ответ 1
Я думаю, что это действительно зависит от того, какой будет ваш желаемый результат. Одна из возможностей:
digraph G {
graph [ splines = false ]
a -> b [ label = "foo" ];
a -> b [ label = "bar" ];
}
Если не использовать сплайны, рисующие края с прямыми отрезками линии, и поэтому повторяющиеся ребра визуально не будут отличаться.
В вашем идеальном выходе, как бы выглядел один край, поскольку для него должны быть две разные метки?