{
  "type": "record",
  "Aspect": {
    "name": "mlFeatureProperties"
  },
  "name": "MLFeatureProperties",
  "namespace": "com.linkedin.pegasus2avro.ml.metadata",
  "fields": [
    {
      "Searchable": {
        "/*": {
          "fieldType": "TEXT",
          "queryByDefault": true
        }
      },
      "type": {
        "type": "map",
        "values": "string"
      },
      "name": "customProperties",
      "default": {},
      "doc": "Custom property bag."
    },
    {
      "Searchable": {
        "fieldType": "TEXT",
        "hasValuesFieldName": "hasDescription"
      },
      "type": [
        "null",
        "string"
      ],
      "name": "description",
      "default": null,
      "doc": "Documentation of the MLFeature"
    },
    {
      "type": [
        "null",
        {
          "type": "enum",
          "symbolDocs": {
            "AUDIO": "Audio Data",
            "BINARY": "Binary data is discrete data that can be in only one of two categories - either yes or no, 1 or 0, off or on, etc",
            "BYTE": "Bytes data are binary-encoded values that can represent complex objects.",
            "CONTINUOUS": "Continuous data are made of uncountable values, often the result of a measurement such as height, weight, age etc.",
            "COUNT": "Count data is discrete whole number data - no negative numbers here.\nCount data often has many small values, such as zero and one.",
            "IMAGE": "Image Data",
            "INTERVAL": "Interval data has equal spaces between the numbers and does not represent a temporal pattern.\nExamples include percentages, temperatures, and income.",
            "MAP": "Mapping Data Type ex: dict, map",
            "NOMINAL": "Nominal data is made of discrete values with no numerical relationship between the different categories - mean and median are meaningless.\nAnimal species is one example. For example, pig is not higher than bird and lower than fish.",
            "ORDINAL": "Ordinal data are discrete integers that can be ranked or sorted.\nFor example, the distance between first and second may not be the same as the distance between second and third.",
            "SEQUENCE": "Sequence Data Type ex: list, tuple, range",
            "SET": "Set Data Type ex: set, frozenset",
            "TEXT": "Text Data",
            "TIME": "Time data is a cyclical, repeating continuous form of data.\nThe relevant time features can be any period- daily, weekly, monthly, annual, etc.",
            "UNKNOWN": "Unknown data are data that we don't know the type for.",
            "USELESS": "Useless data is unique, discrete data with no potential relationship with the outcome variable.\nA useless feature has high cardinality. An example would be bank account numbers that were generated randomly.",
            "VIDEO": "Video Data"
          },
          "name": "MLFeatureDataType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "USELESS",
            "NOMINAL",
            "ORDINAL",
            "BINARY",
            "COUNT",
            "TIME",
            "INTERVAL",
            "IMAGE",
            "VIDEO",
            "AUDIO",
            "TEXT",
            "MAP",
            "SEQUENCE",
            "SET",
            "CONTINUOUS",
            "BYTE",
            "UNKNOWN"
          ],
          "doc": "MLFeature Data Type"
        }
      ],
      "name": "dataType",
      "default": null,
      "doc": "Data Type of the MLFeature"
    },
    {
      "type": [
        "null",
        {
          "type": "record",
          "name": "VersionTag",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "type": [
                "null",
                "string"
              ],
              "name": "versionTag",
              "default": null
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "MetadataAttribution",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "fields": [
                    {
                      "type": "long",
                      "name": "time",
                      "doc": "When this metadata was updated."
                    },
                    {
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "type": "string",
                      "name": "actor",
                      "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation.",
                      "Urn": "Urn"
                    },
                    {
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "source",
                      "default": null,
                      "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn.",
                      "Urn": "Urn"
                    },
                    {
                      "type": {
                        "type": "map",
                        "values": "string"
                      },
                      "name": "sourceDetail",
                      "default": {},
                      "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
                    }
                  ],
                  "doc": "Information about who, why, and how this metadata was applied"
                }
              ],
              "name": "metadataAttribution",
              "default": null
            }
          ],
          "doc": "A resource-defined string representing the resource state for the purpose of concurrency control"
        }
      ],
      "name": "version",
      "default": null,
      "doc": "Version of the MLFeature"
    },
    {
      "Relationship": {
        "/*": {
          "entityTypes": [
            "dataset"
          ],
          "isLineage": true,
          "name": "DerivedFrom"
        }
      },
      "type": [
        "null",
        {
          "type": "array",
          "items": "string"
        }
      ],
      "name": "sources",
      "default": null,
      "doc": "Source of the MLFeature",
      "Urn": "Urn",
      "urn_is_array": true
    }
  ],
  "doc": "Properties associated with a MLFeature"
}