Right, if you don’t use the same attribute for your ‘edges’ then you’d have to do something more complex to get traversal logic into a rule. I can imagine a method that might use mutually recursive rules to do so, but that approach will likely get complicated once you end up with more than 2 or 3 link ‘types’.
You’re correct that the Client API doesn’t currently support db functions. We’re working on options there and will provide updates as soon as we have them.