{
  "type": "record",
  "Aspect": {
    "name": "inferredMetadata"
  },
  "name": "InferredMetadata",
  "namespace": "com.linkedin.pegasus2avro.inferred",
  "fields": [
    {
      "Searchable": {
        "/*/description": {
          "fieldName": "inferredDescriptions",
          "fieldType": "TEXT"
        }
      },
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredDescription",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "type": "string",
                "name": "description",
                "doc": "Inferred description text"
              },
              {
                "type": {
                  "type": "record",
                  "name": "InferredMetadataSource",
                  "namespace": "com.linkedin.pegasus2avro.inferred",
                  "fields": [
                    {
                      "type": "string",
                      "name": "algorithm",
                      "doc": "Algorithm used for inference"
                    },
                    {
                      "type": [
                        "null",
                        "float"
                      ],
                      "name": "score",
                      "default": null,
                      "doc": "Inference score - can be used to decide rank of inference\nFor same algorithm, higher score represents higher confidence in inference.\nThis score is not intended to be compared across multiple algorithms."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "map",
                          "values": "string"
                        }
                      ],
                      "name": "context",
                      "default": null,
                      "doc": "Additional details about this inference"
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "DATASET_PLATFORM": "Platform of dataset",
                              "DATASET_SCHEMA": "Schema of dataset",
                              "ENTITY_DESCRIPTION": "Description of entity",
                              "ENTITY_NAME": "Name of entity",
                              "FIELD_DATA_TYPE": "Datatype of dataset field",
                              "FIELD_DESCRIPTION": "Description of dataset field",
                              "FIELD_NAME": "Name of dataset field",
                              "FIELD_PARENT_DATASET": "Dataset containing the field",
                              "LINEAGE": "Lineage of entity"
                            },
                            "name": "SimilarityFactor",
                            "namespace": "com.linkedin.pegasus2avro.inferred",
                            "symbols": [
                              "ENTITY_NAME",
                              "ENTITY_DESCRIPTION",
                              "LINEAGE",
                              "DATASET_SCHEMA",
                              "DATASET_PLATFORM",
                              "FIELD_NAME",
                              "FIELD_DESCRIPTION",
                              "FIELD_DATA_TYPE",
                              "FIELD_PARENT_DATASET"
                            ],
                            "doc": "Factors related to an entity"
                          }
                        }
                      ],
                      "name": "similarityFactors",
                      "default": null,
                      "doc": "Primary factors contributing to this inference\nOrdering of the array indicates rank."
                    }
                  ],
                  "doc": "Provenace details corresponding to an inference"
                },
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records inferred description and its provenance"
          }
        }
      ],
      "name": "inferredDescriptions",
      "default": null,
      "doc": "Inferred descriptions for entity"
    },
    {
      "Searchable": {
        "/*/tags/*": {
          "fieldName": "inferredTags",
          "fieldType": "URN"
        }
      },
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredTags",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": "string"
                },
                "name": "tags",
                "doc": "Urns of inferred Tag",
                "Urn": "Urn",
                "urn_is_array": true
              },
              {
                "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records inferred tags along with their provenance\nAll tags in this record share same provenance"
          }
        }
      ],
      "name": "inferredTags",
      "default": null,
      "doc": "Inferred tags for entity"
    },
    {
      "Searchable": {
        "/*/glossaryTerms/*": {
          "fieldName": "inferredGlossaryTerms",
          "fieldType": "URN"
        }
      },
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredGlossaryTerms",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": "string"
                },
                "name": "glossaryTerms",
                "doc": "Urn of inferred glossary term",
                "Urn": "Urn",
                "urn_is_array": true
              },
              {
                "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records inferred glossary terms along with their provenance\nAll glossary terms from this record share same provenance"
          }
        }
      ],
      "name": "inferredGlossaryTerms",
      "default": null,
      "doc": "Inferred glossary terms for entity"
    },
    {
      "Searchable": {
        "/*/owners/*/owner": {
          "fieldName": "inferredOwners",
          "fieldType": "URN"
        }
      },
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredOwners",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "Owner",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "Relationship": {
                          "entityTypes": [
                            "corpuser",
                            "corpGroup"
                          ],
                          "name": "OwnedBy"
                        },
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "owners",
                          "fieldType": "URN",
                          "filterNameOverride": "Owned By",
                          "hasValuesFieldName": "hasOwners",
                          "queryByDefault": false
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "type": "string",
                        "name": "owner",
                        "doc": "Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\n(Caveat: only corpuser is currently supported in the frontend.)",
                        "Urn": "Urn",
                        "entityTypes": [
                          "corpuser",
                          "corpGroup"
                        ]
                      },
                      {
                        "deprecated": true,
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "BUSINESS_OWNER": "A person or group who is responsible for logical, or business related, aspects of the asset.",
                            "CONSUMER": "A person, group, or service that consumes the data\nDeprecated! Use TECHNICAL_OWNER or BUSINESS_OWNER instead.",
                            "CUSTOM": "Set when ownership type is unknown or a when new one is specified as an ownership type entity for which we have no\nenum value for. This is used for backwards compatibility",
                            "DATAOWNER": "A person or group that is owning the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                            "DATA_STEWARD": "A steward, expert, or delegate responsible for the asset.",
                            "DELEGATE": "A person or a group that overseas the operation, e.g. a DBA or SRE.\nDeprecated! Use TECHNICAL_OWNER instead.",
                            "DEVELOPER": "A person or group that is in charge of developing the code\nDeprecated! Use TECHNICAL_OWNER instead.",
                            "NONE": "No specific type associated to the owner.",
                            "PRODUCER": "A person, group, or service that produces/generates the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                            "STAKEHOLDER": "A person or a group that has direct business interest\nDeprecated! Use TECHNICAL_OWNER, BUSINESS_OWNER, or STEWARD instead.",
                            "TECHNICAL_OWNER": "person or group who is responsible for technical aspects of the asset."
                          },
                          "deprecatedSymbols": {
                            "CONSUMER": true,
                            "DATAOWNER": true,
                            "DELEGATE": true,
                            "DEVELOPER": true,
                            "PRODUCER": true,
                            "STAKEHOLDER": true
                          },
                          "name": "OwnershipType",
                          "namespace": "com.linkedin.pegasus2avro.common",
                          "symbols": [
                            "CUSTOM",
                            "TECHNICAL_OWNER",
                            "BUSINESS_OWNER",
                            "DATA_STEWARD",
                            "NONE",
                            "DEVELOPER",
                            "DATAOWNER",
                            "DELEGATE",
                            "PRODUCER",
                            "CONSUMER",
                            "STAKEHOLDER"
                          ],
                          "doc": "Asset owner types"
                        },
                        "name": "type",
                        "doc": "The type of the ownership"
                      },
                      {
                        "Relationship": {
                          "entityTypes": [
                            "ownershipType"
                          ],
                          "name": "ownershipType"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "typeUrn",
                        "default": null,
                        "doc": "The type of the ownership\nUrn of type O",
                        "Urn": "Urn",
                        "entityTypes": [
                          "ownershipType"
                        ]
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "OwnershipSource",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "AUDIT": "Auditing system or audit logs",
                                    "DATABASE": "Database, e.g. GRANTS table",
                                    "FILE_SYSTEM": "File system, e.g. file/directory owner",
                                    "ISSUE_TRACKING_SYSTEM": "Issue tracking system, e.g. Jira",
                                    "MANUAL": "Manually provided by a user",
                                    "OTHER": "Other sources",
                                    "SERVICE": "Other ownership-like service, e.g. Nuage, ACL service etc",
                                    "SOURCE_CONTROL": "SCM system, e.g. GIT, SVN"
                                  },
                                  "name": "OwnershipSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.common",
                                  "symbols": [
                                    "AUDIT",
                                    "DATABASE",
                                    "FILE_SYSTEM",
                                    "ISSUE_TRACKING_SYSTEM",
                                    "MANUAL",
                                    "SERVICE",
                                    "SOURCE_CONTROL",
                                    "OTHER"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the source"
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "url",
                                "default": null,
                                "doc": "A reference URL for the source"
                              }
                            ],
                            "doc": "Source/provider of the ownership information"
                          }
                        ],
                        "name": "source",
                        "default": null,
                        "doc": "Source information for the ownership"
                      }
                    ],
                    "doc": "Ownership information"
                  }
                },
                "name": "owners",
                "doc": "Inferred ownership details"
              },
              {
                "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records inferred ownership information along with its provenance\nAll owners in this record share same provenance"
          }
        }
      ],
      "name": "inferredOwners",
      "default": null,
      "doc": "Inferred owners for entity"
    }
  ],
  "doc": "Inferred Metadata for entities"
}