My inclination is towards visual examples for I LOVED your example :
C->D--->B
because what you're illustrating is distances from people.
What if there was a bytewise type distance so your could represent things like :
Treat any Friend of A as a friend of mine
{ follows: A: [1, 0] }
or { follows: A: [1, undefined] }
I don't care about A's friends
{ follows: A: [1, null] }
I met A, but they're not that close
{ follows: A: [2, 0] }
This would be great for someone I met at a conference .. and aquintance. Specifically I want this so that in user interfaces I can have the oft pined after "filter view by open-ness filter". So on quiet days I can connect with people who are genuinely 1 hop from me, and it doesn't need to include some people who are nice but I'm not yet intimately close to.