I found myself trying to write code for navigating in hierarchy like manner in Unitys Inspector (RuleSet -> Entity -> Component -> More To Come) today. First thought I had: Just put a reference field into every single scriptable object and your done ... well no.
Some times you write classes, inherit from them and create properties to cast things from base class to your known types.