In hindsight, the way this is written, memoization does nothing. This should probably be:

def type_link
  unless @descriptors.has_key?(:type_link)
   @descriptors[:type_link] = if semantic? && (self_link = links['profile'])
  end
  @descriptors[:type_link]
end
```