code: func (t *Tree) TraverseAncestors(node string, each func(RDFGraph, string, int) error, depths ...int) error {
  	var depth int
  	if len(depths) > 0 {
  		depth = depths[0]
  	}
  
  	if err := each(t.g, node, depth); err != nil {
  		return err
  	}
  
  	triples := t.g.WithPredObj(t.predicate, Resource(node))
  
  	var parents []string
  	for _, tri := range triples {
  		parents = append(parents, tri.Subject())
  	}
  
  	sort.Strings(parents)
  
  	for _, parent := range parents {
  		t.TraverseAncestors(parent, each, depth+1)
  	}
  
  	return nil
  }
docs: // Traverse all ancestors from the given node