private string GetSubjectOwner(Storage storage, string subject) { var name = storage.EnsurePrefix(TripleName.Parse(subject)); switch(name.Prefix) { case TripleName.UserPrefix: return name.Name; case TripleName.TimelinePrefix: var collection = RetrieveCollection(storage, storage.GetCollectionFromTimeline(Guid.Parse(name.Name))); return collection != null && collection.User != null ? collection.User.Id.ToString() : null; case TripleName.ExhibitPrefix: collection = RetrieveCollection(storage, storage.GetCollectionFromExhibitGuid(Guid.Parse(name.Name))); return collection != null && collection.User != null ? collection.User.Id.ToString() : null; case TripleName.ArtifactPrefix: collection = RetrieveCollection(storage, storage.GetCollectionFromContentItemGuid(Guid.Parse(name.Name))); return collection != null && collection.User != null ? collection.User.Id.ToString() : null; default: return null; } }