In this case, you can convert it into the second case by creating a complete graph, with the edge weight as 1 if the edge exists in your original graph, and 0 otherwise.

And when aggregating, instead of summing them up:

```
complete_graph.ndata['h'] = node_features
dgl.update_all(fn.copy_u('h', 'm'), fn.sum('m', 'h_neigh'))
node_aggregations = complete_graph.ndata['h_neigh']
```

You can instead perform a weighted sum:

```
complete_graph.ndata['h'] = node_features
dgl.update_all(fn.u_mul_e('h', 'weight', 'm'), fn.sum('m', 'h_neigh'))
node_aggregations = complete_graph.ndata['h_neigh']
```

So as to make the edge weights a part of the computation graph.

Note that the above is not the only way of using edge weights in aggregation. You may want to modify the aggregation accordingly if you are running models other than GCN (e.g. GAT etc.)