public ResourceObject GetData(ContextEntity contextEntity, IIdentifiable entity, IResourceDefinition resourceDefinition = null)
        {
            var data = new ResourceObject
            {
                Type = contextEntity.EntityName,
                Id   = entity.StringId
            };

            if (_jsonApiContext.IsRelationshipPath)
            {
                return(data);
            }

            data.Attributes = new Dictionary <string, object>();

            var resourceAttributes = resourceDefinition?.GetOutputAttrs(entity) ?? contextEntity.Attributes;

            resourceAttributes.ForEach(attr =>
            {
                var attributeValue = attr.GetValue(entity);
                if (ShouldIncludeAttribute(attr, attributeValue))
                {
                    data.Attributes.Add(attr.PublicAttributeName, attributeValue);
                }
            });

            if (contextEntity.Relationships.Count > 0)
            {
                AddRelationships(data, contextEntity, entity);
            }

            return(data);
        }