{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# How to extend a LinkML modeling language (LinkML) model\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-01-05T21:24:15.738278Z",
     "iopub.status.busy": "2021-01-05T21:24:15.737628Z",
     "iopub.status.idle": "2021-01-05T21:24:20.720047Z",
     "shell.execute_reply": "2021-01-05T21:24:20.720641Z"
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "!pip install -q --disable-pip-version-check yamlmagic\n",
    "!pip install -q --disable-pip-version-check .."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-01-05T21:24:20.725891Z",
     "iopub.status.busy": "2021-01-05T21:24:20.725184Z",
     "iopub.status.idle": "2021-01-05T21:24:20.748024Z",
     "shell.execute_reply": "2021-01-05T21:24:20.748451Z"
    }
   },
   "outputs": [],
   "source": [
    "%load_ext yamlmagic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-01-05T21:24:20.755951Z",
     "iopub.status.busy": "2021-01-05T21:24:20.755459Z",
     "iopub.status.idle": "2021-01-05T21:24:20.763362Z",
     "shell.execute_reply": "2021-01-05T21:24:20.763646Z"
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "            require(\n",
       "                [\n",
       "                    \"notebook/js/codecell\",\n",
       "                    \"codemirror/mode/yaml/yaml\"\n",
       "                ],\n",
       "                function(cc){\n",
       "                    cc.CodeCell.options_default.highlight_modes.magic_yaml = {\n",
       "                        reg: [\"^%%yaml\"]\n",
       "                    }\n",
       "                }\n",
       "            );\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%yaml model\n",
    "\n",
    "# Every model must have a globally unique URI. This is the external name of the model\n",
    "id: http://example.org/examples/distributeExample\n",
    "\n",
    "# Every model should also have a globally unique name (well, global within the context of the particular modeling environment)\n",
    "name: dist1\n",
    "\n",
    "# Descriptions are always useful, but not required\n",
    "description: A toy extension to the base biolink model\n",
    "\n",
    "# Versions are recommended but not required.  The version is copied into the output artifacts.  An error will be raised\n",
    "# if two different versions of the same model are imported\n",
    "version: 0.0.1\n",
    "\n",
    "# A license is not required at this point -- should it be?\n",
    "license: https://creativecommons.org/publicdomain/zero/1.0/\n",
    "\n",
    "# Prefixes can be assigned specifically.  We define two below:\n",
    "#   biolink -- the prefix used by the biolink-model\n",
    "#   dist1 -- the URI prefix used by this example.  Note that the dist1 prefix may or may not align with the model id\n",
    "prefixes:\n",
    "  biolink: https://w3id.org/biolink/vocab/\n",
    "  linkml: https://w3id.org/linkml/\n",
    "  dist: http://example.org/examples/dist1#\n",
    "\n",
    "# Prefixes can also be pulled from a prefixcommons compliant site. The map below uses the definitions found in\n",
    "#     https://github.com/prefixcommons/biocontext/blob/master/registry/semweb_context.yaml.\n",
    "default_curi_maps:\n",
    "  - semweb_context\n",
    "\n",
    "# The default prefix is what is used in the subsets, types, slots, classes sections below if not otherwise supplied\n",
    "default_prefix:  dist\n",
    "default_range: string\n",
    "\n",
    "# The list of prefixes to emit target files.  Note that all prefixes that are used elsewhere in the model are automatically\n",
    "# emitted, with the exception of\n",
    "emit_prefixes:\n",
    "    - skos\n",
    "    - rdf\n",
    "    - dist\n",
    "\n",
    "# List of models to import.  Note that import specifications can (currently) be URI's, absolute (file://...file), curies\n",
    "# (biolink:model), or relative (includes/myfile) file names.  Note, however, that this latter form is being deprecated.\n",
    "# The location of imported files can now be specified in an accompanying mapping file.  The imports below reference:\n",
    "#   https://w3id.org/biolink/biolink-model    -- the biolink model\n",
    "#   https://w3id.org/linkml/types  -- the biolink modeling language types definitions\n",
    "imports:\n",
    "  - https://w3id.org/biolink/biolink-model\n",
    "  - linkml:types\n",
    "\n",
    "# Subsets that are defined in this model extension\n",
    "subsets:\n",
    "    experimental:\n",
    "        # A subset should have a description\n",
    "        description: model elements that have not yet been tested\n",
    "\n",
    "# Types that are defined in this model extension\n",
    "types:\n",
    "  gene sequence:\n",
    "    uri: dist:seq\n",
    "    typeof: string\n",
    "    description: A gene sequence\n",
    "\n",
    "# Slots that are defined in this model extension\n",
    "slots:\n",
    "    gene has sequence:\n",
    "        description: A gene pattern\n",
    "        domain: gene\n",
    "        range: gene sequence\n",
    "        slot_uri: dist:hasSeq\n",
    "        required: true\n",
    "\n",
    "# Classes that are defined in this model extension\n",
    "classes:\n",
    "    # The class name.  For most generators, this will be transformed to CamelCase (MyGene)\n",
    "    my gene:\n",
    "        description: This is an example extension.  Doesn't do a lot\n",
    "        is_a: gene\n",
    "        slots:\n",
    "            - gene has sequence\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-01-05T21:24:20.766865Z",
     "iopub.status.busy": "2021-01-05T21:24:20.766437Z",
     "iopub.status.idle": "2021-01-05T21:24:23.714887Z",
     "shell.execute_reply": "2021-01-05T21:24:23.715199Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# Auto generated from None by pythongen.py version: 0.9.0\n",
      "# Generation date: 2021-01-05 15:24\n",
      "# Schema: dist1\n",
      "#\n",
      "# id: http://example.org/examples/distributeExample\n",
      "# description: A toy extension to the base biolink model\n",
      "# license: https://creativecommons.org/publicdomain/zero/1.0/\n",
      "\n",
      "import dataclasses\n",
      "import sys\n",
      "import re\n",
      "from typing import Optional, List, Union, Dict, ClassVar, Any\n",
      "from dataclasses import dataclass\n",
      "from linkml_model.meta import EnumDefinition, PermissibleValue, PvFormulaOptions\n",
      "\n",
      "from linkml_runtime.utils.slot import Slot\n",
      "from linkml_runtime.utils.metamodelcore import empty_list, empty_dict, bnode\n",
      "from linkml_runtime.utils.yamlutils import YAMLRoot, extended_str, extended_float, extended_int\n",
      "if sys.version_info < (3, 7, 6):\n",
      "    from linkml.utils.dataclass_extensions_375 import dataclasses_init_fn_with_kwargs\n",
      "else:\n",
      "    from linkml_runtime.utils.dataclass_extensions_376 import dataclasses_init_fn_with_kwargs\n",
      "from linkml_runtime.utils.formatutils import camelcase, underscore, sfx\n",
      "from linkml_runtime.utils.enumerations import EnumDefinitionImpl\n",
      "from rdflib import Namespace, URIRef\n",
      "from linkml_runtime.utils.curienamespace import CurieNamespace\n",
      "from linkml_runtime.utils.metamodelcore import Bool, URIorCURIE, XSDDate, XSDTime\n",
      "from includes.types import Boolean, Date, Double, Float, Integer, String, Time, Uriorcurie\n",
      "\n",
      "metamodel_version = \"1.7.0\"\n",
      "\n",
      "# Overwrite dataclasses _init_fn to add **kwargs in __init__\n",
      "dataclasses._init_fn = dataclasses_init_fn_with_kwargs\n",
      "\n",
      "# Namespaces\n",
      "APO = CurieNamespace('APO', 'http://purl.obolibrary.org/obo/APO_')\n",
      "BIOGRID = CurieNamespace('BIOGRID', 'http://identifiers.org/biogrid/')\n",
      "BIOSAMPLE = CurieNamespace('BIOSAMPLE', 'http://identifiers.org/biosample/')\n",
      "BSPO = CurieNamespace('BSPO', 'http://purl.obolibrary.org/obo/BSPO_')\n",
      "CAID = CurieNamespace('CAID', 'http://reg.clinicalgenome.org/redmine/projects/registry/genboree_registry/by_caid?caid=')\n",
      "CHEBI = CurieNamespace('CHEBI', 'http://purl.obolibrary.org/obo/CHEBI_')\n",
      "CHEMBL_COMPOUND = CurieNamespace('CHEMBL_COMPOUND', 'http://identifiers.org/chembl.compound/')\n",
      "CHEMBL_TARGET = CurieNamespace('CHEMBL_TARGET', 'http://identifiers.org/chembl.target/')\n",
      "CL = CurieNamespace('CL', 'http://purl.obolibrary.org/obo/CL_')\n",
      "CLINVAR = CurieNamespace('CLINVAR', 'http://identifiers.org/clinvar/')\n",
      "CLO = CurieNamespace('CLO', 'http://purl.obolibrary.org/obo/CLO_')\n",
      "CLINVARVARIANT = CurieNamespace('ClinVarVariant', 'http://www.ncbi.nlm.nih.gov/clinvar/variation/')\n",
      "DBSNP = CurieNamespace('DBSNP', 'http://identifiers.org/dbsnp/')\n",
      "DOID = CurieNamespace('DOID', 'http://purl.obolibrary.org/obo/DOID_')\n",
      "DRUGBANK = CurieNamespace('DRUGBANK', 'http://identifiers.org/drugbank/')\n",
      "EC = CurieNamespace('EC', 'http://www.enzyme-database.org/query.php?ec=')\n",
      "EDAM_DATA = CurieNamespace('EDAM-DATA', 'http://edamontology.org/data_')\n",
      "EDAM_FORMAT = CurieNamespace('EDAM-FORMAT', 'http://edamontology.org/format_')\n",
      "EDAM_OPERATION = CurieNamespace('EDAM-OPERATION', 'http://edamontology.org/operation_')\n",
      "EDAM_TOPIC = CurieNamespace('EDAM-TOPIC', 'http://edamontology.org/topic_')\n",
      "EFO = CurieNamespace('EFO', 'http://identifiers.org/efo/')\n",
      "ENSEMBL = CurieNamespace('ENSEMBL', 'http://identifiers.org/ensembl/')\n",
      "FAO = CurieNamespace('FAO', 'http://purl.obolibrary.org/obo/FAO_')\n",
      "FB = CurieNamespace('FB', 'http://identifiers.org/fb/')\n",
      "FBCV = CurieNamespace('FBcv', 'http://purl.obolibrary.org/obo/FBcv_')\n",
      "FLYBASE = CurieNamespace('FlyBase', 'http://flybase.org/reports/')\n",
      "GO = CurieNamespace('GO', 'http://purl.obolibrary.org/obo/GO_')\n",
      "GOLD_META = CurieNamespace('GOLD_META', 'http://identifiers.org/gold.meta/')\n",
      "GOP = CurieNamespace('GOP', 'http://purl.obolibrary.org/obo/go#')\n",
      "GSID = CurieNamespace('GSID', 'https://scholar.google.com/citations?user=')\n",
      "HANCESTRO = CurieNamespace('HANCESTRO', 'http://www.ebi.ac.uk/ancestro/ancestro_')\n",
      "HGNC = CurieNamespace('HGNC', 'http://identifiers.org/hgnc/')\n",
      "HGNC_FAMILY = CurieNamespace('HGNC_FAMILY', 'http://identifiers.org/hgnc.family/')\n",
      "HMDB = CurieNamespace('HMDB', 'http://identifiers.org/hmdb/')\n",
      "HP = CurieNamespace('HP', 'http://purl.obolibrary.org/obo/HP_')\n",
      "ICD0 = CurieNamespace('ICD0', 'http://translator.ncats.nih.gov/ICD0_')\n",
      "ICD10 = CurieNamespace('ICD10', 'http://translator.ncats.nih.gov/ICD10_')\n",
      "ICD9 = CurieNamespace('ICD9', 'http://translator.ncats.nih.gov/ICD9_')\n",
      "INCHI = CurieNamespace('INCHI', 'http://identifiers.org/inchi/')\n",
      "INCHIKEY = CurieNamespace('INCHIKEY', 'http://identifiers.org/inchikey/')\n",
      "INTACT = CurieNamespace('INTACT', 'http://identifiers.org/intact/')\n",
      "IUPHAR_FAMILY = CurieNamespace('IUPHAR_FAMILY', 'http://identifiers.org/iuphar.family/')\n",
      "KEGG = CurieNamespace('KEGG', 'http://identifiers.org/kegg/')\n",
      "MEDDRA = CurieNamespace('MEDDRA', 'http://identifiers.org/meddra/')\n",
      "MESH = CurieNamespace('MESH', 'http://identifiers.org/mesh/')\n",
      "MGI = CurieNamespace('MGI', 'http://identifiers.org/mgi/')\n",
      "MIR = CurieNamespace('MIR', 'http://identifiers.org/mir/')\n",
      "MONDO = CurieNamespace('MONDO', 'http://purl.obolibrary.org/obo/MONDO_')\n",
      "MP = CurieNamespace('MP', 'http://purl.obolibrary.org/obo/MP_')\n",
      "MSIGDB = CurieNamespace('MSigDB', 'https://www.gsea-msigdb.org/gsea/msigdb/')\n",
      "METACYC = CurieNamespace('MetaCyc', 'http://translator.ncats.nih.gov/MetaCyc_')\n",
      "NCBIGENE = CurieNamespace('NCBIGENE', 'http://identifiers.org/ncbigene/')\n",
      "NCBITAXON = CurieNamespace('NCBITaxon', 'http://purl.obolibrary.org/obo/NCBITaxon_')\n",
      "NCIT = CurieNamespace('NCIT', 'http://purl.obolibrary.org/obo/NCIT_')\n",
      "NLMID = CurieNamespace('NLMID', 'https://www.ncbi.nlm.nih.gov/nlmcatalog/?term=')\n",
      "OIO = CurieNamespace('OIO', 'http://www.geneontology.org/formats/oboInOwl#')\n",
      "OMIM = CurieNamespace('OMIM', 'http://purl.obolibrary.org/obo/OMIM_')\n",
      "ORCID = CurieNamespace('ORCID', 'https://orcid.org/')\n",
      "ORPHANET = CurieNamespace('ORPHANET', 'http://identifiers.org/orphanet/')\n",
      "PANTHER_FAMILY = CurieNamespace('PANTHER_FAMILY', 'http://identifiers.org/panther.family/')\n",
      "PANTHER_PATHWAY = CurieNamespace('PANTHER_PATHWAY', 'http://identifiers.org/panther.pathway/')\n",
      "PHARMGKB_DRUG = CurieNamespace('PHARMGKB_DRUG', 'http://identifiers.org/pharmgkb.drug/')\n",
      "PHARMGKB_PATHWAYS = CurieNamespace('PHARMGKB_PATHWAYS', 'http://identifiers.org/pharmgkb.pathways/')\n",
      "PMID = CurieNamespace('PMID', 'http://www.ncbi.nlm.nih.gov/pubmed/')\n",
      "PO = CurieNamespace('PO', 'http://purl.obolibrary.org/obo/PO_')\n",
      "POMBASE = CurieNamespace('POMBASE', 'http://identifiers.org/pombase/')\n",
      "PR = CurieNamespace('PR', 'http://purl.obolibrary.org/obo/PR_')\n",
      "PUBCHEM_COMPOUND = CurieNamespace('PUBCHEM_COMPOUND', 'http://identifiers.org/pubchem.compound/')\n",
      "PUBCHEM_SUBSTANCE = CurieNamespace('PUBCHEM_SUBSTANCE', 'http://identifiers.org/pubchem.substance/')\n",
      "REACT = CurieNamespace('REACT', 'http://www.reactome.org/PathwayBrowser/#/')\n",
      "RGD = CurieNamespace('RGD', 'http://identifiers.org/rgd/')\n",
      "RHEA = CurieNamespace('RHEA', 'http://identifiers.org/rhea/')\n",
      "RNACENTRAL = CurieNamespace('RNACENTRAL', 'http://identifiers.org/rnacentral/')\n",
      "RO = CurieNamespace('RO', 'http://purl.obolibrary.org/obo/RO_')\n",
      "RESEARCHID = CurieNamespace('ResearchID', 'https://publons.com/researcher/')\n",
      "SGD = CurieNamespace('SGD', 'http://identifiers.org/sgd/')\n",
      "SIO = CurieNamespace('SIO', 'http://semanticscience.org/resource/SIO_')\n",
      "SMPDB = CurieNamespace('SMPDB', 'http://identifiers.org/smpdb/')\n",
      "SNOMEDCT = CurieNamespace('SNOMEDCT', 'http://identifiers.org/snomedct/')\n",
      "SCOPUSID = CurieNamespace('ScopusID', 'https://www.scopus.com/authid/detail.uri?authorId=')\n",
      "TAXRANK = CurieNamespace('TAXRANK', 'http://purl.obolibrary.org/obo/TAXRANK_')\n",
      "UBERON = CurieNamespace('UBERON', 'http://purl.obolibrary.org/obo/UBERON_')\n",
      "UMLS = CurieNamespace('UMLS', 'http://identifiers.org/umls/')\n",
      "UNII = CurieNamespace('UNII', 'http://identifiers.org/unii/')\n",
      "UO = CurieNamespace('UO', 'http://purl.obolibrary.org/obo/UO_')\n",
      "UPHENO = CurieNamespace('UPHENO', 'http://purl.obolibrary.org/obo/UPHENO_')\n",
      "UNIPROTKB = CurieNamespace('UniProtKB', 'http://identifiers.org/uniprot/')\n",
      "WB = CurieNamespace('WB', 'http://identifiers.org/wb/')\n",
      "WBPHENOTYPE = CurieNamespace('WBPhenotype', 'http://purl.obolibrary.org/obo/WBPhenotype_')\n",
      "WIKIDATA = CurieNamespace('WIKIDATA', 'https://www.wikidata.org/wiki/')\n",
      "WIKIPATHWAYS = CurieNamespace('WIKIPATHWAYS', 'http://identifiers.org/wikipathways/')\n",
      "WORMBASE = CurieNamespace('WormBase', 'https://www.wormbase.org/get?name=')\n",
      "ZFIN = CurieNamespace('ZFIN', 'http://identifiers.org/zfin/')\n",
      "ZP = CurieNamespace('ZP', 'http://purl.obolibrary.org/obo/ZP_')\n",
      "BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/vocab/')\n",
      "BIOLINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/')\n",
      "DCTERMS = CurieNamespace('dcterms', 'http://purl.org/dc/terms/')\n",
      "DICTYBASE = CurieNamespace('dictyBase', 'http://dictybase.org/gene/')\n",
      "DIST = CurieNamespace('dist', 'http://example.org/examples/dist1#')\n",
      "DOI = CurieNamespace('doi', 'https://doi.org/')\n",
      "FOODB_COMPOUND = CurieNamespace('foodb_compound', 'http://foodb.ca/compounds/')\n",
      "GTPO = CurieNamespace('gtpo', 'https://rdf.guidetopharmacology.org/ns/gtpo#')\n",
      "INTERPRO = CurieNamespace('interpro', 'https://www.ebi.ac.uk/interpro/entry/')\n",
      "ISBN = CurieNamespace('isbn', 'https://www.isbn-international.org/identifier/')\n",
      "ISNI = CurieNamespace('isni', 'https://isni.org/isni/')\n",
      "ISSN = CurieNamespace('issn', 'https://portal.issn.org/resource/ISSN/')\n",
      "MEDGEN = CurieNamespace('medgen', 'https://www.ncbi.nlm.nih.gov/medgen/')\n",
      "RDF = CurieNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')\n",
      "RDFS = CurieNamespace('rdfs', 'http://www.w3.org/2000/01/rdf-schema#')\n",
      "SKOS = CurieNamespace('skos', 'https://www.w3.org/TR/skos-reference/#')\n",
      "XSD = CurieNamespace('xsd', 'http://www.w3.org/2001/XMLSchema#')\n",
      "DEFAULT_ = DIST\n",
      "\n",
      "\n",
      "# Types\n",
      "class GeneSequence(String):\n",
      "    \"\"\" A gene sequence \"\"\"\n",
      "    type_class_uri = DIST.seq\n",
      "    type_class_curie = \"dist:seq\"\n",
      "    type_name = \"gene sequence\"\n",
      "    type_model_uri = DIST.GeneSequence\n",
      "\n",
      "\n",
      "class ChemicalFormulaValue(str):\n",
      "    \"\"\" A chemical formula \"\"\"\n",
      "    type_class_uri = XSD.string\n",
      "    type_class_curie = \"xsd:string\"\n",
      "    type_name = \"chemical formula value\"\n",
      "    type_model_uri = DIST.ChemicalFormulaValue\n",
      "\n",
      "\n",
      "class CategoryType(Uriorcurie):\n",
      "    \"\"\" A primitive type in which the value denotes a class within the biolink model. The value must be a URI or a CURIE. In a Neo4j representation, the value should be the CURIE for the biolink class, for example biolink:Gene. For an RDF representation, the value should be a URI such as https://w3id.org/biolink/vocab/Gene \"\"\"\n",
      "    type_class_uri = XSD.anyURI\n",
      "    type_class_curie = \"xsd:anyURI\"\n",
      "    type_name = \"category type\"\n",
      "    type_model_uri = DIST.CategoryType\n",
      "\n",
      "\n",
      "class IriType(Uriorcurie):\n",
      "    \"\"\" An IRI \"\"\"\n",
      "    type_class_uri = XSD.anyURI\n",
      "    type_class_curie = \"xsd:anyURI\"\n",
      "    type_name = \"iri type\"\n",
      "    type_model_uri = DIST.IriType\n",
      "\n",
      "\n",
      "class LabelType(String):\n",
      "    \"\"\" A string that provides a human-readable name for an entity \"\"\"\n",
      "    type_class_uri = XSD.string\n",
      "    type_class_curie = \"xsd:string\"\n",
      "    type_name = \"label type\"\n",
      "    type_model_uri = DIST.LabelType\n",
      "\n",
      "\n",
      "class PredicateType(Uriorcurie):\n",
      "    \"\"\" A CURIE from the biolink related_to hierarchy. For example, biolink:related_to, biolink:causes, biolink:treats. \"\"\"\n",
      "    type_class_uri = XSD.anyURI\n",
      "    type_class_curie = \"xsd:anyURI\"\n",
      "    type_name = \"predicate type\"\n",
      "    type_model_uri = DIST.PredicateType\n",
      "\n",
      "\n",
      "class NarrativeText(String):\n",
      "    \"\"\" A string that provides a human-readable description of something \"\"\"\n",
      "    type_class_uri = XSD.string\n",
      "    type_class_curie = \"xsd:string\"\n",
      "    type_name = \"narrative text\"\n",
      "    type_model_uri = DIST.NarrativeText\n",
      "\n",
      "\n",
      "class SymbolType(String):\n",
      "    type_class_uri = XSD.string\n",
      "    type_class_curie = \"xsd:string\"\n",
      "    type_name = \"symbol type\"\n",
      "    type_model_uri = DIST.SymbolType\n",
      "\n",
      "\n",
      "class Frequency(String):\n",
      "    type_class_uri = UO[\"0000105\"]\n",
      "    type_class_curie = \"UO:0000105\"\n",
      "    type_name = \"frequency\"\n",
      "    type_model_uri = DIST.Frequency\n",
      "\n",
      "\n",
      "class PercentageFrequencyValue(Double):\n",
      "    type_class_uri = UO[\"0000187\"]\n",
      "    type_class_curie = \"UO:0000187\"\n",
      "    type_name = \"percentage frequency value\"\n",
      "    type_model_uri = DIST.PercentageFrequencyValue\n",
      "\n",
      "\n",
      "class Quotient(Double):\n",
      "    type_class_uri = UO[\"0010006\"]\n",
      "    type_class_curie = \"UO:0010006\"\n",
      "    type_name = \"quotient\"\n",
      "    type_model_uri = DIST.Quotient\n",
      "\n",
      "\n",
      "class Unit(String):\n",
      "    type_class_uri = UO[\"0000000\"]\n",
      "    type_class_curie = \"UO:0000000\"\n",
      "    type_name = \"unit\"\n",
      "    type_model_uri = DIST.Unit\n",
      "\n",
      "\n",
      "class TimeType(Time):\n",
      "    type_class_uri = XSD.dateTime\n",
      "    type_class_curie = \"xsd:dateTime\"\n",
      "    type_name = \"time type\"\n",
      "    type_model_uri = DIST.TimeType\n",
      "\n",
      "\n",
      "class BiologicalSequence(String):\n",
      "    type_class_uri = XSD.string\n",
      "    type_class_curie = \"xsd:string\"\n",
      "    type_name = \"biological sequence\"\n",
      "    type_model_uri = DIST.BiologicalSequence\n",
      "\n",
      "\n",
      "# Class references\n",
      "class EntityId(extended_str):\n",
      "    pass\n",
      "\n",
      "\n",
      "class NamedThingId(EntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class OntologyClassId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class RelationshipTypeId(OntologyClassId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneOntologyClassId(OntologyClassId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class TaxonomicRankId(OntologyClassId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class OrganismTaxonId(OntologyClassId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AdministrativeEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AgentId(AdministrativeEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class InformationContentEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DataFileId(InformationContentEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SourceFileId(DataFileId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DataSetId(InformationContentEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DataSetVersionId(DataSetId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DistributionLevelId(DataSetVersionId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DataSetSummaryId(DataSetVersionId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ConfidenceLevelId(InformationContentEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class EvidenceTypeId(InformationContentEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PublicationId(InformationContentEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BookId(PublicationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BookChapterId(PublicationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SerialId(PublicationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ArticleId(PublicationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PhysicalEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ActivityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ProcedureId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PhenomenonId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DeviceId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MaterialSampleId(PhysicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PlanetaryEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class EnvironmentalProcessId(PlanetaryEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class EnvironmentalFeatureId(PlanetaryEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeographicLocationId(PlanetaryEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeographicLocationAtTimeId(GeographicLocationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BiologicalEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MolecularEntityId(BiologicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BiologicalProcessOrActivityId(BiologicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MolecularActivityId(BiologicalProcessOrActivityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BiologicalProcessId(BiologicalProcessOrActivityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PathwayId(BiologicalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PhysiologicalProcessId(BiologicalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PathologicalProcessId(BiologicalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BehaviorId(BiologicalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DeathId(BiologicalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalSubstanceId(MolecularEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CarbohydrateId(ChemicalSubstanceId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ProcessedMaterialId(ChemicalSubstanceId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DrugId(MolecularEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class FoodId(MolecularEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MetaboliteId(ChemicalSubstanceId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class OrganismalEntityId(BiologicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class LifeStageId(OrganismalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class IndividualOrganismId(OrganismalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PopulationOfIndividualOrganismsId(OrganismalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class StudyPopulationId(PopulationOfIndividualOrganismsId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseOrPhenotypicFeatureId(BiologicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseId(DiseaseOrPhenotypicFeatureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PhenotypicFeatureId(DiseaseOrPhenotypicFeatureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AnatomicalEntityId(OrganismalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CellularComponentId(AnatomicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CellId(AnatomicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CellLineId(OrganismalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GrossAnatomicalStructureId(AnatomicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenomicEntityId(MolecularEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenomeId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ExonId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CodingSequenceId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MacromolecularMachineId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneOrGeneProductId(MacromolecularMachineId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneId(GeneOrGeneProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MyGeneId(GeneId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneProductId(GeneOrGeneProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class TranscriptId(GeneProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ProteinId(GeneProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ProteinIsoformId(ProteinId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class RNAProductId(GeneProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class RNAProductIsoformId(RNAProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class NoncodingRNAProductId(RNAProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MicroRNAId(NoncodingRNAProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SiRNAId(NoncodingRNAProductId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MacromolecularComplexId(MacromolecularMachineId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneFamilyId(MolecularEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class HaplotypeId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SequenceVariantId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SnvId(SequenceVariantId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ReagentTargetedGeneId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ClinicalEntityId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ClinicalTrialId(ClinicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ClinicalInterventionId(ClinicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ClinicalFindingId(PhenotypicFeatureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class HospitalizationId(ClinicalInterventionId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CaseId(IndividualOrganismId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CohortId(StudyPopulationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenomicBackgroundExposureId(GenomicEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseOrPhenotypicFeatureExposureId(DiseaseOrPhenotypicFeatureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalExposureId(ChemicalSubstanceId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ComplexChemicalExposureId(ChemicalExposureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DrugExposureId(DrugId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DrugToGeneInteractionExposureId(DrugExposureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class TreatmentId(NamedThingId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BioticExposureId(OrganismTaxonId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeographicExposureId(GeographicLocationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class EnvironmentalExposureId(EnvironmentalProcessId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BehavioralExposureId(BehaviorId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SocioeconomicExposureId(BehaviorId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseOrPhenotypicFeatureOutcomeId(DiseaseOrPhenotypicFeatureId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class BehavioralOutcomeId(BehaviorId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class HospitalizationOutcomeId(HospitalizationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MortalityOutcomeId(DeathId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class EpidemiologicalOutcomeId(BiologicalEntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SocioeconomicOutcomeId(BehaviorId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AssociationId(EntityId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ContributorAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeToGenotypePartAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeToGeneAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeToVariantAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToGeneAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToGeneHomologyAssociationId(GeneToGeneAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToGeneCoexpressionAssociationId(GeneToGeneAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PairwiseGeneToGeneInteractionId(GeneToGeneAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PairwiseMolecularInteractionId(PairwiseGeneToGeneInteractionId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CellLineToDiseaseOrPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalToChemicalAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalToChemicalDerivationAssociationId(ChemicalToChemicalAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalToDiseaseOrPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalToPathwayAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ChemicalToGeneAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DrugToGeneAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MaterialSampleDerivationAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MaterialSampleToDiseaseOrPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseToExposureEventAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ExposureEventToOutcomeAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseOrPhenotypicFeatureAssociationToLocationAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseOrPhenotypicFeatureToLocationAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ExposureEventToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class DiseaseToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CaseToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToDiseaseAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantToGeneAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantToGeneExpressionAssociationId(VariantToGeneAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantToPopulationAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class PopulationToPopulationAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantToPhenotypicFeatureAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantToDiseaseAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeToDiseaseAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneAsAModelOfDiseaseAssociationId(GeneToDiseaseAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class VariantAsAModelOfDiseaseAssociationId(VariantToDiseaseAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenotypeAsAModelOfDiseaseAssociationId(GenotypeToDiseaseAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class CellLineAsAModelOfDiseaseAssociationId(CellLineToDiseaseOrPhenotypicFeatureAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class OrganismalEntityAsAModelOfDiseaseAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneHasVariantThatContributesToDiseaseAssociationId(GeneToDiseaseAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToExpressionSiteAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SequenceVariantModulatesTreatmentAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class FunctionalAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MacromolecularMachineToMolecularActivityAssociationId(FunctionalAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MacromolecularMachineToBiologicalProcessAssociationId(FunctionalAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class MacromolecularMachineToCellularComponentAssociationId(FunctionalAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToGoTermAssociationId(FunctionalAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SequenceAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GenomicSequenceLocalizationId(SequenceAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class SequenceFeatureRelationshipId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class TranscriptToGeneRelationshipId(SequenceFeatureRelationshipId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneToGeneProductRelationshipId(SequenceFeatureRelationshipId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class ExonToTranscriptRelationshipId(SequenceFeatureRelationshipId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class GeneRegulatoryRelationshipId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AnatomicalEntityToAnatomicalEntityAssociationId(AssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AnatomicalEntityToAnatomicalEntityPartOfAssociationId(AnatomicalEntityToAnatomicalEntityAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class AnatomicalEntityToAnatomicalEntityOntogenicAssociationId(AnatomicalEntityToAnatomicalEntityAssociationId):\n",
      "    pass\n",
      "\n",
      "\n",
      "class Annotation(YAMLRoot):\n",
      "    \"\"\"\n",
      "    Biolink Model root class for entity annotations.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Annotation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Annotation\"\n",
      "    class_name: ClassVar[str] = \"annotation\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Annotation\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class QuantityValue(Annotation):\n",
      "    \"\"\"\n",
      "    A value of an attribute that is quantitative and measurable, expressed as a combination of a unit and a numeric\n",
      "    value\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.QuantityValue\n",
      "    class_class_curie: ClassVar[str] = \"biolink:QuantityValue\"\n",
      "    class_name: ClassVar[str] = \"quantity value\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.QuantityValue\n",
      "\n",
      "    has_unit: Optional[Union[str, Unit]] = None\n",
      "    has_numeric_value: Optional[float] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_unit is not None and not isinstance(self.has_unit, Unit):\n",
      "            self.has_unit = Unit(self.has_unit)\n",
      "\n",
      "        if self.has_numeric_value is not None and not isinstance(self.has_numeric_value, float):\n",
      "            self.has_numeric_value = float(self.has_numeric_value)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Attribute(Annotation):\n",
      "    \"\"\"\n",
      "    A property or characteristic of an entity. For example, an apple may have properties such as color, shape, age,\n",
      "    crispiness. An environmental sample may have attributes such as depth, lat, long, material.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Attribute\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Attribute\"\n",
      "    class_name: ClassVar[str] = \"attribute\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Attribute\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "    name: Optional[Union[str, LabelType]] = None\n",
      "    has_quantitative_value: Optional[Union[Union[dict, QuantityValue], List[Union[dict, QuantityValue]]]] = empty_list()\n",
      "    has_qualitative_value: Optional[Union[str, NamedThingId]] = None\n",
      "    iri: Optional[Union[str, IriType]] = None\n",
      "    source: Optional[Union[str, LabelType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_attribute_type is None:\n",
      "            raise ValueError(\"has_attribute_type must be supplied\")\n",
      "        if not isinstance(self.has_attribute_type, OntologyClassId):\n",
      "            self.has_attribute_type = OntologyClassId(self.has_attribute_type)\n",
      "\n",
      "        if self.name is not None and not isinstance(self.name, LabelType):\n",
      "            self.name = LabelType(self.name)\n",
      "\n",
      "        if self.has_quantitative_value is None:\n",
      "            self.has_quantitative_value = []\n",
      "        if not isinstance(self.has_quantitative_value, list):\n",
      "            self.has_quantitative_value = [self.has_quantitative_value]\n",
      "        self.has_quantitative_value = [v if isinstance(v, QuantityValue) else QuantityValue(**v) for v in self.has_quantitative_value]\n",
      "\n",
      "        if self.has_qualitative_value is not None and not isinstance(self.has_qualitative_value, NamedThingId):\n",
      "            self.has_qualitative_value = NamedThingId(self.has_qualitative_value)\n",
      "\n",
      "        if self.iri is not None and not isinstance(self.iri, IriType):\n",
      "            self.iri = IriType(self.iri)\n",
      "\n",
      "        if self.source is not None and not isinstance(self.source, LabelType):\n",
      "            self.source = LabelType(self.source)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BiologicalSex(Attribute):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BiologicalSex\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BiologicalSex\"\n",
      "    class_name: ClassVar[str] = \"biological sex\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BiologicalSex\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class PhenotypicSex(BiologicalSex):\n",
      "    \"\"\"\n",
      "    An attribute corresponding to the phenotypic sex of the individual, based upon the reproductive organs present.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhenotypicSex\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhenotypicSex\"\n",
      "    class_name: ClassVar[str] = \"phenotypic sex\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhenotypicSex\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class GenotypicSex(BiologicalSex):\n",
      "    \"\"\"\n",
      "    An attribute corresponding to the genotypic sex of the individual, based upon genotypic composition of sex\n",
      "    chromosomes.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypicSex\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypicSex\"\n",
      "    class_name: ClassVar[str] = \"genotypic sex\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypicSex\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class SeverityValue(Attribute):\n",
      "    \"\"\"\n",
      "    describes the severity of a phenotypic feature or disease\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SeverityValue\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SeverityValue\"\n",
      "    class_name: ClassVar[str] = \"severity value\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SeverityValue\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class FrequencyValue(Attribute):\n",
      "    \"\"\"\n",
      "    describes the frequency of occurrence of an event or condition\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.FrequencyValue\n",
      "    class_class_curie: ClassVar[str] = \"biolink:FrequencyValue\"\n",
      "    class_name: ClassVar[str] = \"frequency value\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.FrequencyValue\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "class RelationshipQuantifier(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.RelationshipQuantifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:RelationshipQuantifier\"\n",
      "    class_name: ClassVar[str] = \"relationship quantifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.RelationshipQuantifier\n",
      "\n",
      "\n",
      "class SensitivityQuantifier(RelationshipQuantifier):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SensitivityQuantifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SensitivityQuantifier\"\n",
      "    class_name: ClassVar[str] = \"sensitivity quantifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SensitivityQuantifier\n",
      "\n",
      "\n",
      "class SpecificityQuantifier(RelationshipQuantifier):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SpecificityQuantifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SpecificityQuantifier\"\n",
      "    class_name: ClassVar[str] = \"specificity quantifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SpecificityQuantifier\n",
      "\n",
      "\n",
      "class PathognomonicityQuantifier(SpecificityQuantifier):\n",
      "    \"\"\"\n",
      "    A relationship quantifier between a variant or symptom and a disease, which is high when the presence of the\n",
      "    feature implies the existence of the disease\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PathognomonicityQuantifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PathognomonicityQuantifier\"\n",
      "    class_name: ClassVar[str] = \"pathognomonicity quantifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PathognomonicityQuantifier\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class FrequencyQuantifier(RelationshipQuantifier):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.FrequencyQuantifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:FrequencyQuantifier\"\n",
      "    class_name: ClassVar[str] = \"frequency quantifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.FrequencyQuantifier\n",
      "\n",
      "    has_count: Optional[int] = None\n",
      "    has_total: Optional[int] = None\n",
      "    has_quotient: Optional[float] = None\n",
      "    has_percentage: Optional[float] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_count is not None and not isinstance(self.has_count, int):\n",
      "            self.has_count = int(self.has_count)\n",
      "\n",
      "        if self.has_total is not None and not isinstance(self.has_total, int):\n",
      "            self.has_total = int(self.has_total)\n",
      "\n",
      "        if self.has_quotient is not None and not isinstance(self.has_quotient, float):\n",
      "            self.has_quotient = float(self.has_quotient)\n",
      "\n",
      "        if self.has_percentage is not None and not isinstance(self.has_percentage, float):\n",
      "            self.has_percentage = float(self.has_percentage)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Entity(YAMLRoot):\n",
      "    \"\"\"\n",
      "    Root Biolink Model class for all things and informational relationships, real or imagined.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Entity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Entity\"\n",
      "    class_name: ClassVar[str] = \"entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Entity\n",
      "\n",
      "    id: Union[str, EntityId] = None\n",
      "    category: Union[Union[str, CategoryType], List[Union[str, CategoryType]]] = None\n",
      "    iri: Optional[Union[str, IriType]] = None\n",
      "    type: Optional[str] = None\n",
      "    name: Optional[Union[str, LabelType]] = None\n",
      "    description: Optional[Union[str, NarrativeText]] = None\n",
      "    source: Optional[Union[str, LabelType]] = None\n",
      "    provided_by: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list()\n",
      "    has_attribute: Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EntityId):\n",
      "            self.id = EntityId(self.id)\n",
      "\n",
      "        if self.category is None:\n",
      "            raise ValueError(\"category must be supplied\")\n",
      "        elif not isinstance(self.category, list):\n",
      "            self.category = [self.category]\n",
      "        elif len(self.category) == 0:\n",
      "            raise ValueError(f\"category must be a non-empty list\")\n",
      "        self.category = [v if isinstance(v, CategoryType) else CategoryType(v) for v in self.category]\n",
      "\n",
      "        if self.iri is not None and not isinstance(self.iri, IriType):\n",
      "            self.iri = IriType(self.iri)\n",
      "\n",
      "        if self.type is not None and not isinstance(self.type, str):\n",
      "            self.type = str(self.type)\n",
      "\n",
      "        if self.name is not None and not isinstance(self.name, LabelType):\n",
      "            self.name = LabelType(self.name)\n",
      "\n",
      "        if self.description is not None and not isinstance(self.description, NarrativeText):\n",
      "            self.description = NarrativeText(self.description)\n",
      "\n",
      "        if self.source is not None and not isinstance(self.source, LabelType):\n",
      "            self.source = LabelType(self.source)\n",
      "\n",
      "        if self.provided_by is None:\n",
      "            self.provided_by = []\n",
      "        if not isinstance(self.provided_by, list):\n",
      "            self.provided_by = [self.provided_by]\n",
      "        self.provided_by = [v if isinstance(v, AgentId) else AgentId(v) for v in self.provided_by]\n",
      "\n",
      "        if self.has_attribute is None:\n",
      "            self.has_attribute = []\n",
      "        if not isinstance(self.has_attribute, list):\n",
      "            self.has_attribute = [self.has_attribute]\n",
      "        self._normalize_inlined_slot(slot_name=\"has_attribute\", slot_type=Attribute, key_name=\"has attribute type\", inlined_as_list=True, keyed=False)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class NamedThing(Entity):\n",
      "    \"\"\"\n",
      "    a databased entity or concept/class\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.NamedThing\n",
      "    class_class_curie: ClassVar[str] = \"biolink:NamedThing\"\n",
      "    class_name: ClassVar[str] = \"named thing\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.NamedThing\n",
      "\n",
      "    id: Union[str, NamedThingId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, NamedThingId):\n",
      "            self.id = NamedThingId(self.id)\n",
      "\n",
      "        if self.category is None:\n",
      "            raise ValueError(\"category must be supplied\")\n",
      "        elif not isinstance(self.category, list):\n",
      "            self.category = [self.category]\n",
      "        elif len(self.category) == 0:\n",
      "            raise ValueError(f\"category must be a non-empty list\")\n",
      "        self.category = [v if isinstance(v, NamedThingId) else NamedThingId(v) for v in self.category]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class OntologyClass(NamedThing):\n",
      "    \"\"\"\n",
      "    a concept or class in an ontology, vocabulary or thesaurus\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.OntologyClass\n",
      "    class_class_curie: ClassVar[str] = \"biolink:OntologyClass\"\n",
      "    class_name: ClassVar[str] = \"ontology class\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.OntologyClass\n",
      "\n",
      "    id: Union[str, OntologyClassId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, OntologyClassId):\n",
      "            self.id = OntologyClassId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class RelationshipType(OntologyClass):\n",
      "    \"\"\"\n",
      "    An OWL property used as an edge label\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.RelationshipType\n",
      "    class_class_curie: ClassVar[str] = \"biolink:RelationshipType\"\n",
      "    class_name: ClassVar[str] = \"relationship type\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.RelationshipType\n",
      "\n",
      "    id: Union[str, RelationshipTypeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, RelationshipTypeId):\n",
      "            self.id = RelationshipTypeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneOntologyClass(OntologyClass):\n",
      "    \"\"\"\n",
      "    an ontology class that describes a functional aspect of a gene, gene prodoct or complex\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneOntologyClass\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneOntologyClass\"\n",
      "    class_name: ClassVar[str] = \"gene ontology class\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneOntologyClass\n",
      "\n",
      "    id: Union[str, GeneOntologyClassId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneOntologyClassId):\n",
      "            self.id = GeneOntologyClassId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class TaxonomicRank(OntologyClass):\n",
      "    \"\"\"\n",
      "    A descriptor for the rank within a taxonomic classification. Example instance: TAXRANK:0000017 (kingdom)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.TaxonomicRank\n",
      "    class_class_curie: ClassVar[str] = \"biolink:TaxonomicRank\"\n",
      "    class_name: ClassVar[str] = \"taxonomic rank\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.TaxonomicRank\n",
      "\n",
      "    id: Union[str, TaxonomicRankId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, TaxonomicRankId):\n",
      "            self.id = TaxonomicRankId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class OrganismTaxon(OntologyClass):\n",
      "    \"\"\"\n",
      "    A classification of a set of organisms. Example instances: NCBITaxon:9606 (Homo sapiens), NCBITaxon:2 (Bacteria).\n",
      "    Can also be used to represent strains or subspecies.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"subclass_of\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.OrganismTaxon\n",
      "    class_class_curie: ClassVar[str] = \"biolink:OrganismTaxon\"\n",
      "    class_name: ClassVar[str] = \"organism taxon\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.OrganismTaxon\n",
      "\n",
      "    id: Union[str, OrganismTaxonId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_taxonomic_rank: Optional[Union[str, TaxonomicRankId]] = None\n",
      "    subclass_of: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, OrganismTaxonId):\n",
      "            self.id = OrganismTaxonId(self.id)\n",
      "\n",
      "        if self.has_taxonomic_rank is not None and not isinstance(self.has_taxonomic_rank, TaxonomicRankId):\n",
      "            self.has_taxonomic_rank = TaxonomicRankId(self.has_taxonomic_rank)\n",
      "\n",
      "        if self.subclass_of is None:\n",
      "            self.subclass_of = []\n",
      "        if not isinstance(self.subclass_of, list):\n",
      "            self.subclass_of = [self.subclass_of]\n",
      "        self.subclass_of = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.subclass_of]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class AdministrativeEntity(NamedThing):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.AdministrativeEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:AdministrativeEntity\"\n",
      "    class_name: ClassVar[str] = \"administrative entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.AdministrativeEntity\n",
      "\n",
      "    id: Union[str, AdministrativeEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "@dataclass\n",
      "class Agent(AdministrativeEntity):\n",
      "    \"\"\"\n",
      "    person, group, organization or project that provides a piece of information (i.e. a knowledge association)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Agent\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Agent\"\n",
      "    class_name: ClassVar[str] = \"agent\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Agent\n",
      "\n",
      "    id: Union[str, AgentId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    affiliation: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list()\n",
      "    address: Optional[str] = None\n",
      "    name: Optional[Union[str, LabelType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AgentId):\n",
      "            self.id = AgentId(self.id)\n",
      "\n",
      "        if self.affiliation is None:\n",
      "            self.affiliation = []\n",
      "        if not isinstance(self.affiliation, list):\n",
      "            self.affiliation = [self.affiliation]\n",
      "        self.affiliation = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.affiliation]\n",
      "\n",
      "        if self.address is not None and not isinstance(self.address, str):\n",
      "            self.address = str(self.address)\n",
      "\n",
      "        if self.name is not None and not isinstance(self.name, LabelType):\n",
      "            self.name = LabelType(self.name)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class InformationContentEntity(NamedThing):\n",
      "    \"\"\"\n",
      "    a piece of information that typically describes some topic of discourse or is used as support.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.InformationContentEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:InformationContentEntity\"\n",
      "    class_name: ClassVar[str] = \"information content entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.InformationContentEntity\n",
      "\n",
      "    id: Union[str, InformationContentEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    license: Optional[str] = None\n",
      "    rights: Optional[str] = None\n",
      "    format: Optional[str] = None\n",
      "    creation_date: Optional[Union[str, XSDDate]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.license is not None and not isinstance(self.license, str):\n",
      "            self.license = str(self.license)\n",
      "\n",
      "        if self.rights is not None and not isinstance(self.rights, str):\n",
      "            self.rights = str(self.rights)\n",
      "\n",
      "        if self.format is not None and not isinstance(self.format, str):\n",
      "            self.format = str(self.format)\n",
      "\n",
      "        if self.creation_date is not None and not isinstance(self.creation_date, XSDDate):\n",
      "            self.creation_date = XSDDate(self.creation_date)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DataFile(InformationContentEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DataFile\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DataFile\"\n",
      "    class_name: ClassVar[str] = \"data file\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DataFile\n",
      "\n",
      "    id: Union[str, DataFileId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DataFileId):\n",
      "            self.id = DataFileId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SourceFile(DataFile):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SourceFile\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SourceFile\"\n",
      "    class_name: ClassVar[str] = \"source file\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SourceFile\n",
      "\n",
      "    id: Union[str, SourceFileId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    source_version: Optional[str] = None\n",
      "    retrieved_on: Optional[Union[str, XSDDate]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SourceFileId):\n",
      "            self.id = SourceFileId(self.id)\n",
      "\n",
      "        if self.source_version is not None and not isinstance(self.source_version, str):\n",
      "            self.source_version = str(self.source_version)\n",
      "\n",
      "        if self.retrieved_on is not None and not isinstance(self.retrieved_on, XSDDate):\n",
      "            self.retrieved_on = XSDDate(self.retrieved_on)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DataSet(InformationContentEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DataSet\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DataSet\"\n",
      "    class_name: ClassVar[str] = \"data set\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DataSet\n",
      "\n",
      "    id: Union[str, DataSetId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DataSetId):\n",
      "            self.id = DataSetId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DataSetVersion(DataSet):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DataSetVersion\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DataSetVersion\"\n",
      "    class_name: ClassVar[str] = \"data set version\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DataSetVersion\n",
      "\n",
      "    id: Union[str, DataSetVersionId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    source_data_file: Optional[Union[str, DataFileId]] = None\n",
      "    version_of: Optional[Union[str, DataSetId]] = None\n",
      "    distribution: Optional[Union[str, DistributionLevelId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DataSetVersionId):\n",
      "            self.id = DataSetVersionId(self.id)\n",
      "\n",
      "        if self.source_data_file is not None and not isinstance(self.source_data_file, DataFileId):\n",
      "            self.source_data_file = DataFileId(self.source_data_file)\n",
      "\n",
      "        if self.version_of is not None and not isinstance(self.version_of, DataSetId):\n",
      "            self.version_of = DataSetId(self.version_of)\n",
      "\n",
      "        if self.distribution is not None and not isinstance(self.distribution, DistributionLevelId):\n",
      "            self.distribution = DistributionLevelId(self.distribution)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DistributionLevel(DataSetVersion):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DistributionLevel\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DistributionLevel\"\n",
      "    class_name: ClassVar[str] = \"distribution level\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DistributionLevel\n",
      "\n",
      "    id: Union[str, DistributionLevelId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    download_url: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.download_url is not None and not isinstance(self.download_url, str):\n",
      "            self.download_url = str(self.download_url)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DataSetSummary(DataSetVersion):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DataSetSummary\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DataSetSummary\"\n",
      "    class_name: ClassVar[str] = \"data set summary\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DataSetSummary\n",
      "\n",
      "    id: Union[str, DataSetSummaryId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    source_web_page: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.source_web_page is not None and not isinstance(self.source_web_page, str):\n",
      "            self.source_web_page = str(self.source_web_page)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ConfidenceLevel(InformationContentEntity):\n",
      "    \"\"\"\n",
      "    Level of confidence in a statement\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ConfidenceLevel\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ConfidenceLevel\"\n",
      "    class_name: ClassVar[str] = \"confidence level\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ConfidenceLevel\n",
      "\n",
      "    id: Union[str, ConfidenceLevelId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ConfidenceLevelId):\n",
      "            self.id = ConfidenceLevelId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EvidenceType(InformationContentEntity):\n",
      "    \"\"\"\n",
      "    Class of evidence that supports an association\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EvidenceType\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EvidenceType\"\n",
      "    class_name: ClassVar[str] = \"evidence type\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EvidenceType\n",
      "\n",
      "    id: Union[str, EvidenceTypeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EvidenceTypeId):\n",
      "            self.id = EvidenceTypeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Publication(InformationContentEntity):\n",
      "    \"\"\"\n",
      "    Any published piece of information. Can refer to a whole publication, its encompassing publication (i.e. journal\n",
      "    or book) or to a part of a publication, if of significant knowledge scope (e.g. a figure, figure legend, or\n",
      "    section highlighted by NLP). The scope is intended to be general and include information published on the web, as\n",
      "    well as printed materials, either directly or in one of the Publication Biolink category subclasses.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Publication\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Publication\"\n",
      "    class_name: ClassVar[str] = \"publication\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Publication\n",
      "\n",
      "    id: Union[str, PublicationId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    type: str = None\n",
      "    authors: Optional[Union[str, List[str]]] = empty_list()\n",
      "    pages: Optional[Union[str, List[str]]] = empty_list()\n",
      "    summary: Optional[str] = None\n",
      "    keywords: Optional[Union[str, List[str]]] = empty_list()\n",
      "    mesh_terms: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list()\n",
      "    xref: Optional[Union[Union[str, IriType], List[Union[str, IriType]]]] = empty_list()\n",
      "    name: Optional[Union[str, LabelType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PublicationId):\n",
      "            self.id = PublicationId(self.id)\n",
      "\n",
      "        if self.type is None:\n",
      "            raise ValueError(\"type must be supplied\")\n",
      "        if not isinstance(self.type, str):\n",
      "            self.type = str(self.type)\n",
      "\n",
      "        if self.authors is None:\n",
      "            self.authors = []\n",
      "        if not isinstance(self.authors, list):\n",
      "            self.authors = [self.authors]\n",
      "        self.authors = [v if isinstance(v, str) else str(v) for v in self.authors]\n",
      "\n",
      "        if self.pages is None:\n",
      "            self.pages = []\n",
      "        if not isinstance(self.pages, list):\n",
      "            self.pages = [self.pages]\n",
      "        self.pages = [v if isinstance(v, str) else str(v) for v in self.pages]\n",
      "\n",
      "        if self.summary is not None and not isinstance(self.summary, str):\n",
      "            self.summary = str(self.summary)\n",
      "\n",
      "        if self.keywords is None:\n",
      "            self.keywords = []\n",
      "        if not isinstance(self.keywords, list):\n",
      "            self.keywords = [self.keywords]\n",
      "        self.keywords = [v if isinstance(v, str) else str(v) for v in self.keywords]\n",
      "\n",
      "        if self.mesh_terms is None:\n",
      "            self.mesh_terms = []\n",
      "        if not isinstance(self.mesh_terms, list):\n",
      "            self.mesh_terms = [self.mesh_terms]\n",
      "        self.mesh_terms = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.mesh_terms]\n",
      "\n",
      "        if self.xref is None:\n",
      "            self.xref = []\n",
      "        if not isinstance(self.xref, list):\n",
      "            self.xref = [self.xref]\n",
      "        self.xref = [v if isinstance(v, IriType) else IriType(v) for v in self.xref]\n",
      "\n",
      "        if self.name is not None and not isinstance(self.name, LabelType):\n",
      "            self.name = LabelType(self.name)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Book(Publication):\n",
      "    \"\"\"\n",
      "    This class may rarely be instantiated except if use cases of a given knowledge graph support its utility.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Book\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Book\"\n",
      "    class_name: ClassVar[str] = \"book\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Book\n",
      "\n",
      "    id: Union[str, BookId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    type: str = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BookId):\n",
      "            self.id = BookId(self.id)\n",
      "\n",
      "        if self.type is None:\n",
      "            raise ValueError(\"type must be supplied\")\n",
      "        if not isinstance(self.type, str):\n",
      "            self.type = str(self.type)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BookChapter(Publication):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BookChapter\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BookChapter\"\n",
      "    class_name: ClassVar[str] = \"book chapter\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BookChapter\n",
      "\n",
      "    id: Union[str, BookChapterId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    type: str = None\n",
      "    published_in: Union[str, URIorCURIE] = None\n",
      "    volume: Optional[str] = None\n",
      "    chapter: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BookChapterId):\n",
      "            self.id = BookChapterId(self.id)\n",
      "\n",
      "        if self.published_in is None:\n",
      "            raise ValueError(\"published_in must be supplied\")\n",
      "        if not isinstance(self.published_in, URIorCURIE):\n",
      "            self.published_in = URIorCURIE(self.published_in)\n",
      "\n",
      "        if self.volume is not None and not isinstance(self.volume, str):\n",
      "            self.volume = str(self.volume)\n",
      "\n",
      "        if self.chapter is not None and not isinstance(self.chapter, str):\n",
      "            self.chapter = str(self.chapter)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Serial(Publication):\n",
      "    \"\"\"\n",
      "    This class may rarely be instantiated except if use cases of a given knowledge graph support its utility.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Serial\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Serial\"\n",
      "    class_name: ClassVar[str] = \"serial\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Serial\n",
      "\n",
      "    id: Union[str, SerialId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    type: str = None\n",
      "    iso_abbreviation: Optional[str] = None\n",
      "    volume: Optional[str] = None\n",
      "    issue: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SerialId):\n",
      "            self.id = SerialId(self.id)\n",
      "\n",
      "        if self.type is None:\n",
      "            raise ValueError(\"type must be supplied\")\n",
      "        if not isinstance(self.type, str):\n",
      "            self.type = str(self.type)\n",
      "\n",
      "        if self.iso_abbreviation is not None and not isinstance(self.iso_abbreviation, str):\n",
      "            self.iso_abbreviation = str(self.iso_abbreviation)\n",
      "\n",
      "        if self.volume is not None and not isinstance(self.volume, str):\n",
      "            self.volume = str(self.volume)\n",
      "\n",
      "        if self.issue is not None and not isinstance(self.issue, str):\n",
      "            self.issue = str(self.issue)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Article(Publication):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Article\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Article\"\n",
      "    class_name: ClassVar[str] = \"article\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Article\n",
      "\n",
      "    id: Union[str, ArticleId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    type: str = None\n",
      "    published_in: Union[str, URIorCURIE] = None\n",
      "    iso_abbreviation: Optional[str] = None\n",
      "    volume: Optional[str] = None\n",
      "    issue: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ArticleId):\n",
      "            self.id = ArticleId(self.id)\n",
      "\n",
      "        if self.published_in is None:\n",
      "            raise ValueError(\"published_in must be supplied\")\n",
      "        if not isinstance(self.published_in, URIorCURIE):\n",
      "            self.published_in = URIorCURIE(self.published_in)\n",
      "\n",
      "        if self.iso_abbreviation is not None and not isinstance(self.iso_abbreviation, str):\n",
      "            self.iso_abbreviation = str(self.iso_abbreviation)\n",
      "\n",
      "        if self.volume is not None and not isinstance(self.volume, str):\n",
      "            self.volume = str(self.volume)\n",
      "\n",
      "        if self.issue is not None and not isinstance(self.issue, str):\n",
      "            self.issue = str(self.issue)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "class PhysicalEssenceOrOccurrent(YAMLRoot):\n",
      "    \"\"\"\n",
      "    Either a physical or processual entity.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhysicalEssenceOrOccurrent\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhysicalEssenceOrOccurrent\"\n",
      "    class_name: ClassVar[str] = \"physical essence or occurrent\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhysicalEssenceOrOccurrent\n",
      "\n",
      "\n",
      "class PhysicalEssence(PhysicalEssenceOrOccurrent):\n",
      "    \"\"\"\n",
      "    Semantic mixin concept.  Pertains to entities that have physical properties such as mass, volume, or charge.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhysicalEssence\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhysicalEssence\"\n",
      "    class_name: ClassVar[str] = \"physical essence\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhysicalEssence\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PhysicalEntity(NamedThing):\n",
      "    \"\"\"\n",
      "    An entity that has material reality (a.k.a. physical essence).\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhysicalEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhysicalEntity\"\n",
      "    class_name: ClassVar[str] = \"physical entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhysicalEntity\n",
      "\n",
      "    id: Union[str, PhysicalEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PhysicalEntityId):\n",
      "            self.id = PhysicalEntityId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "class Occurrent(PhysicalEssenceOrOccurrent):\n",
      "    \"\"\"\n",
      "    A processual entity.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Occurrent\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Occurrent\"\n",
      "    class_name: ClassVar[str] = \"occurrent\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Occurrent\n",
      "\n",
      "\n",
      "class ActivityAndBehavior(Occurrent):\n",
      "    \"\"\"\n",
      "    Activity or behavior of any independent integral living, organization or mechanical actor in the world\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ActivityAndBehavior\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ActivityAndBehavior\"\n",
      "    class_name: ClassVar[str] = \"activity and behavior\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ActivityAndBehavior\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Activity(NamedThing):\n",
      "    \"\"\"\n",
      "    An activity is something that occurs over a period of time and acts upon or with entities; it may include\n",
      "    consuming, processing, transforming, modifying, relocating, using, or generating entities.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Activity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Activity\"\n",
      "    class_name: ClassVar[str] = \"activity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Activity\n",
      "\n",
      "    id: Union[str, ActivityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ActivityId):\n",
      "            self.id = ActivityId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Procedure(NamedThing):\n",
      "    \"\"\"\n",
      "    A series of actions conducted in a certain order or manner\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Procedure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Procedure\"\n",
      "    class_name: ClassVar[str] = \"procedure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Procedure\n",
      "\n",
      "    id: Union[str, ProcedureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ProcedureId):\n",
      "            self.id = ProcedureId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Phenomenon(NamedThing):\n",
      "    \"\"\"\n",
      "    a fact or situation that is observed to exist or happen, especially one whose cause or explanation is in question\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Phenomenon\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Phenomenon\"\n",
      "    class_name: ClassVar[str] = \"phenomenon\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Phenomenon\n",
      "\n",
      "    id: Union[str, PhenomenonId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PhenomenonId):\n",
      "            self.id = PhenomenonId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Device(NamedThing):\n",
      "    \"\"\"\n",
      "    A thing made or adapted for a particular purpose, especially a piece of mechanical or electronic equipment\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Device\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Device\"\n",
      "    class_name: ClassVar[str] = \"device\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Device\n",
      "\n",
      "    id: Union[str, DeviceId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DeviceId):\n",
      "            self.id = DeviceId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "class SubjectOfInvestigation(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An entity that has the role of being studied in an investigation, study, or experiment\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SubjectOfInvestigation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SubjectOfInvestigation\"\n",
      "    class_name: ClassVar[str] = \"subject of investigation\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SubjectOfInvestigation\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MaterialSample(PhysicalEntity):\n",
      "    \"\"\"\n",
      "    A sample is a limited quantity of something (e.g. an individual or set of individuals from a population, or a\n",
      "    portion of a substance) to be used for testing, analysis, inspection, investigation, demonstration, or trial use.\n",
      "    [SIO]\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MaterialSample\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MaterialSample\"\n",
      "    class_name: ClassVar[str] = \"material sample\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MaterialSample\n",
      "\n",
      "    id: Union[str, MaterialSampleId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MaterialSampleId):\n",
      "            self.id = MaterialSampleId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PlanetaryEntity(NamedThing):\n",
      "    \"\"\"\n",
      "    Any entity or process that exists at the level of the whole planet\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PlanetaryEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PlanetaryEntity\"\n",
      "    class_name: ClassVar[str] = \"planetary entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PlanetaryEntity\n",
      "\n",
      "    id: Union[str, PlanetaryEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PlanetaryEntityId):\n",
      "            self.id = PlanetaryEntityId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EnvironmentalProcess(PlanetaryEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EnvironmentalProcess\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EnvironmentalProcess\"\n",
      "    class_name: ClassVar[str] = \"environmental process\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EnvironmentalProcess\n",
      "\n",
      "    id: Union[str, EnvironmentalProcessId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EnvironmentalProcessId):\n",
      "            self.id = EnvironmentalProcessId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EnvironmentalFeature(PlanetaryEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EnvironmentalFeature\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EnvironmentalFeature\"\n",
      "    class_name: ClassVar[str] = \"environmental feature\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EnvironmentalFeature\n",
      "\n",
      "    id: Union[str, EnvironmentalFeatureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EnvironmentalFeatureId):\n",
      "            self.id = EnvironmentalFeatureId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeographicLocation(PlanetaryEntity):\n",
      "    \"\"\"\n",
      "    a location that can be described in lat/long coordinates\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeographicLocation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeographicLocation\"\n",
      "    class_name: ClassVar[str] = \"geographic location\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeographicLocation\n",
      "\n",
      "    id: Union[str, GeographicLocationId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    latitude: Optional[float] = None\n",
      "    longitude: Optional[float] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeographicLocationId):\n",
      "            self.id = GeographicLocationId(self.id)\n",
      "\n",
      "        if self.latitude is not None and not isinstance(self.latitude, float):\n",
      "            self.latitude = float(self.latitude)\n",
      "\n",
      "        if self.longitude is not None and not isinstance(self.longitude, float):\n",
      "            self.longitude = float(self.longitude)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeographicLocationAtTime(GeographicLocation):\n",
      "    \"\"\"\n",
      "    a location that can be described in lat/long coordinates, for a particular time\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeographicLocationAtTime\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeographicLocationAtTime\"\n",
      "    class_name: ClassVar[str] = \"geographic location at time\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeographicLocationAtTime\n",
      "\n",
      "    id: Union[str, GeographicLocationAtTimeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeographicLocationAtTimeId):\n",
      "            self.id = GeographicLocationAtTimeId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BiologicalEntity(NamedThing):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BiologicalEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BiologicalEntity\"\n",
      "    class_name: ClassVar[str] = \"biological entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BiologicalEntity\n",
      "\n",
      "    id: Union[str, BiologicalEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "@dataclass\n",
      "class ThingWithTaxon(YAMLRoot):\n",
      "    \"\"\"\n",
      "    A mixin that can be used on any entity that can be taxonomically classified. This includes individual organisms;\n",
      "    genes, their products and other molecular entities; body parts; biological processes\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ThingWithTaxon\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ThingWithTaxon\"\n",
      "    class_name: ClassVar[str] = \"thing with taxon\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ThingWithTaxon\n",
      "\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MolecularEntity(BiologicalEntity):\n",
      "    \"\"\"\n",
      "    A gene, gene product, small molecule or macromolecule (including protein complex)\"\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MolecularEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MolecularEntity\"\n",
      "    class_name: ClassVar[str] = \"molecular entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MolecularEntity\n",
      "\n",
      "    id: Union[str, MolecularEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MolecularEntityId):\n",
      "            self.id = MolecularEntityId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BiologicalProcessOrActivity(BiologicalEntity):\n",
      "    \"\"\"\n",
      "    Either an individual molecular activity, or a collection of causally connected molecular activities\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BiologicalProcessOrActivity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BiologicalProcessOrActivity\"\n",
      "    class_name: ClassVar[str] = \"biological process or activity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BiologicalProcessOrActivity\n",
      "\n",
      "    id: Union[str, BiologicalProcessOrActivityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_input: Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]] = empty_list()\n",
      "    has_output: Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]] = empty_list()\n",
      "    enabled_by: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BiologicalProcessOrActivityId):\n",
      "            self.id = BiologicalProcessOrActivityId(self.id)\n",
      "\n",
      "        if self.has_input is None:\n",
      "            self.has_input = []\n",
      "        if not isinstance(self.has_input, list):\n",
      "            self.has_input = [self.has_input]\n",
      "        self.has_input = [v if isinstance(v, NamedThingId) else NamedThingId(v) for v in self.has_input]\n",
      "\n",
      "        if self.has_output is None:\n",
      "            self.has_output = []\n",
      "        if not isinstance(self.has_output, list):\n",
      "            self.has_output = [self.has_output]\n",
      "        self.has_output = [v if isinstance(v, NamedThingId) else NamedThingId(v) for v in self.has_output]\n",
      "\n",
      "        if self.enabled_by is None:\n",
      "            self.enabled_by = []\n",
      "        if not isinstance(self.enabled_by, list):\n",
      "            self.enabled_by = [self.enabled_by]\n",
      "        self.enabled_by = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.enabled_by]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MolecularActivity(BiologicalProcessOrActivity):\n",
      "    \"\"\"\n",
      "    An execution of a molecular function carried out by a gene product or macromolecular complex.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MolecularActivity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MolecularActivity\"\n",
      "    class_name: ClassVar[str] = \"molecular activity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MolecularActivity\n",
      "\n",
      "    id: Union[str, MolecularActivityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_input: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "    has_output: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "    enabled_by: Optional[Union[Union[str, MacromolecularMachineId], List[Union[str, MacromolecularMachineId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MolecularActivityId):\n",
      "            self.id = MolecularActivityId(self.id)\n",
      "\n",
      "        if self.has_input is None:\n",
      "            self.has_input = []\n",
      "        if not isinstance(self.has_input, list):\n",
      "            self.has_input = [self.has_input]\n",
      "        self.has_input = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_input]\n",
      "\n",
      "        if self.has_output is None:\n",
      "            self.has_output = []\n",
      "        if not isinstance(self.has_output, list):\n",
      "            self.has_output = [self.has_output]\n",
      "        self.has_output = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_output]\n",
      "\n",
      "        if self.enabled_by is None:\n",
      "            self.enabled_by = []\n",
      "        if not isinstance(self.enabled_by, list):\n",
      "            self.enabled_by = [self.enabled_by]\n",
      "        self.enabled_by = [v if isinstance(v, MacromolecularMachineId) else MacromolecularMachineId(v) for v in self.enabled_by]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BiologicalProcess(BiologicalProcessOrActivity):\n",
      "    \"\"\"\n",
      "    One or more causally connected executions of molecular functions\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BiologicalProcess\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BiologicalProcess\"\n",
      "    class_name: ClassVar[str] = \"biological process\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BiologicalProcess\n",
      "\n",
      "    id: Union[str, BiologicalProcessId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BiologicalProcessId):\n",
      "            self.id = BiologicalProcessId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Pathway(BiologicalProcess):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Pathway\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Pathway\"\n",
      "    class_name: ClassVar[str] = \"pathway\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Pathway\n",
      "\n",
      "    id: Union[str, PathwayId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PathwayId):\n",
      "            self.id = PathwayId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PhysiologicalProcess(BiologicalProcess):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhysiologicalProcess\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhysiologicalProcess\"\n",
      "    class_name: ClassVar[str] = \"physiological process\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhysiologicalProcess\n",
      "\n",
      "    id: Union[str, PhysiologicalProcessId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PhysiologicalProcessId):\n",
      "            self.id = PhysiologicalProcessId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PathologicalProcess(BiologicalProcess):\n",
      "    \"\"\"\n",
      "    A biologic function or a process having an abnormal or deleterious effect at the subcellular, cellular,\n",
      "    multicellular, or organismal level.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PathologicalProcess\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PathologicalProcess\"\n",
      "    class_name: ClassVar[str] = \"pathological process\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PathologicalProcess\n",
      "\n",
      "    id: Union[str, PathologicalProcessId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PathologicalProcessId):\n",
      "            self.id = PathologicalProcessId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Behavior(BiologicalProcess):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Behavior\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Behavior\"\n",
      "    class_name: ClassVar[str] = \"behavior\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Behavior\n",
      "\n",
      "    id: Union[str, BehaviorId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BehaviorId):\n",
      "            self.id = BehaviorId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Death(BiologicalProcess):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Death\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Death\"\n",
      "    class_name: ClassVar[str] = \"death\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Death\n",
      "\n",
      "    id: Union[str, DeathId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DeathId):\n",
      "            self.id = DeathId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Mixture(YAMLRoot):\n",
      "    \"\"\"\n",
      "    The physical combination of two or more molecular entities in which the identities are retained and are mixed in\n",
      "    the form of solutions, suspensions and colloids.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Mixture\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Mixture\"\n",
      "    class_name: ClassVar[str] = \"mixture\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Mixture\n",
      "\n",
      "    has_constituent: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_constituent is None:\n",
      "            self.has_constituent = []\n",
      "        if not isinstance(self.has_constituent, list):\n",
      "            self.has_constituent = [self.has_constituent]\n",
      "        self.has_constituent = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_constituent]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalSubstance(MolecularEntity):\n",
      "    \"\"\"\n",
      "    May be a chemical entity or a formulation with a chemical entity as active ingredient, or a complex material with\n",
      "    multiple chemical entities as part\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalSubstance\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalSubstance\"\n",
      "    class_name: ClassVar[str] = \"chemical substance\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalSubstance\n",
      "\n",
      "    id: Union[str, ChemicalSubstanceId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalSubstanceId):\n",
      "            self.id = ChemicalSubstanceId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Carbohydrate(ChemicalSubstance):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Carbohydrate\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Carbohydrate\"\n",
      "    class_name: ClassVar[str] = \"carbohydrate\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Carbohydrate\n",
      "\n",
      "    id: Union[str, CarbohydrateId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CarbohydrateId):\n",
      "            self.id = CarbohydrateId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ProcessedMaterial(ChemicalSubstance):\n",
      "    \"\"\"\n",
      "    A chemical substance (often a mixture) processed for consumption for nutritional, medical or technical use.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ProcessedMaterial\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ProcessedMaterial\"\n",
      "    class_name: ClassVar[str] = \"processed material\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ProcessedMaterial\n",
      "\n",
      "    id: Union[str, ProcessedMaterialId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_constituent: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ProcessedMaterialId):\n",
      "            self.id = ProcessedMaterialId(self.id)\n",
      "\n",
      "        if self.has_constituent is None:\n",
      "            self.has_constituent = []\n",
      "        if not isinstance(self.has_constituent, list):\n",
      "            self.has_constituent = [self.has_constituent]\n",
      "        self.has_constituent = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_constituent]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Drug(MolecularEntity):\n",
      "    \"\"\"\n",
      "    A substance intended for use in the diagnosis, cure, mitigation, treatment, or prevention of disease\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Drug\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Drug\"\n",
      "    class_name: ClassVar[str] = \"drug\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Drug\n",
      "\n",
      "    id: Union[str, DrugId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_active_ingredient: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "    has_excipient: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "    has_constituent: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DrugId):\n",
      "            self.id = DrugId(self.id)\n",
      "\n",
      "        if self.has_active_ingredient is None:\n",
      "            self.has_active_ingredient = []\n",
      "        if not isinstance(self.has_active_ingredient, list):\n",
      "            self.has_active_ingredient = [self.has_active_ingredient]\n",
      "        self.has_active_ingredient = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_active_ingredient]\n",
      "\n",
      "        if self.has_excipient is None:\n",
      "            self.has_excipient = []\n",
      "        if not isinstance(self.has_excipient, list):\n",
      "            self.has_excipient = [self.has_excipient]\n",
      "        self.has_excipient = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_excipient]\n",
      "\n",
      "        if self.has_constituent is None:\n",
      "            self.has_constituent = []\n",
      "        if not isinstance(self.has_constituent, list):\n",
      "            self.has_constituent = [self.has_constituent]\n",
      "        self.has_constituent = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_constituent]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Food(MolecularEntity):\n",
      "    \"\"\"\n",
      "    A substance consumed by a living organism as a source of nutrition\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Food\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Food\"\n",
      "    class_name: ClassVar[str] = \"food\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Food\n",
      "\n",
      "    id: Union[str, FoodId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_nutrient: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "    has_constituent: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, FoodId):\n",
      "            self.id = FoodId(self.id)\n",
      "\n",
      "        if self.has_nutrient is None:\n",
      "            self.has_nutrient = []\n",
      "        if not isinstance(self.has_nutrient, list):\n",
      "            self.has_nutrient = [self.has_nutrient]\n",
      "        self.has_nutrient = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_nutrient]\n",
      "\n",
      "        if self.has_constituent is None:\n",
      "            self.has_constituent = []\n",
      "        if not isinstance(self.has_constituent, list):\n",
      "            self.has_constituent = [self.has_constituent]\n",
      "        self.has_constituent = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_constituent]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Metabolite(ChemicalSubstance):\n",
      "    \"\"\"\n",
      "    Any intermediate or product resulting from metabolism. Includes primary and secondary metabolites.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Metabolite\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Metabolite\"\n",
      "    class_name: ClassVar[str] = \"metabolite\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Metabolite\n",
      "\n",
      "    id: Union[str, MetaboliteId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MetaboliteId):\n",
      "            self.id = MetaboliteId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class OrganismAttribute(Attribute):\n",
      "    \"\"\"\n",
      "    describes a characteristic of an organismal entity.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.OrganismAttribute\n",
      "    class_class_curie: ClassVar[str] = \"biolink:OrganismAttribute\"\n",
      "    class_name: ClassVar[str] = \"organism attribute\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.OrganismAttribute\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class Inheritance(OrganismAttribute):\n",
      "    \"\"\"\n",
      "    The pattern or 'mode' in which a particular genetic trait or disorder is passed from one generation to the next,\n",
      "    e.g. autosomal dominant, autosomal recessive, etc.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Inheritance\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Inheritance\"\n",
      "    class_name: ClassVar[str] = \"inheritance\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Inheritance\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class OrganismalEntity(BiologicalEntity):\n",
      "    \"\"\"\n",
      "    A named entity that is either a part of an organism, a whole organism, population or clade of organisms, excluding\n",
      "    molecular entities\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.OrganismalEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:OrganismalEntity\"\n",
      "    class_name: ClassVar[str] = \"organismal entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.OrganismalEntity\n",
      "\n",
      "    id: Union[str, OrganismalEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_attribute: Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_attribute is None:\n",
      "            self.has_attribute = []\n",
      "        if not isinstance(self.has_attribute, list):\n",
      "            self.has_attribute = [self.has_attribute]\n",
      "        self._normalize_inlined_slot(slot_name=\"has_attribute\", slot_type=Attribute, key_name=\"has attribute type\", inlined_as_list=True, keyed=False)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class LifeStage(OrganismalEntity):\n",
      "    \"\"\"\n",
      "    A stage of development or growth of an organism, including post-natal adult stages\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.LifeStage\n",
      "    class_class_curie: ClassVar[str] = \"biolink:LifeStage\"\n",
      "    class_name: ClassVar[str] = \"life stage\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.LifeStage\n",
      "\n",
      "    id: Union[str, LifeStageId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, LifeStageId):\n",
      "            self.id = LifeStageId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class IndividualOrganism(OrganismalEntity):\n",
      "    \"\"\"\n",
      "    An instance of an organism. For example, Richard Nixon, Charles Darwin, my pet cat. Example ID:\n",
      "    ORCID:0000-0002-5355-2576\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.IndividualOrganism\n",
      "    class_class_curie: ClassVar[str] = \"biolink:IndividualOrganism\"\n",
      "    class_name: ClassVar[str] = \"individual organism\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.IndividualOrganism\n",
      "\n",
      "    id: Union[str, IndividualOrganismId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, IndividualOrganismId):\n",
      "            self.id = IndividualOrganismId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PopulationOfIndividualOrganisms(OrganismalEntity):\n",
      "    \"\"\"\n",
      "    A collection of individuals from the same taxonomic class distinguished by one or more characteristics.\n",
      "    Characteristics can include, but are not limited to, shared geographic location, genetics, phenotypes [Alliance\n",
      "    for Genome Resources]\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PopulationOfIndividualOrganisms\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PopulationOfIndividualOrganisms\"\n",
      "    class_name: ClassVar[str] = \"population of individual organisms\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PopulationOfIndividualOrganisms\n",
      "\n",
      "    id: Union[str, PopulationOfIndividualOrganismsId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PopulationOfIndividualOrganismsId):\n",
      "            self.id = PopulationOfIndividualOrganismsId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class StudyPopulation(PopulationOfIndividualOrganisms):\n",
      "    \"\"\"\n",
      "    A group of people banded together or treated as a group as participants in a research study.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.StudyPopulation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:StudyPopulation\"\n",
      "    class_name: ClassVar[str] = \"study population\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.StudyPopulation\n",
      "\n",
      "    id: Union[str, StudyPopulationId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, StudyPopulationId):\n",
      "            self.id = StudyPopulationId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeature(BiologicalEntity):\n",
      "    \"\"\"\n",
      "    Either one of a disease or an individual phenotypic feature. Some knowledge resources such as Monarch treat these\n",
      "    as distinct, others such as MESH conflate.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeature\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeature\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeature\n",
      "\n",
      "    id: Union[str, DiseaseOrPhenotypicFeatureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseOrPhenotypicFeatureId):\n",
      "            self.id = DiseaseOrPhenotypicFeatureId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Disease(DiseaseOrPhenotypicFeature):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Disease\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Disease\"\n",
      "    class_name: ClassVar[str] = \"disease\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Disease\n",
      "\n",
      "    id: Union[str, DiseaseId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseId):\n",
      "            self.id = DiseaseId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PhenotypicFeature(DiseaseOrPhenotypicFeature):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PhenotypicFeature\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PhenotypicFeature\"\n",
      "    class_name: ClassVar[str] = \"phenotypic feature\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PhenotypicFeature\n",
      "\n",
      "    id: Union[str, PhenotypicFeatureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PhenotypicFeatureId):\n",
      "            self.id = PhenotypicFeatureId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class AnatomicalEntity(OrganismalEntity):\n",
      "    \"\"\"\n",
      "    A subcellular location, cell type or gross anatomical part\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.AnatomicalEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:AnatomicalEntity\"\n",
      "    class_name: ClassVar[str] = \"anatomical entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.AnatomicalEntity\n",
      "\n",
      "    id: Union[str, AnatomicalEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    in_taxon: Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AnatomicalEntityId):\n",
      "            self.id = AnatomicalEntityId(self.id)\n",
      "\n",
      "        if self.in_taxon is None:\n",
      "            self.in_taxon = []\n",
      "        if not isinstance(self.in_taxon, list):\n",
      "            self.in_taxon = [self.in_taxon]\n",
      "        self.in_taxon = [v if isinstance(v, OrganismTaxonId) else OrganismTaxonId(v) for v in self.in_taxon]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CellularComponent(AnatomicalEntity):\n",
      "    \"\"\"\n",
      "    A location in or around a cell\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CellularComponent\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CellularComponent\"\n",
      "    class_name: ClassVar[str] = \"cellular component\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CellularComponent\n",
      "\n",
      "    id: Union[str, CellularComponentId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CellularComponentId):\n",
      "            self.id = CellularComponentId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Cell(AnatomicalEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Cell\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Cell\"\n",
      "    class_name: ClassVar[str] = \"cell\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Cell\n",
      "\n",
      "    id: Union[str, CellId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CellId):\n",
      "            self.id = CellId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CellLine(OrganismalEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CellLine\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CellLine\"\n",
      "    class_name: ClassVar[str] = \"cell line\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CellLine\n",
      "\n",
      "    id: Union[str, CellLineId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CellLineId):\n",
      "            self.id = CellLineId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GrossAnatomicalStructure(AnatomicalEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GrossAnatomicalStructure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GrossAnatomicalStructure\"\n",
      "    class_name: ClassVar[str] = \"gross anatomical structure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GrossAnatomicalStructure\n",
      "\n",
      "    id: Union[str, GrossAnatomicalStructureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GrossAnatomicalStructureId):\n",
      "            self.id = GrossAnatomicalStructureId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenomicEntity(MolecularEntity):\n",
      "    \"\"\"\n",
      "    an entity that can either be directly located on a genome (gene, transcript, exon, regulatory region) or is\n",
      "    encoded in a genome (protein)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenomicEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenomicEntity\"\n",
      "    class_name: ClassVar[str] = \"genomic entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenomicEntity\n",
      "\n",
      "    id: Union[str, GenomicEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_biological_sequence: Optional[Union[str, BiologicalSequence]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenomicEntityId):\n",
      "            self.id = GenomicEntityId(self.id)\n",
      "\n",
      "        if self.has_biological_sequence is not None and not isinstance(self.has_biological_sequence, BiologicalSequence):\n",
      "            self.has_biological_sequence = BiologicalSequence(self.has_biological_sequence)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Genome(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A genome is the sum of genetic material within a cell or virion.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Genome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Genome\"\n",
      "    class_name: ClassVar[str] = \"genome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Genome\n",
      "\n",
      "    id: Union[str, GenomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenomeId):\n",
      "            self.id = GenomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Exon(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A region of the transcript sequence within a gene which is not removed from the primary RNA transcript by RNA\n",
      "    splicing\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Exon\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Exon\"\n",
      "    class_name: ClassVar[str] = \"exon\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Exon\n",
      "\n",
      "    id: Union[str, ExonId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ExonId):\n",
      "            self.id = ExonId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CodingSequence(GenomicEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CodingSequence\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CodingSequence\"\n",
      "    class_name: ClassVar[str] = \"coding sequence\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CodingSequence\n",
      "\n",
      "    id: Union[str, CodingSequenceId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CodingSequenceId):\n",
      "            self.id = CodingSequenceId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MacromolecularMachine(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A union of gene, gene product, and macromolecular complex. These are the basic units of function in a cell. They\n",
      "    either carry out individual biological activities, or they encode molecules which do this.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MacromolecularMachine\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MacromolecularMachine\"\n",
      "    class_name: ClassVar[str] = \"macromolecular machine\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MacromolecularMachine\n",
      "\n",
      "    id: Union[str, MacromolecularMachineId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    name: Optional[Union[str, SymbolType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MacromolecularMachineId):\n",
      "            self.id = MacromolecularMachineId(self.id)\n",
      "\n",
      "        if self.name is not None and not isinstance(self.name, SymbolType):\n",
      "            self.name = SymbolType(self.name)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneOrGeneProduct(MacromolecularMachine):\n",
      "    \"\"\"\n",
      "    a union of genes or gene products. Frequently an identifier for one will be used as proxy for another\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneOrGeneProduct\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneOrGeneProduct\"\n",
      "    class_name: ClassVar[str] = \"gene or gene product\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneOrGeneProduct\n",
      "\n",
      "    id: Union[str, GeneOrGeneProductId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneOrGeneProductId):\n",
      "            self.id = GeneOrGeneProductId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Gene(GeneOrGeneProduct):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Gene\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Gene\"\n",
      "    class_name: ClassVar[str] = \"gene\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Gene\n",
      "\n",
      "    id: Union[str, GeneId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    symbol: Optional[str] = None\n",
      "    synonym: Optional[Union[Union[str, LabelType], List[Union[str, LabelType]]]] = empty_list()\n",
      "    xref: Optional[Union[Union[str, IriType], List[Union[str, IriType]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneId):\n",
      "            self.id = GeneId(self.id)\n",
      "\n",
      "        if self.symbol is not None and not isinstance(self.symbol, str):\n",
      "            self.symbol = str(self.symbol)\n",
      "\n",
      "        if self.synonym is None:\n",
      "            self.synonym = []\n",
      "        if not isinstance(self.synonym, list):\n",
      "            self.synonym = [self.synonym]\n",
      "        self.synonym = [v if isinstance(v, LabelType) else LabelType(v) for v in self.synonym]\n",
      "\n",
      "        if self.xref is None:\n",
      "            self.xref = []\n",
      "        if not isinstance(self.xref, list):\n",
      "            self.xref = [self.xref]\n",
      "        self.xref = [v if isinstance(v, IriType) else IriType(v) for v in self.xref]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MyGene(Gene):\n",
      "    \"\"\"\n",
      "    This is an example extension.  Doesn't do a lot\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = DIST.MyGene\n",
      "    class_class_curie: ClassVar[str] = \"dist:MyGene\"\n",
      "    class_name: ClassVar[str] = \"my gene\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MyGene\n",
      "\n",
      "    id: Union[str, MyGeneId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    gene_has_sequence: Union[str, GeneSequence] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MyGeneId):\n",
      "            self.id = MyGeneId(self.id)\n",
      "\n",
      "        if self.gene_has_sequence is None:\n",
      "            raise ValueError(\"gene_has_sequence must be supplied\")\n",
      "        if not isinstance(self.gene_has_sequence, GeneSequence):\n",
      "            self.gene_has_sequence = GeneSequence(self.gene_has_sequence)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneProduct(GeneOrGeneProduct):\n",
      "    \"\"\"\n",
      "    The functional molecular product of a single gene. Gene products are either proteins or functional RNA molecules\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneProduct\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneProduct\"\n",
      "    class_name: ClassVar[str] = \"gene product\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneProduct\n",
      "\n",
      "    id: Union[str, GeneProductId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    synonym: Optional[Union[Union[str, LabelType], List[Union[str, LabelType]]]] = empty_list()\n",
      "    xref: Optional[Union[Union[str, IriType], List[Union[str, IriType]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneProductId):\n",
      "            self.id = GeneProductId(self.id)\n",
      "\n",
      "        if self.synonym is None:\n",
      "            self.synonym = []\n",
      "        if not isinstance(self.synonym, list):\n",
      "            self.synonym = [self.synonym]\n",
      "        self.synonym = [v if isinstance(v, LabelType) else LabelType(v) for v in self.synonym]\n",
      "\n",
      "        if self.xref is None:\n",
      "            self.xref = []\n",
      "        if not isinstance(self.xref, list):\n",
      "            self.xref = [self.xref]\n",
      "        self.xref = [v if isinstance(v, IriType) else IriType(v) for v in self.xref]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Transcript(GeneProduct):\n",
      "    \"\"\"\n",
      "    An RNA synthesized on a DNA or RNA template by an RNA polymerase\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Transcript\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Transcript\"\n",
      "    class_name: ClassVar[str] = \"transcript\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Transcript\n",
      "\n",
      "    id: Union[str, TranscriptId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, TranscriptId):\n",
      "            self.id = TranscriptId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Protein(GeneProduct):\n",
      "    \"\"\"\n",
      "    A gene product that is composed of a chain of amino acid sequences and is produced by ribosome-mediated\n",
      "    translation of mRNA\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Protein\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Protein\"\n",
      "    class_name: ClassVar[str] = \"protein\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Protein\n",
      "\n",
      "    id: Union[str, ProteinId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ProteinId):\n",
      "            self.id = ProteinId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "class GeneProductIsoform(YAMLRoot):\n",
      "    \"\"\"\n",
      "    This is an abstract class that can be mixed in with different kinds of gene products to indicate that the gene\n",
      "    product is intended to represent a specific isoform rather than a canonical or reference or generic product. The\n",
      "    designation of canonical or reference may be arbitrary, or it may represent the superclass of all isoforms.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneProductIsoform\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneProductIsoform\"\n",
      "    class_name: ClassVar[str] = \"gene product isoform\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneProductIsoform\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ProteinIsoform(Protein):\n",
      "    \"\"\"\n",
      "    Represents a protein that is a specific isoform of the canonical or reference protein. See\n",
      "    https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4114032/\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ProteinIsoform\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ProteinIsoform\"\n",
      "    class_name: ClassVar[str] = \"protein isoform\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ProteinIsoform\n",
      "\n",
      "    id: Union[str, ProteinIsoformId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ProteinIsoformId):\n",
      "            self.id = ProteinIsoformId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class RNAProduct(GeneProduct):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.RNAProduct\n",
      "    class_class_curie: ClassVar[str] = \"biolink:RNAProduct\"\n",
      "    class_name: ClassVar[str] = \"RNA product\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.RNAProduct\n",
      "\n",
      "    id: Union[str, RNAProductId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, RNAProductId):\n",
      "            self.id = RNAProductId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class RNAProductIsoform(RNAProduct):\n",
      "    \"\"\"\n",
      "    Represents a protein that is a specific isoform of the canonical or reference RNA\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.RNAProductIsoform\n",
      "    class_class_curie: ClassVar[str] = \"biolink:RNAProductIsoform\"\n",
      "    class_name: ClassVar[str] = \"RNA product isoform\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.RNAProductIsoform\n",
      "\n",
      "    id: Union[str, RNAProductIsoformId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, RNAProductIsoformId):\n",
      "            self.id = RNAProductIsoformId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class NoncodingRNAProduct(RNAProduct):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.NoncodingRNAProduct\n",
      "    class_class_curie: ClassVar[str] = \"biolink:NoncodingRNAProduct\"\n",
      "    class_name: ClassVar[str] = \"noncoding RNA product\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.NoncodingRNAProduct\n",
      "\n",
      "    id: Union[str, NoncodingRNAProductId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, NoncodingRNAProductId):\n",
      "            self.id = NoncodingRNAProductId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MicroRNA(NoncodingRNAProduct):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MicroRNA\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MicroRNA\"\n",
      "    class_name: ClassVar[str] = \"microRNA\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MicroRNA\n",
      "\n",
      "    id: Union[str, MicroRNAId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MicroRNAId):\n",
      "            self.id = MicroRNAId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SiRNA(NoncodingRNAProduct):\n",
      "    \"\"\"\n",
      "    A small RNA molecule that is the product of a longer exogenous or endogenous dsRNA, which is either a bimolecular\n",
      "    duplex or very long hairpin, processed (via the Dicer pathway) such that numerous siRNAs accumulate from both\n",
      "    strands of the dsRNA. SRNAs trigger the cleavage of their target molecules.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SiRNA\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SiRNA\"\n",
      "    class_name: ClassVar[str] = \"siRNA\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SiRNA\n",
      "\n",
      "    id: Union[str, SiRNAId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SiRNAId):\n",
      "            self.id = SiRNAId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MacromolecularComplex(MacromolecularMachine):\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MacromolecularComplex\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MacromolecularComplex\"\n",
      "    class_name: ClassVar[str] = \"macromolecular complex\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MacromolecularComplex\n",
      "\n",
      "    id: Union[str, MacromolecularComplexId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MacromolecularComplexId):\n",
      "            self.id = MacromolecularComplexId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneGroupingMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    any grouping of multiple genes or gene products\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneGroupingMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneGroupingMixin\"\n",
      "    class_name: ClassVar[str] = \"gene grouping mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneGroupingMixin\n",
      "\n",
      "    has_gene_or_gene_product: Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_gene_or_gene_product is None:\n",
      "            self.has_gene_or_gene_product = []\n",
      "        if not isinstance(self.has_gene_or_gene_product, list):\n",
      "            self.has_gene_or_gene_product = [self.has_gene_or_gene_product]\n",
      "        self.has_gene_or_gene_product = [v if isinstance(v, GeneId) else GeneId(v) for v in self.has_gene_or_gene_product]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneFamily(MolecularEntity):\n",
      "    \"\"\"\n",
      "    any grouping of multiple genes or gene products related by common descent\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneFamily\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneFamily\"\n",
      "    class_name: ClassVar[str] = \"gene family\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneFamily\n",
      "\n",
      "    id: Union[str, GeneFamilyId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_gene_or_gene_product: Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneFamilyId):\n",
      "            self.id = GeneFamilyId(self.id)\n",
      "\n",
      "        if self.has_gene_or_gene_product is None:\n",
      "            self.has_gene_or_gene_product = []\n",
      "        if not isinstance(self.has_gene_or_gene_product, list):\n",
      "            self.has_gene_or_gene_product = [self.has_gene_or_gene_product]\n",
      "        self.has_gene_or_gene_product = [v if isinstance(v, GeneId) else GeneId(v) for v in self.has_gene_or_gene_product]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Zygosity(Attribute):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Zygosity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Zygosity\"\n",
      "    class_name: ClassVar[str] = \"zygosity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Zygosity\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class Genotype(GenomicEntity):\n",
      "    \"\"\"\n",
      "    An information content entity that describes a genome by specifying the total variation in genomic sequence and/or\n",
      "    gene expression, relative to some established background\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Genotype\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Genotype\"\n",
      "    class_name: ClassVar[str] = \"genotype\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Genotype\n",
      "\n",
      "    id: Union[str, GenotypeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_zygosity: Optional[Union[dict, Zygosity]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeId):\n",
      "            self.id = GenotypeId(self.id)\n",
      "\n",
      "        if self.has_zygosity is not None and not isinstance(self.has_zygosity, Zygosity):\n",
      "            self.has_zygosity = Zygosity(**self.has_zygosity)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Haplotype(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A set of zero or more Alleles on a single instance of a Sequence[VMC]\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Haplotype\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Haplotype\"\n",
      "    class_name: ClassVar[str] = \"haplotype\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Haplotype\n",
      "\n",
      "    id: Union[str, HaplotypeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, HaplotypeId):\n",
      "            self.id = HaplotypeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SequenceVariant(GenomicEntity):\n",
      "    \"\"\"\n",
      "    An allele that varies in its sequence from what is considered the reference allele at that locus.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SequenceVariant\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SequenceVariant\"\n",
      "    class_name: ClassVar[str] = \"sequence variant\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SequenceVariant\n",
      "\n",
      "    id: Union[str, SequenceVariantId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_gene: Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]] = empty_list()\n",
      "    has_biological_sequence: Optional[Union[str, BiologicalSequence]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SequenceVariantId):\n",
      "            self.id = SequenceVariantId(self.id)\n",
      "\n",
      "        if self.has_gene is None:\n",
      "            self.has_gene = []\n",
      "        if not isinstance(self.has_gene, list):\n",
      "            self.has_gene = [self.has_gene]\n",
      "        self.has_gene = [v if isinstance(v, GeneId) else GeneId(v) for v in self.has_gene]\n",
      "\n",
      "        if self.has_biological_sequence is not None and not isinstance(self.has_biological_sequence, BiologicalSequence):\n",
      "            self.has_biological_sequence = BiologicalSequence(self.has_biological_sequence)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Snv(SequenceVariant):\n",
      "    \"\"\"\n",
      "    SNVs are single nucleotide positions in genomic DNA at which different sequence alternatives exist\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Snv\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Snv\"\n",
      "    class_name: ClassVar[str] = \"snv\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Snv\n",
      "\n",
      "    id: Union[str, SnvId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SnvId):\n",
      "            self.id = SnvId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ReagentTargetedGene(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A gene altered in its expression level in the context of some experiment as a result of being targeted by\n",
      "    gene-knockdown reagent(s) such as a morpholino or RNAi.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ReagentTargetedGene\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ReagentTargetedGene\"\n",
      "    class_name: ClassVar[str] = \"reagent targeted gene\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ReagentTargetedGene\n",
      "\n",
      "    id: Union[str, ReagentTargetedGeneId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ReagentTargetedGeneId):\n",
      "            self.id = ReagentTargetedGeneId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ClinicalAttribute(Attribute):\n",
      "    \"\"\"\n",
      "    Attributes relating to a clinical manifestation\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalAttribute\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalAttribute\"\n",
      "    class_name: ClassVar[str] = \"clinical attribute\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalAttribute\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class ClinicalMeasurement(ClinicalAttribute):\n",
      "    \"\"\"\n",
      "    A clinical measurement is a special kind of attribute which results from a laboratory observation from a subject\n",
      "    individual or sample. Measurements can be connected to their subject by the 'has attribute' slot.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalMeasurement\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalMeasurement\"\n",
      "    class_name: ClassVar[str] = \"clinical measurement\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalMeasurement\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.has_attribute_type is None:\n",
      "            raise ValueError(\"has_attribute_type must be supplied\")\n",
      "        if not isinstance(self.has_attribute_type, OntologyClassId):\n",
      "            self.has_attribute_type = OntologyClassId(self.has_attribute_type)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ClinicalModifier(ClinicalAttribute):\n",
      "    \"\"\"\n",
      "    Used to characterize and specify the phenotypic abnormalities defined in the phenotypic abnormality sub-ontology,\n",
      "    with respect to severity, laterality, and other aspects\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalModifier\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalModifier\"\n",
      "    class_name: ClassVar[str] = \"clinical modifier\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalModifier\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class ClinicalCourse(ClinicalAttribute):\n",
      "    \"\"\"\n",
      "    The course a disease typically takes from its onset, progression in time, and eventual resolution or death of the\n",
      "    affected individual\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalCourse\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalCourse\"\n",
      "    class_name: ClassVar[str] = \"clinical course\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalCourse\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class Onset(ClinicalCourse):\n",
      "    \"\"\"\n",
      "    The age group in which (disease) symptom manifestations appear\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Onset\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Onset\"\n",
      "    class_name: ClassVar[str] = \"onset\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Onset\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class ClinicalEntity(NamedThing):\n",
      "    \"\"\"\n",
      "    Any entity or process that exists in the clinical domain and outside the biological realm. Diseases are placed\n",
      "    under biological entities\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalEntity\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalEntity\"\n",
      "    class_name: ClassVar[str] = \"clinical entity\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalEntity\n",
      "\n",
      "    id: Union[str, ClinicalEntityId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ClinicalEntityId):\n",
      "            self.id = ClinicalEntityId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ClinicalTrial(ClinicalEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalTrial\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalTrial\"\n",
      "    class_name: ClassVar[str] = \"clinical trial\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalTrial\n",
      "\n",
      "    id: Union[str, ClinicalTrialId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ClinicalTrialId):\n",
      "            self.id = ClinicalTrialId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ClinicalIntervention(ClinicalEntity):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalIntervention\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalIntervention\"\n",
      "    class_name: ClassVar[str] = \"clinical intervention\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalIntervention\n",
      "\n",
      "    id: Union[str, ClinicalInterventionId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ClinicalInterventionId):\n",
      "            self.id = ClinicalInterventionId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ClinicalFinding(PhenotypicFeature):\n",
      "    \"\"\"\n",
      "    this category is currently considered broad enough to tag clinical lab measurements and other biological\n",
      "    attributes taken as 'clinical traits' with some statistical score, for example, a p value in genetic associations.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ClinicalFinding\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ClinicalFinding\"\n",
      "    class_name: ClassVar[str] = \"clinical finding\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ClinicalFinding\n",
      "\n",
      "    id: Union[str, ClinicalFindingId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_attribute: Optional[Union[Union[dict, ClinicalAttribute], List[Union[dict, ClinicalAttribute]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ClinicalFindingId):\n",
      "            self.id = ClinicalFindingId(self.id)\n",
      "\n",
      "        if self.has_attribute is None:\n",
      "            self.has_attribute = []\n",
      "        if not isinstance(self.has_attribute, list):\n",
      "            self.has_attribute = [self.has_attribute]\n",
      "        self._normalize_inlined_slot(slot_name=\"has_attribute\", slot_type=ClinicalAttribute, key_name=\"has attribute type\", inlined_as_list=True, keyed=False)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Hospitalization(ClinicalIntervention):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Hospitalization\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Hospitalization\"\n",
      "    class_name: ClassVar[str] = \"hospitalization\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Hospitalization\n",
      "\n",
      "    id: Union[str, HospitalizationId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, HospitalizationId):\n",
      "            self.id = HospitalizationId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SocioeconomicAttribute(Attribute):\n",
      "    \"\"\"\n",
      "    Attributes relating to a socioeconomic manifestation\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SocioeconomicAttribute\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SocioeconomicAttribute\"\n",
      "    class_name: ClassVar[str] = \"socioeconomic attribute\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SocioeconomicAttribute\n",
      "\n",
      "    has_attribute_type: Union[str, OntologyClassId] = None\n",
      "\n",
      "@dataclass\n",
      "class Case(IndividualOrganism):\n",
      "    \"\"\"\n",
      "    An individual (human) organism that has a patient role in some clinical context.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Case\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Case\"\n",
      "    class_name: ClassVar[str] = \"case\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Case\n",
      "\n",
      "    id: Union[str, CaseId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CaseId):\n",
      "            self.id = CaseId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Cohort(StudyPopulation):\n",
      "    \"\"\"\n",
      "    A group of people banded together or treated as a group who share common characteristics. A cohort 'study' is a\n",
      "    particular form of longitudinal study that samples a cohort, performing a cross-section at intervals through time.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Cohort\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Cohort\"\n",
      "    class_name: ClassVar[str] = \"cohort\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Cohort\n",
      "\n",
      "    id: Union[str, CohortId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CohortId):\n",
      "            self.id = CohortId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ExposureEvent(YAMLRoot):\n",
      "    \"\"\"\n",
      "    A (possibly time bounded) incidence of a feature of the environment of an organism that influences one or more\n",
      "    phenotypic features of that organism, potentially mediated by genes\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ExposureEvent\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ExposureEvent\"\n",
      "    class_name: ClassVar[str] = \"exposure event\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ExposureEvent\n",
      "\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenomicBackgroundExposure(GenomicEntity):\n",
      "    \"\"\"\n",
      "    A genomic background exposure is where an individual's specific genomic background of genes, sequence variants or\n",
      "    other pre-existing genomic conditions constitute a kind of 'exposure' to the organism, leading to or influencing\n",
      "    an outcome.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenomicBackgroundExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenomicBackgroundExposure\"\n",
      "    class_name: ClassVar[str] = \"genomic background exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenomicBackgroundExposure\n",
      "\n",
      "    id: Union[str, GenomicBackgroundExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "    has_gene_or_gene_product: Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenomicBackgroundExposureId):\n",
      "            self.id = GenomicBackgroundExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        if self.has_gene_or_gene_product is None:\n",
      "            self.has_gene_or_gene_product = []\n",
      "        if not isinstance(self.has_gene_or_gene_product, list):\n",
      "            self.has_gene_or_gene_product = [self.has_gene_or_gene_product]\n",
      "        self.has_gene_or_gene_product = [v if isinstance(v, GeneId) else GeneId(v) for v in self.has_gene_or_gene_product]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeatureExposure(DiseaseOrPhenotypicFeature):\n",
      "    \"\"\"\n",
      "    A disease or phenotypic feature exposure is where a disease state is manifested which represents an precondition,\n",
      "    leading to or influencing an outcome, e.g. hypertension leading to a related disease outcome such as\n",
      "    cardiovascular disease.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeatureExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeatureExposure\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeatureExposure\n",
      "\n",
      "    id: Union[str, DiseaseOrPhenotypicFeatureExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseOrPhenotypicFeatureExposureId):\n",
      "            self.id = DiseaseOrPhenotypicFeatureExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalExposure(ChemicalSubstance):\n",
      "    \"\"\"\n",
      "    A chemical exposure is an intake of a particular chemical substance, other than a drug.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalExposure\"\n",
      "    class_name: ClassVar[str] = \"chemical exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalExposure\n",
      "\n",
      "    id: Union[str, ChemicalExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalExposureId):\n",
      "            self.id = ChemicalExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ComplexChemicalExposure(ChemicalExposure):\n",
      "    \"\"\"\n",
      "    A complex chemical exposure is an intake of a chemical mixture (e.g. gasoline), other than a drug.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ComplexChemicalExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ComplexChemicalExposure\"\n",
      "    class_name: ClassVar[str] = \"complex chemical exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ComplexChemicalExposure\n",
      "\n",
      "    id: Union[str, ComplexChemicalExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_constituent: Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ComplexChemicalExposureId):\n",
      "            self.id = ComplexChemicalExposureId(self.id)\n",
      "\n",
      "        if self.has_constituent is None:\n",
      "            self.has_constituent = []\n",
      "        if not isinstance(self.has_constituent, list):\n",
      "            self.has_constituent = [self.has_constituent]\n",
      "        self.has_constituent = [v if isinstance(v, ChemicalSubstanceId) else ChemicalSubstanceId(v) for v in self.has_constituent]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DrugExposure(Drug):\n",
      "    \"\"\"\n",
      "    A drug exposure is an intake of a particular drug.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DrugExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DrugExposure\"\n",
      "    class_name: ClassVar[str] = \"drug exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DrugExposure\n",
      "\n",
      "    id: Union[str, DrugExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DrugExposureId):\n",
      "            self.id = DrugExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DrugToGeneInteractionExposure(DrugExposure):\n",
      "    \"\"\"\n",
      "    drug to gene interaction exposure is a drug exposure is where the interactions of the drug with specific genes are\n",
      "    known to constitute an 'exposure' to the organism, leading to or influencing an outcome.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DrugToGeneInteractionExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DrugToGeneInteractionExposure\"\n",
      "    class_name: ClassVar[str] = \"drug to gene interaction exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DrugToGeneInteractionExposure\n",
      "\n",
      "    id: Union[str, DrugToGeneInteractionExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_gene_or_gene_product: Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DrugToGeneInteractionExposureId):\n",
      "            self.id = DrugToGeneInteractionExposureId(self.id)\n",
      "\n",
      "        if self.has_gene_or_gene_product is None:\n",
      "            self.has_gene_or_gene_product = []\n",
      "        if not isinstance(self.has_gene_or_gene_product, list):\n",
      "            self.has_gene_or_gene_product = [self.has_gene_or_gene_product]\n",
      "        self.has_gene_or_gene_product = [v if isinstance(v, GeneId) else GeneId(v) for v in self.has_gene_or_gene_product]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Treatment(NamedThing):\n",
      "    \"\"\"\n",
      "    A treatment is targeted at a disease or phenotype and may involve multiple drug 'exposures', medical devices\n",
      "    and/or procedures\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Treatment\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Treatment\"\n",
      "    class_name: ClassVar[str] = \"treatment\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Treatment\n",
      "\n",
      "    id: Union[str, TreatmentId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_drug: Optional[Union[Union[str, DrugId], List[Union[str, DrugId]]]] = empty_list()\n",
      "    has_device: Optional[Union[Union[str, DeviceId], List[Union[str, DeviceId]]]] = empty_list()\n",
      "    has_procedure: Optional[Union[Union[str, ProcedureId], List[Union[str, ProcedureId]]]] = empty_list()\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, TreatmentId):\n",
      "            self.id = TreatmentId(self.id)\n",
      "\n",
      "        if self.has_drug is None:\n",
      "            self.has_drug = []\n",
      "        if not isinstance(self.has_drug, list):\n",
      "            self.has_drug = [self.has_drug]\n",
      "        self.has_drug = [v if isinstance(v, DrugId) else DrugId(v) for v in self.has_drug]\n",
      "\n",
      "        if self.has_device is None:\n",
      "            self.has_device = []\n",
      "        if not isinstance(self.has_device, list):\n",
      "            self.has_device = [self.has_device]\n",
      "        self.has_device = [v if isinstance(v, DeviceId) else DeviceId(v) for v in self.has_device]\n",
      "\n",
      "        if self.has_procedure is None:\n",
      "            self.has_procedure = []\n",
      "        if not isinstance(self.has_procedure, list):\n",
      "            self.has_procedure = [self.has_procedure]\n",
      "        self.has_procedure = [v if isinstance(v, ProcedureId) else ProcedureId(v) for v in self.has_procedure]\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BioticExposure(OrganismTaxon):\n",
      "    \"\"\"\n",
      "    A biotic exposure is an intake of (sometimes pathological) biological organisms (including viruses)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"subclass_of\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BioticExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BioticExposure\"\n",
      "    class_name: ClassVar[str] = \"biotic exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BioticExposure\n",
      "\n",
      "    id: Union[str, BioticExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BioticExposureId):\n",
      "            self.id = BioticExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeographicExposure(GeographicLocation):\n",
      "    \"\"\"\n",
      "    A geographic exposure is a factor relating to geographic proximity to some impactful entity.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeographicExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeographicExposure\"\n",
      "    class_name: ClassVar[str] = \"geographic exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeographicExposure\n",
      "\n",
      "    id: Union[str, GeographicExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeographicExposureId):\n",
      "            self.id = GeographicExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EnvironmentalExposure(EnvironmentalProcess):\n",
      "    \"\"\"\n",
      "    A environmental exposure is a factor relating to abiotic processes in the environment including atmospheric (heat,\n",
      "    cold, general pollution) and water-born contaminants\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EnvironmentalExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EnvironmentalExposure\"\n",
      "    class_name: ClassVar[str] = \"environmental exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EnvironmentalExposure\n",
      "\n",
      "    id: Union[str, EnvironmentalExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EnvironmentalExposureId):\n",
      "            self.id = EnvironmentalExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BehavioralExposure(Behavior):\n",
      "    \"\"\"\n",
      "    A behavioral exposure is a factor relating to behavior impacting an individual.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BehavioralExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BehavioralExposure\"\n",
      "    class_name: ClassVar[str] = \"behavioral exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BehavioralExposure\n",
      "\n",
      "    id: Union[str, BehavioralExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BehavioralExposureId):\n",
      "            self.id = BehavioralExposureId(self.id)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SocioeconomicExposure(Behavior):\n",
      "    \"\"\"\n",
      "    A socioeconomic exposure is a factor relating to social and financial status of an affected individual (e.g.\n",
      "    poverty).\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SocioeconomicExposure\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SocioeconomicExposure\"\n",
      "    class_name: ClassVar[str] = \"socioeconomic exposure\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SocioeconomicExposure\n",
      "\n",
      "    id: Union[str, SocioeconomicExposureId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "    has_attribute: Union[Union[dict, SocioeconomicAttribute], List[Union[dict, SocioeconomicAttribute]]] = None\n",
      "    timepoint: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SocioeconomicExposureId):\n",
      "            self.id = SocioeconomicExposureId(self.id)\n",
      "\n",
      "        if self.has_attribute is None:\n",
      "            raise ValueError(\"has_attribute must be supplied\")\n",
      "        elif not isinstance(self.has_attribute, list):\n",
      "            self.has_attribute = [self.has_attribute]\n",
      "        elif len(self.has_attribute) == 0:\n",
      "            raise ValueError(f\"has_attribute must be a non-empty list\")\n",
      "        self._normalize_inlined_slot(slot_name=\"has_attribute\", slot_type=SocioeconomicAttribute, key_name=\"has attribute type\", inlined_as_list=True, keyed=False)\n",
      "\n",
      "        if self.timepoint is not None and not isinstance(self.timepoint, TimeType):\n",
      "            self.timepoint = TimeType(self.timepoint)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "class Outcome(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An entity that has the role of being the consequence of an exposure event. This is an abstract mixin grouping of\n",
      "    various categories of possible biological or non-biological (e.g. clinical) outcomes.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Outcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Outcome\"\n",
      "    class_name: ClassVar[str] = \"outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Outcome\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeatureOutcome(DiseaseOrPhenotypicFeature):\n",
      "    \"\"\"\n",
      "    Physiological outcomes resulting from an exposure event which is the manifestation of a disease or other\n",
      "    characteristic phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"in_taxon\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeatureOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeatureOutcome\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeatureOutcome\n",
      "\n",
      "    id: Union[str, DiseaseOrPhenotypicFeatureOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseOrPhenotypicFeatureOutcomeId):\n",
      "            self.id = DiseaseOrPhenotypicFeatureOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class BehavioralOutcome(Behavior):\n",
      "    \"\"\"\n",
      "    An outcome resulting from an exposure event which is the manifestation of human behavior.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.BehavioralOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:BehavioralOutcome\"\n",
      "    class_name: ClassVar[str] = \"behavioral outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.BehavioralOutcome\n",
      "\n",
      "    id: Union[str, BehavioralOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, BehavioralOutcomeId):\n",
      "            self.id = BehavioralOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class HospitalizationOutcome(Hospitalization):\n",
      "    \"\"\"\n",
      "    An outcome resulting from an exposure event which is the increased manifestation of acute (e.g. emergency room\n",
      "    visit) or chronic (inpatient) hospitalization.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.HospitalizationOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:HospitalizationOutcome\"\n",
      "    class_name: ClassVar[str] = \"hospitalization outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.HospitalizationOutcome\n",
      "\n",
      "    id: Union[str, HospitalizationOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, HospitalizationOutcomeId):\n",
      "            self.id = HospitalizationOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MortalityOutcome(Death):\n",
      "    \"\"\"\n",
      "    An outcome of death from resulting from an exposure event.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MortalityOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MortalityOutcome\"\n",
      "    class_name: ClassVar[str] = \"mortality outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MortalityOutcome\n",
      "\n",
      "    id: Union[str, MortalityOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MortalityOutcomeId):\n",
      "            self.id = MortalityOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EpidemiologicalOutcome(BiologicalEntity):\n",
      "    \"\"\"\n",
      "    An epidemiological outcome, such as societal disease burden, resulting from an exposure event.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EpidemiologicalOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EpidemiologicalOutcome\"\n",
      "    class_name: ClassVar[str] = \"epidemiological outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EpidemiologicalOutcome\n",
      "\n",
      "    id: Union[str, EpidemiologicalOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, EpidemiologicalOutcomeId):\n",
      "            self.id = EpidemiologicalOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SocioeconomicOutcome(Behavior):\n",
      "    \"\"\"\n",
      "    An general social or economic outcome, such as healthcare costs, utilization, etc., resulting from an exposure\n",
      "    event\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = [\"has_input\", \"has_output\", \"enabled_by\"]\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SocioeconomicOutcome\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SocioeconomicOutcome\"\n",
      "    class_name: ClassVar[str] = \"socioeconomic outcome\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SocioeconomicOutcome\n",
      "\n",
      "    id: Union[str, SocioeconomicOutcomeId] = None\n",
      "    category: Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SocioeconomicOutcomeId):\n",
      "            self.id = SocioeconomicOutcomeId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class Association(Entity):\n",
      "    \"\"\"\n",
      "    A typed association between two entities, supported by evidence\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.Association\n",
      "    class_class_curie: ClassVar[str] = \"biolink:Association\"\n",
      "    class_name: ClassVar[str] = \"association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.Association\n",
      "\n",
      "    id: Union[str, AssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    negated: Optional[Bool] = None\n",
      "    qualifiers: Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]] = empty_list()\n",
      "    publications: Optional[Union[Union[str, PublicationId], List[Union[str, PublicationId]]]] = empty_list()\n",
      "    type: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AssociationId):\n",
      "            self.id = AssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, NamedThingId):\n",
      "            self.subject = NamedThingId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, NamedThingId):\n",
      "            self.object = NamedThingId(self.object)\n",
      "\n",
      "        if self.relation is None:\n",
      "            raise ValueError(\"relation must be supplied\")\n",
      "        if not isinstance(self.relation, URIorCURIE):\n",
      "            self.relation = URIorCURIE(self.relation)\n",
      "\n",
      "        if self.category is None:\n",
      "            raise ValueError(\"category must be supplied\")\n",
      "        elif not isinstance(self.category, list):\n",
      "            self.category = [self.category]\n",
      "        elif len(self.category) == 0:\n",
      "            raise ValueError(f\"category must be a non-empty list\")\n",
      "        self.category = [v if isinstance(v, AssociationId) else AssociationId(v) for v in self.category]\n",
      "\n",
      "        if self.negated is not None and not isinstance(self.negated, Bool):\n",
      "            self.negated = Bool(self.negated)\n",
      "\n",
      "        if self.qualifiers is None:\n",
      "            self.qualifiers = []\n",
      "        if not isinstance(self.qualifiers, list):\n",
      "            self.qualifiers = [self.qualifiers]\n",
      "        self.qualifiers = [v if isinstance(v, OntologyClassId) else OntologyClassId(v) for v in self.qualifiers]\n",
      "\n",
      "        if self.publications is None:\n",
      "            self.publications = []\n",
      "        if not isinstance(self.publications, list):\n",
      "            self.publications = [self.publications]\n",
      "        self.publications = [v if isinstance(v, PublicationId) else PublicationId(v) for v in self.publications]\n",
      "\n",
      "        if self.type is not None and not isinstance(self.type, str):\n",
      "            self.type = str(self.type)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ContributorAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between an entity (such as a publication) and various agents that contribute to its realisation\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ContributorAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ContributorAssociation\"\n",
      "    class_name: ClassVar[str] = \"contributor association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ContributorAssociation\n",
      "\n",
      "    id: Union[str, ContributorAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, InformationContentEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, AgentId] = None\n",
      "    qualifiers: Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ContributorAssociationId):\n",
      "            self.id = ContributorAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, InformationContentEntityId):\n",
      "            self.subject = InformationContentEntityId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AgentId):\n",
      "            self.object = AgentId(self.object)\n",
      "\n",
      "        if self.qualifiers is None:\n",
      "            self.qualifiers = []\n",
      "        if not isinstance(self.qualifiers, list):\n",
      "            self.qualifiers = [self.qualifiers]\n",
      "        self.qualifiers = [v if isinstance(v, OntologyClassId) else OntologyClassId(v) for v in self.qualifiers]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToGenotypePartAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between one genotype and a genotypic entity that is a sub-component of it\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToGenotypePartAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToGenotypePartAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype to genotype part association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToGenotypePartAssociation\n",
      "\n",
      "    id: Union[str, GenotypeToGenotypePartAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "    object: Union[str, GenotypeId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeToGenotypePartAssociationId):\n",
      "            self.id = GenotypeToGenotypePartAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GenotypeId):\n",
      "            self.object = GenotypeId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToGeneAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between a genotype and a gene. The genotype have have multiple variants in that gene or a single\n",
      "    one. There is no assumption of cardinality\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToGeneAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToGeneAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype to gene association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToGeneAssociation\n",
      "\n",
      "    id: Union[str, GenotypeToGeneAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "    object: Union[str, GeneId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeToGeneAssociationId):\n",
      "            self.id = GenotypeToGeneAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneId):\n",
      "            self.object = GeneId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToVariantAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between a genotype and a sequence variant.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToVariantAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToVariantAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype to variant association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToVariantAssociation\n",
      "\n",
      "    id: Union[str, GenotypeToVariantAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "    object: Union[str, SequenceVariantId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeToVariantAssociationId):\n",
      "            self.id = GenotypeToVariantAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, SequenceVariantId):\n",
      "            self.object = SequenceVariantId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToGeneAssociation(Association):\n",
      "    \"\"\"\n",
      "    abstract parent class for different kinds of gene-gene or gene product to gene product relationships. Includes\n",
      "    homology and interaction.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToGeneAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToGeneAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to gene association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToGeneAssociation\n",
      "\n",
      "    id: Union[str, GeneToGeneAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOrGeneProductId):\n",
      "            self.object = GeneOrGeneProductId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToGeneHomologyAssociation(GeneToGeneAssociation):\n",
      "    \"\"\"\n",
      "    A homology association between two genes. May be orthology (in which case the species of subject and object should\n",
      "    differ) or paralogy (in which case the species may be the same)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToGeneHomologyAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToGeneHomologyAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to gene homology association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToGeneHomologyAssociation\n",
      "\n",
      "    id: Union[str, GeneToGeneHomologyAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToGeneHomologyAssociationId):\n",
      "            self.id = GeneToGeneHomologyAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneExpressionMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    Observed gene expression intensity, context (site, stage) and associated phenotypic status within which the\n",
      "    expression occurs.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneExpressionMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneExpressionMixin\"\n",
      "    class_name: ClassVar[str] = \"gene expression mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneExpressionMixin\n",
      "\n",
      "    quantifier_qualifier: Optional[Union[str, OntologyClassId]] = None\n",
      "    expression_site: Optional[Union[str, AnatomicalEntityId]] = None\n",
      "    stage_qualifier: Optional[Union[str, LifeStageId]] = None\n",
      "    phenotypic_state: Optional[Union[str, DiseaseOrPhenotypicFeatureId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.quantifier_qualifier is not None and not isinstance(self.quantifier_qualifier, OntologyClassId):\n",
      "            self.quantifier_qualifier = OntologyClassId(self.quantifier_qualifier)\n",
      "\n",
      "        if self.expression_site is not None and not isinstance(self.expression_site, AnatomicalEntityId):\n",
      "            self.expression_site = AnatomicalEntityId(self.expression_site)\n",
      "\n",
      "        if self.stage_qualifier is not None and not isinstance(self.stage_qualifier, LifeStageId):\n",
      "            self.stage_qualifier = LifeStageId(self.stage_qualifier)\n",
      "\n",
      "        if self.phenotypic_state is not None and not isinstance(self.phenotypic_state, DiseaseOrPhenotypicFeatureId):\n",
      "            self.phenotypic_state = DiseaseOrPhenotypicFeatureId(self.phenotypic_state)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToGeneCoexpressionAssociation(GeneToGeneAssociation):\n",
      "    \"\"\"\n",
      "    Indicates that two genes are co-expressed, generally under the same conditions.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToGeneCoexpressionAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToGeneCoexpressionAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to gene coexpression association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToGeneCoexpressionAssociation\n",
      "\n",
      "    id: Union[str, GeneToGeneCoexpressionAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    quantifier_qualifier: Optional[Union[str, OntologyClassId]] = None\n",
      "    expression_site: Optional[Union[str, AnatomicalEntityId]] = None\n",
      "    stage_qualifier: Optional[Union[str, LifeStageId]] = None\n",
      "    phenotypic_state: Optional[Union[str, DiseaseOrPhenotypicFeatureId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToGeneCoexpressionAssociationId):\n",
      "            self.id = GeneToGeneCoexpressionAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.quantifier_qualifier is not None and not isinstance(self.quantifier_qualifier, OntologyClassId):\n",
      "            self.quantifier_qualifier = OntologyClassId(self.quantifier_qualifier)\n",
      "\n",
      "        if self.expression_site is not None and not isinstance(self.expression_site, AnatomicalEntityId):\n",
      "            self.expression_site = AnatomicalEntityId(self.expression_site)\n",
      "\n",
      "        if self.stage_qualifier is not None and not isinstance(self.stage_qualifier, LifeStageId):\n",
      "            self.stage_qualifier = LifeStageId(self.stage_qualifier)\n",
      "\n",
      "        if self.phenotypic_state is not None and not isinstance(self.phenotypic_state, DiseaseOrPhenotypicFeatureId):\n",
      "            self.phenotypic_state = DiseaseOrPhenotypicFeatureId(self.phenotypic_state)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PairwiseGeneToGeneInteraction(GeneToGeneAssociation):\n",
      "    \"\"\"\n",
      "    An interaction between two genes or two gene products. May be physical (e.g. protein binding) or genetic (between\n",
      "    genes). May be symmetric (e.g. protein interaction) or directed (e.g. phosphorylation)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PairwiseGeneToGeneInteraction\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PairwiseGeneToGeneInteraction\"\n",
      "    class_name: ClassVar[str] = \"pairwise gene to gene interaction\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PairwiseGeneToGeneInteraction\n",
      "\n",
      "    id: Union[str, PairwiseGeneToGeneInteractionId] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PairwiseGeneToGeneInteractionId):\n",
      "            self.id = PairwiseGeneToGeneInteractionId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.relation is None:\n",
      "            raise ValueError(\"relation must be supplied\")\n",
      "        if not isinstance(self.relation, URIorCURIE):\n",
      "            self.relation = URIorCURIE(self.relation)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PairwiseMolecularInteraction(PairwiseGeneToGeneInteraction):\n",
      "    \"\"\"\n",
      "    An interaction at the molecular level between two physical entities\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PairwiseMolecularInteraction\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PairwiseMolecularInteraction\"\n",
      "    class_name: ClassVar[str] = \"pairwise molecular interaction\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PairwiseMolecularInteraction\n",
      "\n",
      "    id: Union[str, PairwiseMolecularInteractionId] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MolecularEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    object: Union[str, MolecularEntityId] = None\n",
      "    interacting_molecules_category: Optional[Union[str, OntologyClassId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PairwiseMolecularInteractionId):\n",
      "            self.id = PairwiseMolecularInteractionId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MolecularEntityId):\n",
      "            self.subject = MolecularEntityId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.relation is None:\n",
      "            raise ValueError(\"relation must be supplied\")\n",
      "        if not isinstance(self.relation, URIorCURIE):\n",
      "            self.relation = URIorCURIE(self.relation)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, MolecularEntityId):\n",
      "            self.object = MolecularEntityId(self.object)\n",
      "\n",
      "        if self.interacting_molecules_category is not None and not isinstance(self.interacting_molecules_category, OntologyClassId):\n",
      "            self.interacting_molecules_category = OntologyClassId(self.interacting_molecules_category)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CellLineToEntityAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An relationship between a cell line and another entity\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CellLineToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CellLineToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"cell line to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CellLineToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, CellLineId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, CellLineId):\n",
      "            self.subject = CellLineId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CellLineToDiseaseOrPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    An relationship between a cell line and a disease or a phenotype, where the cell line is derived from an\n",
      "    individual with that disease or phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CellLineToDiseaseOrPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CellLineToDiseaseOrPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"cell line to disease or phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CellLineToDiseaseOrPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, CellLineToDiseaseOrPhenotypicFeatureAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, DiseaseOrPhenotypicFeatureId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CellLineToDiseaseOrPhenotypicFeatureAssociationId):\n",
      "            self.id = CellLineToDiseaseOrPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, DiseaseOrPhenotypicFeatureId):\n",
      "            self.subject = DiseaseOrPhenotypicFeatureId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MolecularEntityToEntityAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An interaction between a molecular entity and another entity\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MolecularEntityToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MolecularEntityToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"molecular entity to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MolecularEntityToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, MolecularEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MolecularEntityId):\n",
      "            self.subject = MolecularEntityId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DrugToEntityAssociationMixin(MolecularEntityToEntityAssociationMixin):\n",
      "    \"\"\"\n",
      "    An interaction between a drug and another entity\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DrugToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DrugToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"drug to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DrugToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, DrugId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, DrugId):\n",
      "            self.subject = DrugId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToEntityAssociationMixin(MolecularEntityToEntityAssociationMixin):\n",
      "    \"\"\"\n",
      "    An interaction between a chemical entity and another entity\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"chemical to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, ChemicalSubstanceId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, ChemicalSubstanceId):\n",
      "            self.subject = ChemicalSubstanceId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CaseToEntityAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An abstract association for use where the case is the subject\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CaseToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CaseToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"case to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CaseToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, CaseId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, CaseId):\n",
      "            self.subject = CaseId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToChemicalAssociation(Association):\n",
      "    \"\"\"\n",
      "    A relationship between two chemical entities. This can encompass actual interactions as well as temporal causal\n",
      "    edges, e.g. one chemical converted to another.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToChemicalAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToChemicalAssociation\"\n",
      "    class_name: ClassVar[str] = \"chemical to chemical association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToChemicalAssociation\n",
      "\n",
      "    id: Union[str, ChemicalToChemicalAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, ChemicalSubstanceId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalToChemicalAssociationId):\n",
      "            self.id = ChemicalToChemicalAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, ChemicalSubstanceId):\n",
      "            self.object = ChemicalSubstanceId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToChemicalDerivationAssociation(ChemicalToChemicalAssociation):\n",
      "    \"\"\"\n",
      "    A causal relationship between two chemical entities, where the subject represents the upstream entity and the\n",
      "    object represents the downstream. For any such association there is an implicit reaction:\n",
      "    IF\n",
      "    R has-input C1 AND\n",
      "    R has-output C2 AND\n",
      "    R enabled-by P AND\n",
      "    R type Reaction\n",
      "    THEN\n",
      "    C1 derives-into C2 <<catalyst qualifier P>>\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToChemicalDerivationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToChemicalDerivationAssociation\"\n",
      "    class_name: ClassVar[str] = \"chemical to chemical derivation association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToChemicalDerivationAssociation\n",
      "\n",
      "    id: Union[str, ChemicalToChemicalDerivationAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, ChemicalSubstanceId] = None\n",
      "    object: Union[str, ChemicalSubstanceId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    catalyst_qualifier: Optional[Union[Union[str, MacromolecularMachineId], List[Union[str, MacromolecularMachineId]]]] = empty_list()\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalToChemicalDerivationAssociationId):\n",
      "            self.id = ChemicalToChemicalDerivationAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, ChemicalSubstanceId):\n",
      "            self.subject = ChemicalSubstanceId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, ChemicalSubstanceId):\n",
      "            self.object = ChemicalSubstanceId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.catalyst_qualifier is None:\n",
      "            self.catalyst_qualifier = []\n",
      "        if not isinstance(self.catalyst_qualifier, list):\n",
      "            self.catalyst_qualifier = [self.catalyst_qualifier]\n",
      "        self.catalyst_qualifier = [v if isinstance(v, MacromolecularMachineId) else MacromolecularMachineId(v) for v in self.catalyst_qualifier]\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToDiseaseOrPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    An interaction between a chemical entity and a phenotype or disease, where the presence of the chemical gives rise\n",
      "    to or exacerbates the phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToDiseaseOrPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToDiseaseOrPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"chemical to disease or phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToDiseaseOrPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, ChemicalToDiseaseOrPhenotypicFeatureAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, DiseaseOrPhenotypicFeatureId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalToDiseaseOrPhenotypicFeatureAssociationId):\n",
      "            self.id = ChemicalToDiseaseOrPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, DiseaseOrPhenotypicFeatureId):\n",
      "            self.object = DiseaseOrPhenotypicFeatureId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToPathwayAssociation(Association):\n",
      "    \"\"\"\n",
      "    An interaction between a chemical entity and a biological process or pathway.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToPathwayAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToPathwayAssociation\"\n",
      "    class_name: ClassVar[str] = \"chemical to pathway association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToPathwayAssociation\n",
      "\n",
      "    id: Union[str, ChemicalToPathwayAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, PathwayId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalToPathwayAssociationId):\n",
      "            self.id = ChemicalToPathwayAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, PathwayId):\n",
      "            self.object = PathwayId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ChemicalToGeneAssociation(Association):\n",
      "    \"\"\"\n",
      "    An interaction between a chemical entity and a gene or gene product.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ChemicalToGeneAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ChemicalToGeneAssociation\"\n",
      "    class_name: ClassVar[str] = \"chemical to gene association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ChemicalToGeneAssociation\n",
      "\n",
      "    id: Union[str, ChemicalToGeneAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ChemicalToGeneAssociationId):\n",
      "            self.id = ChemicalToGeneAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOrGeneProductId):\n",
      "            self.object = GeneOrGeneProductId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DrugToGeneAssociation(Association):\n",
      "    \"\"\"\n",
      "    An interaction between a drug and a gene or gene product.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DrugToGeneAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DrugToGeneAssociation\"\n",
      "    class_name: ClassVar[str] = \"drug to gene association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DrugToGeneAssociation\n",
      "\n",
      "    id: Union[str, DrugToGeneAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DrugToGeneAssociationId):\n",
      "            self.id = DrugToGeneAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOrGeneProductId):\n",
      "            self.object = GeneOrGeneProductId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MaterialSampleToEntityAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An association between a material sample and something.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MaterialSampleToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MaterialSampleToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"material sample to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MaterialSampleToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, MaterialSampleId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MaterialSampleId):\n",
      "            self.subject = MaterialSampleId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MaterialSampleDerivationAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a material sample and the material entity from which it is derived.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MaterialSampleDerivationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MaterialSampleDerivationAssociation\"\n",
      "    class_name: ClassVar[str] = \"material sample derivation association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MaterialSampleDerivationAssociation\n",
      "\n",
      "    id: Union[str, MaterialSampleDerivationAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MaterialSampleId] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MaterialSampleDerivationAssociationId):\n",
      "            self.id = MaterialSampleDerivationAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MaterialSampleId):\n",
      "            self.subject = MaterialSampleId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, NamedThingId):\n",
      "            self.object = NamedThingId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MaterialSampleToDiseaseOrPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a material sample and a disease or phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MaterialSampleToDiseaseOrPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MaterialSampleToDiseaseOrPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"material sample to disease or phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MaterialSampleToDiseaseOrPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, MaterialSampleToDiseaseOrPhenotypicFeatureAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MaterialSampleToDiseaseOrPhenotypicFeatureAssociationId):\n",
      "            self.id = MaterialSampleToDiseaseOrPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseToEntityAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"disease to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, DiseaseId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, DiseaseId):\n",
      "            self.subject = DiseaseId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToExposureEventAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An association between some entity and an exposure event.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToExposureEventAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToExposureEventAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to exposure event association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToExposureEventAssociationMixin\n",
      "\n",
      "    object: Union[dict, ExposureEvent] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, ExposureEvent):\n",
      "            self.object = ExposureEvent(**self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseToExposureEventAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between an exposure event and a disease.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseToExposureEventAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseToExposureEventAssociation\"\n",
      "    class_name: ClassVar[str] = \"disease to exposure event association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseToExposureEventAssociation\n",
      "\n",
      "    id: Union[str, DiseaseToExposureEventAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseToExposureEventAssociationId):\n",
      "            self.id = DiseaseToExposureEventAssociationId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ExposureEventToEntityAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An association between some exposure event and some entity.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ExposureEventToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ExposureEventToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"exposure event to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ExposureEventToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[dict, ExposureEvent] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, ExposureEvent):\n",
      "            self.subject = ExposureEvent(**self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToOutcomeAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    An association between some entity and an outcome\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToOutcomeAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToOutcomeAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to outcome association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToOutcomeAssociationMixin\n",
      "\n",
      "    object: Union[dict, Outcome] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, Outcome):\n",
      "            self.object = Outcome()\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ExposureEventToOutcomeAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between an exposure event and an outcome.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ExposureEventToOutcomeAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ExposureEventToOutcomeAssociation\"\n",
      "    class_name: ClassVar[str] = \"exposure event to outcome association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ExposureEventToOutcomeAssociation\n",
      "\n",
      "    id: Union[str, ExposureEventToOutcomeAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    has_population_context: Optional[Union[str, PopulationOfIndividualOrganismsId]] = None\n",
      "    has_temporal_context: Optional[Union[str, TimeType]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ExposureEventToOutcomeAssociationId):\n",
      "            self.id = ExposureEventToOutcomeAssociationId(self.id)\n",
      "\n",
      "        if self.has_population_context is not None and not isinstance(self.has_population_context, PopulationOfIndividualOrganismsId):\n",
      "            self.has_population_context = PopulationOfIndividualOrganismsId(self.has_population_context)\n",
      "\n",
      "        if self.has_temporal_context is not None and not isinstance(self.has_temporal_context, TimeType):\n",
      "            self.has_temporal_context = TimeType(self.has_temporal_context)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class FrequencyQualifierMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    Qualifier for frequency type associations\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.FrequencyQualifierMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:FrequencyQualifierMixin\"\n",
      "    class_name: ClassVar[str] = \"frequency qualifier mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.FrequencyQualifierMixin\n",
      "\n",
      "    frequency_qualifier: Optional[Union[dict, FrequencyValue]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.frequency_qualifier is not None and not isinstance(self.frequency_qualifier, FrequencyValue):\n",
      "            self.frequency_qualifier = FrequencyValue(**self.frequency_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToFeatureOrDiseaseQualifiersMixin(FrequencyQualifierMixin):\n",
      "    \"\"\"\n",
      "    Qualifiers for entity to disease or phenotype associations.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToFeatureOrDiseaseQualifiersMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToFeatureOrDiseaseQualifiersMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to feature or disease qualifiers mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToFeatureOrDiseaseQualifiersMixin\n",
      "\n",
      "    severity_qualifier: Optional[Union[dict, SeverityValue]] = None\n",
      "    onset_qualifier: Optional[Union[dict, Onset]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.severity_qualifier is not None and not isinstance(self.severity_qualifier, SeverityValue):\n",
      "            self.severity_qualifier = SeverityValue(**self.severity_qualifier)\n",
      "\n",
      "        if self.onset_qualifier is not None and not isinstance(self.onset_qualifier, Onset):\n",
      "            self.onset_qualifier = Onset(**self.onset_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToPhenotypicFeatureAssociationMixin(EntityToFeatureOrDiseaseQualifiersMixin):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToPhenotypicFeatureAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToPhenotypicFeatureAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to phenotypic feature association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToPhenotypicFeatureAssociationMixin\n",
      "\n",
      "    object: Union[str, PhenotypicFeatureId] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "    description: Optional[Union[str, NarrativeText]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, PhenotypicFeatureId):\n",
      "            self.object = PhenotypicFeatureId(self.object)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        if self.description is not None and not isinstance(self.description, NarrativeText):\n",
      "            self.description = NarrativeText(self.description)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToDiseaseAssociationMixin(EntityToFeatureOrDiseaseQualifiersMixin):\n",
      "    \"\"\"\n",
      "    mixin class for any association whose object (target node) is a disease\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToDiseaseAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToDiseaseAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to disease association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToDiseaseAssociationMixin\n",
      "\n",
      "    object: Union[str, DiseaseId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, DiseaseId):\n",
      "            self.object = DiseaseId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeatureToEntityAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeatureToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeatureToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeatureToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, DiseaseOrPhenotypicFeatureId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, DiseaseOrPhenotypicFeatureId):\n",
      "            self.subject = DiseaseOrPhenotypicFeatureId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeatureAssociationToLocationAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeatureAssociationToLocationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeatureAssociationToLocationAssociation\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature association to location association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeatureAssociationToLocationAssociation\n",
      "\n",
      "    id: Union[str, DiseaseOrPhenotypicFeatureAssociationToLocationAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseOrPhenotypicFeatureAssociationToLocationAssociationId):\n",
      "            self.id = DiseaseOrPhenotypicFeatureAssociationToLocationAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseOrPhenotypicFeatureToLocationAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between either a disease or a phenotypic feature and an anatomical entity, where the\n",
      "    disease/feature manifests in that site.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseOrPhenotypicFeatureToLocationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseOrPhenotypicFeatureToLocationAssociation\"\n",
      "    class_name: ClassVar[str] = \"disease or phenotypic feature to location association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseOrPhenotypicFeatureToLocationAssociation\n",
      "\n",
      "    id: Union[str, DiseaseOrPhenotypicFeatureToLocationAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseOrPhenotypicFeatureToLocationAssociationId):\n",
      "            self.id = DiseaseOrPhenotypicFeatureToLocationAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class EntityToDiseaseOrPhenotypicFeatureAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.EntityToDiseaseOrPhenotypicFeatureAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:EntityToDiseaseOrPhenotypicFeatureAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"entity to disease or phenotypic feature association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.EntityToDiseaseOrPhenotypicFeatureAssociationMixin\n",
      "\n",
      "    object: Union[str, DiseaseOrPhenotypicFeatureId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, DiseaseOrPhenotypicFeatureId):\n",
      "            self.object = DiseaseOrPhenotypicFeatureId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToEntityAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"genotype to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between one genotype and a phenotypic feature, where having the genotype confers the phenotype,\n",
      "    either in isolation or through environment\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, GenotypeToPhenotypicFeatureAssociationId] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeToPhenotypicFeatureAssociationId):\n",
      "            self.id = GenotypeToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ExposureEventToPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    Any association between an environment and a phenotypic feature, where being in the environment influences the\n",
      "    phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ExposureEventToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ExposureEventToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"exposure event to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ExposureEventToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, ExposureEventToPhenotypicFeatureAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[dict, ExposureEvent] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ExposureEventToPhenotypicFeatureAssociationId):\n",
      "            self.id = ExposureEventToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, ExposureEvent):\n",
      "            self.subject = ExposureEvent(**self.subject)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class DiseaseToPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a disease and a phenotypic feature in which the phenotypic feature is associated with the\n",
      "    disease in some way.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.DiseaseToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:DiseaseToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"disease to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.DiseaseToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, DiseaseToPhenotypicFeatureAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, DiseaseToPhenotypicFeatureAssociationId):\n",
      "            self.id = DiseaseToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CaseToPhenotypicFeatureAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a case (e.g. individual patient) and a phenotypic feature in which the individual has or\n",
      "    has had the phenotype.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CaseToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CaseToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"case to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CaseToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, CaseToPhenotypicFeatureAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CaseToPhenotypicFeatureAssociationId):\n",
      "            self.id = CaseToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToEntityAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"gene to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToEntityAssociationMixin(YAMLRoot):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToEntityAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToEntityAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"variant to entity association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToEntityAssociationMixin\n",
      "\n",
      "    subject: Union[str, SequenceVariantId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, SequenceVariantId):\n",
      "            self.subject = SequenceVariantId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToPhenotypicFeatureAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, GeneToPhenotypicFeatureAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToPhenotypicFeatureAssociationId):\n",
      "            self.id = GeneToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToDiseaseAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToDiseaseAssociation\n",
      "\n",
      "    id: Union[str, GeneToDiseaseAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToDiseaseAssociationId):\n",
      "            self.id = GeneToDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToGeneAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a variant and a gene, where the variant has a genetic association with the gene (i.e. is in\n",
      "    linkage disequilibrium)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToGeneAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToGeneAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant to gene association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToGeneAssociation\n",
      "\n",
      "    id: Union[str, VariantToGeneAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, GeneId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantToGeneAssociationId):\n",
      "            self.id = VariantToGeneAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneId):\n",
      "            self.object = GeneId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToGeneExpressionAssociation(VariantToGeneAssociation):\n",
      "    \"\"\"\n",
      "    An association between a variant and expression of a gene (i.e. e-QTL)\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToGeneExpressionAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToGeneExpressionAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant to gene expression association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToGeneExpressionAssociation\n",
      "\n",
      "    id: Union[str, VariantToGeneExpressionAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    object: Union[str, GeneId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    quantifier_qualifier: Optional[Union[str, OntologyClassId]] = None\n",
      "    expression_site: Optional[Union[str, AnatomicalEntityId]] = None\n",
      "    stage_qualifier: Optional[Union[str, LifeStageId]] = None\n",
      "    phenotypic_state: Optional[Union[str, DiseaseOrPhenotypicFeatureId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantToGeneExpressionAssociationId):\n",
      "            self.id = VariantToGeneExpressionAssociationId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.quantifier_qualifier is not None and not isinstance(self.quantifier_qualifier, OntologyClassId):\n",
      "            self.quantifier_qualifier = OntologyClassId(self.quantifier_qualifier)\n",
      "\n",
      "        if self.expression_site is not None and not isinstance(self.expression_site, AnatomicalEntityId):\n",
      "            self.expression_site = AnatomicalEntityId(self.expression_site)\n",
      "\n",
      "        if self.stage_qualifier is not None and not isinstance(self.stage_qualifier, LifeStageId):\n",
      "            self.stage_qualifier = LifeStageId(self.stage_qualifier)\n",
      "\n",
      "        if self.phenotypic_state is not None and not isinstance(self.phenotypic_state, DiseaseOrPhenotypicFeatureId):\n",
      "            self.phenotypic_state = DiseaseOrPhenotypicFeatureId(self.phenotypic_state)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToPopulationAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a variant and a population, where the variant has particular frequency in the population\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToPopulationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToPopulationAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant to population association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToPopulationAssociation\n",
      "\n",
      "    id: Union[str, VariantToPopulationAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, SequenceVariantId] = None\n",
      "    object: Union[str, PopulationOfIndividualOrganismsId] = None\n",
      "    has_quotient: Optional[float] = None\n",
      "    has_count: Optional[int] = None\n",
      "    has_total: Optional[int] = None\n",
      "    has_percentage: Optional[float] = None\n",
      "    frequency_qualifier: Optional[Union[dict, FrequencyValue]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantToPopulationAssociationId):\n",
      "            self.id = VariantToPopulationAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, SequenceVariantId):\n",
      "            self.subject = SequenceVariantId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, PopulationOfIndividualOrganismsId):\n",
      "            self.object = PopulationOfIndividualOrganismsId(self.object)\n",
      "\n",
      "        if self.has_quotient is not None and not isinstance(self.has_quotient, float):\n",
      "            self.has_quotient = float(self.has_quotient)\n",
      "\n",
      "        if self.has_count is not None and not isinstance(self.has_count, int):\n",
      "            self.has_count = int(self.has_count)\n",
      "\n",
      "        if self.has_total is not None and not isinstance(self.has_total, int):\n",
      "            self.has_total = int(self.has_total)\n",
      "\n",
      "        if self.has_percentage is not None and not isinstance(self.has_percentage, float):\n",
      "            self.has_percentage = float(self.has_percentage)\n",
      "\n",
      "        if self.frequency_qualifier is not None and not isinstance(self.frequency_qualifier, FrequencyValue):\n",
      "            self.frequency_qualifier = FrequencyValue(**self.frequency_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class PopulationToPopulationAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a two populations\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.PopulationToPopulationAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:PopulationToPopulationAssociation\"\n",
      "    class_name: ClassVar[str] = \"population to population association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.PopulationToPopulationAssociation\n",
      "\n",
      "    id: Union[str, PopulationToPopulationAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, PopulationOfIndividualOrganismsId] = None\n",
      "    object: Union[str, PopulationOfIndividualOrganismsId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, PopulationToPopulationAssociationId):\n",
      "            self.id = PopulationToPopulationAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, PopulationOfIndividualOrganismsId):\n",
      "            self.subject = PopulationOfIndividualOrganismsId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, PopulationOfIndividualOrganismsId):\n",
      "            self.object = PopulationOfIndividualOrganismsId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToPhenotypicFeatureAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToPhenotypicFeatureAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToPhenotypicFeatureAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant to phenotypic feature association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToPhenotypicFeatureAssociation\n",
      "\n",
      "    id: Union[str, VariantToPhenotypicFeatureAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, SequenceVariantId] = None\n",
      "    sex_qualifier: Optional[Union[dict, BiologicalSex]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantToPhenotypicFeatureAssociationId):\n",
      "            self.id = VariantToPhenotypicFeatureAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, SequenceVariantId):\n",
      "            self.subject = SequenceVariantId(self.subject)\n",
      "\n",
      "        if self.sex_qualifier is not None and not isinstance(self.sex_qualifier, BiologicalSex):\n",
      "            self.sex_qualifier = BiologicalSex(**self.sex_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantToDiseaseAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantToDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantToDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant to disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantToDiseaseAssociation\n",
      "\n",
      "    id: Union[str, VariantToDiseaseAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantToDiseaseAssociationId):\n",
      "            self.id = VariantToDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, NamedThingId):\n",
      "            self.subject = NamedThingId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, NamedThingId):\n",
      "            self.object = NamedThingId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeToDiseaseAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeToDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeToDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype to disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeToDiseaseAssociation\n",
      "\n",
      "    id: Union[str, GenotypeToDiseaseAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeToDiseaseAssociationId):\n",
      "            self.id = GenotypeToDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, NamedThingId):\n",
      "            self.subject = NamedThingId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, NamedThingId):\n",
      "            self.object = NamedThingId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ModelToDiseaseAssociationMixin(YAMLRoot):\n",
      "    \"\"\"\n",
      "    This mixin is used for any association class for which the subject (source node) plays the role of a 'model', in\n",
      "    that it recapitulates some features of the disease in a way that is useful for studying the disease outside a\n",
      "    patient carrying the disease\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ModelToDiseaseAssociationMixin\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ModelToDiseaseAssociationMixin\"\n",
      "    class_name: ClassVar[str] = \"model to disease association mixin\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ModelToDiseaseAssociationMixin\n",
      "\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, NamedThingId):\n",
      "            self.subject = NamedThingId(self.subject)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneAsAModelOfDiseaseAssociation(GeneToDiseaseAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneAsAModelOfDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneAsAModelOfDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene as a model of disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneAsAModelOfDiseaseAssociation\n",
      "\n",
      "    id: Union[str, GeneAsAModelOfDiseaseAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneAsAModelOfDiseaseAssociationId):\n",
      "            self.id = GeneAsAModelOfDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class VariantAsAModelOfDiseaseAssociation(VariantToDiseaseAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.VariantAsAModelOfDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:VariantAsAModelOfDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"variant as a model of disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.VariantAsAModelOfDiseaseAssociation\n",
      "\n",
      "    id: Union[str, VariantAsAModelOfDiseaseAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    subject: Union[str, SequenceVariantId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, VariantAsAModelOfDiseaseAssociationId):\n",
      "            self.id = VariantAsAModelOfDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, SequenceVariantId):\n",
      "            self.subject = SequenceVariantId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenotypeAsAModelOfDiseaseAssociation(GenotypeToDiseaseAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenotypeAsAModelOfDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenotypeAsAModelOfDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"genotype as a model of disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenotypeAsAModelOfDiseaseAssociation\n",
      "\n",
      "    id: Union[str, GenotypeAsAModelOfDiseaseAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    subject: Union[str, GenotypeId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenotypeAsAModelOfDiseaseAssociationId):\n",
      "            self.id = GenotypeAsAModelOfDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenotypeId):\n",
      "            self.subject = GenotypeId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class CellLineAsAModelOfDiseaseAssociation(CellLineToDiseaseOrPhenotypicFeatureAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.CellLineAsAModelOfDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:CellLineAsAModelOfDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"cell line as a model of disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.CellLineAsAModelOfDiseaseAssociation\n",
      "\n",
      "    id: Union[str, CellLineAsAModelOfDiseaseAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, CellLineId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, CellLineAsAModelOfDiseaseAssociationId):\n",
      "            self.id = CellLineAsAModelOfDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, CellLineId):\n",
      "            self.subject = CellLineId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class OrganismalEntityAsAModelOfDiseaseAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.OrganismalEntityAsAModelOfDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:OrganismalEntityAsAModelOfDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"organismal entity as a model of disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.OrganismalEntityAsAModelOfDiseaseAssociation\n",
      "\n",
      "    id: Union[str, OrganismalEntityAsAModelOfDiseaseAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, OrganismalEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, OrganismalEntityAsAModelOfDiseaseAssociationId):\n",
      "            self.id = OrganismalEntityAsAModelOfDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, OrganismalEntityId):\n",
      "            self.subject = OrganismalEntityId(self.subject)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneHasVariantThatContributesToDiseaseAssociation(GeneToDiseaseAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneHasVariantThatContributesToDiseaseAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneHasVariantThatContributesToDiseaseAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene has variant that contributes to disease association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneHasVariantThatContributesToDiseaseAssociation\n",
      "\n",
      "    id: Union[str, GeneHasVariantThatContributesToDiseaseAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    sequence_variant_qualifier: Optional[Union[str, SequenceVariantId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneHasVariantThatContributesToDiseaseAssociationId):\n",
      "            self.id = GeneHasVariantThatContributesToDiseaseAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        if self.sequence_variant_qualifier is not None and not isinstance(self.sequence_variant_qualifier, SequenceVariantId):\n",
      "            self.sequence_variant_qualifier = SequenceVariantId(self.sequence_variant_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToExpressionSiteAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a gene and an expression site, possibly qualified by stage/timing info.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToExpressionSiteAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToExpressionSiteAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to expression site association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToExpressionSiteAssociation\n",
      "\n",
      "    id: Union[str, GeneToExpressionSiteAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    stage_qualifier: Optional[Union[str, LifeStageId]] = None\n",
      "    quantifier_qualifier: Optional[Union[str, OntologyClassId]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToExpressionSiteAssociationId):\n",
      "            self.id = GeneToExpressionSiteAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.stage_qualifier is not None and not isinstance(self.stage_qualifier, LifeStageId):\n",
      "            self.stage_qualifier = LifeStageId(self.stage_qualifier)\n",
      "\n",
      "        if self.quantifier_qualifier is not None and not isinstance(self.quantifier_qualifier, OntologyClassId):\n",
      "            self.quantifier_qualifier = OntologyClassId(self.quantifier_qualifier)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SequenceVariantModulatesTreatmentAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a sequence variant and a treatment or health intervention. The treatment object itself\n",
      "    encompasses both the disease and the drug used.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SequenceVariantModulatesTreatmentAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SequenceVariantModulatesTreatmentAssociation\"\n",
      "    class_name: ClassVar[str] = \"sequence variant modulates treatment association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SequenceVariantModulatesTreatmentAssociation\n",
      "\n",
      "    id: Union[str, SequenceVariantModulatesTreatmentAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, SequenceVariantId] = None\n",
      "    object: Union[str, TreatmentId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, SequenceVariantId):\n",
      "            self.subject = SequenceVariantId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, TreatmentId):\n",
      "            self.object = TreatmentId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class FunctionalAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a macromolecular machine (gene, gene product or complex of gene products) and either a\n",
      "    molecular activity, a biological process or a cellular location in which a function is executed.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.FunctionalAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:FunctionalAssociation\"\n",
      "    class_name: ClassVar[str] = \"functional association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.FunctionalAssociation\n",
      "\n",
      "    id: Union[str, FunctionalAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MacromolecularMachineId] = None\n",
      "    object: Union[str, GeneOntologyClassId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, FunctionalAssociationId):\n",
      "            self.id = FunctionalAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MacromolecularMachineId):\n",
      "            self.subject = MacromolecularMachineId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOntologyClassId):\n",
      "            self.object = GeneOntologyClassId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MacromolecularMachineToMolecularActivityAssociation(FunctionalAssociation):\n",
      "    \"\"\"\n",
      "    A functional association between a macromolecular machine (gene, gene product or complex) and a molecular activity\n",
      "    (as represented in the GO molecular function branch), where the entity carries out the activity, or contributes to\n",
      "    its execution\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MacromolecularMachineToMolecularActivityAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MacromolecularMachineToMolecularActivityAssociation\"\n",
      "    class_name: ClassVar[str] = \"macromolecular machine to molecular activity association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MacromolecularMachineToMolecularActivityAssociation\n",
      "\n",
      "    id: Union[str, MacromolecularMachineToMolecularActivityAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MacromolecularMachineId] = None\n",
      "    object: Union[str, MolecularActivityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MacromolecularMachineToMolecularActivityAssociationId):\n",
      "            self.id = MacromolecularMachineToMolecularActivityAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, MolecularActivityId):\n",
      "            self.object = MolecularActivityId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MacromolecularMachineToBiologicalProcessAssociation(FunctionalAssociation):\n",
      "    \"\"\"\n",
      "    A functional association between a macromolecular machine (gene, gene product or complex) and a biological process\n",
      "    or pathway (as represented in the GO biological process branch), where the entity carries out some part of the\n",
      "    process, regulates it, or acts upstream of it\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MacromolecularMachineToBiologicalProcessAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MacromolecularMachineToBiologicalProcessAssociation\"\n",
      "    class_name: ClassVar[str] = \"macromolecular machine to biological process association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MacromolecularMachineToBiologicalProcessAssociation\n",
      "\n",
      "    id: Union[str, MacromolecularMachineToBiologicalProcessAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MacromolecularMachineId] = None\n",
      "    object: Union[str, BiologicalProcessId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MacromolecularMachineToBiologicalProcessAssociationId):\n",
      "            self.id = MacromolecularMachineToBiologicalProcessAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, BiologicalProcessId):\n",
      "            self.object = BiologicalProcessId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class MacromolecularMachineToCellularComponentAssociation(FunctionalAssociation):\n",
      "    \"\"\"\n",
      "    A functional association between a macromolecular machine (gene, gene product or complex) and a cellular component\n",
      "    (as represented in the GO cellular component branch), where the entity carries out its function in the cellular\n",
      "    component\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.MacromolecularMachineToCellularComponentAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:MacromolecularMachineToCellularComponentAssociation\"\n",
      "    class_name: ClassVar[str] = \"macromolecular machine to cellular component association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.MacromolecularMachineToCellularComponentAssociation\n",
      "\n",
      "    id: Union[str, MacromolecularMachineToCellularComponentAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MacromolecularMachineId] = None\n",
      "    object: Union[str, CellularComponentId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, MacromolecularMachineToCellularComponentAssociationId):\n",
      "            self.id = MacromolecularMachineToCellularComponentAssociationId(self.id)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, CellularComponentId):\n",
      "            self.object = CellularComponentId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToGoTermAssociation(FunctionalAssociation):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToGoTermAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToGoTermAssociation\"\n",
      "    class_name: ClassVar[str] = \"gene to go term association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToGoTermAssociation\n",
      "\n",
      "    id: Union[str, GeneToGoTermAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, MolecularEntityId] = None\n",
      "    object: Union[str, GeneOntologyClassId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToGoTermAssociationId):\n",
      "            self.id = GeneToGoTermAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, MolecularEntityId):\n",
      "            self.subject = MolecularEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOntologyClassId):\n",
      "            self.object = GeneOntologyClassId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SequenceAssociation(Association):\n",
      "    \"\"\"\n",
      "    An association between a sequence feature and a genomic entity it is localized to.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SequenceAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SequenceAssociation\"\n",
      "    class_name: ClassVar[str] = \"sequence association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SequenceAssociation\n",
      "\n",
      "    id: Union[str, SequenceAssociationId] = None\n",
      "    subject: Union[str, NamedThingId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    object: Union[str, NamedThingId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SequenceAssociationId):\n",
      "            self.id = SequenceAssociationId(self.id)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GenomicSequenceLocalization(SequenceAssociation):\n",
      "    \"\"\"\n",
      "    A relationship between a sequence feature and a genomic entity it is localized to. The reference entity may be a\n",
      "    chromosome, chromosome region or information entity such as a contig.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GenomicSequenceLocalization\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GenomicSequenceLocalization\"\n",
      "    class_name: ClassVar[str] = \"genomic sequence localization\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GenomicSequenceLocalization\n",
      "\n",
      "    id: Union[str, GenomicSequenceLocalizationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GenomicEntityId] = None\n",
      "    object: Union[str, GenomicEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    start_interbase_coordinate: Optional[int] = None\n",
      "    end_interbase_coordinate: Optional[int] = None\n",
      "    genome_build: Optional[str] = None\n",
      "    strand: Optional[str] = None\n",
      "    phase: Optional[str] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GenomicSequenceLocalizationId):\n",
      "            self.id = GenomicSequenceLocalizationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenomicEntityId):\n",
      "            self.subject = GenomicEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GenomicEntityId):\n",
      "            self.object = GenomicEntityId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.start_interbase_coordinate is not None and not isinstance(self.start_interbase_coordinate, int):\n",
      "            self.start_interbase_coordinate = int(self.start_interbase_coordinate)\n",
      "\n",
      "        if self.end_interbase_coordinate is not None and not isinstance(self.end_interbase_coordinate, int):\n",
      "            self.end_interbase_coordinate = int(self.end_interbase_coordinate)\n",
      "\n",
      "        if self.genome_build is not None and not isinstance(self.genome_build, str):\n",
      "            self.genome_build = str(self.genome_build)\n",
      "\n",
      "        if self.strand is not None and not isinstance(self.strand, str):\n",
      "            self.strand = str(self.strand)\n",
      "\n",
      "        if self.phase is not None and not isinstance(self.phase, str):\n",
      "            self.phase = str(self.phase)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class SequenceFeatureRelationship(Association):\n",
      "    \"\"\"\n",
      "    For example, a particular exon is part of a particular transcript or gene\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.SequenceFeatureRelationship\n",
      "    class_class_curie: ClassVar[str] = \"biolink:SequenceFeatureRelationship\"\n",
      "    class_name: ClassVar[str] = \"sequence feature relationship\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.SequenceFeatureRelationship\n",
      "\n",
      "    id: Union[str, SequenceFeatureRelationshipId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GenomicEntityId] = None\n",
      "    object: Union[str, GenomicEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, SequenceFeatureRelationshipId):\n",
      "            self.id = SequenceFeatureRelationshipId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GenomicEntityId):\n",
      "            self.subject = GenomicEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GenomicEntityId):\n",
      "            self.object = GenomicEntityId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class TranscriptToGeneRelationship(SequenceFeatureRelationship):\n",
      "    \"\"\"\n",
      "    A gene is a collection of transcripts\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.TranscriptToGeneRelationship\n",
      "    class_class_curie: ClassVar[str] = \"biolink:TranscriptToGeneRelationship\"\n",
      "    class_name: ClassVar[str] = \"transcript to gene relationship\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.TranscriptToGeneRelationship\n",
      "\n",
      "    id: Union[str, TranscriptToGeneRelationshipId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, TranscriptId] = None\n",
      "    object: Union[str, GeneId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, TranscriptToGeneRelationshipId):\n",
      "            self.id = TranscriptToGeneRelationshipId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, TranscriptId):\n",
      "            self.subject = TranscriptId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneId):\n",
      "            self.object = GeneId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneToGeneProductRelationship(SequenceFeatureRelationship):\n",
      "    \"\"\"\n",
      "    A gene is transcribed and potentially translated to a gene product\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneToGeneProductRelationship\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneToGeneProductRelationship\"\n",
      "    class_name: ClassVar[str] = \"gene to gene product relationship\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneToGeneProductRelationship\n",
      "\n",
      "    id: Union[str, GeneToGeneProductRelationshipId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, GeneId] = None\n",
      "    object: Union[str, GeneProductId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneToGeneProductRelationshipId):\n",
      "            self.id = GeneToGeneProductRelationshipId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneId):\n",
      "            self.subject = GeneId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneProductId):\n",
      "            self.object = GeneProductId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class ExonToTranscriptRelationship(SequenceFeatureRelationship):\n",
      "    \"\"\"\n",
      "    A transcript is formed from multiple exons\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.ExonToTranscriptRelationship\n",
      "    class_class_curie: ClassVar[str] = \"biolink:ExonToTranscriptRelationship\"\n",
      "    class_name: ClassVar[str] = \"exon to transcript relationship\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.ExonToTranscriptRelationship\n",
      "\n",
      "    id: Union[str, ExonToTranscriptRelationshipId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, ExonId] = None\n",
      "    object: Union[str, TranscriptId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, ExonToTranscriptRelationshipId):\n",
      "            self.id = ExonToTranscriptRelationshipId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, ExonId):\n",
      "            self.subject = ExonId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, TranscriptId):\n",
      "            self.object = TranscriptId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class GeneRegulatoryRelationship(Association):\n",
      "    \"\"\"\n",
      "    A regulatory relationship between two genes\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.GeneRegulatoryRelationship\n",
      "    class_class_curie: ClassVar[str] = \"biolink:GeneRegulatoryRelationship\"\n",
      "    class_name: ClassVar[str] = \"gene regulatory relationship\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.GeneRegulatoryRelationship\n",
      "\n",
      "    id: Union[str, GeneRegulatoryRelationshipId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    subject: Union[str, GeneOrGeneProductId] = None\n",
      "    object: Union[str, GeneOrGeneProductId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, GeneRegulatoryRelationshipId):\n",
      "            self.id = GeneRegulatoryRelationshipId(self.id)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, GeneOrGeneProductId):\n",
      "            self.subject = GeneOrGeneProductId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, GeneOrGeneProductId):\n",
      "            self.object = GeneOrGeneProductId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class AnatomicalEntityToAnatomicalEntityAssociation(Association):\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.AnatomicalEntityToAnatomicalEntityAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:AnatomicalEntityToAnatomicalEntityAssociation\"\n",
      "    class_name: ClassVar[str] = \"anatomical entity to anatomical entity association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.AnatomicalEntityToAnatomicalEntityAssociation\n",
      "\n",
      "    id: Union[str, AnatomicalEntityToAnatomicalEntityAssociationId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, AnatomicalEntityId] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AnatomicalEntityToAnatomicalEntityAssociationId):\n",
      "            self.id = AnatomicalEntityToAnatomicalEntityAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, AnatomicalEntityId):\n",
      "            self.subject = AnatomicalEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class AnatomicalEntityToAnatomicalEntityPartOfAssociation(AnatomicalEntityToAnatomicalEntityAssociation):\n",
      "    \"\"\"\n",
      "    A relationship between two anatomical entities where the relationship is mereological, i.e the two entities are\n",
      "    related by parthood. This includes relationships between cellular components and cells, between cells and tissues,\n",
      "    tissues and whole organisms\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.AnatomicalEntityToAnatomicalEntityPartOfAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:AnatomicalEntityToAnatomicalEntityPartOfAssociation\"\n",
      "    class_name: ClassVar[str] = \"anatomical entity to anatomical entity part of association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.AnatomicalEntityToAnatomicalEntityPartOfAssociation\n",
      "\n",
      "    id: Union[str, AnatomicalEntityToAnatomicalEntityPartOfAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, AnatomicalEntityId] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AnatomicalEntityToAnatomicalEntityPartOfAssociationId):\n",
      "            self.id = AnatomicalEntityToAnatomicalEntityPartOfAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, AnatomicalEntityId):\n",
      "            self.subject = AnatomicalEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "@dataclass\n",
      "class AnatomicalEntityToAnatomicalEntityOntogenicAssociation(AnatomicalEntityToAnatomicalEntityAssociation):\n",
      "    \"\"\"\n",
      "    A relationship between two anatomical entities where the relationship is ontogenic, i.e. the two entities are\n",
      "    related by development. A number of different relationship types can be used to specify the precise nature of the\n",
      "    relationship.\n",
      "    \"\"\"\n",
      "    _inherited_slots: ClassVar[List[str]] = []\n",
      "\n",
      "    class_class_uri: ClassVar[URIRef] = BIOLINK.AnatomicalEntityToAnatomicalEntityOntogenicAssociation\n",
      "    class_class_curie: ClassVar[str] = \"biolink:AnatomicalEntityToAnatomicalEntityOntogenicAssociation\"\n",
      "    class_name: ClassVar[str] = \"anatomical entity to anatomical entity ontogenic association\"\n",
      "    class_model_uri: ClassVar[URIRef] = DIST.AnatomicalEntityToAnatomicalEntityOntogenicAssociation\n",
      "\n",
      "    id: Union[str, AnatomicalEntityToAnatomicalEntityOntogenicAssociationId] = None\n",
      "    relation: Union[str, URIorCURIE] = None\n",
      "    category: Union[Union[str, AssociationId], List[Union[str, AssociationId]]] = None\n",
      "    subject: Union[str, AnatomicalEntityId] = None\n",
      "    object: Union[str, AnatomicalEntityId] = None\n",
      "    predicate: Union[str, PredicateType] = None\n",
      "\n",
      "    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):\n",
      "        if self.id is None:\n",
      "            raise ValueError(\"id must be supplied\")\n",
      "        if not isinstance(self.id, AnatomicalEntityToAnatomicalEntityOntogenicAssociationId):\n",
      "            self.id = AnatomicalEntityToAnatomicalEntityOntogenicAssociationId(self.id)\n",
      "\n",
      "        if self.subject is None:\n",
      "            raise ValueError(\"subject must be supplied\")\n",
      "        if not isinstance(self.subject, AnatomicalEntityId):\n",
      "            self.subject = AnatomicalEntityId(self.subject)\n",
      "\n",
      "        if self.object is None:\n",
      "            raise ValueError(\"object must be supplied\")\n",
      "        if not isinstance(self.object, AnatomicalEntityId):\n",
      "            self.object = AnatomicalEntityId(self.object)\n",
      "\n",
      "        if self.predicate is None:\n",
      "            raise ValueError(\"predicate must be supplied\")\n",
      "        if not isinstance(self.predicate, PredicateType):\n",
      "            self.predicate = PredicateType(self.predicate)\n",
      "\n",
      "        super().__post_init__(**kwargs)\n",
      "\n",
      "\n",
      "# Enumerations\n",
      "\n",
      "\n",
      "# Slots\n",
      "class slots:\n",
      "    pass\n",
      "\n",
      "slots.gene_has_sequence = Slot(uri=DIST.hasSeq, name=\"gene has sequence\", curie=DIST.curie('hasSeq'),\n",
      "                   model_uri=DIST.gene_has_sequence, domain=Gene, range=Union[str, GeneSequence])\n",
      "\n",
      "slots.has_attribute = Slot(uri=BIOLINK.has_attribute, name=\"has attribute\", curie=BIOLINK.curie('has_attribute'),\n",
      "                   model_uri=DIST.has_attribute, domain=None, range=Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]])\n",
      "\n",
      "slots.has_attribute_type = Slot(uri=BIOLINK.has_attribute_type, name=\"has attribute type\", curie=BIOLINK.curie('has_attribute_type'),\n",
      "                   model_uri=DIST.has_attribute_type, domain=Attribute, range=Union[str, OntologyClassId])\n",
      "\n",
      "slots.has_qualitative_value = Slot(uri=BIOLINK.has_qualitative_value, name=\"has qualitative value\", curie=BIOLINK.curie('has_qualitative_value'),\n",
      "                   model_uri=DIST.has_qualitative_value, domain=Attribute, range=Optional[Union[str, NamedThingId]])\n",
      "\n",
      "slots.has_quantitative_value = Slot(uri=BIOLINK.has_quantitative_value, name=\"has quantitative value\", curie=BIOLINK.curie('has_quantitative_value'),\n",
      "                   model_uri=DIST.has_quantitative_value, domain=Attribute, range=Optional[Union[Union[dict, QuantityValue], List[Union[dict, QuantityValue]]]])\n",
      "\n",
      "slots.has_numeric_value = Slot(uri=BIOLINK.has_numeric_value, name=\"has numeric value\", curie=BIOLINK.curie('has_numeric_value'),\n",
      "                   model_uri=DIST.has_numeric_value, domain=QuantityValue, range=Optional[float])\n",
      "\n",
      "slots.has_unit = Slot(uri=BIOLINK.has_unit, name=\"has unit\", curie=BIOLINK.curie('has_unit'),\n",
      "                   model_uri=DIST.has_unit, domain=QuantityValue, range=Optional[Union[str, Unit]])\n",
      "\n",
      "slots.node_property = Slot(uri=BIOLINK.node_property, name=\"node property\", curie=BIOLINK.curie('node_property'),\n",
      "                   model_uri=DIST.node_property, domain=NamedThing, range=Optional[str])\n",
      "\n",
      "slots.id = Slot(uri=BIOLINK.id, name=\"id\", curie=BIOLINK.curie('id'),\n",
      "                   model_uri=DIST.id, domain=None, range=URIRef)\n",
      "\n",
      "slots.iri = Slot(uri=BIOLINK.iri, name=\"iri\", curie=BIOLINK.curie('iri'),\n",
      "                   model_uri=DIST.iri, domain=None, range=Optional[Union[str, IriType]])\n",
      "\n",
      "slots.type = Slot(uri=RDF.type, name=\"type\", curie=RDF.curie('type'),\n",
      "                   model_uri=DIST.type, domain=None, range=Optional[str])\n",
      "\n",
      "slots.category = Slot(uri=BIOLINK.category, name=\"category\", curie=BIOLINK.curie('category'),\n",
      "                   model_uri=DIST.category, domain=Entity, range=Union[Union[str, CategoryType], List[Union[str, CategoryType]]])\n",
      "\n",
      "slots.name = Slot(uri=RDFS.label, name=\"name\", curie=RDFS.curie('label'),\n",
      "                   model_uri=DIST.name, domain=None, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.source = Slot(uri=BIOLINK.source, name=\"source\", curie=BIOLINK.curie('source'),\n",
      "                   model_uri=DIST.source, domain=None, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.filler = Slot(uri=BIOLINK.filler, name=\"filler\", curie=BIOLINK.curie('filler'),\n",
      "                   model_uri=DIST.filler, domain=NamedThing, range=Optional[Union[str, NamedThingId]])\n",
      "\n",
      "slots.symbol = Slot(uri=BIOLINK.symbol, name=\"symbol\", curie=BIOLINK.curie('symbol'),\n",
      "                   model_uri=DIST.symbol, domain=NamedThing, range=Optional[str])\n",
      "\n",
      "slots.synonym = Slot(uri=BIOLINK.synonym, name=\"synonym\", curie=BIOLINK.curie('synonym'),\n",
      "                   model_uri=DIST.synonym, domain=NamedThing, range=Optional[Union[Union[str, LabelType], List[Union[str, LabelType]]]])\n",
      "\n",
      "slots.has_topic = Slot(uri=BIOLINK.has_topic, name=\"has topic\", curie=BIOLINK.curie('has_topic'),\n",
      "                   model_uri=DIST.has_topic, domain=NamedThing, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.xref = Slot(uri=BIOLINK.xref, name=\"xref\", curie=BIOLINK.curie('xref'),\n",
      "                   model_uri=DIST.xref, domain=NamedThing, range=Optional[Union[Union[str, IriType], List[Union[str, IriType]]]])\n",
      "\n",
      "slots.full_name = Slot(uri=BIOLINK.full_name, name=\"full name\", curie=BIOLINK.curie('full_name'),\n",
      "                   model_uri=DIST.full_name, domain=NamedThing, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.description = Slot(uri=DCTERMS.description, name=\"description\", curie=DCTERMS.curie('description'),\n",
      "                   model_uri=DIST.description, domain=None, range=Optional[Union[str, NarrativeText]])\n",
      "\n",
      "slots.systematic_synonym = Slot(uri=GOP.systematic_synonym, name=\"systematic synonym\", curie=GOP.curie('systematic_synonym'),\n",
      "                   model_uri=DIST.systematic_synonym, domain=NamedThing, range=Optional[Union[Union[str, LabelType], List[Union[str, LabelType]]]])\n",
      "\n",
      "slots.affiliation = Slot(uri=BIOLINK.affiliation, name=\"affiliation\", curie=BIOLINK.curie('affiliation'),\n",
      "                   model_uri=DIST.affiliation, domain=Agent, range=Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]])\n",
      "\n",
      "slots.address = Slot(uri=BIOLINK.address, name=\"address\", curie=BIOLINK.curie('address'),\n",
      "                   model_uri=DIST.address, domain=NamedThing, range=Optional[str])\n",
      "\n",
      "slots.latitude = Slot(uri=BIOLINK.latitude, name=\"latitude\", curie=BIOLINK.curie('latitude'),\n",
      "                   model_uri=DIST.latitude, domain=NamedThing, range=Optional[float])\n",
      "\n",
      "slots.longitude = Slot(uri=BIOLINK.longitude, name=\"longitude\", curie=BIOLINK.curie('longitude'),\n",
      "                   model_uri=DIST.longitude, domain=NamedThing, range=Optional[float])\n",
      "\n",
      "slots.timepoint = Slot(uri=BIOLINK.timepoint, name=\"timepoint\", curie=BIOLINK.curie('timepoint'),\n",
      "                   model_uri=DIST.timepoint, domain=NamedThing, range=Optional[Union[str, TimeType]])\n",
      "\n",
      "slots.creation_date = Slot(uri=BIOLINK.creation_date, name=\"creation date\", curie=BIOLINK.curie('creation_date'),\n",
      "                   model_uri=DIST.creation_date, domain=NamedThing, range=Optional[Union[str, XSDDate]])\n",
      "\n",
      "slots.update_date = Slot(uri=BIOLINK.update_date, name=\"update date\", curie=BIOLINK.curie('update_date'),\n",
      "                   model_uri=DIST.update_date, domain=NamedThing, range=Optional[Union[str, XSDDate]])\n",
      "\n",
      "slots.aggregate_statistic = Slot(uri=BIOLINK.aggregate_statistic, name=\"aggregate statistic\", curie=BIOLINK.curie('aggregate_statistic'),\n",
      "                   model_uri=DIST.aggregate_statistic, domain=NamedThing, range=Optional[str])\n",
      "\n",
      "slots.has_count = Slot(uri=BIOLINK.has_count, name=\"has count\", curie=BIOLINK.curie('has_count'),\n",
      "                   model_uri=DIST.has_count, domain=NamedThing, range=Optional[int])\n",
      "\n",
      "slots.has_total = Slot(uri=BIOLINK.has_total, name=\"has total\", curie=BIOLINK.curie('has_total'),\n",
      "                   model_uri=DIST.has_total, domain=NamedThing, range=Optional[int])\n",
      "\n",
      "slots.has_quotient = Slot(uri=BIOLINK.has_quotient, name=\"has quotient\", curie=BIOLINK.curie('has_quotient'),\n",
      "                   model_uri=DIST.has_quotient, domain=NamedThing, range=Optional[float])\n",
      "\n",
      "slots.has_percentage = Slot(uri=BIOLINK.has_percentage, name=\"has percentage\", curie=BIOLINK.curie('has_percentage'),\n",
      "                   model_uri=DIST.has_percentage, domain=NamedThing, range=Optional[float])\n",
      "\n",
      "slots.source_data_file = Slot(uri=BIOLINK.source_data_file, name=\"source data file\", curie=BIOLINK.curie('source_data_file'),\n",
      "                   model_uri=DIST.source_data_file, domain=DataSetVersion, range=Optional[Union[str, DataFileId]])\n",
      "\n",
      "slots.source_web_page = Slot(uri=BIOLINK.source_web_page, name=\"source web page\", curie=BIOLINK.curie('source_web_page'),\n",
      "                   model_uri=DIST.source_web_page, domain=None, range=Optional[str])\n",
      "\n",
      "slots.retrieved_on = Slot(uri=BIOLINK.retrieved_on, name=\"retrieved on\", curie=BIOLINK.curie('retrieved_on'),\n",
      "                   model_uri=DIST.retrieved_on, domain=SourceFile, range=Optional[Union[str, XSDDate]])\n",
      "\n",
      "slots.version_of = Slot(uri=BIOLINK.version_of, name=\"version of\", curie=BIOLINK.curie('version_of'),\n",
      "                   model_uri=DIST.version_of, domain=DataSetVersion, range=Optional[Union[str, DataSetId]])\n",
      "\n",
      "slots.source_version = Slot(uri=BIOLINK.source_version, name=\"source version\", curie=BIOLINK.curie('source_version'),\n",
      "                   model_uri=DIST.source_version, domain=SourceFile, range=Optional[str])\n",
      "\n",
      "slots.license = Slot(uri=BIOLINK.license, name=\"license\", curie=BIOLINK.curie('license'),\n",
      "                   model_uri=DIST.license, domain=InformationContentEntity, range=Optional[str])\n",
      "\n",
      "slots.rights = Slot(uri=BIOLINK.rights, name=\"rights\", curie=BIOLINK.curie('rights'),\n",
      "                   model_uri=DIST.rights, domain=InformationContentEntity, range=Optional[str])\n",
      "\n",
      "slots.format = Slot(uri=BIOLINK.format, name=\"format\", curie=BIOLINK.curie('format'),\n",
      "                   model_uri=DIST.format, domain=InformationContentEntity, range=Optional[str])\n",
      "\n",
      "slots.created_with = Slot(uri=BIOLINK.created_with, name=\"created_with\", curie=BIOLINK.curie('created_with'),\n",
      "                   model_uri=DIST.created_with, domain=SourceFile, range=Optional[str])\n",
      "\n",
      "slots.download_url = Slot(uri=BIOLINK.download_url, name=\"download url\", curie=BIOLINK.curie('download_url'),\n",
      "                   model_uri=DIST.download_url, domain=None, range=Optional[str])\n",
      "\n",
      "slots.distribution = Slot(uri=BIOLINK.distribution, name=\"distribution\", curie=BIOLINK.curie('distribution'),\n",
      "                   model_uri=DIST.distribution, domain=DataSetVersion, range=Optional[Union[str, DistributionLevelId]])\n",
      "\n",
      "slots.published_in = Slot(uri=BIOLINK.published_in, name=\"published in\", curie=BIOLINK.curie('published_in'),\n",
      "                   model_uri=DIST.published_in, domain=Publication, range=Optional[Union[str, URIorCURIE]])\n",
      "\n",
      "slots.iso_abbreviation = Slot(uri=BIOLINK.iso_abbreviation, name=\"iso abbreviation\", curie=BIOLINK.curie('iso_abbreviation'),\n",
      "                   model_uri=DIST.iso_abbreviation, domain=Publication, range=Optional[str])\n",
      "\n",
      "slots.authors = Slot(uri=BIOLINK.authors, name=\"authors\", curie=BIOLINK.curie('authors'),\n",
      "                   model_uri=DIST.authors, domain=Publication, range=Optional[Union[str, List[str]]])\n",
      "\n",
      "slots.volume = Slot(uri=BIOLINK.volume, name=\"volume\", curie=BIOLINK.curie('volume'),\n",
      "                   model_uri=DIST.volume, domain=Publication, range=Optional[str])\n",
      "\n",
      "slots.chapter = Slot(uri=BIOLINK.chapter, name=\"chapter\", curie=BIOLINK.curie('chapter'),\n",
      "                   model_uri=DIST.chapter, domain=BookChapter, range=Optional[str])\n",
      "\n",
      "slots.issue = Slot(uri=BIOLINK.issue, name=\"issue\", curie=BIOLINK.curie('issue'),\n",
      "                   model_uri=DIST.issue, domain=Publication, range=Optional[str])\n",
      "\n",
      "slots.pages = Slot(uri=BIOLINK.pages, name=\"pages\", curie=BIOLINK.curie('pages'),\n",
      "                   model_uri=DIST.pages, domain=Publication, range=Optional[Union[str, List[str]]])\n",
      "\n",
      "slots.summary = Slot(uri=BIOLINK.summary, name=\"summary\", curie=BIOLINK.curie('summary'),\n",
      "                   model_uri=DIST.summary, domain=Publication, range=Optional[str])\n",
      "\n",
      "slots.keywords = Slot(uri=BIOLINK.keywords, name=\"keywords\", curie=BIOLINK.curie('keywords'),\n",
      "                   model_uri=DIST.keywords, domain=Publication, range=Optional[Union[str, List[str]]])\n",
      "\n",
      "slots.mesh_terms = Slot(uri=BIOLINK.mesh_terms, name=\"mesh terms\", curie=BIOLINK.curie('mesh_terms'),\n",
      "                   model_uri=DIST.mesh_terms, domain=Publication, range=Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]])\n",
      "\n",
      "slots.has_biological_sequence = Slot(uri=BIOLINK.has_biological_sequence, name=\"has biological sequence\", curie=BIOLINK.curie('has_biological_sequence'),\n",
      "                   model_uri=DIST.has_biological_sequence, domain=NamedThing, range=Optional[Union[str, BiologicalSequence]])\n",
      "\n",
      "slots.has_gene_or_gene_product = Slot(uri=BIOLINK.has_gene_or_gene_product, name=\"has gene or gene product\", curie=BIOLINK.curie('has_gene_or_gene_product'),\n",
      "                   model_uri=DIST.has_gene_or_gene_product, domain=NamedThing, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.has_gene = Slot(uri=BIOLINK.has_gene, name=\"has gene\", curie=BIOLINK.curie('has_gene'),\n",
      "                   model_uri=DIST.has_gene, domain=NamedThing, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.has_zygosity = Slot(uri=BIOLINK.has_zygosity, name=\"has zygosity\", curie=BIOLINK.curie('has_zygosity'),\n",
      "                   model_uri=DIST.has_zygosity, domain=GenomicEntity, range=Optional[Union[dict, \"Zygosity\"]])\n",
      "\n",
      "slots.has_chemical_formula = Slot(uri=BIOLINK.has_chemical_formula, name=\"has chemical formula\", curie=BIOLINK.curie('has_chemical_formula'),\n",
      "                   model_uri=DIST.has_chemical_formula, domain=NamedThing, range=Optional[str])\n",
      "\n",
      "slots.has_constituent = Slot(uri=BIOLINK.has_constituent, name=\"has constituent\", curie=BIOLINK.curie('has_constituent'),\n",
      "                   model_uri=DIST.has_constituent, domain=NamedThing, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.has_drug = Slot(uri=BIOLINK.has_drug, name=\"has drug\", curie=BIOLINK.curie('has_drug'),\n",
      "                   model_uri=DIST.has_drug, domain=NamedThing, range=Optional[Union[Union[str, DrugId], List[Union[str, DrugId]]]])\n",
      "\n",
      "slots.has_device = Slot(uri=BIOLINK.has_device, name=\"has device\", curie=BIOLINK.curie('has_device'),\n",
      "                   model_uri=DIST.has_device, domain=NamedThing, range=Optional[Union[Union[str, DeviceId], List[Union[str, DeviceId]]]])\n",
      "\n",
      "slots.has_procedure = Slot(uri=BIOLINK.has_procedure, name=\"has procedure\", curie=BIOLINK.curie('has_procedure'),\n",
      "                   model_uri=DIST.has_procedure, domain=NamedThing, range=Optional[Union[Union[str, ProcedureId], List[Union[str, ProcedureId]]]])\n",
      "\n",
      "slots.has_active_ingredient = Slot(uri=BIOLINK.has_active_ingredient, name=\"has active ingredient\", curie=BIOLINK.curie('has_active_ingredient'),\n",
      "                   model_uri=DIST.has_active_ingredient, domain=Drug, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.has_excipient = Slot(uri=BIOLINK.has_excipient, name=\"has excipient\", curie=BIOLINK.curie('has_excipient'),\n",
      "                   model_uri=DIST.has_excipient, domain=Drug, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.has_nutrient = Slot(uri=BIOLINK.has_nutrient, name=\"has nutrient\", curie=BIOLINK.curie('has_nutrient'),\n",
      "                   model_uri=DIST.has_nutrient, domain=Food, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.has_receptor = Slot(uri=BIOLINK.has_receptor, name=\"has receptor\", curie=BIOLINK.curie('has_receptor'),\n",
      "                   model_uri=DIST.has_receptor, domain=None, range=Optional[Union[str, OrganismalEntityId]])\n",
      "\n",
      "slots.has_stressor = Slot(uri=BIOLINK.has_stressor, name=\"has stressor\", curie=BIOLINK.curie('has_stressor'),\n",
      "                   model_uri=DIST.has_stressor, domain=None, range=Optional[str])\n",
      "\n",
      "slots.has_route = Slot(uri=BIOLINK.has_route, name=\"has route\", curie=BIOLINK.curie('has_route'),\n",
      "                   model_uri=DIST.has_route, domain=None, range=Optional[str])\n",
      "\n",
      "slots.has_population_context = Slot(uri=BIOLINK.has_population_context, name=\"has population context\", curie=BIOLINK.curie('has_population_context'),\n",
      "                   model_uri=DIST.has_population_context, domain=Association, range=Optional[Union[str, PopulationOfIndividualOrganismsId]])\n",
      "\n",
      "slots.has_temporal_context = Slot(uri=BIOLINK.has_temporal_context, name=\"has temporal context\", curie=BIOLINK.curie('has_temporal_context'),\n",
      "                   model_uri=DIST.has_temporal_context, domain=Association, range=Optional[Union[str, TimeType]])\n",
      "\n",
      "slots.related_to = Slot(uri=BIOLINK.related_to, name=\"related to\", curie=BIOLINK.curie('related_to'),\n",
      "                   model_uri=DIST.related_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.superclass_of = Slot(uri=BIOLINK.superclass_of, name=\"superclass of\", curie=BIOLINK.curie('superclass_of'),\n",
      "                   model_uri=DIST.superclass_of, domain=OntologyClass, range=Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]])\n",
      "\n",
      "slots.subclass_of = Slot(uri=RDFS.subClassOf, name=\"subclass of\", curie=RDFS.curie('subClassOf'),\n",
      "                   model_uri=DIST.subclass_of, domain=OntologyClass, range=Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]])\n",
      "\n",
      "slots.same_as = Slot(uri=BIOLINK.same_as, name=\"same as\", curie=BIOLINK.curie('same_as'),\n",
      "                   model_uri=DIST.same_as, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.close_match = Slot(uri=BIOLINK.close_match, name=\"close match\", curie=BIOLINK.curie('close_match'),\n",
      "                   model_uri=DIST.close_match, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.exact_match = Slot(uri=BIOLINK.exact_match, name=\"exact match\", curie=BIOLINK.curie('exact_match'),\n",
      "                   model_uri=DIST.exact_match, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.contributor = Slot(uri=BIOLINK.contributor, name=\"contributor\", curie=BIOLINK.curie('contributor'),\n",
      "                   model_uri=DIST.contributor, domain=InformationContentEntity, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.provider = Slot(uri=BIOLINK.provider, name=\"provider\", curie=BIOLINK.curie('provider'),\n",
      "                   model_uri=DIST.provider, domain=InformationContentEntity, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.publisher = Slot(uri=BIOLINK.publisher, name=\"publisher\", curie=BIOLINK.curie('publisher'),\n",
      "                   model_uri=DIST.publisher, domain=Publication, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.editor = Slot(uri=BIOLINK.editor, name=\"editor\", curie=BIOLINK.curie('editor'),\n",
      "                   model_uri=DIST.editor, domain=Publication, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.author = Slot(uri=BIOLINK.author, name=\"author\", curie=BIOLINK.curie('author'),\n",
      "                   model_uri=DIST.author, domain=Publication, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.interacts_with = Slot(uri=BIOLINK.interacts_with, name=\"interacts with\", curie=BIOLINK.curie('interacts_with'),\n",
      "                   model_uri=DIST.interacts_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.physically_interacts_with = Slot(uri=BIOLINK.physically_interacts_with, name=\"physically interacts with\", curie=BIOLINK.curie('physically_interacts_with'),\n",
      "                   model_uri=DIST.physically_interacts_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.molecularly_interacts_with = Slot(uri=BIOLINK.molecularly_interacts_with, name=\"molecularly interacts with\", curie=BIOLINK.curie('molecularly_interacts_with'),\n",
      "                   model_uri=DIST.molecularly_interacts_with, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.genetically_interacts_with = Slot(uri=BIOLINK.genetically_interacts_with, name=\"genetically interacts with\", curie=BIOLINK.curie('genetically_interacts_with'),\n",
      "                   model_uri=DIST.genetically_interacts_with, domain=Gene, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.affects = Slot(uri=BIOLINK.affects, name=\"affects\", curie=BIOLINK.curie('affects'),\n",
      "                   model_uri=DIST.affects, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.affected_by = Slot(uri=BIOLINK.affected_by, name=\"affected by\", curie=BIOLINK.curie('affected_by'),\n",
      "                   model_uri=DIST.affected_by, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.affects_abundance_of = Slot(uri=BIOLINK.affects_abundance_of, name=\"affects abundance of\", curie=BIOLINK.curie('affects_abundance_of'),\n",
      "                   model_uri=DIST.affects_abundance_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_abundance_of = Slot(uri=BIOLINK.increases_abundance_of, name=\"increases abundance of\", curie=BIOLINK.curie('increases_abundance_of'),\n",
      "                   model_uri=DIST.increases_abundance_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_abundance_of = Slot(uri=BIOLINK.decreases_abundance_of, name=\"decreases abundance of\", curie=BIOLINK.curie('decreases_abundance_of'),\n",
      "                   model_uri=DIST.decreases_abundance_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_activity_of = Slot(uri=BIOLINK.affects_activity_of, name=\"affects activity of\", curie=BIOLINK.curie('affects_activity_of'),\n",
      "                   model_uri=DIST.affects_activity_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_activity_of = Slot(uri=BIOLINK.increases_activity_of, name=\"increases activity of\", curie=BIOLINK.curie('increases_activity_of'),\n",
      "                   model_uri=DIST.increases_activity_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_activity_of = Slot(uri=BIOLINK.decreases_activity_of, name=\"decreases activity of\", curie=BIOLINK.curie('decreases_activity_of'),\n",
      "                   model_uri=DIST.decreases_activity_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_expression_of = Slot(uri=BIOLINK.affects_expression_of, name=\"affects expression of\", curie=BIOLINK.curie('affects_expression_of'),\n",
      "                   model_uri=DIST.affects_expression_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.increases_expression_of = Slot(uri=BIOLINK.increases_expression_of, name=\"increases expression of\", curie=BIOLINK.curie('increases_expression_of'),\n",
      "                   model_uri=DIST.increases_expression_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.decreases_expression_of = Slot(uri=BIOLINK.decreases_expression_of, name=\"decreases expression of\", curie=BIOLINK.curie('decreases_expression_of'),\n",
      "                   model_uri=DIST.decreases_expression_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.affects_folding_of = Slot(uri=BIOLINK.affects_folding_of, name=\"affects folding of\", curie=BIOLINK.curie('affects_folding_of'),\n",
      "                   model_uri=DIST.affects_folding_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_folding_of = Slot(uri=BIOLINK.increases_folding_of, name=\"increases folding of\", curie=BIOLINK.curie('increases_folding_of'),\n",
      "                   model_uri=DIST.increases_folding_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_folding_of = Slot(uri=BIOLINK.decreases_folding_of, name=\"decreases folding of\", curie=BIOLINK.curie('decreases_folding_of'),\n",
      "                   model_uri=DIST.decreases_folding_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_localization_of = Slot(uri=BIOLINK.affects_localization_of, name=\"affects localization of\", curie=BIOLINK.curie('affects_localization_of'),\n",
      "                   model_uri=DIST.affects_localization_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_localization_of = Slot(uri=BIOLINK.increases_localization_of, name=\"increases localization of\", curie=BIOLINK.curie('increases_localization_of'),\n",
      "                   model_uri=DIST.increases_localization_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_localization_of = Slot(uri=BIOLINK.decreases_localization_of, name=\"decreases localization of\", curie=BIOLINK.curie('decreases_localization_of'),\n",
      "                   model_uri=DIST.decreases_localization_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_metabolic_processing_of = Slot(uri=BIOLINK.affects_metabolic_processing_of, name=\"affects metabolic processing of\", curie=BIOLINK.curie('affects_metabolic_processing_of'),\n",
      "                   model_uri=DIST.affects_metabolic_processing_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_metabolic_processing_of = Slot(uri=BIOLINK.increases_metabolic_processing_of, name=\"increases metabolic processing of\", curie=BIOLINK.curie('increases_metabolic_processing_of'),\n",
      "                   model_uri=DIST.increases_metabolic_processing_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_metabolic_processing_of = Slot(uri=BIOLINK.decreases_metabolic_processing_of, name=\"decreases metabolic processing of\", curie=BIOLINK.curie('decreases_metabolic_processing_of'),\n",
      "                   model_uri=DIST.decreases_metabolic_processing_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_molecular_modification_of = Slot(uri=BIOLINK.affects_molecular_modification_of, name=\"affects molecular modification of\", curie=BIOLINK.curie('affects_molecular_modification_of'),\n",
      "                   model_uri=DIST.affects_molecular_modification_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_molecular_modification_of = Slot(uri=BIOLINK.increases_molecular_modification_of, name=\"increases molecular modification of\", curie=BIOLINK.curie('increases_molecular_modification_of'),\n",
      "                   model_uri=DIST.increases_molecular_modification_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_molecular_modification_of = Slot(uri=BIOLINK.decreases_molecular_modification_of, name=\"decreases molecular modification of\", curie=BIOLINK.curie('decreases_molecular_modification_of'),\n",
      "                   model_uri=DIST.decreases_molecular_modification_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_synthesis_of = Slot(uri=BIOLINK.affects_synthesis_of, name=\"affects synthesis of\", curie=BIOLINK.curie('affects_synthesis_of'),\n",
      "                   model_uri=DIST.affects_synthesis_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_synthesis_of = Slot(uri=BIOLINK.increases_synthesis_of, name=\"increases synthesis of\", curie=BIOLINK.curie('increases_synthesis_of'),\n",
      "                   model_uri=DIST.increases_synthesis_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_synthesis_of = Slot(uri=BIOLINK.decreases_synthesis_of, name=\"decreases synthesis of\", curie=BIOLINK.curie('decreases_synthesis_of'),\n",
      "                   model_uri=DIST.decreases_synthesis_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_degradation_of = Slot(uri=BIOLINK.affects_degradation_of, name=\"affects degradation of\", curie=BIOLINK.curie('affects_degradation_of'),\n",
      "                   model_uri=DIST.affects_degradation_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_degradation_of = Slot(uri=BIOLINK.increases_degradation_of, name=\"increases degradation of\", curie=BIOLINK.curie('increases_degradation_of'),\n",
      "                   model_uri=DIST.increases_degradation_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_degradation_of = Slot(uri=BIOLINK.decreases_degradation_of, name=\"decreases degradation of\", curie=BIOLINK.curie('decreases_degradation_of'),\n",
      "                   model_uri=DIST.decreases_degradation_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_mutation_rate_of = Slot(uri=BIOLINK.affects_mutation_rate_of, name=\"affects mutation rate of\", curie=BIOLINK.curie('affects_mutation_rate_of'),\n",
      "                   model_uri=DIST.affects_mutation_rate_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.increases_mutation_rate_of = Slot(uri=BIOLINK.increases_mutation_rate_of, name=\"increases mutation rate of\", curie=BIOLINK.curie('increases_mutation_rate_of'),\n",
      "                   model_uri=DIST.increases_mutation_rate_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.decreases_mutation_rate_of = Slot(uri=BIOLINK.decreases_mutation_rate_of, name=\"decreases mutation rate of\", curie=BIOLINK.curie('decreases_mutation_rate_of'),\n",
      "                   model_uri=DIST.decreases_mutation_rate_of, domain=MolecularEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.affects_response_to = Slot(uri=BIOLINK.affects_response_to, name=\"affects response to\", curie=BIOLINK.curie('affects_response_to'),\n",
      "                   model_uri=DIST.affects_response_to, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_response_to = Slot(uri=BIOLINK.increases_response_to, name=\"increases response to\", curie=BIOLINK.curie('increases_response_to'),\n",
      "                   model_uri=DIST.increases_response_to, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_response_to = Slot(uri=BIOLINK.decreases_response_to, name=\"decreases response to\", curie=BIOLINK.curie('decreases_response_to'),\n",
      "                   model_uri=DIST.decreases_response_to, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_splicing_of = Slot(uri=BIOLINK.affects_splicing_of, name=\"affects splicing of\", curie=BIOLINK.curie('affects_splicing_of'),\n",
      "                   model_uri=DIST.affects_splicing_of, domain=MolecularEntity, range=Optional[Union[Union[str, TranscriptId], List[Union[str, TranscriptId]]]])\n",
      "\n",
      "slots.increases_splicing_of = Slot(uri=BIOLINK.increases_splicing_of, name=\"increases splicing of\", curie=BIOLINK.curie('increases_splicing_of'),\n",
      "                   model_uri=DIST.increases_splicing_of, domain=MolecularEntity, range=Optional[Union[Union[str, TranscriptId], List[Union[str, TranscriptId]]]])\n",
      "\n",
      "slots.decreases_splicing_of = Slot(uri=BIOLINK.decreases_splicing_of, name=\"decreases splicing of\", curie=BIOLINK.curie('decreases_splicing_of'),\n",
      "                   model_uri=DIST.decreases_splicing_of, domain=MolecularEntity, range=Optional[Union[Union[str, TranscriptId], List[Union[str, TranscriptId]]]])\n",
      "\n",
      "slots.affects_stability_of = Slot(uri=BIOLINK.affects_stability_of, name=\"affects stability of\", curie=BIOLINK.curie('affects_stability_of'),\n",
      "                   model_uri=DIST.affects_stability_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_stability_of = Slot(uri=BIOLINK.increases_stability_of, name=\"increases stability of\", curie=BIOLINK.curie('increases_stability_of'),\n",
      "                   model_uri=DIST.increases_stability_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_stability_of = Slot(uri=BIOLINK.decreases_stability_of, name=\"decreases stability of\", curie=BIOLINK.curie('decreases_stability_of'),\n",
      "                   model_uri=DIST.decreases_stability_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_transport_of = Slot(uri=BIOLINK.affects_transport_of, name=\"affects transport of\", curie=BIOLINK.curie('affects_transport_of'),\n",
      "                   model_uri=DIST.affects_transport_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_transport_of = Slot(uri=BIOLINK.increases_transport_of, name=\"increases transport of\", curie=BIOLINK.curie('increases_transport_of'),\n",
      "                   model_uri=DIST.increases_transport_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_transport_of = Slot(uri=BIOLINK.decreases_transport_of, name=\"decreases transport of\", curie=BIOLINK.curie('decreases_transport_of'),\n",
      "                   model_uri=DIST.decreases_transport_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_secretion_of = Slot(uri=BIOLINK.affects_secretion_of, name=\"affects secretion of\", curie=BIOLINK.curie('affects_secretion_of'),\n",
      "                   model_uri=DIST.affects_secretion_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_secretion_of = Slot(uri=BIOLINK.increases_secretion_of, name=\"increases secretion of\", curie=BIOLINK.curie('increases_secretion_of'),\n",
      "                   model_uri=DIST.increases_secretion_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_secretion_of = Slot(uri=BIOLINK.decreases_secretion_of, name=\"decreases secretion of\", curie=BIOLINK.curie('decreases_secretion_of'),\n",
      "                   model_uri=DIST.decreases_secretion_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.affects_uptake_of = Slot(uri=BIOLINK.affects_uptake_of, name=\"affects uptake of\", curie=BIOLINK.curie('affects_uptake_of'),\n",
      "                   model_uri=DIST.affects_uptake_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_uptake_of = Slot(uri=BIOLINK.increases_uptake_of, name=\"increases uptake of\", curie=BIOLINK.curie('increases_uptake_of'),\n",
      "                   model_uri=DIST.increases_uptake_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.decreases_uptake_of = Slot(uri=BIOLINK.decreases_uptake_of, name=\"decreases uptake of\", curie=BIOLINK.curie('decreases_uptake_of'),\n",
      "                   model_uri=DIST.decreases_uptake_of, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.regulates = Slot(uri=BIOLINK.regulates, name=\"regulates\", curie=BIOLINK.curie('regulates'),\n",
      "                   model_uri=DIST.regulates, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.regulated_by = Slot(uri=BIOLINK.regulated_by, name=\"regulated by\", curie=BIOLINK.curie('regulated_by'),\n",
      "                   model_uri=DIST.regulated_by, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.positively_regulates = Slot(uri=BIOLINK.positively_regulates, name=\"positively regulates\", curie=BIOLINK.curie('positively_regulates'),\n",
      "                   model_uri=DIST.positively_regulates, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.positively_regulated_by = Slot(uri=BIOLINK.positively_regulated_by, name=\"positively regulated by\", curie=BIOLINK.curie('positively_regulated_by'),\n",
      "                   model_uri=DIST.positively_regulated_by, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.negatively_regulates = Slot(uri=BIOLINK.negatively_regulates, name=\"negatively regulates\", curie=BIOLINK.curie('negatively_regulates'),\n",
      "                   model_uri=DIST.negatively_regulates, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.negatively_regulated_by = Slot(uri=BIOLINK.negatively_regulated_by, name=\"negatively regulated by\", curie=BIOLINK.curie('negatively_regulated_by'),\n",
      "                   model_uri=DIST.negatively_regulated_by, domain=None, range=Optional[Union[dict, \"PhysicalEssenceOrOccurrent\"]])\n",
      "\n",
      "slots.regulates_process_to_process = Slot(uri=BIOLINK.regulates_process_to_process, name=\"regulates, process to process\", curie=BIOLINK.curie('regulates_process_to_process'),\n",
      "                   model_uri=DIST.regulates_process_to_process, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.regulated_by_process_to_process = Slot(uri=BIOLINK.regulated_by_process_to_process, name=\"regulated by, process to process\", curie=BIOLINK.curie('regulated_by_process_to_process'),\n",
      "                   model_uri=DIST.regulated_by_process_to_process, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.positively_regulates_process_to_process = Slot(uri=BIOLINK.positively_regulates_process_to_process, name=\"positively regulates, process to process\", curie=BIOLINK.curie('positively_regulates_process_to_process'),\n",
      "                   model_uri=DIST.positively_regulates_process_to_process, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.positively_regulated_by_process_to_process = Slot(uri=BIOLINK.positively_regulated_by_process_to_process, name=\"positively regulated by, process to process\", curie=BIOLINK.curie('positively_regulated_by_process_to_process'),\n",
      "                   model_uri=DIST.positively_regulated_by_process_to_process, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.negatively_regulates_process_to_process = Slot(uri=BIOLINK.negatively_regulates_process_to_process, name=\"negatively regulates, process to process\", curie=BIOLINK.curie('negatively_regulates_process_to_process'),\n",
      "                   model_uri=DIST.negatively_regulates_process_to_process, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.negatively_regulated_by_process_to_process = Slot(uri=BIOLINK.negatively_regulated_by_process_to_process, name=\"negatively regulated by, process to process\", curie=BIOLINK.curie('negatively_regulated_by_process_to_process'),\n",
      "                   model_uri=DIST.negatively_regulated_by_process_to_process, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.regulates_entity_to_entity = Slot(uri=BIOLINK.regulates_entity_to_entity, name=\"regulates, entity to entity\", curie=BIOLINK.curie('regulates_entity_to_entity'),\n",
      "                   model_uri=DIST.regulates_entity_to_entity, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.regulated_by_entity_to_entity = Slot(uri=BIOLINK.regulated_by_entity_to_entity, name=\"regulated by, entity to entity\", curie=BIOLINK.curie('regulated_by_entity_to_entity'),\n",
      "                   model_uri=DIST.regulated_by_entity_to_entity, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.positively_regulates_entity_to_entity = Slot(uri=BIOLINK.positively_regulates_entity_to_entity, name=\"positively regulates, entity to entity\", curie=BIOLINK.curie('positively_regulates_entity_to_entity'),\n",
      "                   model_uri=DIST.positively_regulates_entity_to_entity, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.positively_regulated_by_entity_to_entity = Slot(uri=BIOLINK.positively_regulated_by_entity_to_entity, name=\"positively regulated by, entity to entity\", curie=BIOLINK.curie('positively_regulated_by_entity_to_entity'),\n",
      "                   model_uri=DIST.positively_regulated_by_entity_to_entity, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.negatively_regulates_entity_to_entity = Slot(uri=BIOLINK.negatively_regulates_entity_to_entity, name=\"negatively regulates, entity to entity\", curie=BIOLINK.curie('negatively_regulates_entity_to_entity'),\n",
      "                   model_uri=DIST.negatively_regulates_entity_to_entity, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.negatively_regulated_by_entity_to_entity = Slot(uri=BIOLINK.negatively_regulated_by_entity_to_entity, name=\"negatively regulated by, entity to entity\", curie=BIOLINK.curie('negatively_regulated_by_entity_to_entity'),\n",
      "                   model_uri=DIST.negatively_regulated_by_entity_to_entity, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.disrupts = Slot(uri=BIOLINK.disrupts, name=\"disrupts\", curie=BIOLINK.curie('disrupts'),\n",
      "                   model_uri=DIST.disrupts, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.disrupted_by = Slot(uri=BIOLINK.disrupted_by, name=\"disrupted by\", curie=BIOLINK.curie('disrupted_by'),\n",
      "                   model_uri=DIST.disrupted_by, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_gene_product = Slot(uri=BIOLINK.has_gene_product, name=\"has gene product\", curie=BIOLINK.curie('has_gene_product'),\n",
      "                   model_uri=DIST.has_gene_product, domain=Gene, range=Optional[Union[Union[str, GeneProductId], List[Union[str, GeneProductId]]]])\n",
      "\n",
      "slots.homologous_to = Slot(uri=BIOLINK.homologous_to, name=\"homologous to\", curie=BIOLINK.curie('homologous_to'),\n",
      "                   model_uri=DIST.homologous_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.paralogous_to = Slot(uri=BIOLINK.paralogous_to, name=\"paralogous to\", curie=BIOLINK.curie('paralogous_to'),\n",
      "                   model_uri=DIST.paralogous_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.orthologous_to = Slot(uri=BIOLINK.orthologous_to, name=\"orthologous to\", curie=BIOLINK.curie('orthologous_to'),\n",
      "                   model_uri=DIST.orthologous_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.xenologous_to = Slot(uri=BIOLINK.xenologous_to, name=\"xenologous to\", curie=BIOLINK.curie('xenologous_to'),\n",
      "                   model_uri=DIST.xenologous_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.coexists_with = Slot(uri=BIOLINK.coexists_with, name=\"coexists with\", curie=BIOLINK.curie('coexists_with'),\n",
      "                   model_uri=DIST.coexists_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.in_pathway_with = Slot(uri=BIOLINK.in_pathway_with, name=\"in pathway with\", curie=BIOLINK.curie('in_pathway_with'),\n",
      "                   model_uri=DIST.in_pathway_with, domain=GeneOrGeneProduct, range=Optional[Union[Union[str, GeneOrGeneProductId], List[Union[str, GeneOrGeneProductId]]]])\n",
      "\n",
      "slots.in_complex_with = Slot(uri=BIOLINK.in_complex_with, name=\"in complex with\", curie=BIOLINK.curie('in_complex_with'),\n",
      "                   model_uri=DIST.in_complex_with, domain=GeneOrGeneProduct, range=Optional[Union[Union[str, GeneOrGeneProductId], List[Union[str, GeneOrGeneProductId]]]])\n",
      "\n",
      "slots.in_cell_population_with = Slot(uri=BIOLINK.in_cell_population_with, name=\"in cell population with\", curie=BIOLINK.curie('in_cell_population_with'),\n",
      "                   model_uri=DIST.in_cell_population_with, domain=GeneOrGeneProduct, range=Optional[Union[Union[str, GeneOrGeneProductId], List[Union[str, GeneOrGeneProductId]]]])\n",
      "\n",
      "slots.colocalizes_with = Slot(uri=BIOLINK.colocalizes_with, name=\"colocalizes with\", curie=BIOLINK.curie('colocalizes_with'),\n",
      "                   model_uri=DIST.colocalizes_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.genetic_association = Slot(uri=BIOLINK.genetic_association, name=\"genetic association\", curie=BIOLINK.curie('genetic_association'),\n",
      "                   model_uri=DIST.genetic_association, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.gene_associated_with_condition = Slot(uri=BIOLINK.gene_associated_with_condition, name=\"gene associated with condition\", curie=BIOLINK.curie('gene_associated_with_condition'),\n",
      "                   model_uri=DIST.gene_associated_with_condition, domain=Gene, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.condition_associated_with_gene = Slot(uri=BIOLINK.condition_associated_with_gene, name=\"condition associated with gene\", curie=BIOLINK.curie('condition_associated_with_gene'),\n",
      "                   model_uri=DIST.condition_associated_with_gene, domain=DiseaseOrPhenotypicFeature, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.affects_risk_for = Slot(uri=BIOLINK.affects_risk_for, name=\"affects risk for\", curie=BIOLINK.curie('affects_risk_for'),\n",
      "                   model_uri=DIST.affects_risk_for, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.predisposes = Slot(uri=BIOLINK.predisposes, name=\"predisposes\", curie=BIOLINK.curie('predisposes'),\n",
      "                   model_uri=DIST.predisposes, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.contributes_to = Slot(uri=BIOLINK.contributes_to, name=\"contributes to\", curie=BIOLINK.curie('contributes_to'),\n",
      "                   model_uri=DIST.contributes_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.causes = Slot(uri=BIOLINK.causes, name=\"causes\", curie=BIOLINK.curie('causes'),\n",
      "                   model_uri=DIST.causes, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.caused_by = Slot(uri=BIOLINK.caused_by, name=\"caused by\", curie=BIOLINK.curie('caused_by'),\n",
      "                   model_uri=DIST.caused_by, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.ameliorates = Slot(uri=BIOLINK.ameliorates, name=\"ameliorates\", curie=BIOLINK.curie('ameliorates'),\n",
      "                   model_uri=DIST.ameliorates, domain=BiologicalEntity, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.exacerbates = Slot(uri=BIOLINK.exacerbates, name=\"exacerbates\", curie=BIOLINK.curie('exacerbates'),\n",
      "                   model_uri=DIST.exacerbates, domain=BiologicalEntity, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.treats = Slot(uri=BIOLINK.treats, name=\"treats\", curie=BIOLINK.curie('treats'),\n",
      "                   model_uri=DIST.treats, domain=Treatment, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.treated_by = Slot(uri=BIOLINK.treated_by, name=\"treated by\", curie=BIOLINK.curie('treated_by'),\n",
      "                   model_uri=DIST.treated_by, domain=DiseaseOrPhenotypicFeature, range=Optional[Union[Union[str, TreatmentId], List[Union[str, TreatmentId]]]])\n",
      "\n",
      "slots.prevents = Slot(uri=BIOLINK.prevents, name=\"prevents\", curie=BIOLINK.curie('prevents'),\n",
      "                   model_uri=DIST.prevents, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.prevented_by = Slot(uri=BIOLINK.prevented_by, name=\"prevented by\", curie=BIOLINK.curie('prevented_by'),\n",
      "                   model_uri=DIST.prevented_by, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.correlated_with = Slot(uri=BIOLINK.correlated_with, name=\"correlated with\", curie=BIOLINK.curie('correlated_with'),\n",
      "                   model_uri=DIST.correlated_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.positively_correlated_with = Slot(uri=BIOLINK.positively_correlated_with, name=\"positively correlated with\", curie=BIOLINK.curie('positively_correlated_with'),\n",
      "                   model_uri=DIST.positively_correlated_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.negatively_correlated_with = Slot(uri=BIOLINK.negatively_correlated_with, name=\"negatively correlated with\", curie=BIOLINK.curie('negatively_correlated_with'),\n",
      "                   model_uri=DIST.negatively_correlated_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.coexpressed_with = Slot(uri=BIOLINK.coexpressed_with, name=\"coexpressed with\", curie=BIOLINK.curie('coexpressed_with'),\n",
      "                   model_uri=DIST.coexpressed_with, domain=GeneOrGeneProduct, range=Optional[Union[Union[str, GeneOrGeneProductId], List[Union[str, GeneOrGeneProductId]]]])\n",
      "\n",
      "slots.has_biomarker = Slot(uri=BIOLINK.has_biomarker, name=\"has biomarker\", curie=BIOLINK.curie('has_biomarker'),\n",
      "                   model_uri=DIST.has_biomarker, domain=DiseaseOrPhenotypicFeature, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.biomarker_for = Slot(uri=BIOLINK.biomarker_for, name=\"biomarker for\", curie=BIOLINK.curie('biomarker_for'),\n",
      "                   model_uri=DIST.biomarker_for, domain=MolecularEntity, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.expressed_in = Slot(uri=BIOLINK.expressed_in, name=\"expressed in\", curie=BIOLINK.curie('expressed_in'),\n",
      "                   model_uri=DIST.expressed_in, domain=GeneOrGeneProduct, range=Optional[Union[Union[str, AnatomicalEntityId], List[Union[str, AnatomicalEntityId]]]])\n",
      "\n",
      "slots.expresses = Slot(uri=BIOLINK.expresses, name=\"expresses\", curie=BIOLINK.curie('expresses'),\n",
      "                   model_uri=DIST.expresses, domain=AnatomicalEntity, range=Optional[Union[Union[str, GeneOrGeneProductId], List[Union[str, GeneOrGeneProductId]]]])\n",
      "\n",
      "slots.has_phenotype = Slot(uri=BIOLINK.has_phenotype, name=\"has phenotype\", curie=BIOLINK.curie('has_phenotype'),\n",
      "                   model_uri=DIST.has_phenotype, domain=BiologicalEntity, range=Optional[Union[Union[str, PhenotypicFeatureId], List[Union[str, PhenotypicFeatureId]]]])\n",
      "\n",
      "slots.occurs_in = Slot(uri=BIOLINK.occurs_in, name=\"occurs in\", curie=BIOLINK.curie('occurs_in'),\n",
      "                   model_uri=DIST.occurs_in, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.located_in = Slot(uri=BIOLINK.located_in, name=\"located in\", curie=BIOLINK.curie('located_in'),\n",
      "                   model_uri=DIST.located_in, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.location_of = Slot(uri=BIOLINK.location_of, name=\"location of\", curie=BIOLINK.curie('location_of'),\n",
      "                   model_uri=DIST.location_of, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.similar_to = Slot(uri=BIOLINK.similar_to, name=\"similar to\", curie=BIOLINK.curie('similar_to'),\n",
      "                   model_uri=DIST.similar_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.chemically_similar_to = Slot(uri=BIOLINK.chemically_similar_to, name=\"chemically similar to\", curie=BIOLINK.curie('chemically_similar_to'),\n",
      "                   model_uri=DIST.chemically_similar_to, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_sequence_location = Slot(uri=BIOLINK.has_sequence_location, name=\"has sequence location\", curie=BIOLINK.curie('has_sequence_location'),\n",
      "                   model_uri=DIST.has_sequence_location, domain=GenomicEntity, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.model_of = Slot(uri=BIOLINK.model_of, name=\"model of\", curie=BIOLINK.curie('model_of'),\n",
      "                   model_uri=DIST.model_of, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.overlaps = Slot(uri=BIOLINK.overlaps, name=\"overlaps\", curie=BIOLINK.curie('overlaps'),\n",
      "                   model_uri=DIST.overlaps, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_part = Slot(uri=BIOLINK.has_part, name=\"has part\", curie=BIOLINK.curie('has_part'),\n",
      "                   model_uri=DIST.has_part, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.part_of = Slot(uri=BIOLINK.part_of, name=\"part of\", curie=BIOLINK.curie('part_of'),\n",
      "                   model_uri=DIST.part_of, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_input = Slot(uri=BIOLINK.has_input, name=\"has input\", curie=BIOLINK.curie('has_input'),\n",
      "                   model_uri=DIST.has_input, domain=None, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_output = Slot(uri=BIOLINK.has_output, name=\"has output\", curie=BIOLINK.curie('has_output'),\n",
      "                   model_uri=DIST.has_output, domain=None, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_participant = Slot(uri=BIOLINK.has_participant, name=\"has participant\", curie=BIOLINK.curie('has_participant'),\n",
      "                   model_uri=DIST.has_participant, domain=None, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.participates_in = Slot(uri=BIOLINK.participates_in, name=\"participates in\", curie=BIOLINK.curie('participates_in'),\n",
      "                   model_uri=DIST.participates_in, domain=NamedThing, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.actively_involved_in = Slot(uri=BIOLINK.actively_involved_in, name=\"actively involved in\", curie=BIOLINK.curie('actively_involved_in'),\n",
      "                   model_uri=DIST.actively_involved_in, domain=NamedThing, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.capable_of = Slot(uri=BIOLINK.capable_of, name=\"capable of\", curie=BIOLINK.curie('capable_of'),\n",
      "                   model_uri=DIST.capable_of, domain=NamedThing, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.enables = Slot(uri=BIOLINK.enables, name=\"enables\", curie=BIOLINK.curie('enables'),\n",
      "                   model_uri=DIST.enables, domain=PhysicalEntity, range=Optional[Union[Union[str, BiologicalProcessOrActivityId], List[Union[str, BiologicalProcessOrActivityId]]]])\n",
      "\n",
      "slots.enabled_by = Slot(uri=BIOLINK.enabled_by, name=\"enabled by\", curie=BIOLINK.curie('enabled_by'),\n",
      "                   model_uri=DIST.enabled_by, domain=BiologicalProcessOrActivity, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]])\n",
      "\n",
      "slots.derives_into = Slot(uri=BIOLINK.derives_into, name=\"derives into\", curie=BIOLINK.curie('derives_into'),\n",
      "                   model_uri=DIST.derives_into, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.derives_from = Slot(uri=BIOLINK.derives_from, name=\"derives from\", curie=BIOLINK.curie('derives_from'),\n",
      "                   model_uri=DIST.derives_from, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.manifestation_of = Slot(uri=BIOLINK.manifestation_of, name=\"manifestation of\", curie=BIOLINK.curie('manifestation_of'),\n",
      "                   model_uri=DIST.manifestation_of, domain=NamedThing, range=Optional[Union[Union[str, DiseaseId], List[Union[str, DiseaseId]]]])\n",
      "\n",
      "slots.produces = Slot(uri=BIOLINK.produces, name=\"produces\", curie=BIOLINK.curie('produces'),\n",
      "                   model_uri=DIST.produces, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.produced_by = Slot(uri=BIOLINK.produced_by, name=\"produced by\", curie=BIOLINK.curie('produced_by'),\n",
      "                   model_uri=DIST.produced_by, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.temporally_related_to = Slot(uri=BIOLINK.temporally_related_to, name=\"temporally related to\", curie=BIOLINK.curie('temporally_related_to'),\n",
      "                   model_uri=DIST.temporally_related_to, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.precedes = Slot(uri=BIOLINK.precedes, name=\"precedes\", curie=BIOLINK.curie('precedes'),\n",
      "                   model_uri=DIST.precedes, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.preceded_by = Slot(uri=BIOLINK.preceded_by, name=\"preceded by\", curie=BIOLINK.curie('preceded_by'),\n",
      "                   model_uri=DIST.preceded_by, domain=None, range=Optional[Union[Union[dict, \"Occurrent\"], List[Union[dict, \"Occurrent\"]]]])\n",
      "\n",
      "slots.directly_interacts_with = Slot(uri=BIOLINK.directly_interacts_with, name=\"directly interacts with\", curie=BIOLINK.curie('directly_interacts_with'),\n",
      "                   model_uri=DIST.directly_interacts_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.affects_expression_in = Slot(uri=BIOLINK.affects_expression_in, name=\"affects expression in\", curie=BIOLINK.curie('affects_expression_in'),\n",
      "                   model_uri=DIST.affects_expression_in, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_variant_part = Slot(uri=BIOLINK.has_variant_part, name=\"has variant part\", curie=BIOLINK.curie('has_variant_part'),\n",
      "                   model_uri=DIST.has_variant_part, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.related_condition = Slot(uri=BIOLINK.related_condition, name=\"related condition\", curie=BIOLINK.curie('related_condition'),\n",
      "                   model_uri=DIST.related_condition, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.is_sequence_variant_of = Slot(uri=BIOLINK.is_sequence_variant_of, name=\"is sequence variant of\", curie=BIOLINK.curie('is_sequence_variant_of'),\n",
      "                   model_uri=DIST.is_sequence_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GenomicEntityId], List[Union[str, GenomicEntityId]]]])\n",
      "\n",
      "slots.is_missense_variant_of = Slot(uri=BIOLINK.is_missense_variant_of, name=\"is missense variant of\", curie=BIOLINK.curie('is_missense_variant_of'),\n",
      "                   model_uri=DIST.is_missense_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_synonymous_variant_of = Slot(uri=BIOLINK.is_synonymous_variant_of, name=\"is synonymous variant of\", curie=BIOLINK.curie('is_synonymous_variant_of'),\n",
      "                   model_uri=DIST.is_synonymous_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_nonsense_variant_of = Slot(uri=BIOLINK.is_nonsense_variant_of, name=\"is nonsense variant of\", curie=BIOLINK.curie('is_nonsense_variant_of'),\n",
      "                   model_uri=DIST.is_nonsense_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_frameshift_variant_of = Slot(uri=BIOLINK.is_frameshift_variant_of, name=\"is frameshift variant of\", curie=BIOLINK.curie('is_frameshift_variant_of'),\n",
      "                   model_uri=DIST.is_frameshift_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_splice_site_variant_of = Slot(uri=BIOLINK.is_splice_site_variant_of, name=\"is splice site variant of\", curie=BIOLINK.curie('is_splice_site_variant_of'),\n",
      "                   model_uri=DIST.is_splice_site_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_nearby_variant_of = Slot(uri=BIOLINK.is_nearby_variant_of, name=\"is nearby variant of\", curie=BIOLINK.curie('is_nearby_variant_of'),\n",
      "                   model_uri=DIST.is_nearby_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.is_non_coding_variant_of = Slot(uri=BIOLINK.is_non_coding_variant_of, name=\"is non coding variant of\", curie=BIOLINK.curie('is_non_coding_variant_of'),\n",
      "                   model_uri=DIST.is_non_coding_variant_of, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.disease_has_basis_in = Slot(uri=BIOLINK.disease_has_basis_in, name=\"disease has basis in\", curie=BIOLINK.curie('disease_has_basis_in'),\n",
      "                   model_uri=DIST.disease_has_basis_in, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.causes_adverse_event = Slot(uri=BIOLINK.causes_adverse_event, name=\"causes adverse event\", curie=BIOLINK.curie('causes_adverse_event'),\n",
      "                   model_uri=DIST.causes_adverse_event, domain=Drug, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.contraindicated_for = Slot(uri=BIOLINK.contraindicated_for, name=\"contraindicated for\", curie=BIOLINK.curie('contraindicated_for'),\n",
      "                   model_uri=DIST.contraindicated_for, domain=Drug, range=Optional[Union[Union[str, DiseaseOrPhenotypicFeatureId], List[Union[str, DiseaseOrPhenotypicFeatureId]]]])\n",
      "\n",
      "slots.has_not_completed = Slot(uri=BIOLINK.has_not_completed, name=\"has not completed\", curie=BIOLINK.curie('has_not_completed'),\n",
      "                   model_uri=DIST.has_not_completed, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_completed = Slot(uri=BIOLINK.has_completed, name=\"has completed\", curie=BIOLINK.curie('has_completed'),\n",
      "                   model_uri=DIST.has_completed, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.decreases_molecular_interaction = Slot(uri=BIOLINK.decreases_molecular_interaction, name=\"decreases molecular interaction\", curie=BIOLINK.curie('decreases_molecular_interaction'),\n",
      "                   model_uri=DIST.decreases_molecular_interaction, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.increases_molecular_interaction = Slot(uri=BIOLINK.increases_molecular_interaction, name=\"increases molecular interaction\", curie=BIOLINK.curie('increases_molecular_interaction'),\n",
      "                   model_uri=DIST.increases_molecular_interaction, domain=MolecularEntity, range=Optional[Union[Union[str, MolecularEntityId], List[Union[str, MolecularEntityId]]]])\n",
      "\n",
      "slots.in_linkage_disequilibrium_with = Slot(uri=BIOLINK.in_linkage_disequilibrium_with, name=\"in linkage disequilibrium with\", curie=BIOLINK.curie('in_linkage_disequilibrium_with'),\n",
      "                   model_uri=DIST.in_linkage_disequilibrium_with, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_increased_amount = Slot(uri=BIOLINK.has_increased_amount, name=\"has increased amount\", curie=BIOLINK.curie('has_increased_amount'),\n",
      "                   model_uri=DIST.has_increased_amount, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.has_decreased_amount = Slot(uri=BIOLINK.has_decreased_amount, name=\"has decreased amount\", curie=BIOLINK.curie('has_decreased_amount'),\n",
      "                   model_uri=DIST.has_decreased_amount, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.lacks_part = Slot(uri=BIOLINK.lacks_part, name=\"lacks part\", curie=BIOLINK.curie('lacks_part'),\n",
      "                   model_uri=DIST.lacks_part, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.develops_from = Slot(uri=BIOLINK.develops_from, name=\"develops from\", curie=BIOLINK.curie('develops_from'),\n",
      "                   model_uri=DIST.develops_from, domain=NamedThing, range=Optional[Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]]])\n",
      "\n",
      "slots.in_taxon = Slot(uri=BIOLINK.in_taxon, name=\"in taxon\", curie=BIOLINK.curie('in_taxon'),\n",
      "                   model_uri=DIST.in_taxon, domain=None, range=Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]])\n",
      "\n",
      "slots.has_molecular_consequence = Slot(uri=BIOLINK.has_molecular_consequence, name=\"has molecular consequence\", curie=BIOLINK.curie('has_molecular_consequence'),\n",
      "                   model_uri=DIST.has_molecular_consequence, domain=NamedThing, range=Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]])\n",
      "\n",
      "slots.association_slot = Slot(uri=BIOLINK.association_slot, name=\"association slot\", curie=BIOLINK.curie('association_slot'),\n",
      "                   model_uri=DIST.association_slot, domain=Association, range=Optional[str])\n",
      "\n",
      "slots.association_id = Slot(uri=BIOLINK.id, name=\"association_id\", curie=BIOLINK.curie('id'),\n",
      "                   model_uri=DIST.association_id, domain=Association, range=Union[str, AssociationId])\n",
      "\n",
      "slots.subject = Slot(uri=RDF.subject, name=\"subject\", curie=RDF.curie('subject'),\n",
      "                   model_uri=DIST.subject, domain=Association, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.object = Slot(uri=RDF.object, name=\"object\", curie=RDF.curie('object'),\n",
      "                   model_uri=DIST.object, domain=Association, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.predicate = Slot(uri=RDF.predicate, name=\"predicate\", curie=RDF.curie('predicate'),\n",
      "                   model_uri=DIST.predicate, domain=Association, range=Union[str, PredicateType])\n",
      "\n",
      "slots.edge_label = Slot(uri=RDF.predicate, name=\"edge label\", curie=RDF.curie('predicate'),\n",
      "                   model_uri=DIST.edge_label, domain=Association, range=Union[str, PredicateType])\n",
      "\n",
      "slots.relation = Slot(uri=BIOLINK.relation, name=\"relation\", curie=BIOLINK.curie('relation'),\n",
      "                   model_uri=DIST.relation, domain=Association, range=Union[str, URIorCURIE])\n",
      "\n",
      "slots.negated = Slot(uri=BIOLINK.negated, name=\"negated\", curie=BIOLINK.curie('negated'),\n",
      "                   model_uri=DIST.negated, domain=Association, range=Optional[Bool])\n",
      "\n",
      "slots.has_confidence_level = Slot(uri=BIOLINK.has_confidence_level, name=\"has confidence level\", curie=BIOLINK.curie('has_confidence_level'),\n",
      "                   model_uri=DIST.has_confidence_level, domain=Association, range=Optional[Union[str, ConfidenceLevelId]])\n",
      "\n",
      "slots.has_evidence = Slot(uri=BIOLINK.has_evidence, name=\"has evidence\", curie=BIOLINK.curie('has_evidence'),\n",
      "                   model_uri=DIST.has_evidence, domain=Association, range=Optional[Union[str, EvidenceTypeId]])\n",
      "\n",
      "slots.provided_by = Slot(uri=BIOLINK.provided_by, name=\"provided by\", curie=BIOLINK.curie('provided_by'),\n",
      "                   model_uri=DIST.provided_by, domain=Association, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]])\n",
      "\n",
      "slots.association_type = Slot(uri=BIOLINK.association_type, name=\"association type\", curie=BIOLINK.curie('association_type'),\n",
      "                   model_uri=DIST.association_type, domain=Association, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.chi_squared_statistic = Slot(uri=BIOLINK.chi_squared_statistic, name=\"chi squared statistic\", curie=BIOLINK.curie('chi_squared_statistic'),\n",
      "                   model_uri=DIST.chi_squared_statistic, domain=Association, range=Optional[float])\n",
      "\n",
      "slots.p_value = Slot(uri=BIOLINK.p_value, name=\"p value\", curie=BIOLINK.curie('p_value'),\n",
      "                   model_uri=DIST.p_value, domain=Association, range=Optional[float])\n",
      "\n",
      "slots.interacting_molecules_category = Slot(uri=BIOLINK.interacting_molecules_category, name=\"interacting molecules category\", curie=BIOLINK.curie('interacting_molecules_category'),\n",
      "                   model_uri=DIST.interacting_molecules_category, domain=Association, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.quantifier_qualifier = Slot(uri=BIOLINK.quantifier_qualifier, name=\"quantifier qualifier\", curie=BIOLINK.curie('quantifier_qualifier'),\n",
      "                   model_uri=DIST.quantifier_qualifier, domain=Association, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.catalyst_qualifier = Slot(uri=BIOLINK.catalyst_qualifier, name=\"catalyst qualifier\", curie=BIOLINK.curie('catalyst_qualifier'),\n",
      "                   model_uri=DIST.catalyst_qualifier, domain=Association, range=Optional[Union[Union[str, MacromolecularMachineId], List[Union[str, MacromolecularMachineId]]]])\n",
      "\n",
      "slots.expression_site = Slot(uri=BIOLINK.expression_site, name=\"expression site\", curie=BIOLINK.curie('expression_site'),\n",
      "                   model_uri=DIST.expression_site, domain=Association, range=Optional[Union[str, AnatomicalEntityId]])\n",
      "\n",
      "slots.stage_qualifier = Slot(uri=BIOLINK.stage_qualifier, name=\"stage qualifier\", curie=BIOLINK.curie('stage_qualifier'),\n",
      "                   model_uri=DIST.stage_qualifier, domain=Association, range=Optional[Union[str, LifeStageId]])\n",
      "\n",
      "slots.phenotypic_state = Slot(uri=BIOLINK.phenotypic_state, name=\"phenotypic state\", curie=BIOLINK.curie('phenotypic_state'),\n",
      "                   model_uri=DIST.phenotypic_state, domain=Association, range=Optional[Union[str, DiseaseOrPhenotypicFeatureId]])\n",
      "\n",
      "slots.qualifiers = Slot(uri=BIOLINK.qualifiers, name=\"qualifiers\", curie=BIOLINK.curie('qualifiers'),\n",
      "                   model_uri=DIST.qualifiers, domain=Association, range=Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]])\n",
      "\n",
      "slots.frequency_qualifier = Slot(uri=BIOLINK.frequency_qualifier, name=\"frequency qualifier\", curie=BIOLINK.curie('frequency_qualifier'),\n",
      "                   model_uri=DIST.frequency_qualifier, domain=Association, range=Optional[Union[dict, FrequencyValue]])\n",
      "\n",
      "slots.severity_qualifier = Slot(uri=BIOLINK.severity_qualifier, name=\"severity qualifier\", curie=BIOLINK.curie('severity_qualifier'),\n",
      "                   model_uri=DIST.severity_qualifier, domain=Association, range=Optional[Union[dict, SeverityValue]])\n",
      "\n",
      "slots.sex_qualifier = Slot(uri=BIOLINK.sex_qualifier, name=\"sex qualifier\", curie=BIOLINK.curie('sex_qualifier'),\n",
      "                   model_uri=DIST.sex_qualifier, domain=Association, range=Optional[Union[dict, BiologicalSex]])\n",
      "\n",
      "slots.onset_qualifier = Slot(uri=BIOLINK.onset_qualifier, name=\"onset qualifier\", curie=BIOLINK.curie('onset_qualifier'),\n",
      "                   model_uri=DIST.onset_qualifier, domain=Association, range=Optional[Union[dict, Onset]])\n",
      "\n",
      "slots.clinical_modifier_qualifier = Slot(uri=BIOLINK.clinical_modifier_qualifier, name=\"clinical modifier qualifier\", curie=BIOLINK.curie('clinical_modifier_qualifier'),\n",
      "                   model_uri=DIST.clinical_modifier_qualifier, domain=Association, range=Optional[Union[dict, ClinicalModifier]])\n",
      "\n",
      "slots.sequence_variant_qualifier = Slot(uri=BIOLINK.sequence_variant_qualifier, name=\"sequence variant qualifier\", curie=BIOLINK.curie('sequence_variant_qualifier'),\n",
      "                   model_uri=DIST.sequence_variant_qualifier, domain=Association, range=Optional[Union[str, SequenceVariantId]])\n",
      "\n",
      "slots.publications = Slot(uri=BIOLINK.publications, name=\"publications\", curie=BIOLINK.curie('publications'),\n",
      "                   model_uri=DIST.publications, domain=Association, range=Optional[Union[Union[str, PublicationId], List[Union[str, PublicationId]]]])\n",
      "\n",
      "slots.sequence_localization_attribute = Slot(uri=BIOLINK.sequence_localization_attribute, name=\"sequence localization attribute\", curie=BIOLINK.curie('sequence_localization_attribute'),\n",
      "                   model_uri=DIST.sequence_localization_attribute, domain=GenomicSequenceLocalization, range=Optional[str])\n",
      "\n",
      "slots.interbase_coordinate = Slot(uri=BIOLINK.interbase_coordinate, name=\"interbase coordinate\", curie=BIOLINK.curie('interbase_coordinate'),\n",
      "                   model_uri=DIST.interbase_coordinate, domain=GenomicSequenceLocalization, range=Optional[int])\n",
      "\n",
      "slots.start_interbase_coordinate = Slot(uri=BIOLINK.start_interbase_coordinate, name=\"start interbase coordinate\", curie=BIOLINK.curie('start_interbase_coordinate'),\n",
      "                   model_uri=DIST.start_interbase_coordinate, domain=GenomicSequenceLocalization, range=Optional[int])\n",
      "\n",
      "slots.end_interbase_coordinate = Slot(uri=BIOLINK.end_interbase_coordinate, name=\"end interbase coordinate\", curie=BIOLINK.curie('end_interbase_coordinate'),\n",
      "                   model_uri=DIST.end_interbase_coordinate, domain=GenomicSequenceLocalization, range=Optional[int])\n",
      "\n",
      "slots.genome_build = Slot(uri=BIOLINK.genome_build, name=\"genome build\", curie=BIOLINK.curie('genome_build'),\n",
      "                   model_uri=DIST.genome_build, domain=GenomicSequenceLocalization, range=Optional[str])\n",
      "\n",
      "slots.strand = Slot(uri=BIOLINK.strand, name=\"strand\", curie=BIOLINK.curie('strand'),\n",
      "                   model_uri=DIST.strand, domain=GenomicSequenceLocalization, range=Optional[str])\n",
      "\n",
      "slots.phase = Slot(uri=BIOLINK.phase, name=\"phase\", curie=BIOLINK.curie('phase'),\n",
      "                   model_uri=DIST.phase, domain=CodingSequence, range=Optional[str])\n",
      "\n",
      "slots.has_taxonomic_rank = Slot(uri=DIST.has_taxonomic_rank, name=\"has taxonomic rank\", curie=DIST.curie('has_taxonomic_rank'),\n",
      "                   model_uri=DIST.has_taxonomic_rank, domain=None, range=Optional[Union[str, TaxonomicRankId]], mappings = [WIKIDATA.P105])\n",
      "\n",
      "slots.attribute_name = Slot(uri=DIST.name, name=\"attribute_name\", curie=DIST.curie('name'),\n",
      "                   model_uri=DIST.attribute_name, domain=Attribute, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.named_thing_category = Slot(uri=DIST.category, name=\"named thing_category\", curie=DIST.curie('category'),\n",
      "                   model_uri=DIST.named_thing_category, domain=NamedThing, range=Union[Union[str, NamedThingId], List[Union[str, NamedThingId]]])\n",
      "\n",
      "slots.organism_taxon_has_taxonomic_rank = Slot(uri=DIST.has_taxonomic_rank, name=\"organism taxon_has taxonomic rank\", curie=DIST.curie('has_taxonomic_rank'),\n",
      "                   model_uri=DIST.organism_taxon_has_taxonomic_rank, domain=OrganismTaxon, range=Optional[Union[str, TaxonomicRankId]], mappings = [WIKIDATA.P105])\n",
      "\n",
      "slots.organism_taxon_subclass_of = Slot(uri=DIST.subclass_of, name=\"organism taxon_subclass of\", curie=DIST.curie('subclass_of'),\n",
      "                   model_uri=DIST.organism_taxon_subclass_of, domain=OrganismTaxon, range=Optional[Union[Union[str, OrganismTaxonId], List[Union[str, OrganismTaxonId]]]])\n",
      "\n",
      "slots.agent_id = Slot(uri=DIST.id, name=\"agent_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.agent_id, domain=Agent, range=Union[str, AgentId])\n",
      "\n",
      "slots.agent_name = Slot(uri=DIST.name, name=\"agent_name\", curie=DIST.curie('name'),\n",
      "                   model_uri=DIST.agent_name, domain=Agent, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.publication_id = Slot(uri=DIST.id, name=\"publication_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.publication_id, domain=Publication, range=Union[str, PublicationId])\n",
      "\n",
      "slots.publication_name = Slot(uri=DIST.name, name=\"publication_name\", curie=DIST.curie('name'),\n",
      "                   model_uri=DIST.publication_name, domain=Publication, range=Optional[Union[str, LabelType]])\n",
      "\n",
      "slots.publication_type = Slot(uri=DCTERMS.type, name=\"publication_type\", curie=DCTERMS.curie('type'),\n",
      "                   model_uri=DIST.publication_type, domain=Publication, range=str)\n",
      "\n",
      "slots.publication_pages = Slot(uri=DIST.pages, name=\"publication_pages\", curie=DIST.curie('pages'),\n",
      "                   model_uri=DIST.publication_pages, domain=Publication, range=Optional[Union[str, List[str]]])\n",
      "\n",
      "slots.book_id = Slot(uri=DIST.id, name=\"book_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.book_id, domain=Book, range=Union[str, BookId])\n",
      "\n",
      "slots.book_type = Slot(uri=DIST.type, name=\"book_type\", curie=DIST.curie('type'),\n",
      "                   model_uri=DIST.book_type, domain=Book, range=str)\n",
      "\n",
      "slots.book_chapter_published_in = Slot(uri=DIST.published_in, name=\"book chapter_published in\", curie=DIST.curie('published_in'),\n",
      "                   model_uri=DIST.book_chapter_published_in, domain=BookChapter, range=Union[str, URIorCURIE])\n",
      "\n",
      "slots.serial_id = Slot(uri=DIST.id, name=\"serial_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.serial_id, domain=Serial, range=Union[str, SerialId])\n",
      "\n",
      "slots.serial_type = Slot(uri=DIST.type, name=\"serial_type\", curie=DIST.curie('type'),\n",
      "                   model_uri=DIST.serial_type, domain=Serial, range=str)\n",
      "\n",
      "slots.article_published_in = Slot(uri=DIST.published_in, name=\"article_published in\", curie=DIST.curie('published_in'),\n",
      "                   model_uri=DIST.article_published_in, domain=Article, range=Union[str, URIorCURIE])\n",
      "\n",
      "slots.article_iso_abbreviation = Slot(uri=DIST.iso_abbreviation, name=\"article_iso abbreviation\", curie=DIST.curie('iso_abbreviation'),\n",
      "                   model_uri=DIST.article_iso_abbreviation, domain=Article, range=Optional[str])\n",
      "\n",
      "slots.molecular_activity_has_input = Slot(uri=DIST.has_input, name=\"molecular activity_has input\", curie=DIST.curie('has_input'),\n",
      "                   model_uri=DIST.molecular_activity_has_input, domain=MolecularActivity, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.molecular_activity_has_output = Slot(uri=DIST.has_output, name=\"molecular activity_has output\", curie=DIST.curie('has_output'),\n",
      "                   model_uri=DIST.molecular_activity_has_output, domain=MolecularActivity, range=Optional[Union[Union[str, ChemicalSubstanceId], List[Union[str, ChemicalSubstanceId]]]])\n",
      "\n",
      "slots.molecular_activity_enabled_by = Slot(uri=DIST.enabled_by, name=\"molecular activity_enabled by\", curie=DIST.curie('enabled_by'),\n",
      "                   model_uri=DIST.molecular_activity_enabled_by, domain=MolecularActivity, range=Optional[Union[Union[str, MacromolecularMachineId], List[Union[str, MacromolecularMachineId]]]])\n",
      "\n",
      "slots.organismal_entity_has_attribute = Slot(uri=DIST.has_attribute, name=\"organismal entity_has attribute\", curie=DIST.curie('has_attribute'),\n",
      "                   model_uri=DIST.organismal_entity_has_attribute, domain=OrganismalEntity, range=Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]])\n",
      "\n",
      "slots.macromolecular_machine_name = Slot(uri=DIST.name, name=\"macromolecular machine_name\", curie=DIST.curie('name'),\n",
      "                   model_uri=DIST.macromolecular_machine_name, domain=MacromolecularMachine, range=Optional[Union[str, SymbolType]])\n",
      "\n",
      "slots.sequence_variant_has_gene = Slot(uri=DIST.has_gene, name=\"sequence variant_has gene\", curie=DIST.curie('has_gene'),\n",
      "                   model_uri=DIST.sequence_variant_has_gene, domain=SequenceVariant, range=Optional[Union[Union[str, GeneId], List[Union[str, GeneId]]]])\n",
      "\n",
      "slots.sequence_variant_has_biological_sequence = Slot(uri=DIST.has_biological_sequence, name=\"sequence variant_has biological sequence\", curie=DIST.curie('has_biological_sequence'),\n",
      "                   model_uri=DIST.sequence_variant_has_biological_sequence, domain=SequenceVariant, range=Optional[Union[str, BiologicalSequence]])\n",
      "\n",
      "slots.sequence_variant_id = Slot(uri=DIST.id, name=\"sequence variant_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.sequence_variant_id, domain=SequenceVariant, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.clinical_measurement_has_attribute_type = Slot(uri=DIST.has_attribute_type, name=\"clinical measurement_has attribute type\", curie=DIST.curie('has_attribute_type'),\n",
      "                   model_uri=DIST.clinical_measurement_has_attribute_type, domain=ClinicalMeasurement, range=Union[str, OntologyClassId])\n",
      "\n",
      "slots.clinical_finding_has_attribute = Slot(uri=DIST.has_attribute, name=\"clinical finding_has attribute\", curie=DIST.curie('has_attribute'),\n",
      "                   model_uri=DIST.clinical_finding_has_attribute, domain=ClinicalFinding, range=Optional[Union[Union[dict, ClinicalAttribute], List[Union[dict, ClinicalAttribute]]]])\n",
      "\n",
      "slots.socioeconomic_exposure_has_attribute = Slot(uri=DIST.has_attribute, name=\"socioeconomic exposure_has attribute\", curie=DIST.curie('has_attribute'),\n",
      "                   model_uri=DIST.socioeconomic_exposure_has_attribute, domain=SocioeconomicExposure, range=Union[Union[dict, SocioeconomicAttribute], List[Union[dict, SocioeconomicAttribute]]])\n",
      "\n",
      "slots.association_type = Slot(uri=DIST.type, name=\"association_type\", curie=DIST.curie('type'),\n",
      "                   model_uri=DIST.association_type, domain=Association, range=Optional[str])\n",
      "\n",
      "slots.association_category = Slot(uri=DIST.category, name=\"association_category\", curie=DIST.curie('category'),\n",
      "                   model_uri=DIST.association_category, domain=Association, range=Union[Union[str, AssociationId], List[Union[str, AssociationId]]])\n",
      "\n",
      "slots.contributor_association_subject = Slot(uri=DIST.subject, name=\"contributor association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.contributor_association_subject, domain=ContributorAssociation, range=Union[str, InformationContentEntityId])\n",
      "\n",
      "slots.contributor_association_predicate = Slot(uri=DIST.predicate, name=\"contributor association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.contributor_association_predicate, domain=ContributorAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.contributor_association_object = Slot(uri=DIST.object, name=\"contributor association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.contributor_association_object, domain=ContributorAssociation, range=Union[str, AgentId])\n",
      "\n",
      "slots.contributor_association_qualifiers = Slot(uri=DIST.qualifiers, name=\"contributor association_qualifiers\", curie=DIST.curie('qualifiers'),\n",
      "                   model_uri=DIST.contributor_association_qualifiers, domain=ContributorAssociation, range=Optional[Union[Union[str, OntologyClassId], List[Union[str, OntologyClassId]]]])\n",
      "\n",
      "slots.genotype_to_genotype_part_association_predicate = Slot(uri=DIST.predicate, name=\"genotype to genotype part association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genotype_to_genotype_part_association_predicate, domain=GenotypeToGenotypePartAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.genotype_to_genotype_part_association_subject = Slot(uri=DIST.subject, name=\"genotype to genotype part association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_genotype_part_association_subject, domain=GenotypeToGenotypePartAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.genotype_to_genotype_part_association_object = Slot(uri=DIST.object, name=\"genotype to genotype part association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.genotype_to_genotype_part_association_object, domain=GenotypeToGenotypePartAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.genotype_to_gene_association_predicate = Slot(uri=DIST.predicate, name=\"genotype to gene association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genotype_to_gene_association_predicate, domain=GenotypeToGeneAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.genotype_to_gene_association_subject = Slot(uri=DIST.subject, name=\"genotype to gene association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_gene_association_subject, domain=GenotypeToGeneAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.genotype_to_gene_association_object = Slot(uri=DIST.object, name=\"genotype to gene association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.genotype_to_gene_association_object, domain=GenotypeToGeneAssociation, range=Union[str, GeneId])\n",
      "\n",
      "slots.genotype_to_variant_association_predicate = Slot(uri=DIST.predicate, name=\"genotype to variant association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genotype_to_variant_association_predicate, domain=GenotypeToVariantAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.genotype_to_variant_association_subject = Slot(uri=DIST.subject, name=\"genotype to variant association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_variant_association_subject, domain=GenotypeToVariantAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.genotype_to_variant_association_object = Slot(uri=DIST.object, name=\"genotype to variant association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.genotype_to_variant_association_object, domain=GenotypeToVariantAssociation, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.gene_to_gene_association_subject = Slot(uri=DIST.subject, name=\"gene to gene association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_gene_association_subject, domain=GeneToGeneAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_to_gene_association_object = Slot(uri=DIST.object, name=\"gene to gene association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.gene_to_gene_association_object, domain=GeneToGeneAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_to_gene_homology_association_predicate = Slot(uri=DIST.predicate, name=\"gene to gene homology association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.gene_to_gene_homology_association_predicate, domain=GeneToGeneHomologyAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.gene_expression_mixin_quantifier_qualifier = Slot(uri=DIST.quantifier_qualifier, name=\"gene expression mixin_quantifier qualifier\", curie=DIST.curie('quantifier_qualifier'),\n",
      "                   model_uri=DIST.gene_expression_mixin_quantifier_qualifier, domain=GeneExpressionMixin, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.gene_to_gene_coexpression_association_predicate = Slot(uri=DIST.predicate, name=\"gene to gene coexpression association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.gene_to_gene_coexpression_association_predicate, domain=GeneToGeneCoexpressionAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.pairwise_gene_to_gene_interaction_predicate = Slot(uri=DIST.predicate, name=\"pairwise gene to gene interaction_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.pairwise_gene_to_gene_interaction_predicate, domain=PairwiseGeneToGeneInteraction, range=Union[str, PredicateType])\n",
      "\n",
      "slots.pairwise_gene_to_gene_interaction_relation = Slot(uri=DIST.relation, name=\"pairwise gene to gene interaction_relation\", curie=DIST.curie('relation'),\n",
      "                   model_uri=DIST.pairwise_gene_to_gene_interaction_relation, domain=PairwiseGeneToGeneInteraction, range=Union[str, URIorCURIE])\n",
      "\n",
      "slots.pairwise_molecular_interaction_subject = Slot(uri=DIST.subject, name=\"pairwise molecular interaction_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.pairwise_molecular_interaction_subject, domain=PairwiseMolecularInteraction, range=Union[str, MolecularEntityId])\n",
      "\n",
      "slots.pairwise_molecular_interaction_id = Slot(uri=DIST.id, name=\"pairwise molecular interaction_id\", curie=DIST.curie('id'),\n",
      "                   model_uri=DIST.pairwise_molecular_interaction_id, domain=PairwiseMolecularInteraction, range=Union[str, PairwiseMolecularInteractionId])\n",
      "\n",
      "slots.pairwise_molecular_interaction_predicate = Slot(uri=DIST.predicate, name=\"pairwise molecular interaction_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.pairwise_molecular_interaction_predicate, domain=PairwiseMolecularInteraction, range=Union[str, PredicateType])\n",
      "\n",
      "slots.pairwise_molecular_interaction_relation = Slot(uri=DIST.relation, name=\"pairwise molecular interaction_relation\", curie=DIST.curie('relation'),\n",
      "                   model_uri=DIST.pairwise_molecular_interaction_relation, domain=PairwiseMolecularInteraction, range=Union[str, URIorCURIE])\n",
      "\n",
      "slots.pairwise_molecular_interaction_object = Slot(uri=DIST.object, name=\"pairwise molecular interaction_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.pairwise_molecular_interaction_object, domain=PairwiseMolecularInteraction, range=Union[str, MolecularEntityId])\n",
      "\n",
      "slots.cell_line_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"cell line to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.cell_line_to_entity_association_mixin_subject, domain=None, range=Union[str, CellLineId])\n",
      "\n",
      "slots.cell_line_to_disease_or_phenotypic_feature_association_subject = Slot(uri=DIST.subject, name=\"cell line to disease or phenotypic feature association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.cell_line_to_disease_or_phenotypic_feature_association_subject, domain=CellLineToDiseaseOrPhenotypicFeatureAssociation, range=Union[str, DiseaseOrPhenotypicFeatureId])\n",
      "\n",
      "slots.molecular_entity_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"molecular entity to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.molecular_entity_to_entity_association_mixin_subject, domain=None, range=Union[str, MolecularEntityId])\n",
      "\n",
      "slots.drug_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"drug to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.drug_to_entity_association_mixin_subject, domain=None, range=Union[str, DrugId])\n",
      "\n",
      "slots.chemical_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"chemical to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.chemical_to_entity_association_mixin_subject, domain=None, range=Union[str, ChemicalSubstanceId])\n",
      "\n",
      "slots.case_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"case to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.case_to_entity_association_mixin_subject, domain=None, range=Union[str, CaseId])\n",
      "\n",
      "slots.chemical_to_chemical_association_object = Slot(uri=DIST.object, name=\"chemical to chemical association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.chemical_to_chemical_association_object, domain=ChemicalToChemicalAssociation, range=Union[str, ChemicalSubstanceId])\n",
      "\n",
      "slots.chemical_to_chemical_derivation_association_subject = Slot(uri=DIST.subject, name=\"chemical to chemical derivation association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.chemical_to_chemical_derivation_association_subject, domain=ChemicalToChemicalDerivationAssociation, range=Union[str, ChemicalSubstanceId])\n",
      "\n",
      "slots.chemical_to_chemical_derivation_association_object = Slot(uri=DIST.object, name=\"chemical to chemical derivation association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.chemical_to_chemical_derivation_association_object, domain=ChemicalToChemicalDerivationAssociation, range=Union[str, ChemicalSubstanceId])\n",
      "\n",
      "slots.chemical_to_chemical_derivation_association_predicate = Slot(uri=DIST.predicate, name=\"chemical to chemical derivation association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.chemical_to_chemical_derivation_association_predicate, domain=ChemicalToChemicalDerivationAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.chemical_to_chemical_derivation_association_catalyst_qualifier = Slot(uri=DIST.catalyst_qualifier, name=\"chemical to chemical derivation association_catalyst qualifier\", curie=DIST.curie('catalyst_qualifier'),\n",
      "                   model_uri=DIST.chemical_to_chemical_derivation_association_catalyst_qualifier, domain=ChemicalToChemicalDerivationAssociation, range=Optional[Union[Union[str, MacromolecularMachineId], List[Union[str, MacromolecularMachineId]]]])\n",
      "\n",
      "slots.chemical_to_disease_or_phenotypic_feature_association_object = Slot(uri=DIST.object, name=\"chemical to disease or phenotypic feature association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.chemical_to_disease_or_phenotypic_feature_association_object, domain=ChemicalToDiseaseOrPhenotypicFeatureAssociation, range=Union[str, DiseaseOrPhenotypicFeatureId])\n",
      "\n",
      "slots.chemical_to_pathway_association_object = Slot(uri=DIST.object, name=\"chemical to pathway association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.chemical_to_pathway_association_object, domain=ChemicalToPathwayAssociation, range=Union[str, PathwayId])\n",
      "\n",
      "slots.chemical_to_gene_association_object = Slot(uri=DIST.object, name=\"chemical to gene association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.chemical_to_gene_association_object, domain=ChemicalToGeneAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.drug_to_gene_association_object = Slot(uri=DIST.object, name=\"drug to gene association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.drug_to_gene_association_object, domain=DrugToGeneAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.material_sample_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"material sample to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.material_sample_to_entity_association_mixin_subject, domain=None, range=Union[str, MaterialSampleId])\n",
      "\n",
      "slots.material_sample_derivation_association_subject = Slot(uri=DIST.subject, name=\"material sample derivation association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.material_sample_derivation_association_subject, domain=MaterialSampleDerivationAssociation, range=Union[str, MaterialSampleId])\n",
      "\n",
      "slots.material_sample_derivation_association_object = Slot(uri=DIST.object, name=\"material sample derivation association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.material_sample_derivation_association_object, domain=MaterialSampleDerivationAssociation, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.material_sample_derivation_association_predicate = Slot(uri=DIST.predicate, name=\"material sample derivation association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.material_sample_derivation_association_predicate, domain=MaterialSampleDerivationAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.disease_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"disease to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.disease_to_entity_association_mixin_subject, domain=None, range=Union[str, DiseaseId])\n",
      "\n",
      "slots.entity_to_exposure_event_association_mixin_object = Slot(uri=DIST.object, name=\"entity to exposure event association mixin_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.entity_to_exposure_event_association_mixin_object, domain=None, range=Union[dict, ExposureEvent])\n",
      "\n",
      "slots.exposure_event_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"exposure event to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.exposure_event_to_entity_association_mixin_subject, domain=None, range=Union[dict, ExposureEvent])\n",
      "\n",
      "slots.entity_to_outcome_association_mixin_object = Slot(uri=DIST.object, name=\"entity to outcome association mixin_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.entity_to_outcome_association_mixin_object, domain=None, range=Union[dict, Outcome])\n",
      "\n",
      "slots.entity_to_phenotypic_feature_association_mixin_description = Slot(uri=DIST.description, name=\"entity to phenotypic feature association mixin_description\", curie=DIST.curie('description'),\n",
      "                   model_uri=DIST.entity_to_phenotypic_feature_association_mixin_description, domain=None, range=Optional[Union[str, NarrativeText]])\n",
      "\n",
      "slots.entity_to_phenotypic_feature_association_mixin_object = Slot(uri=DIST.object, name=\"entity to phenotypic feature association mixin_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.entity_to_phenotypic_feature_association_mixin_object, domain=None, range=Union[str, PhenotypicFeatureId])\n",
      "\n",
      "slots.entity_to_disease_association_mixin_object = Slot(uri=DIST.object, name=\"entity to disease association mixin_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.entity_to_disease_association_mixin_object, domain=None, range=Union[str, DiseaseId])\n",
      "\n",
      "slots.disease_or_phenotypic_feature_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"disease or phenotypic feature to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.disease_or_phenotypic_feature_to_entity_association_mixin_subject, domain=None, range=Union[str, DiseaseOrPhenotypicFeatureId])\n",
      "\n",
      "slots.disease_or_phenotypic_feature_association_to_location_association_object = Slot(uri=DIST.object, name=\"disease or phenotypic feature association to location association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.disease_or_phenotypic_feature_association_to_location_association_object, domain=DiseaseOrPhenotypicFeatureAssociationToLocationAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.disease_or_phenotypic_feature_to_location_association_object = Slot(uri=DIST.object, name=\"disease or phenotypic feature to location association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.disease_or_phenotypic_feature_to_location_association_object, domain=DiseaseOrPhenotypicFeatureToLocationAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.entity_to_disease_or_phenotypic_feature_association_mixin_object = Slot(uri=DIST.object, name=\"entity to disease or phenotypic feature association mixin_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.entity_to_disease_or_phenotypic_feature_association_mixin_object, domain=None, range=Union[str, DiseaseOrPhenotypicFeatureId])\n",
      "\n",
      "slots.genotype_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"genotype to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_entity_association_mixin_subject, domain=None, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.genotype_to_phenotypic_feature_association_predicate = Slot(uri=DIST.predicate, name=\"genotype to phenotypic feature association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genotype_to_phenotypic_feature_association_predicate, domain=GenotypeToPhenotypicFeatureAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.genotype_to_phenotypic_feature_association_subject = Slot(uri=DIST.subject, name=\"genotype to phenotypic feature association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_phenotypic_feature_association_subject, domain=GenotypeToPhenotypicFeatureAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.exposure_event_to_phenotypic_feature_association_subject = Slot(uri=DIST.subject, name=\"exposure event to phenotypic feature association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.exposure_event_to_phenotypic_feature_association_subject, domain=ExposureEventToPhenotypicFeatureAssociation, range=Union[dict, ExposureEvent])\n",
      "\n",
      "slots.gene_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"gene to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_entity_association_mixin_subject, domain=None, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.variant_to_entity_association_mixin_subject = Slot(uri=DIST.subject, name=\"variant to entity association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.variant_to_entity_association_mixin_subject, domain=None, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.gene_to_phenotypic_feature_association_subject = Slot(uri=DIST.subject, name=\"gene to phenotypic feature association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_phenotypic_feature_association_subject, domain=GeneToPhenotypicFeatureAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_to_disease_association_subject = Slot(uri=DIST.subject, name=\"gene to disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_disease_association_subject, domain=GeneToDiseaseAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.variant_to_gene_association_object = Slot(uri=DIST.object, name=\"variant to gene association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.variant_to_gene_association_object, domain=VariantToGeneAssociation, range=Union[str, GeneId])\n",
      "\n",
      "slots.variant_to_gene_association_predicate = Slot(uri=DIST.predicate, name=\"variant to gene association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.variant_to_gene_association_predicate, domain=VariantToGeneAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.variant_to_gene_expression_association_predicate = Slot(uri=DIST.predicate, name=\"variant to gene expression association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.variant_to_gene_expression_association_predicate, domain=VariantToGeneExpressionAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.variant_to_population_association_subject = Slot(uri=DIST.subject, name=\"variant to population association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.variant_to_population_association_subject, domain=VariantToPopulationAssociation, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.variant_to_population_association_object = Slot(uri=DIST.object, name=\"variant to population association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.variant_to_population_association_object, domain=VariantToPopulationAssociation, range=Union[str, PopulationOfIndividualOrganismsId])\n",
      "\n",
      "slots.variant_to_population_association_has_quotient = Slot(uri=DIST.has_quotient, name=\"variant to population association_has quotient\", curie=DIST.curie('has_quotient'),\n",
      "                   model_uri=DIST.variant_to_population_association_has_quotient, domain=VariantToPopulationAssociation, range=Optional[float])\n",
      "\n",
      "slots.variant_to_population_association_has_count = Slot(uri=DIST.has_count, name=\"variant to population association_has count\", curie=DIST.curie('has_count'),\n",
      "                   model_uri=DIST.variant_to_population_association_has_count, domain=VariantToPopulationAssociation, range=Optional[int])\n",
      "\n",
      "slots.variant_to_population_association_has_total = Slot(uri=DIST.has_total, name=\"variant to population association_has total\", curie=DIST.curie('has_total'),\n",
      "                   model_uri=DIST.variant_to_population_association_has_total, domain=VariantToPopulationAssociation, range=Optional[int])\n",
      "\n",
      "slots.population_to_population_association_subject = Slot(uri=DIST.subject, name=\"population to population association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.population_to_population_association_subject, domain=PopulationToPopulationAssociation, range=Union[str, PopulationOfIndividualOrganismsId])\n",
      "\n",
      "slots.population_to_population_association_object = Slot(uri=DIST.object, name=\"population to population association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.population_to_population_association_object, domain=PopulationToPopulationAssociation, range=Union[str, PopulationOfIndividualOrganismsId])\n",
      "\n",
      "slots.population_to_population_association_predicate = Slot(uri=DIST.predicate, name=\"population to population association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.population_to_population_association_predicate, domain=PopulationToPopulationAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.variant_to_phenotypic_feature_association_subject = Slot(uri=DIST.subject, name=\"variant to phenotypic feature association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.variant_to_phenotypic_feature_association_subject, domain=VariantToPhenotypicFeatureAssociation, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.variant_to_disease_association_subject = Slot(uri=DIST.subject, name=\"variant to disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.variant_to_disease_association_subject, domain=VariantToDiseaseAssociation, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.variant_to_disease_association_predicate = Slot(uri=DIST.predicate, name=\"variant to disease association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.variant_to_disease_association_predicate, domain=VariantToDiseaseAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.variant_to_disease_association_object = Slot(uri=DIST.object, name=\"variant to disease association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.variant_to_disease_association_object, domain=VariantToDiseaseAssociation, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.genotype_to_disease_association_subject = Slot(uri=DIST.subject, name=\"genotype to disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_to_disease_association_subject, domain=GenotypeToDiseaseAssociation, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.genotype_to_disease_association_predicate = Slot(uri=DIST.predicate, name=\"genotype to disease association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genotype_to_disease_association_predicate, domain=GenotypeToDiseaseAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.genotype_to_disease_association_object = Slot(uri=DIST.object, name=\"genotype to disease association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.genotype_to_disease_association_object, domain=GenotypeToDiseaseAssociation, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.model_to_disease_association_mixin_subject = Slot(uri=DIST.subject, name=\"model to disease association mixin_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.model_to_disease_association_mixin_subject, domain=None, range=Union[str, NamedThingId])\n",
      "\n",
      "slots.model_to_disease_association_mixin_predicate = Slot(uri=DIST.predicate, name=\"model to disease association mixin_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.model_to_disease_association_mixin_predicate, domain=None, range=Union[str, PredicateType])\n",
      "\n",
      "slots.gene_as_a_model_of_disease_association_subject = Slot(uri=DIST.subject, name=\"gene as a model of disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_as_a_model_of_disease_association_subject, domain=GeneAsAModelOfDiseaseAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.variant_as_a_model_of_disease_association_subject = Slot(uri=DIST.subject, name=\"variant as a model of disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.variant_as_a_model_of_disease_association_subject, domain=VariantAsAModelOfDiseaseAssociation, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.genotype_as_a_model_of_disease_association_subject = Slot(uri=DIST.subject, name=\"genotype as a model of disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genotype_as_a_model_of_disease_association_subject, domain=GenotypeAsAModelOfDiseaseAssociation, range=Union[str, GenotypeId])\n",
      "\n",
      "slots.cell_line_as_a_model_of_disease_association_subject = Slot(uri=DIST.subject, name=\"cell line as a model of disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.cell_line_as_a_model_of_disease_association_subject, domain=CellLineAsAModelOfDiseaseAssociation, range=Union[str, CellLineId])\n",
      "\n",
      "slots.organismal_entity_as_a_model_of_disease_association_subject = Slot(uri=DIST.subject, name=\"organismal entity as a model of disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.organismal_entity_as_a_model_of_disease_association_subject, domain=OrganismalEntityAsAModelOfDiseaseAssociation, range=Union[str, OrganismalEntityId])\n",
      "\n",
      "slots.gene_has_variant_that_contributes_to_disease_association_subject = Slot(uri=DIST.subject, name=\"gene has variant that contributes to disease association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_has_variant_that_contributes_to_disease_association_subject, domain=GeneHasVariantThatContributesToDiseaseAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_to_expression_site_association_subject = Slot(uri=DIST.subject, name=\"gene to expression site association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_expression_site_association_subject, domain=GeneToExpressionSiteAssociation, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_to_expression_site_association_object = Slot(uri=DIST.object, name=\"gene to expression site association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.gene_to_expression_site_association_object, domain=GeneToExpressionSiteAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.gene_to_expression_site_association_predicate = Slot(uri=DIST.predicate, name=\"gene to expression site association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.gene_to_expression_site_association_predicate, domain=GeneToExpressionSiteAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.gene_to_expression_site_association_stage_qualifier = Slot(uri=DIST.stage_qualifier, name=\"gene to expression site association_stage qualifier\", curie=DIST.curie('stage_qualifier'),\n",
      "                   model_uri=DIST.gene_to_expression_site_association_stage_qualifier, domain=GeneToExpressionSiteAssociation, range=Optional[Union[str, LifeStageId]])\n",
      "\n",
      "slots.gene_to_expression_site_association_quantifier_qualifier = Slot(uri=DIST.quantifier_qualifier, name=\"gene to expression site association_quantifier qualifier\", curie=DIST.curie('quantifier_qualifier'),\n",
      "                   model_uri=DIST.gene_to_expression_site_association_quantifier_qualifier, domain=GeneToExpressionSiteAssociation, range=Optional[Union[str, OntologyClassId]])\n",
      "\n",
      "slots.sequence_variant_modulates_treatment_association_subject = Slot(uri=DIST.subject, name=\"sequence variant modulates treatment association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.sequence_variant_modulates_treatment_association_subject, domain=SequenceVariantModulatesTreatmentAssociation, range=Union[str, SequenceVariantId])\n",
      "\n",
      "slots.sequence_variant_modulates_treatment_association_object = Slot(uri=DIST.object, name=\"sequence variant modulates treatment association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.sequence_variant_modulates_treatment_association_object, domain=SequenceVariantModulatesTreatmentAssociation, range=Union[str, TreatmentId])\n",
      "\n",
      "slots.functional_association_subject = Slot(uri=DIST.subject, name=\"functional association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.functional_association_subject, domain=FunctionalAssociation, range=Union[str, MacromolecularMachineId])\n",
      "\n",
      "slots.functional_association_object = Slot(uri=DIST.object, name=\"functional association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.functional_association_object, domain=FunctionalAssociation, range=Union[str, GeneOntologyClassId])\n",
      "\n",
      "slots.macromolecular_machine_to_molecular_activity_association_object = Slot(uri=DIST.object, name=\"macromolecular machine to molecular activity association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.macromolecular_machine_to_molecular_activity_association_object, domain=MacromolecularMachineToMolecularActivityAssociation, range=Union[str, MolecularActivityId])\n",
      "\n",
      "slots.macromolecular_machine_to_biological_process_association_object = Slot(uri=DIST.object, name=\"macromolecular machine to biological process association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.macromolecular_machine_to_biological_process_association_object, domain=MacromolecularMachineToBiologicalProcessAssociation, range=Union[str, BiologicalProcessId])\n",
      "\n",
      "slots.macromolecular_machine_to_cellular_component_association_object = Slot(uri=DIST.object, name=\"macromolecular machine to cellular component association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.macromolecular_machine_to_cellular_component_association_object, domain=MacromolecularMachineToCellularComponentAssociation, range=Union[str, CellularComponentId])\n",
      "\n",
      "slots.gene_to_go_term_association_subject = Slot(uri=DIST.subject, name=\"gene to go term association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_go_term_association_subject, domain=GeneToGoTermAssociation, range=Union[str, MolecularEntityId])\n",
      "\n",
      "slots.gene_to_go_term_association_object = Slot(uri=DIST.object, name=\"gene to go term association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.gene_to_go_term_association_object, domain=GeneToGoTermAssociation, range=Union[str, GeneOntologyClassId])\n",
      "\n",
      "slots.genomic_sequence_localization_subject = Slot(uri=DIST.subject, name=\"genomic sequence localization_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.genomic_sequence_localization_subject, domain=GenomicSequenceLocalization, range=Union[str, GenomicEntityId])\n",
      "\n",
      "slots.genomic_sequence_localization_object = Slot(uri=DIST.object, name=\"genomic sequence localization_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.genomic_sequence_localization_object, domain=GenomicSequenceLocalization, range=Union[str, GenomicEntityId])\n",
      "\n",
      "slots.genomic_sequence_localization_predicate = Slot(uri=DIST.predicate, name=\"genomic sequence localization_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.genomic_sequence_localization_predicate, domain=GenomicSequenceLocalization, range=Union[str, PredicateType])\n",
      "\n",
      "slots.sequence_feature_relationship_subject = Slot(uri=DIST.subject, name=\"sequence feature relationship_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.sequence_feature_relationship_subject, domain=SequenceFeatureRelationship, range=Union[str, GenomicEntityId])\n",
      "\n",
      "slots.sequence_feature_relationship_object = Slot(uri=DIST.object, name=\"sequence feature relationship_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.sequence_feature_relationship_object, domain=SequenceFeatureRelationship, range=Union[str, GenomicEntityId])\n",
      "\n",
      "slots.transcript_to_gene_relationship_subject = Slot(uri=DIST.subject, name=\"transcript to gene relationship_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.transcript_to_gene_relationship_subject, domain=TranscriptToGeneRelationship, range=Union[str, TranscriptId])\n",
      "\n",
      "slots.transcript_to_gene_relationship_object = Slot(uri=DIST.object, name=\"transcript to gene relationship_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.transcript_to_gene_relationship_object, domain=TranscriptToGeneRelationship, range=Union[str, GeneId])\n",
      "\n",
      "slots.gene_to_gene_product_relationship_subject = Slot(uri=DIST.subject, name=\"gene to gene product relationship_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_to_gene_product_relationship_subject, domain=GeneToGeneProductRelationship, range=Union[str, GeneId])\n",
      "\n",
      "slots.gene_to_gene_product_relationship_object = Slot(uri=DIST.object, name=\"gene to gene product relationship_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.gene_to_gene_product_relationship_object, domain=GeneToGeneProductRelationship, range=Union[str, GeneProductId])\n",
      "\n",
      "slots.gene_to_gene_product_relationship_predicate = Slot(uri=DIST.predicate, name=\"gene to gene product relationship_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.gene_to_gene_product_relationship_predicate, domain=GeneToGeneProductRelationship, range=Union[str, PredicateType])\n",
      "\n",
      "slots.exon_to_transcript_relationship_subject = Slot(uri=DIST.subject, name=\"exon to transcript relationship_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.exon_to_transcript_relationship_subject, domain=ExonToTranscriptRelationship, range=Union[str, ExonId])\n",
      "\n",
      "slots.exon_to_transcript_relationship_object = Slot(uri=DIST.object, name=\"exon to transcript relationship_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.exon_to_transcript_relationship_object, domain=ExonToTranscriptRelationship, range=Union[str, TranscriptId])\n",
      "\n",
      "slots.gene_regulatory_relationship_predicate = Slot(uri=DIST.predicate, name=\"gene regulatory relationship_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.gene_regulatory_relationship_predicate, domain=GeneRegulatoryRelationship, range=Union[str, PredicateType])\n",
      "\n",
      "slots.gene_regulatory_relationship_subject = Slot(uri=DIST.subject, name=\"gene regulatory relationship_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.gene_regulatory_relationship_subject, domain=GeneRegulatoryRelationship, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.gene_regulatory_relationship_object = Slot(uri=DIST.object, name=\"gene regulatory relationship_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.gene_regulatory_relationship_object, domain=GeneRegulatoryRelationship, range=Union[str, GeneOrGeneProductId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_association_subject = Slot(uri=DIST.subject, name=\"anatomical entity to anatomical entity association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_association_subject, domain=AnatomicalEntityToAnatomicalEntityAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_association_object = Slot(uri=DIST.object, name=\"anatomical entity to anatomical entity association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_association_object, domain=AnatomicalEntityToAnatomicalEntityAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_part_of_association_subject = Slot(uri=DIST.subject, name=\"anatomical entity to anatomical entity part of association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_part_of_association_subject, domain=AnatomicalEntityToAnatomicalEntityPartOfAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_part_of_association_object = Slot(uri=DIST.object, name=\"anatomical entity to anatomical entity part of association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_part_of_association_object, domain=AnatomicalEntityToAnatomicalEntityPartOfAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_part_of_association_predicate = Slot(uri=DIST.predicate, name=\"anatomical entity to anatomical entity part of association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_part_of_association_predicate, domain=AnatomicalEntityToAnatomicalEntityPartOfAssociation, range=Union[str, PredicateType])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_ontogenic_association_subject = Slot(uri=DIST.subject, name=\"anatomical entity to anatomical entity ontogenic association_subject\", curie=DIST.curie('subject'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_ontogenic_association_subject, domain=AnatomicalEntityToAnatomicalEntityOntogenicAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_ontogenic_association_object = Slot(uri=DIST.object, name=\"anatomical entity to anatomical entity ontogenic association_object\", curie=DIST.curie('object'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_ontogenic_association_object, domain=AnatomicalEntityToAnatomicalEntityOntogenicAssociation, range=Union[str, AnatomicalEntityId])\n",
      "\n",
      "slots.anatomical_entity_to_anatomical_entity_ontogenic_association_predicate = Slot(uri=DIST.predicate, name=\"anatomical entity to anatomical entity ontogenic association_predicate\", curie=DIST.curie('predicate'),\n",
      "                   model_uri=DIST.anatomical_entity_to_anatomical_entity_ontogenic_association_predicate, domain=AnatomicalEntityToAnatomicalEntityOntogenicAssociation, range=Union[str, PredicateType])\n"
     ]
    }
   ],
   "source": [
    "\n",
    "from linkml.generators.pythongen import PythonGenerator\n",
    "from logging import ERROR\n",
    "\n",
    "# Note: Jupyter appears to generate output even if the log_level is set.\n",
    "gen = PythonGenerator(model, log_level=ERROR)\n",
    "print(gen.serialize())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
