Here's a suggestion that I've come up with:
Let $v_i$ be a vertex of the graph,$e_{ij}$ be an edge between vertex $i$ and $j$.
Lets call your vertex properties $\theta_i$ for the vector of properties for vertex $i$. You will need to define a metric $d_{ij}$ between two property vectors such that if $d_{ij}>d_{ik}$ implies vertex $i$ is more similar to $k$ than $j$. An example of such a metric could be the euclidean distance between two property vectors $\theta_i,\theta_j$.
Generative Model:
- Let $e_{ij}\sim Ber(p_{ij})$ ($0$=not included, $1$=included in graph)
- Choose a function $s_p(d)$ that is symmetric about $0$ and bounded between $0$ and $p_{max}$, such that $s_p(0)=p_{max}$ is the unique maximum of the function.
- Set $p_{ij} = s_p(d_{ij})$
- Similarly, define a function $s_w(d)$ that is symmetric about $0$ and bounded between $0$ and $w_{max}$, such that $s_w(0)=w_{max}$ is the unique maximum of the function.
- Set $w_{ij} = s_w(d_{ij})+\varepsilon_{ij}$, where $\varepsilon_{ij}$ is a random variate with $E[\varepsilon_{ij}]=0\;\;Var[\varepsilon_{ij}]=g(d_{ij})$ for some function $g(\cdot)$ (possibly constant)
Now, just generate the actual values of $e_{ij}$ from their respective Bernoulli distributions and assign the associated weight to the ones that are included in the graph.
Anyway, just one idea...lots of possibilities out there give your general formulation.