I cross posted this up on github as well.
----
WRT having an entity locator name:
In my API I want to be able to cache as much as possible so I'd like to minimize the differences between resource representations between the entity and sub-entity representations. This would allow me to re-use an entity's representation when it's also a sub-entity.
I also would like the use of some name to facilitate sub-entity lookups on the client. However I'd prefer to keep from adding on more top level properties ('name'), especially ones that only exist in sub-entities (currently, 'rel' is the only other one) to assist server-side caching.
I'm an URN newbie, but after reading up on it, the urn: sytnax you proposed seems like a valid use of URNs. Since 'rel' is already an array, API's can add additional metadata in the future without needing changes to the Siren spec. However, would this start to bastardize the intent of 'rel'? Is 'class' a more appropriate place for this metadata?
WRT the use of the #hash in the url:
I've been toying with a way to optimize API calls by specifying a sub-entity path in the URL so a client can grab a bunch of resources that might otherwise require a number of API calls. I'm not sure if it was what you intended, but it clicked in my head as similar.
For example:
Entity X has Sub Entity Y which contains Sub Entity Z
A simple request for Entity X (/entity/X), returns the response with Sub-entity Y as an entity link.
However, if you requested /entity/X#Y.Z you would get a response with a full representation of sub-entity Y and sub-entity Y would contain a full entity representation of Z.
If that's what you meant by using a url fragment, it might warrant a separate thread to discuss that and leave this thread's topic as what to name an entity for lookup purposes.