From 67b64ffb751f815f2900b07e727f6ae74d35e08e Mon Sep 17 00:00:00 2001 From: SkyeAv Date: Wed, 7 Oct 2026 10:57:12 -0700 Subject: [PATCH 1/5] feat: [US-001] infores registry snapshot loader and CURIE classification --- pyproject.toml | 2 +- src/tablassert/data/infores_catalog.yaml | 6166 ++++++++++++++++++++++ src/tablassert/errors.py | 1 + src/tablassert/infores_registry.py | 229 + tests/test_infores_registry.py | 229 + 5 files changed, 6626 insertions(+), 1 deletion(-) create mode 100644 src/tablassert/data/infores_catalog.yaml create mode 100644 src/tablassert/infores_registry.py create mode 100644 tests/test_infores_registry.py diff --git a/pyproject.toml b/pyproject.toml index 58e64c91..8061f84f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,7 +71,7 @@ module-name = "tablassert.rs" bindings = "pyo3" manifest-path = "rust/Cargo.toml" features = ["extension-module"] -include = ["src/tablassert/data/experimental_taxa.yaml"] +include = ["src/tablassert/data/experimental_taxa.yaml", "src/tablassert/data/infores_catalog.yaml"] [project.scripts] tablassert = "tablassert.cli_entry:main" diff --git a/src/tablassert/data/infores_catalog.yaml b/src/tablassert/data/infores_catalog.yaml new file mode 100644 index 00000000..c8e9bbbf --- /dev/null +++ b/src/tablassert/data/infores_catalog.yaml @@ -0,0 +1,6166 @@ +# Vendored from https://raw.githubusercontent.com/biolink/information-resource-registry/main/infores_catalog.yaml +# Upstream commit: a72dbc3b55d5 (2026-10-06T20:52:12Z). Vendored 2026-10-07. +# Refresh: tablassert validate-infores --registry refresh (or refetch the raw URL above). +--- +information_resources: + - status: released + name: Aggregate Analysis of ClinicalTrial.gov (AACT) database + id: infores:aact + xref: + - https://aact.ctti-clinicaltrials.org/ + synonym: + - AACT + description: >- + https://ctti-clinicaltrials.org/our-work/quality/state-of-clinical-trials/ Researchers + can use CTTI’s Aggregate Analysis of ClinicalTrial.gov (AACT) database to easily access + and analyze data from the ClinicalTrials.gov registry to evaluate studies and characterize + the current state of clinical trials. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:clinicaltrials-kp + - status: released + name: Adverse Event Open Learning through Universal Standardization (AEOLUS) + id: infores:aeolus + xref: + - https://www.nature.com/articles/sdata201626 + description: >- + A knowledge_assertion and standardized version of FAERS removing duplicate case + records, applying standardized vocabularies with drug names mapped to RxNorm concepts + and outcomes mapped to SNOMED-CT concepts, and pre-computed summary statistics + about drug-outcome relationships for general consumption. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:mychem-info + - status: released + name: Alliance of Genome Resources (AGR Knowledgebase) + id: infores:agrkb + xref: + - https://www.alliancegenome.org/about-us + synonym: + - ALLIANCE + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-agr + - status: released + name: The Amyloidoses Collection (AmyCo) Database + id: infores:amyco + xref: + - http://bioinformatics.biol.uoa.gr/amyco/ + description: >- + The Amyloidoses Collection (AmyCo) database contains manually curated data from articles + on + amyloidoses and other diseases related to amyloid deposition. The resource is not + directly accessible + at this time, but Jensen Lab's [DISEASES](https://doi.org/10.1093/database/baac019) + reports that it ingests this resource. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Annotator Service + id: infores:annotator + xref: + - https://github.com/biothings/biothings_annotator + description: >- + Service to provide detailed annotations for any given biomedical entities. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Answer coalesce + id: infores:answer-coalesce + xref: + - https://github.com/ranking-agent/AnswerCoalesce + description: >- + Answer coalesce: This service accepts a TRAPI 1.1 object containing + answers and returns answers that have been coalesced by property, graph or ontology + analysis. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:arax + - status: released + name: Adverse Outcome Pathways Casual Activity Models + id: infores:aop-cam + xref: + - https://aopwiki.org/ + synonym: + - AOP-CAM + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ARAGORN + id: infores:aragorn + xref: + - https://github.com/ranking-agent/aragorn + description: >- + ARAGORN: Performs a query operation which compiles data from numerous + ARAGORN ranking agent services. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:automat-binding-db + - infores:automat-cam-kp + - infores:automat-cebs + - infores:automat-ctd + - infores:automat-drug-central + - infores:automat-ehr-may-treat-kp + - infores:automat-genome-alliance + - infores:automat-gtex + - infores:automat-gtopdb + - infores:automat-gwas-catalog + - infores:automat-hetionet + - infores:automat-hgnc + - infores:automat-hmdb + - infores:automat-human-goa + - infores:automat-icees-kg + - infores:automat-intact + - infores:automat-monarchinitiative + - infores:automat-panther + - infores:automat-pharos + - infores:automat-reactome + - infores:automat-robokop + - infores:automat-string-db + - infores:automat-ubergraph + - infores:automat-viral-proteome + - infores:biothings-multiomics-biggim-drugresponse + - infores:catrax-pharmacogenomics + - infores:clinicaltrials-kp + - infores:cohd + - infores:connections-hypothesis + - infores:drugapprovals-kp + - infores:gelinea + - infores:genetics-data-provider + - infores:knowledge-collaboratory + - infores:microbiome-kp + - infores:molepro + - infores:multiomics-kp + - infores:openpredict + - infores:rtx-kg2 + - infores:service-provider-trapi + - infores:spoke + - infores:text-mining-provider-cooccurrence + consumed_by: + - infores:ars + - status: deprecated + name: ARAGORN Ranker + id: infores:aragorn-ranker + xref: + - https://github.com/ranking-agent/aragorn-ranker + synonym: + - ARAGORN + description: >- + ARAGORN Ranker: The ranker used by the ARAGORN ARA, which takes a + TRAPI 1.0 message containing answers, and calculates numerical scores for each + answer. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ARAX Translator Reasoner + id: infores:arax + xref: + - https://arax.ncats.io/ + synonym: + - ARAX + description: >- + TRAPI 1.1 endpoint for the NCATS Biomedical Translator Reasoner called ARAX + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:answer-coalesce + - infores:automat-binding-db + - infores:automat-cam-kp + - infores:automat-cohd + - infores:automat-ctd + - infores:automat-drug-central + - infores:automat-ehr-clinical-connections-kp + - infores:automat-ehr-may-treat-kp + - infores:automat-genome-alliance + - infores:automat-gtex + - infores:automat-gtopdb + - infores:automat-gwas-catalog + - infores:automat-hetionet + - infores:automat-hgnc + - infores:automat-hmdb + - infores:automat-human-goa + - infores:automat-icees-kg + - infores:automat-intact + - infores:automat-monarchinitiative + - infores:automat-panther + - infores:automat-pharos + - infores:automat-reactome + - infores:automat-robokop + - infores:automat-string-db + - infores:automat-ubergraph + - infores:automat-viral-proteome + - infores:biothings-multiomics-biggim-drugresponse + - infores:catrax-pharmacogenomics + - infores:clinicaltrials-kp + - infores:cohd + - infores:connections-hypothesis + - infores:drugapprovals-kp + - infores:gelinea + - infores:genetics-data-provider + - infores:knowledge-collaboratory + - infores:microbiome-kp + - infores:molepro + - infores:multiomics-kp + - infores:openpredict + - infores:retriever + - infores:rtx-kg2 + - infores:service-provider-trapi + - infores:spoke + - infores:text-mining-provider-cooccurrence + consumed_by: + - infores:ars + - status: released + name: Autonomous Relay System + id: infores:ars + xref: + - https://github.com/NCATSTranslator/Relay + knowledge_level: not_provided + agent_type: not_provided + consumes: + - infores:aragorn + - infores:arax + - infores:biothings-explorer + - infores:improving-agent + - infores:unsecret-agent + - status: released + name: Anatomical Therapeutic Chemical (ATC) Codes (from UMLS) + id: infores:atc-codes-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ATC/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Autophagy Ontology + id: infores:atgo + xref: + - https://pubmed.ncbi.nlm.nih.gov/28132844/ + synonym: + - ATGO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Athena + id: infores:athena + xref: + - https://athena.ohdsi.org/search-terms/start + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat BindingDB + id: infores:automat-binding-db + xref: + - https://www.bindingdb.org/ + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Automat CAM-KP + id: infores:automat-cam-kp + xref: + - https://github.com/ExposuresProvider/cam-kp-api + description: >- + TRAPI interface to database of Causal Activity Models + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat CEBS + id: infores:automat-cebs + xref: + - https://cebs.niehs.nih.gov/cebs/ + description: >- + CEBS is a public, web-accessible, manually curated and accessioned repository of individual + study data and summarized study data from the National Toxicology Program (NTP) testing + program and other toxicology programs and research teams, including studies on carcinogenicity, + short-term toxicity, and genetic toxicity. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: Automat Chemical normalization (trapi v-1.1.0) + id: infores:automat-chem-norm + xref: + - https://automat.renci.org/ + description: >- + A graph linking together similar compounds. Two compounds are linked + by an edge in the graph if they are equivalent when charge, salts, and stereochemistry + are ignored. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Automat Chembio + id: infores:automat-chembio + xref: + - https://automat.renci.org/ + description: >- + A graph based on [chem2bio2rdf (http://cheminfov.informatics.indiana.edu:8080/c2b2r/)](http://cheminfov.informatics.indiana.edu:8080/c2b2r/). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Columbia Open Health Data (COHD) + id: infores:automat-cohd + xref: + - https://cohd-api.transltr.io/about.html + description: >- + The Columbia Open Health Data (COHD) API provides access to counts + and frequencies (i.e., EHR prevalence) of conditions, procedures, drug exposures, + and patient demographics, and the co-occurrence frequencies between them. Count + and frequency data were derived from the [Columbia University Medical Center''s](http://www.cumc.columbia.edu/) + [OHDSI](https://www.ohdsi.org/) database including inpatient and outpatient data. + Counts are the number of patients associated with the concept, e.g., diagnosed + with a condition, exposed to a drug, or who had a procedure. Frequencies are the + number of unique patients associated with the concept divided by the total number + of patients in the dataset, i.e., prevalence in the electronic health records. + To protect patient privacy, all concepts and pairs of concepts where the count + <= 10 were excluded, and counts were randomized by the Poisson distribution. Four + datasets are available: 1) 5-year non-hierarchical dataset: Includes clinical + data from 2013-2017 2) lifetime non-hierarchical dataset: Includes clinical + data from all dates 3) 5-year hierarchical dataset: Counts for each concept + include patients from descendant concepts. Includes clinical data from 2013-2017. + 4) BETA! Temporal co-occurrence data In the 5-year hierarchical data set, the + counts for each concept include the patients from all descendant concepts. For + example, the count for ibuprofen (ID 1177480) includes patients with Ibuprofen + 600 MG Oral Tablet (ID 19019073 patients), Ibuprofen 400 MG Oral Tablet (ID 19019072), + Ibuprofen 20 MG/ML Oral Suspension (ID 19019050), etc. While the lifetime dataset + captures a larger patient population and range of concepts, the 5-year dataset + has better underlying data consistency. Clinical concepts (e.g., conditions, + procedures, drugs) are coded by their standard concept ID in the [OMOP Common + Data Model](https://github.com/OHDSI/CommonDataModel/wiki). API methods are provided + to map to/from other vocabularies supported in OMOP and other ontologies using + the EMBL-EBI Ontology Xref Service (OxO). The following resources are available + through this API: 1. Metadata: Metadata on the COHD database, including dataset + descriptions, number of concepts, etc. 2. OMOP: Access to the common vocabulary + for name and concept identifier mapping 3. Clinical Frequencies: Access to the + counts and frequencies of conditions, procedures, and drug exposures, and the + associations between them. Frequency was determined as the number of patients + with the code(s) / total number of patients. 4. Concept Associations: Inferred + associations between concepts using chi-square analysis, ratio between observed + to expected frequency, and relative frequency. A [Python notebook](https://github.com/WengLab-InformaticsResearch/cohd_api/blob/master/notebooks/COHD_API_Example.ipynb) + demonstrates simple examples of how to use the COHD API. COHD was developed + at the [Columbia University Department of Biomedical Informatics](https://www.dbmi.columbia.edu/) + as a collaboration between the [Weng Lab](http://people.dbmi.columbia.edu/~chw7007/), + [Tatonetti Lab](http://tatonettilab.org/), and the [NCATS Biomedical Data Translator](https://ncats.nih.gov/translator) + program (Red Team). This work was supported in part by grants: NCATS OT3TR002027, + NLM R01LM009886-08A1, and NIGMS R01GM107145. The following external resources + may be useful: [OHDSI](https://www.ohdsi.org/) [OMOP Common Data Model](https://github.com/OHDSI/CommonDataModel/wiki) [Athena](http://athena.ohdsi.org) + (OMOP vocabularies, search, concept relationships, concept hierarchy) [Atlas](http://www.ohdsi.org/web/atlas/) + (OMOP vocabularies, search, concept relationships, concept hierarchy, concept + sets) + knowledge_level: statistical_association + agent_type: not_provided + consumes: + - infores:automat-ubergraph + - infores:columbia-cdw-ehr-data + - infores:omop-ohdsi + consumed_by: + - infores:aragorn + - infores:arax + - infores:openpredict + - infores:service-provider-trapi + - status: deprecated + name: Automat Cord19 + id: infores:automat-cord19 + xref: + - https://github.com/allenai/cord19 + description: >- + A literature co-occurence graph based on parsing the CORD-19 paper set. + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: Automat Cord19 Scibite (trapi v-1.1.0) + id: infores:automat-cord19-scibite + xref: + - https://automat.renci.org/ + description: >- + A literature co-occurence graph based on the [scibite parsing (https://github.com/SciBiteLabs/CORD19)](https://github.com/SciBiteLabs/CORD19) + of the CORD-19 paper set. + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: Automat Cord19 Scigraph (trapi v-1.1.0) + id: infores:automat-cord19-scigraph + description: >- + A literature co-occurence graph based on scigraph parsing of the CORD-19 + paper set. All triples contain covid-19 as either subject or object. + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: Automat Covid Phenotypes (trapi v-1.1.0) + id: infores:automat-covid-phenotypes + description: >- + A hand-knowledge_assertion graph of phenotypes of covid-19. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Automat Covidkop KG (trapi v-1.1.0) + id: infores:automat-covidkop + description: >- + Knowledge graph constructed from Robokop KG by incorporating Cord-19 + dataset and other covid related knowledge sources. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat CTD + id: infores:automat-ctd + xref: + - https://ctdbase.org/ + description: >- + A graph based on the [Comparative Toxicogenomics Database (ctdbase.org)](ctdbase.org). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat DrugCentral + id: infores:automat-drug-central + xref: + - https://drugcentral.org/ + description: >- + A graph based on DrugCentral + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat Multiomics EHRMLA Clinical Connections API + id: infores:automat-ehr-clinical-connections-kp + xref: + - https://automat.renci.org/ + description: >- + A graph consisting of clinical connections associations from Multiomics Electronic-Health-Record + (EHR) Machine Learning Analysis (MLA) + using the Providence health records + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:arax + - status: released + name: Automat Multiomics EHRMLA May Treat API + id: infores:automat-ehr-may-treat-kp + xref: + - https://automat.renci.org/ + description: >- + A graph consisting of May Treat associations from Multiomics Electronic-Health-Record + (EHR) Machine Learning Analysis (MLA) + using the Providence health records + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:providence-st-joseph-ehr + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Automat Foodb + id: infores:automat-foodb + xref: + - https://foodb.ca/ + description: >- + A graph of the food/chemical relationships in [foodb.ca](foodb.ca). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Alliance of Genome Resources + id: infores:automat-genome-alliance + xref: + - https://www.alliancegenome.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Automat GTEx + id: infores:automat-gtex + xref: + - https://gtexportal.org/home/ + description: >- + A graph containing eqtl and sqtl information from [GTEx Portal (https://gtexportal.org/home/)](https://gtexportal.org/home/). + Also includes genes that the variants lie within or near. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat GtoPdb + id: infores:automat-gtopdb + xref: + - https://www.guidetopharmacology.org/ + description: >- + A graph based on the [IUPHAR Guide to Pharmacology (https://www.guidetopharmacology.org/)](https://www.guidetopharmacology.org/) + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat GWAS Catalog + id: infores:automat-gwas-catalog + xref: + - https://www.ebi.ac.uk/gwas/ + description: >- + A graph based on the GWAS Catalog + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: Automat Hetio + id: infores:automat-hetio + xref: + - https://het.io/ + description: >- + A graph based on [hetionet (het.io)](het.io). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Hetionet + id: infores:automat-hetionet + xref: + - https://het.io/ + description: >- + A graph based on [hetionet (het.io)](het.io). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat HGNC + id: infores:automat-hgnc + xref: + - https://www.genenames.org/ + description: >- + Gene families from [HGNC (genenames.org)](genenames.org). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat HMDB + id: infores:automat-hmdb + xref: + - https://hmdb.ca/ + description: >- + A graph based on the [Human Metabolome DataBase (hmdb.org)](hmdb.org). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat Human GOA + id: infores:automat-human-goa + xref: + - https://www.ebi.ac.uk/GOA/ + description: >- + Human Gene Ontology Annotations from the GO consortium. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat ICEES KG + id: infores:automat-icees-kg + xref: + - https://automat.renci.org/ + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat IntAct + id: infores:automat-intact + xref: + - https://automat.renci.org/ + description: >- + Molecular (Gene-Gene) interactions from EBI IntAct (https://www.ebi.ac.uk/intact/)](https://www.ebi.ac.uk/intact/). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: Automat KEGG + id: infores:automat-kegg + description: >- + A graph based on the [Kyoto Encyclopedia of Genes and Genomes (https://www.genome.jp/kegg/)](https://www.genome.jp/kegg/). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Monarch Initiative + id: infores:automat-monarchinitiative + xref: + - https://automat.renci.org/ + description: >- + The Monarch Knowledge Graph is a reference implementation of the Biolink model specification. It + contains data from the Monarch Initiative aggregated database as well as several OBO + ontologies. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - status: deprecated + name: Automat MyChem (trapi v-1.1.0) + id: infores:automat-mychem-info + description: >- + A graph integrating DrugBank, DrugCentral, and Aeolus data as provided + by [mychem.info](mychem.info). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Automat Ontological Hierarchy (trapi v-1.1.0) + id: infores:automat-ontology-hierarchy + description: >- + A graph for ontological hierarchy extracted from Uberongraph. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Openhealth Data at Carolina + id: infores:automat-openhealthdata-carolina + xref: + - https://automat.renci.org/ + description: >- + A graph based on infores:openhealthdata-carolina, providing access to counts + and frequencies of conditions, procedures, drug exposures, and patient demographics, + and the co-occurrence frequencies between them. + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:aragorn + - status: released + name: Automat PANTHER + id: infores:automat-panther + xref: + - https://automat.renci.org/ + description: >- + A graph of gene families and pathways from [Panther (pantherdb.org)](pantherdb.org) + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat Pharos + id: infores:automat-pharos + xref: + - https://automat.renci.org/ + description: >- + A graph based on [Pharos (pharos.nih.gov)](pharos.nih.gov). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat Reactome + id: infores:automat-reactome + xref: + - https://automat.renci.org/ + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - status: deprecated + name: Automat RENCI SRI Reference KG + id: infores:automat-renci-sri-reference-kg + xref: + - https://automat.renci.org/ + description: >- + A graph based on the [Monarch API (https://api.monarchinitiative.org/)](https://api.monarchinitiative.org/). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat ROBOKOP + id: infores:automat-robokop + xref: + - https://automat.renci.org/ + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Automat ROBOKOP KG + id: infores:automat-robokop-kg + xref: + - https://automat.renci.org/ + description: >- + Biomedical Knowledge graph build by constructing relationships from federated data + sets. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Automat SRI Reference Knowledge Graph + id: infores:automat-sri-reference-kg + xref: + - https://automat.renci.org/ + description: >- + The SRI reference KG aims to aggregate knowledge sources across translator + using KGX. The initial graph contains data files provided by the Monarch Initiative + and several ontologies. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat STRING + id: infores:automat-string-db + xref: + - https://automat.renci.org/ + description: >- + The Search Tool for the Retrieval of INteracting Genes/proteins (STRING) + database provides information on known and prediction protein-protein interactions + (both direct and indirect) derived from genomic context predictions, high-throughput + laboratory experiments, conserved co-expression, automated text mining, and aggregated + knowledge from primary data sources. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - status: deprecated + name: Automat Textmining KP + id: infores:automat-text-mining-provider + description: >- + A literature co-occurrence graph created by the Translator Text Mining KP. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Ubergraph + id: infores:automat-ubergraph + xref: + - https://automat.renci.org/ + description: >- + A graph representation of Ubergraph, an integration of ontologies + including GO, CHEBI, Uberon, and HPO. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:cohd + - status: deprecated + name: Automat Ubergraph Nonredundant + id: infores:automat-ubergraph-nonredundant + xref: + - https://automat.renci.org/ + description: >- + A graph representation of Ubergraph, an integration of ontologies + including GO, CHEBI, Uberon, and HPO. The redundant version of Ubergraph contains + the complete inference closure for all subclass and existential relations, including + transitive, reflexive subclass relations. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Automat Viral Proteome + id: infores:automat-viral-proteome + xref: + - https://automat.renci.org/ + description: >- + A graph consisting of viral proteins from UniProt, connected by similarity + edges from UniRef. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Berkeley CMM Experimental Data + id: infores:ber-cmm-data + xref: + - https://github.com/berkeleybop/cmm-ai-automation + description: >- + Experimental growth data from the Berkeley Critical Mineral Metabolism (CMM) project, + containing strain-medium growth relationships curated by laboratory researchers. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Basic Formal Ontology + id: infores:bfo + xref: + - http://www.obofoundry.org/ontology/bfo.html + - https://fairsharing.org/FAIRsharing.wcpd6f + synonym: + - BFO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Bgee + id: infores:bgee + xref: + - https://www.bgee.org/about/ + synonym: + - BGEE + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: BHF-UCL Cardiovascular Gene Ontology Initiative + id: infores:bhf-ucl + xref: + - https://www.ucl.ac.uk/cardiovascular/ + description: >- + Curated dataset of cardiovascular-related protein interactions and gene ontology annotations + from the + British Heart Foundation and University College London. (PSI-MI: MI:1332) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: deprecated + name: Big Cell Line Association Miner + id: infores:bigclam + xref: + - https://github.com/PriceLab/translator-bigquery-api + synonym: + - BigClam + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: BiGG Models + id: infores:bigg-models + xref: + - https://bigg.ucsd.edu/ + - https://fairsharing.org/FAIRsharing.va62ke + synonym: + - BIGG + description: >- + a knowledgebase of genome-scale metabolic network reconstructions + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: deprecated + name: Big Gene Interaction Miner + id: infores:biggim + xref: + - https://github.com/PriceLab/translator-bigquery-api/ + synonym: + - BigGIM + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: BindingDB + id: infores:bindingdb + xref: + - https://www.bindingdb.org/ + synonym: + - The Binding Database + description: >- + BindingDB is a public, web-accessible database of measured binding + affinities, focusing chiefly on the interactions of protein considered to be drug-targets + with small, drug-like molecules. As of July 31, 2021, BindingDB contains 41,300 + Entries, each with a DOI, containing 2,303,972 binding data for 8,561 protein + targets and 995,797 small molecules. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-bindingdb + - infores:molepro + - status: released + name: Bio2RDF + id: infores:bio2rdf + xref: + - https://bio2rdf.org + - https://fairsharing.org/FAIRsharing.6gz84c + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: BioCatalogue + id: infores:biocatalogue + xref: + - https://fairsharing.org/FAIRsharing.9vT2Wg + knowledge_level: other + agent_type: not_provided + - status: released + name: 'The Biological General Repository for Interaction Datasets ' + id: infores:biogrid + xref: + - https://thebiogrid.org/ + synonym: + - BioGrid + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - status: released + name: BioLink API + id: infores:biolink-api + xref: + - http://api-v3.monarchinitiative.org/ + description: >- + API integration layer for linked biological objects. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Biolink Model Lookup + id: infores:biolink-model-lookup + xref: + - https://biolink.github.io/biolink-model/ + description: >- + Biolink Model Lookup service. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Biolink ontology + id: infores:biolink-ontology + xref: + - https://biolink.github.io/biolink-model/ + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: BioPlanet + id: infores:bioplanet + xref: + - https://tripod.nih.gov/bioplanet/ + description: >- + https://tripod.nih.gov/bioplanet/# + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-bioplanet-pathway-disease + - infores:biothings-bioplanet-pathway-gene + - status: released + name: National Center for Biomedical Ontology BioPortal + id: infores:bioportal + xref: + - http://bioportal.bioontology.org/ + synonym: + - bioportal + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: BioThings AGR API + id: infores:biothings-agr + xref: + - https://www.alliancegenome.org/about-us + description: >- + Documentation of the BioThings API for + [AGR](https://www.alliancegenome.org/downloads) disease associations data. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:agrkb + consumed_by: + - infores:service-provider-trapi + - status: deprecated + name: Big GIM 1 API + id: infores:biothings-biggim-1 + description: >- + Documentation of the Big GIM 1 KP query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: BioThings BindingDB API + id: infores:biothings-bindingdb + xref: + - https://www.bindingdb.org/rwd/bind/index.jsp + description: >- + Documentation of the BioThings [BindingDB](https://www.bindingdb.org/rwd/bind/index.jsp) + query web services. + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:bindingdb + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings BioPlanet Pathway-Disease API + id: infores:biothings-bioplanet-pathway-disease + xref: + - https://tripod.nih.gov/bioplanet/ + description: >- + Documentation of the BioThings [BioPlanet](https://tripod.nih.gov/bioplanet/#) + pathway-disease association query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:bioplanet + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings BioPlanet Pathway-Gene API + id: infores:biothings-bioplanet-pathway-gene + xref: + - https://tripod.nih.gov/bioplanet/ + description: >- + Documentation of the BioThings [BioPlanet](https://tripod.nih.gov/bioplanet/#) + pathway-gene association query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:bioplanet + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings DDInter API + id: infores:biothings-ddinter + xref: + - https://ddinter.scbdd.com/ + description: >- + Documentation of the BioThings API for [DDInter](http://ddinter.scbdd.com/) data. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:ddinter + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings DGIdb API + id: infores:biothings-dgidb + xref: + - https://www.dgidb.org/ + description: >- + Documentation of the BioThings DGIdb query web services. + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:dgidb + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings DISEASES API + id: infores:biothings-diseases + xref: + - https://diseases.jensenlab.org/About + description: >- + Documentation of the DISEASES query web services. + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:diseases + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings EBIgene2phenotype API + id: infores:biothings-ebi-gene2phenotype + xref: + - https://www.ebi.ac.uk/gene2phenotype + description: >- + Documentation of the EBIgene2phenotype query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:ebi-gene2phenotype + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Explorer + id: infores:biothings-explorer + xref: + - https://explorer.biothings.io/ + synonym: + - BTE + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:service-provider-trapi + consumed_by: + - infores:ars + - status: released + name: BioThings FooDB API + id: infores:biothings-foodb + xref: + - https://foodb.ca/ + description: >- + Documentation of the BioThings API for [FooDB](https://foodb.ca/) data. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:fooddb + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings FoodData Central API + id: infores:biothings-fooddata-central + xref: + - https://fdc.nal.usda.gov/ + description: >- + Documentation of the BioThings API for [FoodData Central](https://fdc.nal.usda.gov/index.html) + data. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:fooddata-central + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Gene Ontology Biological Process API + id: infores:biothings-go-bp + xref: + - https://www.geneontology.org/ + description: >- + Documentation of the Gene Ontology Biological Process query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:go + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Gene Ontology Cellular Component API + id: infores:biothings-go-cc + xref: + - https://www.geneontology.org/ + description: >- + Documentation of the Gene Ontology Cellular Component query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:go + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Gene Ontology Molecular Activity API + id: infores:biothings-go-mf + xref: + - https://www.geneontology.org/ + description: >- + Documentation of the Gene Ontology Molecular Activity query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:go + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings GTRx API + id: infores:biothings-gtrx + xref: + - https://gtrx.rbsapp.net/ + description: >- + Documentation of the BioThings API for [Genome-to-Treatment (GTRx™)](https://gtrx.rbsapp.net/about.html). This + API includes the content from the linked website, specifically the recommended acute + treatments + and interventions for seriously ill newborns, infants and children with newly diagnosed + genetic diseases. These may include therapeutics, dietary changes, surgery, medical + devices + or other interventions. For more info, see the paper (open-access): https://www.nature.com/articles/s41467-022-31446-6. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:gtrx + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings HMDB API + id: infores:biothings-hmdb + xref: + - https://hmdb.ca/ + description: >- + Documentation of the BioThings API for [HMDB](https://hmdb.ca/) data. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: BioThings Human Phenotype Ontology API + id: infores:biothings-hpo + xref: + - https://hpo.jax.org/ + description: >- + Documentation of the HPO query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:hpo + - infores:hpo-annotations + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings iDISK API + id: infores:biothings-idisk + xref: + - https://conservancy.umn.edu/items/7dec9015-c428-44d3-80c7-625e0800d008 + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:idisk + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings InnateDB API + id: infores:biothings-innatedb + xref: + - https://www.innatedb.com/index.jsp + description: >- + Documentation of the BioThings API for [InnateDB](https://www.innatedb.com/) data. + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:innatedb + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Mabs + id: infores:biothings-mabs + xref: + - https://biothings.ncats.io/mabs + knowledge_level: not_provided + agent_type: not_provided + consumes: + - infores:sepid_mab + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings MGIgene2phenotype API + id: infores:biothings-mgi-g2p + xref: + - https://www.informatics.jax.org/ + description: >- + Documentation of the MGIgene2phenotype query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:mgi + consumed_by: + - infores:service-provider-trapi + - status: released + name: Multiomics BigGIM-DrugResponse KP API + id: infores:biothings-multiomics-biggim-drugresponse + xref: + - https://github.com/NCATS-Tangerine/BigGIM_APIWrapper + description: >- + Documentation of the Drug Response KP query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:biogrid + - infores:gdsc + - infores:gtex + - infores:huri + - infores:tcga + - infores:ttd + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: Multiomics ClinicalTrials KP API + id: infores:biothings-multiomics-clinicaltrials + description: >- + Deprecated identifier; this resource is now identified as infores:clinicaltrials-kp. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: modified + name: Multiomics EHR Risk KP API + id: infores:biothings-multiomics-ehr-risk + xref: + - https://biothings.transltr.io/multiomics_ehr_risk_kp + description: >- + Documentation of the Multiomics Electronic-Health-Record (EHR) Risk + KP query web services. + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:service-provider-trapi + - status: released + name: Multiomics Wellness KP API + id: infores:biothings-multiomics-wellness + xref: + - https://biothings.transltr.io/multiomics_wellness_kp + description: >- + Documentation of the Multiomics Wellness KP query web services. + knowledge_level: statistical_association + agent_type: data_analysis_pipeline + consumes: + - infores:isb-wellness + consumed_by: + - infores:service-provider-trapi + - status: modified + name: BioThings PFOCR API + id: infores:biothings-pfocr + xref: + - https://pfocr.wikipathways.org/ + description: >- + Documentation of the pfocr query web services. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:pfocr + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings RARe-SOURCE API + id: infores:biothings-rare-source + xref: + - https://raresource.nih.gov/ + description: >- + Documentation of the BioThings API for [NCATS RARe-SOURCE](https://raresource.nih.gov/) + data. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:rare-source + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings repoDB API + id: infores:biothings-repodb + xref: + - https://unmtid-shinyapps.net/shiny/repodb/ + description: >- + Documentation of the BioThings API for [repoDB](https://unmtid-shinyapps.net/shiny/repodb/) + data. and download + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:repodb + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings Rhea API + id: infores:biothings-rhea + xref: + - https://www.rhea-db.org/ + description: >- + Documentation of the BioThings Rhea query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:rhea + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings SEMMEDDB API + id: infores:biothings-semmeddb + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the BioThings SEMMEDDB query web services. + knowledge_level: not_provided + agent_type: text_mining_agent + consumes: + - infores:semmeddb + consumed_by: + - infores:service-provider-trapi + - status: deprecated + name: SEMMED Anatomy API + id: infores:biothings-semmeddb-anatomy + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the SEMMED disease query web services. Learn more + about [mydisease.info](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: SEMMED Biological Process API + id: infores:biothings-semmeddb-biological-process + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the SEMMED disease query web services. Learn more + about [mydisease.info](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: SEMMED Chemical API + id: infores:biothings-semmeddb-chemical + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the SEMMED disease query web services. Learn more + about [mydisease.info](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: SEMMED Disease API + id: infores:biothings-semmeddb-disease + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the SEMMED disease query web services. Learn more + about [semmed disease](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: SEMMED Gene API + id: infores:biothings-semmeddb-gene + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + description: >- + Documentation of the SEMMED disease query web services. Learn more about [mydisease.info](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: SEMMED Phenotype API + id: infores:biothings-semmeddb-phenotype + xref: + - https://github.com/biothings + description: >- + Documentation of the SEMMED disease query web services. Learn more about [mydisease.info](http://pending.biothings.io/semmed) + knowledge_level: not_provided + agent_type: text_mining_agent + - status: released + name: BioThings SuppKG API + id: infores:biothings-suppkg + xref: + - https://www.sciencedirect.com/science/article/pii/S1532046422001368?via%3Dihub + description: >- + Documentation of the BioThings API for + [SuppKG](https://github.com/zhang-informatics/SemRep_DS/tree/main/SuppKG) data. SuppKG + contains relations + between dietary supplements and other entities, such as diseases. More information + can + be found in [this paper](https://doi.org/10.1016/j.jbi.2022.104120). + knowledge_level: not_provided + agent_type: text_mining_agent + consumes: + - infores:suppkg + consumed_by: + - infores:service-provider-trapi + - status: deprecated + name: Multiomics TCGA Mutation Frequency KP API + id: infores:biothings-tcga-mut-freq + xref: + - https://pending.biothings.io/tcga_mut_freq_kp + description: >- + Documentation of the TCGA Mutation Frequency KP query web services. + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: BioThings TISSUES API + id: infores:biothings-tissues + xref: + - https://tissues.jensenlab.org/About + description: >- + Documentation of the BioThings API for [TISSUES](https://tissues.jensenlab.org/About) + data. + knowledge_level: mixed + agent_type: not_provided + - status: released + name: Biothings Therapeutic Target Database API + id: infores:biothings-ttd + xref: + - https://db.idrblab.net/ttd/ + description: >- + Documentation of the BioThings API for [TherapeuticTargetDatabase](https://db.idrblab.net/ttd/). + This KP contains drug-disease, target-disease, drug-protein target, and biomarker-disease + associations. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:ttd + consumed_by: + - infores:service-provider-trapi + - status: released + name: BioThings UBERON Ontology API + id: infores:biothings-uberon-ontology + xref: + - https://obophenotype.github.io/uberon/ + description: >- + Documentation of the UBERON query web services. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:uberon + consumed_by: + - infores:service-provider-trapi + - status: released + name: Biological Spatial Ontology + id: infores:bspo + xref: + - https://fairsharing.org/FAIRsharing.newa3z + - https://obofoundry.org/ontology/bspo.html + synonym: + - BSPO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Community Assessment of Community Annotation with Ontologies + id: infores:cacao + xref: + - http://gowiki.tamu.edu/wiki/index.php/Category:CACAO + synonym: + - CACAO + description: >- + A collaborative annotation project where undergraduate students use the Gene Ontology + to annotate proteins based on evidence from scientific papers. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: CAM-KP API + id: infores:cam-kp + xref: + - https://github.com/ExposuresProvider/cam-kp-api + synonym: + - Causal Activity Model KP + description: >- + TRAPI interface to database of Causal Activity Models + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Clinical Asset Mapping Program for FHIR + id: infores:campfhir + xref: + - https://researchsoftwareinstitute.github.io/data-translator/apps/camp-fhir + synonym: + - CAMP FHIR + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Canada Vigilance Adverse Reaction Online Database + id: infores:canada-vigilance + xref: + - https://www.canada.ca/en/health-canada/services/drugs-health-products/medeffect-canada/adverse-reaction-database/canada-vigilance-online-database-data-extract.html + synonym: + - Canada Vigilance + description: >- + Health Canada's Canada Vigilance program collects adverse reaction reports for drugs + and + health products marketed in Canada. Its monthly online-database data extract provides + suspect drug-indication pairs and case counts comparable to FDA's FAERS. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:drugapprovals-kp + - status: released + name: CancerCommons + id: infores:cancercommons + xref: + - https://cancercommons.org/ + description: >- + Nonprofit resource connecting patients, oncologists, and scientists with up-to-date + treatment information and molecular data. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Multiomics Pharmacogenomics KP API + id: infores:catrax-pharmacogenomics + xref: + - https://smart-api.info/ui/1aa030d12bd9e2cb3185d97282bee1de + description: >- + Documentation of the Pharmacogenomics KP query web services. + knowledge_level: knowledge_assertion + agent_type: automated_agent + consumes: + - infores:cellmarker + - infores:drugbank + - infores:drugcentral + - infores:hpo + - infores:hpo-annotations + - infores:mondo + - infores:ncbi-gene + - infores:pharmgkb + - infores:primekg + - infores:sider + - infores:signor + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: CEBS + id: infores:cebs + xref: + - https://cebs.niehs.nih.gov/cebs/ + synonym: + - Chemical Effects in Biological Systems + description: >- + CEBS is a public, web-accessible, manually curated and accessioned repository of individual + study data and summarized study data from the National Toxicology Program (NTP) testing + program and other toxicology programs and research teams, including studies on carcinogenicity, + short-term toxicity, and genetic toxicity. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: CellMarker 2.0 + id: infores:cellmarker + xref: + - http://bio-bigdata.hrbmu.edu.cn/CellMarker/ + synonym: + - CellMarker + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - status: released + name: Cancer Genome Interpreter (CGI) + id: infores:cgi + xref: + - https://www.cancergenomeinterpreter.org/home + description: >- + Resource that interprets the biological and clinical relevance of tumor genomic alterations + to support precision oncology. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Chemical Entity of Biological Interest + id: infores:chebi + xref: + - https://www.ebi.ac.uk/chebi/ + synonym: + - ChEBI + description: >- + a freely available dictionary of molecular entities focused on ‘small’ chemical compounds + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:molepro + - infores:mychem-info + - infores:rtx-kg2 + - status: deprecated + name: Chem2bio2RDF + id: infores:chem2bio2rdf + xref: + - https://github.com/NCATSTranslator/Translator-All/wiki/Chem2bio2RDF + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: ChemBank + id: infores:chembank + description: >- + Initiative for Chemical Genetics contract from the National Cancer Institute + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: deprecated + name: ChemBio + id: infores:chembio + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ChEMBL + id: infores:chembl + xref: + - https://fairsharing.org/FAIRsharing.m3jtpg + - https://www.ebi.ac.uk/chembl/ + synonym: + - Chembl + description: >- + a manually knowledge_assertion database of bioactive molecules with drug-like properties. + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:molepro + - infores:mychem-info + - infores:rtx-kg2 + - status: deprecated + name: Chemotext + id: infores:chemotext + xref: + - http://chemotext.mml.unc.edu + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Consumer Health Vocabulary (from UMLS) + id: infores:chv-umls + xref: + - http://consumerhealthvocab.org/ + - http://consumerhealthvocab.org/docs/README.pdf + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/ + description: >- + CHV connects informal, common words and phrases about health to technical terms + used by health care professionals. It includes jargon, slang, ambiguous, and misspelled + words as used by consumers and health care professionals. OAC CHV is designed to complement + the existing framework of the UMLS and to aid the needs of consumer health applications, + enabling these applications to translate technical terms to consumer friendly language. + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Clinical Interpretation of Variants in Cancer + id: infores:civic + xref: + - https://civicdb.org/ + synonym: + - CIViC + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:myvariant-info + - status: released + name: Cancer KnowledgeBase CORE – Genomenon (CKB-CORE) + id: infores:ckb-core + xref: + - https://ckb.genomenon.com/ + description: >- + Commercially curated database of actionable cancer variants and targeted therapies. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Cell Ontology + id: infores:cl + xref: + - https://fairsharing.org/FAIRsharing.j9y503 + - https://obofoundry.org/ontology/cl.html + synonym: + - CL + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Clearity Foundation Biomarkers + id: infores:clearity-biomarkers + xref: + - https://ocrahope.org/clearity-has-joined-ocra/ + description: >- + Dataset of biomarkers and treatment options for ovarian cancer compiled by the Clearity + Foundation. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Clearity Foundation Clinical Trial + id: infores:clearity-clinical-trial + xref: + - https://ocrahope.org/clearity-has-joined-ocra/ + description: >- + Clinical trial information for ovarian cancer from the Clearity Foundation initiative. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Clinical Genome Resource (ClinGen) + id: infores:clingen + xref: + - https://www.clinicalgenome.org/ + description: >- + ClinGen is a NIH-funded resource dedicated to building a central resource + that defines the clinical relevance of genes and variants for use in precision + medicine and research + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:genetics-data-provider + - infores:mygene-info + - status: deprecated + name: Clinical Profiles + id: infores:clinical-profiles + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: ClinicalTrials.gov + id: infores:clinicaltrials + description: >- + Deprecated identifier; this resource is now identified as infores:clinicaltrials-gov. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ClinicalTrials.gov + id: infores:clinicaltrials-gov + xref: + - https://clinicaltrials.gov + - https://fairsharing.org/FAIRsharing.mewhad + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Multiomics ClinicalTrials KP API + id: infores:clinicaltrials-kp + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumes: + - infores:aact + - infores:dailymed + consumed_by: + - infores:aragorn + - infores:arax + - infores:cqs + - infores:rtx-kg2 + - infores:service-provider-trapi + - status: released + name: ClinPGx + id: infores:clinpgx + xref: + - https://www.clinpgx.org/ + description: >- + ClinPGx is a comprehensive resource supporting the clinical implementation of pharmacogenomics + (PGx), the study of how genetic variation affects medication response. We provide + expert curation of PGx genes, variants, drugs, and gene–drug relationships, plus guidelines + and tools that make PGx accessible, understandable, and actionable in clinical practice. + This resource is formed from the NIH-funded PharmGKB, CPIC and PharmCAT projects, + with additional content, features and tools. This infores is preferred when the data + was downloaded from ClinPGx, after the migration of the individual projects to this + unified resource. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ClinVar + id: infores:clinvar + xref: + - https://fairsharing.org/FAIRsharing.wx5r6f + - https://www.ncbi.nlm.nih.gov/clinvar/ + description: >- + ClinVar is a freely accessible, public archive of reports of the + relationships among human variations and phenotypes, with supporting evidence. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:genetics-data-provider + - infores:myvariant-info + - status: released + name: Connectivity Map + id: infores:cmap + xref: + - http://clue.io/cmap + synonym: + - CMAP + description: >- + genome-scale library of cellular signatures that catalogs transcriptional + responses to chemical, genetic, and disease perturbation"' + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: CMM AI Automation Pipeline + id: infores:cmm-ai-automation + xref: + - https://github.com/berkeleybop/cmm-ai-automation + description: >- + AI-assisted automation pipeline for Critical Mineral Metabolism (CMM) data curation. + Aggregates and reconciles data from multiple sources (BacDive, MediaDive, TogoMedium, + NCBI) + to generate knowledge graph edges. + knowledge_level: knowledge_assertion + agent_type: automated_agent + - status: released + name: Columbia Open Health Data (COHD) + id: infores:cohd + xref: + - https://github.com/WengLab-InformaticsResearch/cohd_api + description: >- + The Columbia Open Health Data (COHD) API provides access to counts + and frequencies (i.e., EHR prevalence) of conditions, procedures, drug exposures, + and patient demographics, and the co-occurrence frequencies between them. Count + and frequency data were derived from the [Columbia University Medical Center''s](http://www.cumc.columbia.edu/) + [OHDSI](https://www.ohdsi.org/) database including inpatient and outpatient data. + Counts are the number of patients associated with the concept, e.g., diagnosed + with a condition, exposed to a drug, or who had a procedure. Frequencies are the + number of unique patients associated with the concept divided by the total number + of patients in the dataset, i.e., prevalence in the electronic health records. + To protect patient privacy, all concepts and pairs of concepts where the count + <= 10 were excluded, and counts were randomized by the Poisson distribution. Four + datasets are available: 1) 5-year non-hierarchical dataset: Includes clinical + data from 2013-2017 2) lifetime non-hierarchical dataset: Includes clinical + data from all dates 3) 5-year hierarchical dataset: Counts for each concept + include patients from descendant concepts. Includes clinical data from 2013-2017. + 4) BETA! Temporal co-occurrence data In the 5-year hierarchical data set, the + counts for each concept include the patients from all descendant concepts. For + example, the count for ibuprofen (ID 1177480) includes patients with Ibuprofen + 600 MG Oral Tablet (ID 19019073 patients), Ibuprofen 400 MG Oral Tablet (ID 19019072), + Ibuprofen 20 MG/ML Oral Suspension (ID 19019050), etc. While the lifetime dataset + captures a larger patient population and range of concepts, the 5-year dataset + has better underlying data consistency. Clinical concepts (e.g., conditions, + procedures, drugs) are coded by their standard concept ID in the [OMOP Common + Data Model](https://github.com/OHDSI/CommonDataModel/wiki). API methods are provided + to map to/from other vocabularies supported in OMOP and other ontologies using + the EMBL-EBI Ontology Xref Service (OxO). The following resources are available + through this API: 1. Metadata: Metadata on the COHD database, including dataset + descriptions, number of concepts, etc. 2. OMOP: Access to the common vocabulary + for name and concept identifier mapping 3. Clinical Frequencies: Access to the + counts and frequencies of conditions, procedures, and drug exposures, and the + associations between them. Frequency was determined as the number of patients + with the code(s) / total number of patients. 4. Concept Associations: Inferred + associations between concepts using chi-square analysis, ratio between observed + to expected frequency, and relative frequency. A [Python notebook](https://github.com/WengLab-InformaticsResearch/cohd_api/blob/master/notebooks/COHD_API_Example.ipynb) + demonstrates simple examples of how to use the COHD API. COHD was developed + at the [Columbia University Department of Biomedical Informatics](https://www.dbmi.columbia.edu/) + as a collaboration between the [Weng Lab](http://people.dbmi.columbia.edu/~chw7007/), + [Tatonetti Lab](http://tatonettilab.org/), and the [NCATS Biomedical Data Translator](https://ncats.nih.gov/translator) + program (Red Team). This work was supported in part by grants: NCATS OT3TR002027, + NLM R01LM009886-08A1, and NIGMS R01GM107145. The following external resources + may be useful: [OHDSI](https://www.ohdsi.org/) [OMOP Common Data Model](https://github.com/OHDSI/CommonDataModel/wiki) [Athena](http://athena.ohdsi.org) + (OMOP vocabularies, search, concept relationships, concept hierarchy) [Atlas](http://www.ohdsi.org/web/atlas/) + (OMOP vocabularies, search, concept relationships, concept hierarchy, concept + sets) + knowledge_level: statistical_association + agent_type: not_provided + consumes: + - infores:automat-ubergraph + - infores:columbia-cdw-ehr-data + - infores:omop-ohdsi + consumed_by: + - infores:aragorn + - infores:arax + - infores:openpredict + - infores:service-provider-trapi + - status: released + name: Columbia Open Health Data (COHD) for COVID-19 Research + id: infores:cohd-covid + xref: + - https://github.com/WengLab-InformaticsResearch/cohd_api + description: >- + The Columbia Open Health Data (COHD) for COVID-19 Research API provides + access to counts and frequencies (i.e., EHR visit prevalence) of conditions, procedures, + drug exposures, and the co-occurrence frequencies between them for a cohort of + hospitalized COVID-19 patients and two comparator cohorts of hospitalized influenza + patients and hospitalized patients. Count and frequency data were derived from + the [Columbia University Medical Center''s](http://www.cumc.columbia.edu/) [OHDSI](https://www.ohdsi.org/) + database including inpatient. Counts are the number of inpatient visits associated + with the concept, e.g., diagnosed with a condition, exposed to a drug, or a procedure + was performed. Frequencies are the number of unique visits associated with the + concept divided by the total number of visits in the dataset, i.e., prevalence + in the electronic health records. To protect patient privacy, all concepts and + pairs of concepts where the count <= 10 were excluded, and counts were randomized + by the Poisson distribution. Datasets from three primary cohorts are + available: 1) COVID-19: Hospitalized patients aged 18 or older with a COVID-19 + related condition diagnosis and/or a confirmed positive COVID-19 test during their + hospitalization period or within the prior 21 days. Date range: March 1, 2020 + to September 1, 2020. This cohort is also further stratified by sex (male and + female) and age (adult: 18-64, senior: 65+). 2) General inpatient: All hospitalized + patients aged 18 or older. Date range: January 1, 2014 to December 31, 2019. 3) + Influenza: Hospitalized patients aged 18 or older who had at least one occurrence + of influenza conditions or pre-coordinated positive measurements or positive influenza + testing in the prior 21 days or during their hospitalization period. Date range: + January 1, 2014 to December 31, 2019. Both hierarchical and non-hierarchical + datasets are available for each cohort. In the hierarchical datasets, the counts + for each concept include the visits from all descendant concepts. For example, + the count for ibuprofen (ID 1177480) includes visits with Ibuprofen 600 MG Oral + Tablet (ID 19019073), Ibuprofen 400 MG Oral Tablet (ID 19019072), Ibuprofen 20 + MG/ML Oral Suspension (ID 19019050), etc. Clinical concepts (e.g., conditions, + procedures, drugs) are coded by their standard concept ID in the [OMOP Common + Data Model](https://github.com/OHDSI/CommonDataModel/wiki). API methods are provided + to map to/from other vocabularies supported in OMOP and other ontologies using + the EMBL-EBI Ontology Xref Service (OxO). The following resources are available + through this API: 1. Metadata: Metadata on the COHD database, including dataset + descriptions, number of concepts, etc. 2. OMOP: Access to the common vocabulary + for name and concept identifier mapping 3. Clinical Frequencies: Access to the + counts and frequencies of conditions, procedures, and drug exposures, and the + associations between them. Frequency was determined as the number of visits with + the code(s) / total number of visits. 4. Concept Associations: Inferred associations + between concepts using chi-square analysis, ratio between observed to expected + frequency, and relative frequency. A [Python notebook](https://github.com/WengLab-InformaticsResearch/cohd_api/blob/master/notebooks/COHD_API_Example.ipynb) + demonstrates simple examples of how to use the COHD API. COHD was developed + at the [Columbia University Department of Biomedical Informatics](https://www.dbmi.columbia.edu/) + as a collaboration between the [Weng Lab](http://people.dbmi.columbia.edu/~chw7007/), + [Tatonetti Lab](http://tatonettilab.org/), and the [NCATS Biomedical Data Translator](https://ncats.nih.gov/translator) + program (TReK Team). This work was supported in part by grants: NCATS 1OT2TR003434, + NLM R01LM012895, NCATS OT3TR002027, NLM R01LM009886-08A1, and NIGMS R01GM107145. The + following external resources may be useful: [OHDSI](https://www.ohdsi.org/) [OMOP + Common Data Model](https://github.com/OHDSI/CommonDataModel/wiki) [Athena](http://athena.ohdsi.org) + (OMOP vocabularies, search, concept relationships, concept hierarchy) [Atlas](http://www.ohdsi.org/web/atlas/) + (OMOP vocabularies, search, concept relationships, concept hierarchy, concept + sets) [NCATS Biomedical Data Translator](https://sites.google.com/ncats.nih.gov/translator-io/home) + knowledge_level: statistical_association + agent_type: not_provided + - status: deprecated + name: Columbia Open Health Data for COVID-19 Research API + id: infores:cohd-covid19-api + xref: + - https://github.com/WengLab-InformaticsResearch/cohd_api + synonym: + - COHD COVID-19 + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Columbia Clinical Data Warehouse for Health Patient EHR Data + id: infores:columbia-cdw-ehr-data + xref: + - https://www.irvinginstitute.columbia.edu/services/clinical-data-warehouse-cdw-navigator-support + description: >- + The Columbia Clinical Data Warehouse (CDW) contains clinical information for over + 4.5 + million individuals treated at Columbia University Irving Medical Center (CUIMC) since + the 1980s. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:cohd + - status: released + name: Community Structure-Activity Resource + id: infores:community-sar + xref: + - https://github.com/NCATSTranslator/Translator-All/wiki/Community-Structure-Activity-Resource + synonym: + - CSAR + description: >- + CSAR disseminated experimental datasets of crystal structures and binding + affinities for diverse protein-ligand complexes + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Complex Portal + id: infores:complex-portal + xref: + - https://fairsharing.org/FAIRsharing.wP3t2L + - https://www.ebi.ac.uk/complexportal/home + description: >- + The Complex Portal is a manually curated, encyclopaedic resource of macromolecular + complexes from + a number of key model organisms. The majority of complexes are made up of proteins + but may + also include nucleic acids or small molecules. All data is freely available for search and + download + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:service-provider-trapi + - status: released + name: EMBL-EBI Complex Portal + id: infores:complexportal + xref: + - https://www.ebi.ac.uk/complexportal + description: >- + Manually curated definitions of stable macromolecular complexes with composition, + function, and cross-references; integrated with IntAct. (PSI-MI: MI:0954) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Connections Hypothesis Provider API + id: infores:connections-hypothesis + xref: + - https://github.com/di2ag/chp + description: >- + A Translator Reasoner API for the Connections Hypothesis Provider + knowledge_level: prediction + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: COVID-19 Open Research Dataset + id: infores:cord19 + xref: + - https://github.com/allenai/cord19 + synonym: + - CORD19 + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: COVID-19 Open Research Dataset Scibite + id: infores:cord19-scibite + synonym: + - CORD19-Scibite + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Catalog of Somatic Mutations in Cancer + id: infores:cosmic + xref: + - https://cancer.sanger.ac.uk/cosmic + synonym: + - COSMIC + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Covid Phenotypes + id: infores:covid-phenotypes + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ConsensusPathDB + id: infores:cpdb + xref: + - http://cpdb.molgen.mpg.de/CPDB + synonym: + - CPDB + knowledge_level: mixed + agent_type: not_provided + consumed_by: + - infores:mygene-info + - status: deprecated + name: Current Procedural Terminology (CPT) Codes (from UMLS) + id: infores:cpt-codes-umls + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: Translator knowledge_assertion Query Service + id: infores:cqs + xref: + - https://github.com/TranslatorSRI/CQS + synonym: + - CQS + description: >- + The Translator Curated Query Service (CQS) is an SRI service that provides ARA-like + capabilities. + The service generates ‘predicted’ edges in response to inferred queries, based on + customizable + inference rules that are captured as CQS templates. The CQS links predictions to their + supporting aux graphs and attaches provenance metadata, and then scores the results. + knowledge_level: prediction + agent_type: computational_model + consumes: + - infores:automat-cohd + - infores:automat-icees-kg + - infores:automat-isb-EHRMLA-data + - infores:cam-kp + - infores:clinicaltrials-kp + - infores:connections-hypothesis + - infores:molepro-chembl + - infores:openpredict + - infores:rtxkg2-semmed + - infores:service-provider-aeolus + - infores:service-provider-chembl + - infores:service-provider-semmed + - infores:service-provider-tmkp-targeted + - infores:spoke-chembl + - infores:text-mining-provider-targeted + consumed_by: + - infores:ars + - status: released + name: Comparative Toxicogenomics Database + id: infores:ctd + xref: + - https://ctdbase.org/about/ + - https://fairsharing.org/FAIRsharing.h3tjtr + synonym: + - CTDbase + description: >- + A robust, publicly available database that aims to advance understanding + about how environmental exposures affect human health. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - infores:mydisease-info + - infores:service-provider-trapi + - status: released + name: Cancer Therapeutics Response Portal + id: infores:ctrp + xref: + - https://portals.broadinstitute.org/ctrp.v2.1/ + synonym: + - CTRP + description: >- + links genetic, lineage, and other cellular features of cancer cell + lines to small-molecule sensitivity with the goal of accelerating discovery of + patient-matched cancer therapeutics. + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: DailyMed + id: infores:dailymed + xref: + - https://dailymed.nlm.nih.gov/dailymed/ + description: >- + The DailyMed database contains labeling, submitted by companies to the Food and Drug + Administration + (FDA). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:clinicaltrials-kp + - infores:drugapprovals-kp + - status: released + name: Drugs to target pAthways by the Tissue Expression + id: infores:date + xref: + - https://tatonettilab-resources.s3.amazonaws.com/syspharm/DATE.zip + synonym: + - DATE + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Single Nucleotide Polymorphism Database + id: infores:dbsnp + xref: + - https://www.ncbi.nlm.nih.gov/snp/ + synonym: + - dbSNP + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:litvar + - infores:myvariant-info + - status: released + name: Dictyostelium discoideum anatomy + id: infores:dda + xref: + - http://www.obofoundry.org/ontology/ddanat.html + synonym: + - DDA + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: DDinter + id: infores:ddinter + xref: + - http://ddinter.scbdd.com/ + description: >- + DDInter is an open-access database specific to drug-drug interactions + with annotations including mechanism description, risk levels, management strategies, + alternative medications, etc. to improve clinical decision-making and patient + safety. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-ddinter + - status: released + name: Dictyostelium discoideum phenotype ontology + id: infores:ddpheno + xref: + - https://obofoundry.org/ontology/ddpheno.html + synonym: + - ddpheno + description: >- + A structured controlled vocabulary of phenotypes of the slime-mould Dictyostelium + discoideum. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: delta QT Database + id: infores:delta-qt-db + xref: + - http://deltaqt.org + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Cancer Dependency Map + id: infores:depmap + xref: + - https://depmap.org/portal/ + synonym: + - DepMap + description: >- + Cancer Dependency Map to systematically identify genetic and pharmacologic + dependencies and the biomarkers that predict them. + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Drug Gene Interaction Database + id: infores:dgidb + xref: + - https://www.dgidb.org/ + synonym: + - DGIdb + description: >- + information on drug-gene interactions and druggable genes from publications, + databases, and other web-based sources. Drug, gene, and interaction data are normalized + and merged into conceptual groups. + knowledge_level: prediction + agent_type: automated_agent + consumed_by: + - infores:biothings-dgidb + - infores:molepro + - infores:rtx-kg2 + - status: released + name: dictyBase + id: infores:dictybase + xref: + - http://dictybase.org + - https://fairsharing.org/FAIRsharing.4shj9c + description: >- + The central resource for Dictyostelid genomics, providing model organism database + services for the research community. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Drug-Induced Liver Injury Network (DILIN) Participant Data + id: infores:dili-network-study-data + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: Database of Interacting Proteins (DIP) + id: infores:dip + xref: + - https://dip.doe-mbi.ucla.edu/ + description: >- + One of the earliest curated repositories of experimentally observed protein–protein + interactions. (PSI-MI: MI:0465) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Disease Ontology + id: infores:disease-ontology + xref: + - https://disease-ontology.org/ + - https://fairsharing.org/FAIRsharing.8b6wfq + synonym: + - DO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:ols + - infores:rtx-kg2 + - status: released + name: DISEASES + id: infores:diseases + xref: + - https://diseases.jensenlab.org/About + description: >- + DISEASES is a weekly updated web resource that integrates evidence on disease-gene + associations from + automatic text mining, manually curated literature, cancer mutation data, and genome-wide + association studies. We further unify the evidence by assigning confidence scores + that + facilitate comparison of the different types and sources of evidence. + knowledge_level: prediction + agent_type: text_mining_agent + consumed_by: + - infores:biothings-diseases + - infores:rtx-kg2 + - status: released + name: DisGeNET + id: infores:disgenet + xref: + - https://disgenet.com/ + - https://fairsharing.org/FAIRsharing.fssydn + knowledge_level: prediction + agent_type: automated_agent + consumed_by: + - infores:mydisease-info + - infores:rtx-kg2 + - status: released + name: DisProt + id: infores:disprot + xref: + - https://fairsharing.org/FAIRsharing.dt9z89 + - https://www.disprot.org + description: >- + A database of intrinsically disordered proteins that provides manually curated + annotations for regions of disorder in proteins. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Diseases & Traits in LD database + id: infores:distild + synonym: + - DistiLD database + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Disease Ontology Annotation Framework (DOAF) + id: infores:doaf + xref: + - https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0049686 + synonym: + - DOAF + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Database of Cancer Mutations + id: infores:docm + xref: + - http://www.docm.info/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Dogpark Tier 0 + id: infores:dogpark-tier0 + xref: + - https://github.com/NCATSTranslator/DogPark-Ranger + description: >- + Centralized graph-based knowledge hosting + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:rtx-kg2 + consumed_by: + - infores:retriever + - status: released + name: Dogpark Tier 1 + id: infores:dogpark-tier1 + xref: + - https://github.com/NCATSTranslator/DogPark-Ranger + description: >- + Centralized index-based knowledge hosting + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:rtx-kg2 + consumed_by: + - infores:retriever + - status: released + name: Drug Design Data Resource + id: infores:drug-design + xref: + - https://drugdesigndata.org/ + synonym: + - D3R + description: >- + The Drug Design Data Resource (D3R) aims to advance the technology + of computer-aided drug discovery through the interchange of high quality protein-ligand + datasets + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Drug Repurposing Hub + id: infores:drug-repurposing-hub + xref: + - https://repo-hub.broadinstitute.org/repurposing + description: >- + knowledge_assertion and annotated collection of FDA-approved drugs, clinical + trial drugs, and pre-clinical tool compounds with a companion information resource + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Multiomics Drug Approvals KP API + id: infores:drugapprovals-kp + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumes: + - infores:canada-vigilance + - infores:dailymed + - infores:ema + - infores:epar + - infores:faers + - infores:medi + consumed_by: + - infores:aragorn + - infores:arax + - infores:rtx-kg2 + - infores:service-provider-trapi + - status: released + name: DrugBank + id: infores:drugbank + xref: + - https://fairsharing.org/FAIRsharing.353yat + - https://go.drugbank.com/ + synonym: + - Drugbank + description: >- + A comprehensive, free-to-access, online database containing information + on drugs and drug targets. As both a bioinformatics and a cheminformatics resource, + we combine detailed drug (i.e. chemical, pharmacological and pharmaceutical) data + with comprehensive drug target (i.e. sequence, structure, and pathway) information + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:catrax-pharmacogenomics + - infores:molepro + - infores:openpredict + - infores:rtx-kg2 + - status: released + name: DrugCentral + id: infores:drugcentral + xref: + - https://drugcentral.org/about + - https://fairsharing.org/FAIRsharing.3me82d + synonym: + - Drugcentral + description: >- + Online drug information resource created and maintained by Division + of Translational Informatics at University of New Mexico in collaboration with + the IDG. + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:catrax-pharmacogenomics + - infores:molepro + - infores:mychem-info + - infores:rtx-kg2 + - status: released + name: DrugMatrix + id: infores:drugmatrix + xref: + - https://ntp.niehs.nih.gov/data/drugmatrix + description: >- + DrugMatrix was a large-scale toxicogenomics database and analysis tool. + The resource does not seem to be directly accessible now, but + [DrugCentral](https://pmc.ncbi.nlm.nih.gov/articles/PMC10692006/#Sec10) reports that + it uses this resource as a source of bioactivity data. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: DrugMechDB + id: infores:drugmechdb + xref: + - https://github.com/SuLab/DrugMechDB + synonym: + - drugmechdb + description: >- + A database of paths that represent the mechanism of action from a drug to a disease + in + an indication. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Distributed Structure-Searchable Toxicity (DSSTox) Database + id: infores:dsstoxdb + xref: + - https://www.epa.gov/comptox-tools/distributed-structure-searchable-toxicity-dsstox-database + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Drug Target Commons (DTC) + id: infores:dtc + xref: + - http://www.drugtargetcommons.org/ + description: >- + Community-driven bioactivity database for drug–target interactions supporting quantitative + pharmacology. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: European Bioinformatics Institute + id: infores:ebi + xref: + - https://www.ebi.ac.uk/ + synonym: + - EBI + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: European Bioinformatics Institute Gene to Phenotype Resource + id: infores:ebi-gene2phenotype + xref: + - https://www.ebi.ac.uk/gene2phenotype + description: >- + This entry has been deprecated. Please use infores:gene2phenotype instead. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-ebi-gene2phenotype + - status: released + name: EBI Proteins API + id: infores:ebi-proteins + xref: + - https://www.ebi.ac.uk/proteins/api/doc/ + description: >- + The Proteins REST API provides access to key biological data from + UniProt and data from Large Scale Studies (LSS) mapped to UniProt. The services + provide sequence feature annotations from UniProtKB, variation data from UniProtKB + and mapped from LSS (1000 Genomes, ExAC, ClinVar, TCGA, COSMIC, TOPMed and gnomAD), + proteomics data mapped from MS-proteomics repositories (PeptideAtlas, MaxQB, EPD + and ProteomicsDB), antigen sequences mapped from Human Protein Atlas (HPA), proteomes + and taxonomy search and retrieval, reference genome coordinate mappings and data + from UniParc. Go to https://www.ebi.ac.uk/proteins/api/doc/ to learn more."' + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:uniprot + consumed_by: + - infores:service-provider-trapi + - status: released + name: QuickGO API + id: infores:ebi-quick-go + xref: + - https://www.ebi.ac.uk/QuickGO/api/index.html + synonym: + - QuickGO + description: >- + The QuickGO REST API provides access to key biological data from + QuickGO and GOA. The services provide a unified interface to query information + about ontology terms from GO (the Gene Ontology) and ECO (the Evidence & Conclusion + Ontology), Gene Ontology annotations from the EBI''s GOA database, and gene products + (proteins from UniProt, RNA from RNAcentral and complexes from ComplexPortal). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:go + consumed_by: + - infores:service-provider-trapi + - status: released + name: Evidence & Conclusion Ontology + id: infores:eco + xref: + - https://obofoundry.org/ontology/eco.html + synonym: + - ECO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Environmental conditions, treatments and exposures ontology + id: infores:ecto + xref: + - https://obofoundry.org/ontology/ecto.html + synonym: + - ECTO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Experimental Factor Ontology + id: infores:efo + xref: + - https://fairsharing.org/FAIRsharing.1gr4tz + - https://www.ebi.ac.uk/efo/ + synonym: + - EFO + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Human Developmental Anatomy Ontology + id: infores:ehdaa2 + xref: + - http://obofoundry.org/ontology/ehdaa2.html + synonym: + - EHDAA2 + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: European Medicines Agency medicines registry + id: infores:ema + xref: + - https://www.ema.europa.eu/en/medicines + synonym: + - EMA + description: >- + The European Medicines Agency publishes a bulk export of every centrally reviewed + medicine + in the European Union; its authorised human-medicines rows carry each medicine's therapeutic + areas and links to its European Public Assessment Report. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:drugapprovals-kp + - status: released + name: Mouse Developmental Anatomy Ontology + id: infores:emapa + xref: + - https://fairsharing.org/FAIRsharing.j0fa1d + - https://obofoundry.org/ontology/emapa.html + synonym: + - EMAPA + description: >- + An ontology for mouse anatomy covering embryonic development and postnatal + stages. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Embiology + id: infores:embiology + xref: + - https://www.embiology.com + description: >- + EmBiology is a web-based knowledge graph developed by Elsevier that integrates biological + relationships across genes, proteins, diseases, pathways, and small molecules. It + combines text-mined evidence from scientific literature with curated database content + to capture causal, regulatory, and associative connections among biological entities. + Updated weekly, EmBiology supports interactive exploration and visualization of biological mechanisms, + enabling target discovery, biomarker identification, and hypothesis generation in + drug discovery and translational research. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Ensembl gene + id: infores:ensembl-gene + xref: + - https://www.ebi.ac.uk/training/online/courses/ensembl-browsing-genomes/exploring-sources-of-biological-data/ensembl-genes/ + knowledge_level: knowledge_assertion + agent_type: automated_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Entrez + id: infores:entrez + xref: + - https://www.ncbi.nlm.nih.gov/Web/Search/entrezfs.html + synonym: + - NCBIGene + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: European Public Assessment Report (EPAR) + id: infores:epar + xref: + - https://www.ema.europa.eu/en/medicines/download-medicine-data + synonym: + - EPAR + description: >- + European Public Assessment Reports are the EMA's scientific documents describing the + basis + for a medicine's marketing authorisation in the European Union, including therapeutic + indication text and the Summary of Product Characteristics. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:drugapprovals-kp + - status: released + name: EPSD + id: infores:epsd + xref: + - https://epsd.biocuckoo.cn + synonym: + - Eukaryotic phosporylation site database + knowledge_level: not_provided + agent_type: not_provided + - status: released + name: 'eRAM: encyclopedia of rare disease annotations for precision medicine' + id: infores:eram + xref: + - http://119.3.41.228/eram/ + synonym: + - eRAM + description: >- + encyclopedia of rare disease annotations for precision medicine + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Evolutionary Rate Covariation (ERC) Analysis + id: infores:erc-analysis + synonym: + - ERC Analysis + knowledge_level: statistical_association + agent_type: not_provided + - status: deprecated + name: Explanatory Agent API + id: infores:explanatory-agent + xref: + - https://github.com/NCATSTranslator/Explanatory-Agent + description: >- + A Translator Reasoner API for the Explanatory Agent + knowledge_level: prediction + agent_type: not_provided + - status: released + name: FDA Adverse Event Reporting System + id: infores:faers + xref: + - https://www.fda.gov/drugs/fdas-adverse-event-reporting-system-faers/fda-adverse-event-reporting-system-faers-public-dashboard + description: >- + The FDA Adverse Event Reporting System (FAERS) is a database that contains information + on adverse event and medication error reports submitted to FDA. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:drugapprovals-kp + - status: released + name: Drosophila gross anatomy + id: infores:fbbt + xref: + - https://obofoundry.org/ontology/fbbt.html + synonym: + - FBbt + description: >- + An ontology representing the gross anatomy of Drosophila melanogaster. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: FlyBase Controlled Vocabulary + id: infores:fbcv + xref: + - https://fairsharing.org/FAIRsharing.6tgyxf + - https://obofoundry.org/ontology/fbcv.html + synonym: + - FBcv + description: >- + A structured controlled vocabulary used for various aspects of annotation by FlyBase. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Drosophila Developmental Ontology + id: infores:fbdv + xref: + - https://fairsharing.org/FAIRsharing.p52pzj + - https://obofoundry.org/ontology/fbdv.html + synonym: + - FBdv + description: >- + A structured controlled vocabulary of the development of Drosophila melanogaster. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: FDA Orphan Drug Project designation database + id: infores:fda-orphan-drug-db + xref: + - https://www.accessdata.fda.gov/scripts/opdlisting/oopd/ + description: >- + Resource for searching FDA Orphan Drug Designations and Approvals + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:mychem-info + - status: released + name: FDA Pharmacogenomic Biomarkers in Drug Labeling + id: infores:fda-pgx + xref: + - https://www.fda.gov/drugs/science-and-research-drugs/table-pharmacogenomic-biomarkers-drug-labeling + description: >- + FDA resource listing pharmacogenomic biomarkers included in drug labeling. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: FDA Pharmacogenomics Biomarker table + id: infores:fda-pharmacogenomics-biomarker + xref: + - https://www.fda.gov/drugs/science-and-research-drugs/table-pharmacogenomic-biomarkers-drug-labeling + description: >- + Resource lists therapeutic products from Drugs@FDA with pharmacogenomic information + found in the drug labeling. + Biomarkers in the table include but are not limited to germline or somatic gene variants + (polymorphisms, mutations), functional deficiencies with a genetic etiology, gene + expression differences, and chromosomal abnormalities; selected protein biomarkers + that are used to select treatments for patients are also included. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: FHIR Patient data Integration Tool + id: infores:fhir-pit + xref: + - https://researchsoftwareinstitute.github.io/data-translator/apps/fhir-pit + synonym: + - FHIR PIT + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: FlyBase + id: infores:flybase + xref: + - https://fairsharing.org/FAIRsharing.wrvze3 + - https://flybase.org + synonym: + - FlyBase + description: >- + A Database of Drosophila Genes & Genomes + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Foundational Model of Anatomy Ontology (FMA -- both from UMLS and from OBO) + id: infores:fma-obo + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/FMA/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Foundational Model of Anatomy Ontology (FMA -- both from UMLS and from OBO) + id: infores:fma-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/FMA/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Food Database + id: infores:foodb + xref: + - https://foodb.ca + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-foodb + - status: released + name: FoodData Central + id: infores:fooddata-central + xref: + - https://fdc.nal.usda.gov/index.html + description: >- + FoodData Central is an integrated data system that provides expanded nutrient profile + data and links to related agricultural and experimental research. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-fooddata-central + - status: released + name: FooDB + id: infores:fooddb + xref: + - https://foodb.ca/ + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:biothings-foodb + - status: released + name: Food Ontology + id: infores:foodon + xref: + - http://www.obofoundry.org/ontology/foodon.html + - https://fairsharing.org/FAIRsharing.dzxae + synonym: + - FOODON + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Fission Yeast Phenotype Ontology + id: infores:fypo + xref: + - https://fairsharing.org/FAIRsharing.4vr0ys + - https://obofoundry.org/ontology/fypo.html + synonym: + - FYPO + description: >- + FYPO is a formal ontology of phenotypes observed in fission yeast. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: National Cancer Institute Genomic Data Commons Data Portal + id: infores:gdc + xref: + - https://portal.gdc.cancer.gov + synonym: + - GDC + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Genomics of Drug Sensitivity in Cancer + id: infores:gdsc + xref: + - https://www.cancerrxgene.org/faq + synonym: + - GDSC + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - status: released + name: GeLiNEA + id: infores:gelinea + xref: + - https://github.com/broadinstitute/GeLiNEA + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:aragorn + - infores:arax + - infores:molepro + - status: released + name: GenAge Database of Ageing-Related Genes + id: infores:genage + xref: + - http://genomics.senescence.info/genes/ + synonym: + - GenAge; The Aging Gene Database + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: The Gene Curation Coalition (GenCC) + id: infores:gencc + xref: + - https://thegencc.org/ + description: >- + The GenCC DB provides information pertaining to the validity of gene-disease + relationships, with a current focus on Mendelian diseases + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:genetics-data-provider + - status: released + name: GenDR Database of Dietary Restriction-Related Genes + id: infores:gendr + xref: + - http://genomics.senescence.info/diet/ + synonym: + - GenDR + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Gene2Phenotype + id: infores:gene2phenotype + xref: + - https://www.ebi.ac.uk/gene2phenotype + - https://www.ebi.ac.uk/gene2phenotype/about/project + synonym: + - G2P + description: >- + G2P is a publicly-accessible online system designed to facilitate development, validation, + curation and distribution of large-scale, evidence-based datasets for diagnostic variant + filtering. Each entry associates an allelic requirement and mutational consequence + at a defined locus with a disease entity, including assigned confidence levels and + evidence links. + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:biothings-ebi-gene2phenotype + - status: released + name: 'Genebass: Gene-based association summary statistics' + id: infores:genebass + xref: + - https://genebass.org/ + description: >- + Genebass is a resource of exome-based association statistics, made + available to the public. The dataset encompasses 3,817 phenotypes with gene-based + and single-variant testing across 281,852 individuals with exome sequence data + from the UK Biobank. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:genetics-data-provider + - status: released + name: Genomic Epidemiology Ontology + id: infores:genepio + xref: + - https://fairsharing.org/FAIRsharing.y1mmbv + - https://genepio.org/ + synonym: + - GenEpiO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: GeneProf + id: infores:geneprof + xref: + - https://bio.tools/geneprof + - https://fairsharing.org/FAIRsharing.qmygaa + description: >- + underlying resource is throwing 404 error atm + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Genetics KP + id: infores:genetics-data-provider + xref: + - https://github.com/broadinstitute/genetics-kp-dev + description: >- + TRAPI 1.1 endpoint for the NCATS Biomedical Translator Genetics Data KP + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:clingen + - infores:clinvar + - infores:gencc + - infores:genebass + consumed_by: + - infores:aragorn + - infores:arax + - infores:molepro + - status: released + name: Genetics Home Reference + id: infores:ghr + xref: + - https://ghr.nlm.nih.gov/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Global Network of Biomedical Relationships + id: infores:gnbr + xref: + - https://zenodo.org/record/1035500 + synonym: + - GNBR + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Gene Ontology + id: infores:go + xref: + - https://fairsharing.org/FAIRsharing.6xq0ee + - https://geneontology.org + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:biothings-go-bp + - infores:biothings-go-cc + - infores:biothings-go-mf + - infores:ebi-quick-go + - infores:rtx-kg2 + - status: released + name: Gene Ontology Causal Activity Model Annotations + id: infores:go-cam + xref: + - https://geneontology.org/docs/gocam-overview/ + synonym: + - GO-CAM + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: GO Central + id: infores:go-central + xref: + - http://www.geneontology.org/ + description: >- + The core GO Consortium annotation team responsible for producing annotations + for a range of model organisms. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Gene Ontology Plus + id: infores:go-plus + xref: + - https://obofoundry.org/ontology/go.html + synonym: + - GO-Plus + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Gene Ontology Annotations + id: infores:goa + xref: + - http://www.geneontology.org/ + synonym: + - GOA + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Gene Ontology Consortium + id: infores:goc + xref: + - http://www.geneontology.org/ + synonym: + - GOC + description: >- + The consortium that develops and maintains the Gene Ontology and produces + GO annotations based on published experimental results. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: GOTE (Gpcrs to dOwnstream cellular pathways byTissue Expression) + id: infores:gote + xref: + - https://tatonettilab-resources.s3.amazonaws.com/syspharm/GOTE.zip + synonym: + - GOTE + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: 'Genotype-Tissue Expression ' + id: infores:gtex + xref: + - https://gtexportal.org/home/ + synonym: + - GTEx + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - status: released + name: Guide to Pharmacology Database + id: infores:gtopdb + xref: + - https://www.guidetopharmacology.org + description: >- + An expert-knowledge_assertion resource of ligand-activity-target relationships, + the majority of which come from high-quality pharmacological and medicinal chemistry + literature + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Genome-to-Treatment + id: infores:gtrx + xref: + - https://gtrx.radygenomiclab.com + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-gtrx + - status: released + name: GWAS Catalog + id: infores:gwas-catalog + xref: + - https://www.ebi.ac.uk/gwas/ + synonym: + - GWAS + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: Healthcare Common Procedure Coding System (from UMLS) + id: infores:hcp-codes-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/HCPT + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: HCPCS Version of Current Procedural Terminology (HCPT) (from UMLS) + id: infores:hcpcs-cpt-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/HCPT/index.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: Hetionet + id: infores:hetionet + xref: + - https://het.io + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: HUGO Gene Nomenclature Committee + id: infores:hgnc + xref: + - https://fairsharing.org/FAIRsharing.29we0s + - https://www.genenames.org + synonym: + - HGNC + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:molepro + - infores:rtx-kg2 + - status: released + name: Health Level Seven (HL7) (from UMLS) + id: infores:hl7-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/HL7V3.0/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: 'Human Metabolome Database ' + id: infores:hmdb + xref: + - https://hmdb.ca + synonym: + - HMDB + description: >- + A freely available electronic database containing detailed information + about small molecule metabolites found in the human body + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:molepro + - infores:rtx-kg2 + - status: released + name: HomoloGene + id: infores:homologene + xref: + - https://www.ncbi.nlm.nih.gov/homologene + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Hopkins Synthetic Patient Data + id: infores:hopkins-synthetic-patient-data + xref: + - https://ictr.johnshopkins.edu/about + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Human Protein Atlas + id: infores:hpa + xref: + - http://www.proteinatlas.org/ + description: >- + The Human Protein Atlas is a Swedish-based program initiated in 2003 + with the aim to map all the human proteins in cells, tissues and organs using + an integration of various omics technologies, including antibody-based imaging, + mass spectrometry-based proteomics, transcriptomics and systems biology. All the + data in the knowledge resource is open access to allow scientists both in academia + and industry to freely access the data for exploration of the human proteome. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Host–Pathogen Interaction Database (HPIDB) + id: infores:hpidb + xref: + - https://hpidb.igbb.msstate.edu/ + description: >- + Curated host–pathogen protein interaction resource covering multiple species and pathogens. + (PSI-MI: MI:1335) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Human Phenotype Ontology + id: infores:hpo + xref: + - https://fairsharing.org/FAIRsharing.kbtt7f + - https://hpo.jax.org + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:biothings-hpo + - infores:catrax-pharmacogenomics + - infores:rtx-kg2 + - status: released + name: Human Phenotype Ontology + id: infores:hpo-annotations + xref: + - https://fairsharing.org/FAIRsharing.kbtt7f + - https://hpo.jax.org + synonym: + - HPO Annotations + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-hpo + - infores:mydisease-info + - status: released + name: Human Developmental Stages Ontology + id: infores:hsapdv + xref: + - https://fairsharing.org/FAIRsharing.c6vhm3 + - https://obofoundry.org/ontology/hsapdv.html + synonym: + - HsapDv + description: >- + An ontology that covers life cycle stages for humans, including both embryonic (Carnegie) + stages and adult stages. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Human Gene Ontology Annotations + id: infores:human-goa + xref: + - https://www.ebi.ac.uk/GOA/index + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: The Human Reference Protein Interactome Mapping Project + id: infores:huri + xref: + - http://www.interactome-atlas.org/download + synonym: + - HuRI + description: >- + A human ‘all-by-all’ reference interactome map of human binary protein + interactions, or ‘HuRI’. With approximately 53,000 protein–protein interactions, + HuRI has approximately four times as many such interactions as there are high-quality + knowledge_assertion interactions from small-scale studies + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - status: released + name: Interologous Interaction Database (I2D) + id: infores:i2d + xref: + - https://ophid.utoronto.ca/i2d + description: >- + Aggregates experimentally validated and orthology-transferred protein–protein interactions + across species. + (PSI-MI: MI:0911) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: ICD10 (from UMLS) + id: infores:icd10-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ICD10/index.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: ICD10AE (from UMLS) + id: infores:icd10ae-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ICD10AE/index.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: ICD10 Clinical Modification + id: infores:icd10cm + xref: + - https://icd10cmtool.cdc.gov/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ICD10CM (from UMLS) + id: infores:icd10cm-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ICD10CM/index.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: ICD10PCS (from UMLS) + id: infores:icd10pcs-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ICD10PCS/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: ICD11 Foundation + id: infores:icd11-foundation + xref: + - https://icd.who.int/dev11/f/en + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - status: released + name: ICD9CM (from UMLS) + id: infores:icd9cm-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/ICD9CM/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: ICEES (Integrated Clinical and Environmental Exposures Service) + id: infores:icees-kg + xref: + - https://robokop.renci.org/api-docs/docs/automat/icees-kg + synonym: + - KP + description: >- + ICEES Knowledge Graph (KG) is an open service that exposes clinical data (i.e., electronic + health records, clinical study data) that have been integrated at the patient level + with + public exposures data (e.g., airborne pollutants, major roadways/highways, concentrated + animal feeding operations, landfills), with pairwise positive and negative correlations + between feature variables reported on edges. + knowledge_level: statistical_association + agent_type: not_provided + - status: released + name: integrated Dietary Supplement Knowledge Base + id: infores:idisk + xref: + - https://conservancy.umn.edu/items/7dec9015-c428-44d3-80c7-625e0800d008 + synonym: + - iDISK + description: >- + https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7075538/ + knowledge_level: mixed + agent_type: not_provided + consumed_by: + - infores:biothings-idisk + - status: released + name: International Molecular Exchange Consortium (IMEx) + id: infores:imex + xref: + - https://www.imexconsortium.org/ + description: >- + Consortium coordinating standards and shared curation for molecular interaction data + integrated by partners including IntAct. (PSI-MI: MI:0959) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: imProving Agent + id: infores:improving-agent + xref: + - https://github.com/suihuanglab/improving-agent + description: >- + imProving Agent OpenAPI TRAPI Specification + knowledge_level: prediction + agent_type: not_provided + consumed_by: + - infores:ars + - status: deprecated + name: OpenAPI for indigo NCATS Biomedical Translator Reasoner + id: infores:indigo-reasoner + xref: + - https://github.com/NCATSTranslator/ReasonerAPI + description: >- + OpenAPI for indigo NCATS Biomedical Translator Reasoner + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: InnateDB + id: infores:innatedb + xref: + - https://fairsharing.org/FAIRsharing.rb2drw + - https://www.innatedb.com/index.jsp + description: >- + InnateDB is a publicly available database of the genes, proteins, experimentally-verified + interactions and signaling pathways involved in the innate immune response of humans, + mice and bovines to microbial infection. The database captures an improved coverage + of + the innate immunity interactome by integrating known interactions and pathways from + major + public databases together with manually-curated data into a centralised resource. + knowledge_level: mixed + agent_type: not_provided + consumed_by: + - infores:biothings-innatedb + - status: released + name: Interaction Network Ontology + id: infores:ino + xref: + - http://www.obofoundry.org/ontology/ino.html + - https://fairsharing.org/FAIRsharing.mm72as + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: IntAct + id: infores:intact + xref: + - https://www.ebi.ac.uk/intact/home + description: >- + EMBL-EBI’s core manually curated molecular interaction knowledgebase using PSI-MI + standards; + primary IMEx curation and hosting platform. "(PSI-MI: MI:0469)" + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Interactome Projects at CCSB + id: infores:interactome-ccsb + xref: + - http://interactome.dfci.harvard.edu/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: InterPro + id: infores:interpro + xref: + - http://www.ebi.ac.uk/interpro + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: 'Inxight: Drugs' + id: infores:inxight-drugs + xref: + - https://drugs.ncats.io/ + description: >- + NCATS Inxight Drugs contains information on ingredients in medicinal + products, including: US APPROVED DRUGS, MARKETED DRUGS and INVESTIGATIONAL DRUGS. + Manually knowledge_assertion data supplied by the FDA and private companies, and provides + marketing and regulatory status, rigorous drug ingredient definitions, biological + activity, clinical use, and more. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: iProClass + id: infores:iproclass + xref: + - http://pir.georgetown.edu/iproclass/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: iPTMNet + id: infores:iptm-net + xref: + - https://research.bioinformatics.udel.edu/iptmnet/ + description: >- + A bioinformatics resource for integrated understanding of protein post-translational + modifications + (PTMs) in systems biology context. It connects multiple disparate bioinformatics + tools + and systems text mining, data mining, analysis and visualization tools, and databases + and ontologies into an integrated cross-cutting research resource to address the + knowledge + gaps in exploring and discovering PTM networks. + knowledge_level: not_provided + agent_type: text_mining_agent + - status: released + name: iPTMnet + id: infores:iptmnet + xref: + - https://research.bioinformatics.udel.edu/iptmnet/ + description: >- + iPTMnet is a bioinformatics resource for integrated understanding of protein post-translational + modifications (PTMs) in systems biology context. It connects multiple disparate bioinformatics + tools and systems text mining, data mining, analysis and visualization tools, and + databases + and ontologies into an integrated cross-cutting research resource to address the knowledge + gaps + in exploring and discovering PTM networks. + knowledge_level: mixed + agent_type: not_provided + - status: released + name: iRefIndex + id: infores:irefindex + xref: + - https://irefindex.vib.be/wiki/index.php/iRefIndex + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Multiomics EHRMLA Clinical Connections API + id: infores:isb-EHRMLA-clinicalconnections + xref: + - https://github.com/multiomicsKP + description: >- + Documentation of the Multiomics Electronic-Health-Record (EHR) Machine Learning Analysis + (MLA) Clinical Connections query web services. + knowledge_level: prediction + agent_type: computational_model + - status: released + name: Multiomics EHRMLA May Treat API + id: infores:isb-EHRMLA-data + xref: + - https://github.com/multiomicsKP + description: >- + Documentation of the Multiomics Electronic-Health-Record (EHR) Machine Learning Analysis + (MLA) May Treat query web services. + knowledge_level: prediction + agent_type: computational_model + - status: released + name: Institute for Systems Biology COVID-19 Immune Response Study + id: infores:isb-incov + xref: + - https://isbscience.org/research/covid-19/ + synonym: + - ISB Novel COronaVirus + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Institute for Systems Biology Scientific Wellness + id: infores:isb-wellness + xref: + - https://isbscience.org/research/scientificwellness/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-wellness + - status: released + name: Kyoto Encyclopedia of Genes and Genomes (KEGG) + id: infores:kegg + xref: + - https://www.genome.jp/kegg/ + synonym: + - KEGG + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: Knowledge Graph Exchange Archive + id: infores:kgea + xref: + - https://archive.translator.ncats.io/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: KinAce + id: infores:kinace + xref: + - https://kinet.kinametrix.com/#section-about + description: >- + https://kinace.kinametrix.com/#section-about + The KinAce web portal aggregates and visualizes the network of interactions between + protein-kinases + and their substrates in the human genome. To begin, click on one of the tabs above. + Each + tab provides a unique way to select a set of proteins and display the known kinase-substrate + interactions between them. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: KINOMEscan + id: infores:kinomescan + xref: + - https://lincs.hms.harvard.edu/kinomescan/ + knowledge_level: other + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Translator Knowledge Collaboratory API + id: infores:knowledge-collaboratory + xref: + - https://github.com/MaastrichtU-IDS/knowledge-collaboratory + description: >- + Translator Reasoner API for the Knowledge Collaboratory,hosted on the [Nanopublications + network](https://nanopub.net/), for annotated drug indications or any other BioLink-compliant + claims. This Open API supports [Translator Reasoner API](https://github.com/NCATSTranslator/ReasonerAPI) + queries and the [`KGX`](https://github.com/biolink/kgx) format See the API GitHub + repository: https://github.com/MaastrichtU-IDS/knowledge-collaboratory-api + This service is supported by the [NCATS Translator project](https://ncats.nih.gov/translator/about)' + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:nanopublications + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Life Science Resource Registry + id: infores:life-science-resource-registry + xref: + - https://download.bio2rdf.org/files/release/3/lsr/lsr.html + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Library of Integrated Network-Based Cellular Signatures + id: infores:lincs + xref: + - https://lincsproject.org/LINCS/about + synonym: + - LINCS + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Linked Structured Product Labels + id: infores:linkedspl + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: LitVar API + id: infores:litvar + xref: + - https://www.ncbi.nlm.nih.gov/CBBresearch/Lu/Demo/LitVar/ + description: >- + LitVar allows the search and retrieval of variant relevant information + from the biomedical literature and shows key biological relations between a variant + and its close related entities (e.g. genes, diseases, and drugs). The LitVar results + are automatically extracted (with regular updates) from over 27 million PubMed + articles as well as applicable full-text articles in PubMed Central. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:dbsnp + consumed_by: + - infores:service-provider-trapi + - status: released + name: Logical Observation Identifiers Names and Codes + id: infores:loinc + xref: + - https://loinc.org/ + synonym: + - LOINC + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: LOINC (from UMLS) + id: infores:loinc-umls + xref: + - https://www.nlm.nih.gov/research/umls/loinc_main.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: MatrixDB + id: infores:matrixdb + xref: + - https://matrixdb.univ-lyon1.fr/ + description: >- + Specialized resource for interactions involving extracellular matrix components, + glycoproteins, and polysaccharides. (PSI-MI: MI:0950) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Medical Action Ontology + id: infores:maxo + xref: + - http://www.obofoundry.org/ontology/maxo.html + - https://fairsharing.org/FAIRsharing.945c78 + synonym: + - MAXO + description: >- + see also https://github.com/monarch-initiative/MAxO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Mitochondrial Biology Information System (MBInfo) + id: infores:mbinfo + xref: + - https://www.mitobinfo.org/ + description: >- + Specialized database focused on mitochondrial protein interactions, processes, and + pathways; + provides curated mitochondrial PPIs integrated through MIntAct. (PSI-MI: MI:1222) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: MedDRA (from UMLS) + id: infores:meddra-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/MDR/index.html#:~:text=MedDRA%20is%20an%20international%20medical,effects%20and%20malfunction%20of%20devices. + synonym: + - MEDRA + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: MedGen + id: infores:medgen + xref: + - https://www.ncbi.nlm.nih.gov/medgen/ + synonym: + - MedGen + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: MeDI + id: infores:medi + xref: + - https://github.com/marcello-deluca/medic + - https://medic.renci.org/ + description: >- + Indications and contraindications from DailyMed, extracted using LLMs. + knowledge_level: knowledge_assertion + agent_type: text_mining_agent + consumes: + - infores:dailymed + consumed_by: + - infores:drugapprovals-kp + - status: released + name: MedlinePlus (from UMLS) + id: infores:medlineplus + xref: + - https://medlineplus.gov/ + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Medication Reference Terminology (MED-RT) (from UMLS) + id: infores:medrt-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/MED-RT/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Medical Subject Headings Thesaurus + id: infores:mesh + xref: + - https://www.nlm.nih.gov/mesh/meshhome.html + synonym: + - MeSH + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: MetaCyc Metabolic Pathway Database + id: infores:metacyc + xref: + - https://metacyc.org/ + synonym: + - MetaCyc + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Mouse Genome Informatics + id: infores:mgi + xref: + - https://www.informatics.jax.org/ + synonym: + - MGI + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-mgi-g2p + - status: released + name: Molecular Interactions Controlled Vocabulary + id: infores:mi + xref: + - http://www.obofoundry.org/ontology/mi.html + synonym: + - MI + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Multiomics Microbiome KP API + id: infores:microbiome-kp + xref: + - https://github.com/multiomicsKP/microbiome_kp + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumes: + - infores:pubmed-central + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: released + name: Molecular INTeraction Database (MINT) + id: infores:mint + xref: + - https://mint.bio.uniroma2.it/ + description: >- + Literature-curated experimentally verified protein–protein interactions from the University + of Rome; + now curated within IntAct under the MIntAct model. (PSI-MI: MI:0471) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: The microRNA Database + id: infores:mirbase + xref: + - https://www.mirbase.org/ + synonym: + - miRBase + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: MiRGate + id: infores:mirgate + xref: + - https://pubmed.ncbi.nlm.nih.gov/25858286/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: MOAlmanac + id: infores:moalmanac + xref: + - https://dev.moalmanac.org/ + - https://moalmanac.org/ + description: >- + The Molecular Oncology Almanac (MOAlmanac) is a clinical and biological interpretation + algorithm and paired knowledge base for precision oncology. The primary objective + of MOAlmanac is to identify and associate molecular alterations with therapeutic sensitivity + and resistance as well as disease prognosis. The underlying database of this method + is dependent on expert curation of the current body of knowledge on how molecular + alterations affect clinical actionability. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Molecular Connections + id: infores:molecular-connections + xref: + - http://www.molecularconnections.com + description: >- + In silico discovery-services company specializing in drug discovery informatics that + contributes curated molecular interaction data pro bono to the IMEx Consortium. + (PSI-MI: MI:1263) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Molecular Data Provider for NCATS Biomedical Translator Reasoners + id: infores:molepro + xref: + - https://github.com/broadinstitute/molecular-data-provider + description: >- + Molecular Data Provider for NCATS Biomedical Translator Reasoners + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:bigg-models + - infores:bindingdb + - infores:chebi + - infores:chembank + - infores:chembl + - infores:cmap + - infores:ctd + - infores:ctrp + - infores:depmap + - infores:dgidb + - infores:drug-repurposing-hub + - infores:drugbank + - infores:drugcentral + - infores:dsstoxdb + - infores:gelinea + - infores:genetics-data-provider + - infores:gtopdb + - infores:hgnc + - infores:hmdb + - infores:inxight-drugs + - infores:kinomescan + - infores:molepro + - infores:msigdb + - infores:pharmgkb + - infores:pharos + - infores:probe-miner + - infores:pubchem + - infores:reactome + - infores:rxnorm + - infores:sider + - infores:sri-node-normalizer + - infores:stitch + - infores:string + - infores:uniprot + consumed_by: + - infores:aragorn + - infores:arax + - infores:molepro + - infores:service-provider-trapi + - status: deprecated + name: SciGraph-Monarch-Data + id: infores:monarch-data + xref: + - scigraph-data.monarchinitiative.org/scigraph/docs/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: SciGraph-Monarch-Ontology + id: infores:monarch-ontology + xref: + - scigraph-ontology.monarchinitiative.org/scigraph/docs/ + knowledge_level: other + agent_type: not_provided + - status: released + name: Monarch Initiative + id: infores:monarchinitiative + xref: + - https://fairsharing.org/FAIRsharing.2c5132 + - https://monarchinitiative.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:service-provider-trapi + - status: released + name: MONDO Disease Ontology + id: infores:mondo + xref: + - https://mondo.monarchinitiative.org/ + synonym: + - MONDO + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumed_by: + - infores:catrax-pharmacogenomics + - infores:mydisease-info + - infores:rtx-kg2 + - status: released + name: Molecular Process Ontology + id: infores:mop + xref: + - http://www.obofoundry.org/ontology/mop.html + - https://fairsharing.org/FAIRsharing.mct09a + synonym: + - MOP + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Mouse Genome Informatics Mousemine + id: infores:mousemine + xref: + - http://www.mousemine.org/mousemine/api.do + synonym: + - Mousemine + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Mammalian Phenotype Ontology + id: infores:mp + xref: + - https://fairsharing.org/FAIRsharing.kg1x4z + - https://obofoundry.org/ontology/mp.html + description: >- + Standard terms for annotating mammalian phenotypic data. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Mouse pathology ontology + id: infores:mpath + xref: + - https://obofoundry.org/ontology/mpath.html + synonym: + - MPATH + description: >- + A structured controlled vocabulary of mutant and transgenic mouse pathology + phenotypes + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Microbial Protein Interaction Database (MPIDB) + id: infores:mpidb + xref: + - https://www.ebi.ac.uk/intact/ + description: >- + Collection of physical protein-protein interactions in prokaryotes. As of 2013 the + original MPIDB database is no longer active; all IMEx-curated MPIDB content was + imported into and is now maintained by IntAct. (PSI-MI: MI:0903) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Molecular Signatures Database + id: infores:msigdb + xref: + - https://www.gsea-msigdb.org/gsea/msigdb + synonym: + - MSigDB + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: deprecated + name: Multiomics ClinicalTrials KP API + id: infores:multiomics-clinicaltrials + description: >- + Deprecated identifier; this resource is now identified as infores:clinicaltrials-kp. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: deprecated + name: Multiomics Drug Approvals KP API + id: infores:multiomics-drugapprovals + description: >- + Deprecated identifier; this resource is now identified as infores:drugapprovals-kp. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Multiomics KP API + id: infores:multiomics-kp + xref: + - https://github.com/multiomicsKP/multiomics_kp + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumes: + - infores:pubmed-central + consumed_by: + - infores:aragorn + - infores:arax + - infores:service-provider-trapi + - status: deprecated + name: Multiomics Microbiome KP API + id: infores:multiomics-microbiome + description: >- + Deprecated identifier; this resource is now identified as infores:microbiome-kp. + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + - status: deprecated + name: Multiomics KP API + id: infores:multiomics-multiomics + description: >- + Deprecated identifier; this resource is now identified as infores:multiomics-kp. + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + - status: released + name: My Cancer Genome + id: infores:mycancergenome + xref: + - https://www.mycancergenome.org/ + description: >- + Knowledgebase providing up-to-date information on cancer gene variants and targeted + therapies. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: My Cancer Genome Clinical Trial + id: infores:mycancergenome-trials + xref: + - https://www.mycancergenome.org/ + description: >- + Clinical trial data linked to molecular cancer variants curated by My Cancer Genome. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: MyChem.info API + id: infores:mychem-info + xref: + - http://mychem.info + synonym: + - mychem + description: >- + Documentation of the MyChem.info chem query web services. Learn more + about [MyChem.info](http://MyChem.info/) + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:aeolus + - infores:chebi + - infores:chembl + - infores:drugcentral + - infores:fda-orphan-drug-db + consumed_by: + - infores:service-provider-trapi + - status: released + name: MyDisease.info API + id: infores:mydisease-info + xref: + - http://mydisease.info/ + synonym: + - mydisease + description: >- + Documentation of the MyDisease.info disease query web services. Learn + more about [mydisease.info](http://mydisease.info/) + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:ctd + - infores:disgenet + - infores:hpo-annotations + - infores:mondo + consumed_by: + - infores:service-provider-trapi + - status: released + name: MyGene.info API + id: infores:mygene-info + xref: + - https://mygene.info/ + synonym: + - mygene + description: >- + Documentation of the MyGene.info Gene Query web services. Learn more + about [MyGene.info](http://mygene.info/) + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:clingen + - infores:cpdb + - infores:ncbi-gene + - infores:panther + - infores:reactome + consumed_by: + - infores:service-provider-trapi + - status: released + name: MyGeneset.info API + id: infores:mygeneset-info + xref: + - https://mygeneset.info/ + description: >- + MyGeneset allows scientists to conveniently collect, save, and share sets of genes from + thousands of different species. + knowledge_level: other + agent_type: not_provided + - status: released + name: MyVariant.info API + id: infores:myvariant-info + xref: + - http://myvariant.info/ + synonym: + - myvariant + description: >- + Documentation of the MyVariant.info Variant Query web services. Learn + more about [MyVariant.info](http://myvariant.info/) + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:civic + - infores:clinvar + - infores:dbsnp + consumed_by: + - infores:service-provider-trapi + - status: released + name: Nanopublications Network + id: infores:nanopublications + xref: + - http://nanopub.net/ + synonym: + - Nanopublications + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:knowledge-collaboratory + - status: released + name: Neuro Behavior Ontology + id: infores:nbo + xref: + - https://fairsharing.org/FAIRsharing.pktgc6 + - https://obofoundry.org/ontology/nbo.html + synonym: + - NBO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: National Center for Advancing Translational Science Biomedical Data Translator + Autonomous Relay System + id: infores:ncats-ars + xref: + - https://github.com/NCATSTranslator/Relay + synonym: + - NCATS Translator Autonomous Relay System Translator Autonomous Relay System + - NCATS Translator ARS + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: National Center for Biotechnology Information Gene + id: infores:ncbi-gene + xref: + - https://www.ncbi.nlm.nih.gov/gene + synonym: + - NGBI Gene + - ncbigene + knowledge_level: knowledge_assertion + agent_type: automated_agent + consumed_by: + - infores:catrax-pharmacogenomics + - infores:mygene-info + - infores:rtx-kg2 + - status: released + name: NCBI Taxonomy Ontology + id: infores:ncbi-taxon + xref: + - http://www.obofoundry.org/ontology/ncbitaxon.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: NCBI Taxonomy + id: infores:ncbi-taxonomy + xref: + - http://www.ncbi.nlm.nih.gov/taxonomy + synonym: + - ncbitaxonomy + - ncbitaxon + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: North Carolina Department of Environmental Quality Concentrated Animal Feeding + Operations Exposures Data + id: infores:ncdeq-cafo-exposures-data + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: North Carolina Department of Environmental Quality Landfill Exposures Data + id: infores:ncdeq-landfill-exposures-data + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: NCES public school exposures data + id: infores:nces-schools-exposure-data + xref: + - https://nces.ed.gov/ + synonym: + - NCES Data + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: National Cancer Institute Thesaurus + id: infores:ncit + xref: + - https://ncithesaurus.nci.nih.gov/ncitbrowser/ + synonym: + - NCT Thesaurus + - NCIt + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: National Drug Code Directory + id: infores:ndcd + xref: + - https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory + synonym: + - NDCD + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: National Drug Data File (NDDF) (from UMLS) + id: infores:nddf-umls + knowledge_level: knowledge_assertion + agent_type: automated_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: NDEx + id: infores:ndex + xref: + - https://www.ndexbio.org/index.html#/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: National Drug File - Reference Terminology (NDF-RT) (from UMLS) + id: infores:ndfrt + xref: + - https://www.nlm.nih.gov/research/umls/rxnorm/sourcereleasedocs/vandf.html + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: NEXO Align Ontology + id: infores:nexo-align + xref: + - http://nexo.ucsd.edu/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: NEXO Construct Ontology + id: infores:nexo-construct + xref: + - http://nexo.ucsd.edu/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: NIEHS Environmental Polymorphisms Registry + id: infores:niehs-epr-study-datae + synonym: + - NIEHS EPR + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: National Organization for Rare Disorders (NORD) Database + id: infores:nord + xref: + - http://rarediseases.org/ + synonym: + - NORD + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: nSides + id: infores:nsides + xref: + - https://nsides.io/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Norwegian University of Science and Technology (NTNU) + id: infores:ntnu + xref: + - https://www.ntnu.no/ + description: >- + NTNU-affiliated curators contributing molecular interaction annotations to the IMEx + Consortium via IntAct. (PSI-MI: MI:1264) + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Ontology of Biological Attributes + id: infores:oba + xref: + - https://fairsharing.org/FAIRsharing.mp0rwf + - https://obofoundry.org/ontology/oba.html + synonym: + - OBA + description: >- + A collection of biological attributes (traits) covering all kingdoms of life. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Ontology-Based Inference Engine (OBIE) + id: infores:obie + xref: + - https://github.com/NCATSTranslator/Translator-All/wiki/OBIE + synonym: + - OBIE + description: >- + The Ontology Based Inference Engine (OBIE) is a simple reasoning engine + that performs inference and entailments based on logic encoded in formal + ontologies. At present, this is limited to the propagation of knowledge + annotated to a specific term or class in a hierarchical ontology to a + parent class in the hierarchy. For example, when a source reports that + "Metformin treats Type I Diabetes Mellitus", OBIE will logically entail + that "Metformin treats Diabetes Mellitus" (the parent class of Type I + Diabetes Mellitus in the MONDO disease ontology that supports the data) - + and instantiate this inferred statement/edge. + knowledge_level: logical_entailment + agent_type: automated_agent + - status: released + name: Ontology Lookup Service API + id: infores:ols + xref: + - https://www.ebi.ac.uk/ols4/help + synonym: + - OLS + description: >- + The OLS REST API provides access to key biological data from OLS. + The services provide a unified interface to query information about ontology terms + from GO (the Gene Ontology) and ECO (the Evidence & Conclusion Ontology), Gene + Ontology annotations from the EBI's GOA database, and gene products (proteins + from UniProt, RNA from RNAcentral and complexes from ComplexPortal). + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:disease-ontology + consumed_by: + - infores:service-provider-trapi + - status: released + name: OmicsDI + id: infores:omicsdi + xref: + - https://www.omicsdi.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Online Mendelian Inheritance in Man (OMIM) + id: infores:omim + xref: + - https://www.omim.org/about + synonym: + - OMIM + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:openpredict + - infores:rtx-kg2 + - status: released + name: OmniCorp + id: infores:omnicorp + xref: + - https://github.com/NCATS-Gamma/omnicorp + synonym: + - OmniCorp + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Observational Medical Outcomes Partnership Common Data Model + id: infores:omop-cdm + xref: + - https://www.ohdsi.org/data-standardization/the-common-data-model/ + synonym: + - OMOP-CDM + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: OMOP (OHDSI) + id: infores:omop-ohdsi + xref: + - https://www.ohdsi.org/data-standardization/ + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:cohd + - status: released + name: Observational Medical Outcomes Partnership Observational Health Data Sciences + and Informatics API + id: infores:omop-ohdsi-api + xref: + - https://chime.ucsf.edu/observational-medical-outcomes-partnership-omop + synonym: + - OMOP OHDSI API + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: OncoKB + id: infores:oncokb + xref: + - https://www.oncokb.org/ + description: >- + Precision oncology knowledgebase linking somatic mutations to clinical evidence levels + and therapies. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Open Targets + id: infores:open-targets + xref: + - https://fairsharing.org/FAIRsharing.3f9n4y + - https://www.opentargets.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Open Health Data @ Carolina + id: infores:openhealthdata-carolina + xref: + - https://github.com/WengLab-InformaticsResearch/cohd_api + synonym: + - OHD@Carolina, Open Health Data @ Carolina + description: >- + Open Health Data @ Carolina provides access to counts + and frequencies (i.e., EHR prevalence) of conditions, procedures, drug exposures, + and patient demographics, and the co-occurrence frequencies between them. Count + and frequency data were derived from UNC Health's OMOP database on a five-year cohort + (~6M patients over years 2018 through 2022) of all UNC Health patients, including + their + inpatient and outpatient visit data. Counts represent the number of patients associated + with a given concept, e.g., diagnosed with a condition, exposed to a drug, or who + had + a procedure. Frequencies are the number of unique patients + associated with the concept divided by the total number of patients in the dataset, i.e., + prevalence in the electronic health records. To protect patient privacy, all concepts + and pairs of concepts where the count was <= 10 were excluded, and counts were randomized + by the Poisson distribution. + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:automat-openhealthdata-carolina + - status: released + name: OpenPredict API + id: infores:openpredict + xref: + - https://github.com/MaastrichtU-IDS/translator-openpredict + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:cohd + - infores:drugbank + - infores:omim + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Orphanet Rare Disease Ontology + id: infores:ordo + xref: + - https://bioportal.bioontology.org/ontologies/ORDO + synonym: + - ORDO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Orphanet + id: infores:orphanet + xref: + - https://fairsharing.org/FAIRsharing.6bd5k6 + - https://www.orpha.net + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: OWLSim Ontology Based Profile Matching + id: infores:owlsim + xref: + - https://berkeleybop.github.io/software/owlsim/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Ontology Xref Service + id: infores:oxo + xref: + - https://www.ebi.ac.uk/spot/oxo/ + synonym: + - OxO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Panther Classification System + id: infores:panther + xref: + - https://pantherdb.org/about.jsp + synonym: + - Panther + knowledge_level: other + agent_type: not_provided + consumed_by: + - infores:mygene-info + - status: released + name: PathoPhenoDB + id: infores:path-pheno-db + xref: + - http://patho.phenomebrowser.net/#/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Pathway Commons + id: infores:pathway-commons + xref: + - https://fairsharing.org/FAIRsharing.5y3gdd + - https://www.pathwaycommons.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: PathWhiz + id: infores:pathwhiz + xref: + - https://smpdb.ca/pathwhiz + knowledge_level: prediction + agent_type: automated_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Phenotype and Trait Ontology + id: infores:pato + xref: + - https://obofoundry.org/ontology/pato.html + synonym: + - PATO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Pathosystems Resource Integration Center + id: infores:patric + xref: + - https://ngdc.cncb.ac.cn/databasecommons/database/id/230 + synonym: + - PATRIC + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Physician Data Query (PDQ) (from UMLS) + id: infores:pdq-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/PDQ/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Psychoactive Drug Screening Program + id: infores:pdsp + xref: + - https://pdsp.unc.edu/databases/kidb.php + description: >- + PDSP is the NIMH's Psychoactive Drug Screening Program, which provides screening of + novel psychoactive compounds for pharmacological and functional activity at cloned + human or rodent CNS receptors, channels, and transporters. + The website links to several databases. + knowledge_level: other + agent_type: not_provided + - status: released + name: PDSP Ki Database + id: infores:pdsp-ki + xref: + - https://pdsp.unc.edu/kidb2/kidb/web/ + synonym: + - KiDB + description: >- + The Ki database serves as a data warehouse for published and internally-derived + Ki, or affinity, values for a large number of drugs and drug candidates at UNC's + Psychoactive Drug Screening Program + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Pfam + id: infores:pfam + xref: + - https://www.ebi.ac.uk/interpro + description: >- + The Pfam database is a large collection of protein families, each represented + by multiple sequence alignments and hidden Markov models (HMMs). Proteins are + generally composed of one or more functional regions, commonly termed domains. + Different combinations of domains give rise to the diverse range of proteins found + in nature. The identification of domains that occur within proteins can therefore + provide insights into their function. Pfam also generates higher-level groupings + of related entries, known as clans. A clan is a collection of Pfam entries which + are related by similarity of sequence, structure or profile-HMM. The data presented + for each entry is based on the UniProt Reference Proteomes but information on + individual UniProtKB sequences can still be found by entering the protein accession. + Pfam full alignments are available from searching a variety of databases, either + to provide different accessions (e.g. all UniProt and NCBI GI) or different levels + of redundancy. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: PFOCR + id: infores:pfocr + xref: + - https://pfocr.wikipathways.org/ + knowledge_level: prediction + agent_type: not_provided + consumed_by: + - infores:biothings-pfocr + - status: released + name: Text Mined pharmacogenomic polymorphisms + id: infores:pgxmine + xref: + - https://pgxmine.pharmgkb.org/ + synonym: + - PGxMine + description: >- + Text mined pharmacogenomic polymorphisms to assist curation of PharmGKB. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Pharmacotherapy Database + id: infores:pharmacotherapydb + xref: + - https://github.com/dhimmel/indications + synonym: + - PharmacotherapyDB + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Pharmacogenomics Knowledgebase + id: infores:pharmgkb + xref: + - https://www.pharmgkb.org/ + synonym: + - PharmGKB + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - infores:molepro + - status: released + name: Pharos + id: infores:pharos + xref: + - https://fairsharing.org/FAIRsharing.52d6ae + - https://pharos.nih.gov/about + description: >- + focusing on three of the most commonly drug-targeted protein families: + G-protein-coupled receptors (GPCRs, Ion channels (ICs), Kinases + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Phenomics Integrated Ontology + id: infores:phenio + xref: + - https://github.com/monarch-initiative/phenio + synonym: + - PHENIO + description: >- + An ontology for accessing and comparing knowledge concerning phenotypes + across species and genetic backgrounds. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: PhenoPacket Store + id: infores:phenopacket-store + xref: + - https://github.com/monarch-initiative/phenopacket-store + synonym: + - Phenopacket Store + description: >- + A repository for storage and retrieval of phenopackets, which are structured data for + representing and exchanging phenotypic information across computational contexts. + knowledge_level: observation + agent_type: manual_agent + - status: released + name: Protein Ontology + id: infores:pr + xref: + - https://fairsharing.org/FAIRsharing.4ndncv + - https://proconsortium.org/ + synonym: + - PRO + knowledge_level: knowledge_assertion + agent_type: manual_validation_of_automated_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: Prefix Commons + id: infores:prefixcommons + xref: + - https://github.com/prefixcommons + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: PrePPI + id: infores:preppi + xref: + - https://honiglab.c2b2.columbia.edu/PrePPI/ + synonym: + - PrePPI + knowledge_level: prediction + agent_type: not_provided + - status: released + name: PrimeKG, Precision Medicine Knowledge Graph + id: infores:primekg + xref: + - https://github.com/mims-harvard/PrimeKG + synonym: + - PrimeKG + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - status: released + name: Probe Miner + id: infores:probe-miner + xref: + - https://probeminer.icr.ac.uk/#/ + knowledge_level: statistical_association + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: Providence St. Joseph EHR Data + id: infores:providence-st-joseph-ehr + xref: + - https://www.providence.org/about/initiatives/institute-for-systems-biology + description: >- + A partnership with Providence/Swedish Health Services and Institute + for Systems Biology allows analysis of 26 million EHRs from patients in seven + states in the US, including Alaska, California, Montana, Oregon, Washington, Texas, + and New Mexico. Please email data-access@isbscience.org for more information. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:automat-ehr-may-treat-kp + - status: released + name: PhosphoSitePlus + id: infores:psite-plus + xref: + - https://www.phosphosite.org/homeAction.action + description: >- + provides comprehensive information and tools for the study of protein post-translational + modifications (PTMs) including phosphorylation, acetylation, and more. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Psychological Index Terms (PSY) (from UMLS) + id: infores:psy-umls + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/PSY/index.html#:~:text=PSY%20(Psychological%20Index%20Terms)%20%2D%20Synopsis,-Synopsis%20Metadata%20Statistics&text=The%20Thesaurus%20of%20Psychological%20Index%20Terms%20is%20a%20controlled%20vocabulary,provide%20subject%20searching%20of%20data. + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: PubChem + id: infores:pubchem + xref: + - https://fairsharing.org/FAIRsharing.qt3w7z + - https://pubchem.ncbi.nlm.nih.gov/ + description: >- + an open chemistry database at the National Institutes of Health (NIH), + mostly contains small molecules, but also larger molecules such as nucleotides, + carbohydrates, lipids, peptides, and chemically-modified macromolecules + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: PubMed + id: infores:pubmed + xref: + - https://fairsharing.org/FAIRsharing.a5sv8m + - https://pubmed.ncbi.nlm.nih.gov/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:text-mining-provider-cooccurrence + - infores:text-mining-provider-targeted + - status: released + name: PubMed Central + id: infores:pubmed-central + xref: + - https://fairsharing.org/FAIRsharing.wpt5mp + - https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/ + synonym: + - PMC + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:microbiome-kp + - infores:multiomics-kp + - infores:text-mining-provider-cooccurrence + - infores:text-mining-provider-targeted + - status: released + name: Pubtator + id: infores:pubtator + xref: + - https://www.ncbi.nlm.nih.gov/research/pubtator3/ + description: >- + PubTator is a biomedical literature resource using state-of-the-art AI + techniques to offer semantic and relation searches for key concepts like + proteins, genetic variants, diseases and chemicals. It covers millions of + PubMed abstracts and full-text articles from PMC Open Access Subset (PMC-OA). + knowledge_level: not_provided + agent_type: text_mining_agent + - status: deprecated + name: QuickGO + id: infores:quickgo + xref: + - https://www.ebi.ac.uk/QuickGO/api/index.html#!/gene_ontology/baseUrlUsingGET_1 + synonym: + - QuickGO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: RaMPDB + id: infores:rampdb + xref: + - https://rampdb.nih.gov/ + description: >- + RaMP-DB (Relational database of Metabolomic Pathways) is a multi-sourced integrated + database + with comprehensive annotations on biological pathways, structure/chemistry, disease + and + ontology + annotations for genes, proteins, and metabolites. RaMP-DB also provides a framework + for + single + and batch queries of those annotations, and for performing chemical and biological + pathway + enrichment analyses on input multi-omic datasets. + knowledge_level: mixed + agent_type: not_provided + - status: released + name: NCATS RARe-SOURCE + id: infores:rare-source + xref: + - https://raresource.nih.gov/ + description: >- + Integrated Bioinformatics Resource for Rare Diseases + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-rare-source + - status: released + name: Reactome + id: infores:reactome + xref: + - https://fairsharing.org/FAIRsharing.tf6kj8 + - https://reactome.org/ + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:molepro + - infores:mygene-info + - infores:rtx-kg2 + - status: released + name: RefMet - A Reference list of Metabolite names + id: infores:refmet + xref: + - https://www.metabolomicsworkbench.org/databases/refmet/index.php + description: >- + RefMet provides a standardized reference nomenclature for both discrete metabolite + structures and metabolite species identified by spectroscopic techniques in metabolomics + experiments. The resource curates over 700,000 metabolite names from 3,500+ MS and + NMR studies into a standardized analytical chemistry-focused nomenclature system, + enabling researchers to compare and contrast metabolite data across different experiments + and studies. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Richards Effector Gene List + id: infores:regl + xref: + - https://www.mcgill.ca/genepi/ + description: >- + An effector index to predict target genes at GWAS loci + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: RENCI BioNames + id: infores:renci-bionames + xref: + - https://bionames.renci.org/apidocs/#/default/get_lookup__q___concept__ + synonym: + - Bionames + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Drug Repositioning Database + id: infores:repodb + xref: + - https://unmtid-shinyapps.net/shiny/repodb/ + synonym: + - repoDB + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-repodb + - status: released + name: Retriever + id: infores:retriever + xref: + - https://github.com/BioPack-team/retriever + description: >- + Retriever: The TRAPI access layer to Tier 0/1/2 KGs. + knowledge_level: mixed + agent_type: not_provided + consumes: + - infores:dogpark-tier0 + - infores:dogpark-tier1 + consumed_by: + - infores:arax + - infores:shepherd-aragorn + - infores:shepherd-arax + - infores:shepherd-bte + - infores:shepherd-sipr + - status: released + name: RGD API + id: infores:rgd + xref: + - https://rgd.mcw.edu/ + description: >- + The RGD API + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Rhea + id: infores:rhea + xref: + - https://fairsharing.org/FAIRsharing.pn1sr5 + - https://www.rhea-db.org/ + description: >- + https://www.rhea-db.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-rhea + - status: released + name: RNAcentral + id: infores:rnacentral + xref: + - https://fairsharing.org/FAIRsharing.KcCjL7 + - https://rnacentral.org + description: >- + A comprehensive database of non-coding RNA sequences that provides a single access + point + to RNA sequences from a range of resources. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Relations Ontology + id: infores:ro + xref: + - http://www.obofoundry.org/ontology/ro.html + synonym: + - RO + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: ROBOKOP + id: infores:robokop + xref: + - https://robokop.renci.org/ + synonym: + - Robokop + description: >- + An API for answering biomedical questions + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: ROBOKOP KG + id: infores:robokop-kg + xref: + - https://robokop.renci.org/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:unsecret-agent + - status: deprecated + name: ROBOKOP (Reasoning Over Biomedical Objects linked in Knowledge-Oriented + Pathway) + id: infores:robokop-kp + xref: + - http://robokop.renci.org + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: ROBOKOP Ranker + id: infores:robokp-ranker + xref: + - http://robokop.renci.org + description: >- + An API for answering biomedical questions + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: RTX KG2 + id: infores:rtx-kg2 + xref: + - https://github.com/RTXteam/RTX-KG2 + synonym: + - Rtx-kg2 + description: >- + TRAPI 1.1 endpoint for the NCATS Biomedical Translator KP called RTX KG2 + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:atc-codes-umls + - infores:bfo + - infores:biolink-ontology + - infores:bspo + - infores:chebi + - infores:chembl + - infores:chv-umls + - infores:cl + - infores:clinicaltrials-kp + - infores:cpt-codes-umls + - infores:dda + - infores:dgidb + - infores:disease-ontology + - infores:diseases + - infores:disgenet + - infores:drugapprovals-kp + - infores:drugbank + - infores:drugcentral + - infores:efo + - infores:ehdaa2 + - infores:ensembl-gene + - infores:fma-obo + - infores:fma-umls + - infores:foodon + - infores:genepio + - infores:go + - infores:go-plus + - infores:goa + - infores:hcp-codes-umls + - infores:hcpcs-cpt-umls + - infores:hgnc + - infores:hl7-umls + - infores:hmdb + - infores:hpo + - infores:icd10-umls + - infores:icd10ae-umls + - infores:icd10cm-umls + - infores:icd10pcs-umls + - infores:icd9cm-umls + - infores:ino + - infores:intact + - infores:kegg + - infores:loinc-umls + - infores:meddra-umls + - infores:medlineplus + - infores:medrt-umls + - infores:mesh + - infores:mi + - infores:mirbase + - infores:mondo + - infores:nbo + - infores:ncbi-gene + - infores:ncbi-taxon + - infores:ncbi-taxonomy + - infores:ncit + - infores:nddf-umls + - infores:ndfrt + - infores:omim + - infores:ordo + - infores:pathwhiz + - infores:pato + - infores:pdq-umls + - infores:pr + - infores:psy-umls + - infores:reactome + - infores:ro + - infores:rxnorm + - infores:semmeddb + - infores:smpdb + - infores:snomedct + - infores:ttd + - infores:uberon + - infores:umls + - infores:umls-metathesaurus + - infores:unichem + - infores:unii + - infores:uniprot + - infores:vandf-umls + consumed_by: + - infores:aragorn + - infores:arax + - infores:unsecret-agent + - status: released + name: RxNorm + id: infores:rxnorm + xref: + - https://fairsharing.org/FAIRsharing.36pf8q + - https://www.nlm.nih.gov/research/umls/rxnorm/index.html + description: >- + normalized names for clinical drugs and links its names to many of + the drug vocabularies commonly used in pharmacy management and drug interaction + software, including those of First Databank, Micromedex, and Gold Standard Drug + Database + knowledge_level: knowledge_assertion + agent_type: automated_agent + consumed_by: + - infores:molepro + - infores:rtx-kg2 + - status: released + name: SABIO-RK Biochemical Reaction Kinetics Database + id: infores:sabio-rk + xref: + - https://fairsharing.org/FAIRsharing.cwx04e + - https://www.h-its.org/projects/sabio-rk-biochemical-reaction-kinetics-database/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Semantic Analytics & Clean Data Intelligence Experts + id: infores:scibite + xref: + - https://www.scibite.com/ + knowledge_level: not_provided + agent_type: text_mining_agent + - status: released + name: Semantic Medline Database + id: infores:semmeddb + xref: + - https://lhncbc.nlm.nih.gov/ii/tools/SemRep_SemMedDB_SKR.html + knowledge_level: prediction + agent_type: text_mining_agent + consumed_by: + - infores:biothings-semmeddb + - infores:rtx-kg2 + - status: released + name: SEPID MAB + id: infores:sepid_mab + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:biothings-mabs + - status: released + name: Service Provider TRAPI endpoints + id: infores:service-provider-trapi + xref: + - https://github.com/biothings/biothings_explorer + synonym: + - service provider + knowledge_level: other + agent_type: not_provided + consumes: + - infores:automat-ctd + - infores:automat-drug-central + - infores:automat-gtex + - infores:automat-gtopdb + - infores:automat-gwas-catalog + - infores:automat-hetionet + - infores:automat-hgnc + - infores:automat-hmdb + - infores:automat-human-goa + - infores:automat-icees-kg + - infores:automat-intact + - infores:automat-panther + - infores:automat-pharos + - infores:automat-robokop + - infores:automat-viral-proteome + - infores:biothings-agr + - infores:biothings-bindingdb + - infores:biothings-bioplanet-pathway-disease + - infores:biothings-bioplanet-pathway-gene + - infores:biothings-ddinter + - infores:biothings-dgidb + - infores:biothings-diseases + - infores:biothings-ebi-gene2phenotype + - infores:biothings-foodb + - infores:biothings-fooddata-central + - infores:biothings-go-bp + - infores:biothings-go-cc + - infores:biothings-go-mf + - infores:biothings-gtrx + - infores:biothings-hpo + - infores:biothings-idisk + - infores:biothings-innatedb + - infores:biothings-mabs + - infores:biothings-mgi-g2p + - infores:biothings-multiomics-biggim-drugresponse + - infores:biothings-multiomics-ehr-risk + - infores:biothings-multiomics-wellness + - infores:biothings-pfocr + - infores:biothings-rare-source + - infores:biothings-repodb + - infores:biothings-rhea + - infores:biothings-semmeddb + - infores:biothings-suppkg + - infores:biothings-ttd + - infores:biothings-uberon-ontology + - infores:clinicaltrials-kp + - infores:cohd + - infores:complex-portal + - infores:connections-hypothesis + - infores:ctd + - infores:drugapprovals-kp + - infores:ebi-proteins + - infores:ebi-quick-go + - infores:litvar + - infores:microbiome-kp + - infores:molepro + - infores:monarchinitiative + - infores:multiomics-kp + - infores:mychem-info + - infores:mydisease-info + - infores:mygene-info + - infores:myvariant-info + - infores:ols + - infores:text-mining-provider-targeted + consumed_by: + - infores:aragorn + - infores:arax + - infores:biothings-explorer + - status: released + name: Saccharomyces Genome Database + id: infores:sgd + xref: + - http://www.yeastgenome.org/ + - https://fairsharing.org/FAIRsharing.pzvw40 + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Shepherd Aragorn ARA + id: infores:shepherd-aragorn + xref: + - https://github.com/BioPack-team/shepherd + description: >- + Shepherd Aragorn: The Aragorn ARA implementation within the + Shepherd platform. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:retriever + consumed_by: + - infores:ars + - status: released + name: Shepherd ARAX ARA + id: infores:shepherd-arax + xref: + - https://github.com/BioPack-team/shepherd + description: >- + Shepherd ARAX: The ARAX ARA implementation within the + Shepherd platform. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:retriever + consumed_by: + - infores:ars + - status: released + name: Shepherd BTE ARA + id: infores:shepherd-bte + xref: + - https://github.com/BioPack-team/shepherd + description: >- + Shepherd BTE: The BTE ARA implementation within the + Shepherd platform. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:retriever + consumed_by: + - infores:ars + - status: released + name: Shepherd SIPR ARA + id: infores:shepherd-sipr + xref: + - https://github.com/BioPack-team/shepherd + description: >- + Shepherd SIPR: The SIPR ARA implementation within the + Shepherd platform. Uses Page Rank algorithm for Set Input Queries. + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:retriever + consumed_by: + - infores:ars + - status: released + name: SIDER + id: infores:sider + xref: + - http://sideeffects.embl.de/about/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - infores:molepro + - status: released + name: SIGNOR 3.0 + id: infores:signor + xref: + - https://signor.uniroma2.it/ + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:catrax-pharmacogenomics + - status: released + name: SmartAPI API + id: infores:smart-api + xref: + - https://smart-api.info + description: >- + This is the API provided from SmartAPI, https://smart-api.info, application. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: SmartAPI API + id: infores:smartapi + xref: + - https://smart-api.info + description: >- + This is the API provided from SmartAPI, https://smart-api.info, application. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Small Molecule Pathway Database (SMPDB) + id: infores:smpdb + xref: + - https://smpdb.ca/ + synonym: + - SMPDB + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: Systemized Nomenclature of Medicine + id: infores:snomedct + xref: + - http://www.snomed.org/ + synonym: + - SNOMED + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: SnpEff + id: infores:snpeff + xref: + - https://pcingola.github.io/SnpEff/ + description: >- + Genetic variant annotation and functional effect prediction toolbox. It annotates + and + predicts the effects of genetic variants on genes and proteins (such as amino acid + changes). + knowledge_level: prediction + agent_type: computational_model + - status: released + name: Sequence Ontology + id: infores:so + xref: + - http://purl.obolibrary.org/obo/so.owl + - https://fairsharing.org/FAIRsharing.6bc7h9 + synonym: + - SO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: SPOKE KP + id: infores:spoke + xref: + - https://spoke.ucsf.edu/ + synonym: + - Spoke + description: >- + SPOKE KP - an NIH NCATS Knowledge Provider to expose UCSFs SPOKE + knowledge_level: knowledge_assertion + agent_type: not_provided + consumes: + - infores:bgee + - infores:bindingdb + - infores:chembl + - infores:civic + - infores:disease-ontology + - infores:diseases + - infores:drugcentr + - infores:fooddb + - infores:gdsc + - infores:go + - infores:gwas-catalog + - infores:hpa + - infores:interpro + - infores:kegg + - infores:lincs + - infores:mesh + - infores:ncbi-taxonomy + - infores:omim + - infores:path-pheno-db + - infores:pfam + - infores:sider + - infores:string + - infores:uberon + - infores:uniprot + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: SRI Answer Appraiser + id: infores:sri-answer-appraiser + xref: + - https://github.com/TranslatorSRI/answer-appraiser + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: Edge Normalization Service + id: infores:sri-edge-normalization-service + xref: + - https://github.com/TranslatorSRI/EdgeNormalization + description: >- + SRI service to validate and normalize edges to Translator standards. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Name Resolver + id: infores:sri-name-resolver + xref: + - https://github.com/TranslatorSRI/NameResolution + description: >- + Service to resolve Translator concept names. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Node Normalization + id: infores:sri-node-normalizer + xref: + - https://github.com/TranslatorSRI/NodeNormalization + description: >- + Node normalization takes a CURIE, and returns resolved alias and + the canonical identifier of a node. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: deprecated + name: Ontology-KP API + id: infores:sri-ontology + xref: + - https://github.com/TranslatorSRI/Ontology-KP + description: >- + TRAPI interface to integrated ontology knowledgebase + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: SRI Reference Knowledge Graph API + id: infores:sri-reference-kg + xref: + - https://github.com/Knowledge-Graph-Hub/sri-reference-kg + description: >- + The SRI reference KG aims to aggregate knowledge sources across translator + using KGX. The initial graph contains data files provided by the Monarch Initiative + and several ontologies. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: SRI SemMedDb KGX File Set + id: infores:sri-semmeddb + description: >- + The SRI Semantic Medline Database is a Biolink Model compliant KGX + file set mapping of NIH NLM SemMedDb. The graph contains data files generated + by the ETL process pipeline at https://github.com/NCATS-Tangerine/semmed-biolink. + The KGX file set is hosted on the Knowledge Graph Exchange Archive (https://archive.translator.ncats.io). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: STAR GEO Search Application + id: infores:startgeo + xref: + - http://stargeo.org/ + synonym: + - STARGEO + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: STITCH + id: infores:stitch + xref: + - http://stitch.embl.de/ + synonym: + - STITCH + description: >- + Database of known and prediction interactions between chemicals and + proteins. The interactions include direct (physical) and indirect (functional) + associations + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: deprecated + name: Strider + id: infores:strider + xref: + - https://github.com/ranking-agent/strider + description: >- + Translator Autonomous Relay Agent + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Search Tool for the Retrieval of Interacting Genes/Proteins + id: infores:string + xref: + - https://string-db.org/ + synonym: + - STRING + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:molepro + - status: released + name: SuppKG + id: infores:suppkg + xref: + - https://www.sciencedirect.com/science/article/pii/S1532046422001368?via%3Dihub + description: >- + SuppKG contains relations between dietary supplements and other entities, such as + diseases. More + information can be found in [this paper](https://doi.org/10.1016/j.jbi.2022.104120). + knowledge_level: not_provided + agent_type: text_mining_agent + consumed_by: + - infores:biothings-suppkg + - status: released + name: Symptom Ontology + id: infores:symp + xref: + - http://www.obofoundry.org/ontology/symp.html + - https://fairsharing.org/FAIRsharing.ay74mj + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: The Cancer Genome Atlas + id: infores:tcga + xref: + - https://www.cancer.gov/about-nci/organization/ccg/research/structural-genomics/tcga + synonym: + - TCGA + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - status: released + name: Target Central Resource Database + id: infores:tcrd + xref: + - http://juniper.health.unm.edu/tcrd/ + - https://fairsharing.org/FAIRsharing.1gn47b + synonym: + - TCRD + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Text Mining COOCCURRENCE API + id: infores:text-mining-provider-cooccurrence + xref: + - https://github.com/UCDenver-ccp/text-mining-provider-trapi + description: >- + API serving a knowledge graph comprised of pairs of concepts that + have been found to co-occur in the scientific literature. Here, cooccurrence of + a pair of biomedical concepts within a single document or sentence serves as a + proxy for a potential relationship between the two concepts. + knowledge_level: not_provided + agent_type: text_mining_agent + consumes: + - infores:pubmed + - infores:pubmed-central + consumed_by: + - infores:aragorn + - infores:arax + - status: released + name: Text Mining Targeted Association API + id: infores:text-mining-provider-targeted + xref: + - https://github.com/UCDenver-ccp/text-mining-provider-trapi + description: >- + API serving explicitly targeted Biolink Associations extracted from + sentences in the scientific literature. Here, targeted refers to the fact that + this service is based on text-mining models targeted to extract specific associations + between concepts, as opposed to concepts cooccurring with each other. + knowledge_level: not_provided + agent_type: text_mining_agent + consumes: + - infores:pubmed + - infores:pubmed-central + consumed_by: + - infores:service-provider-trapi + - infores:unsecret-agent + - status: deprecated + name: Text Mining KP + id: infores:textmining-kp + xref: + - https://github.com/UCDenver-ccp/text-mining-provider-trapi + knowledge_level: not_provided + agent_type: text_mining_agent + - status: released + name: Target Illumination GWAS Analytics + id: infores:tiga + xref: + - https://datascience.unm.edu/tiga/ + - https://fairsharing.org/FAIRsharing.beffb7 + synonym: + - TIGA + description: >- + Aggregating and assessing experimental evidence for interpretable, + explainable, accountable gene-trait associations. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: TISSUES + id: infores:tissues + xref: + - https://fairsharing.org/FAIRsharing.yXPvpU + - https://tissues.jensenlab.org/About + description: >- + TISSUES is a weekly updated web resource that integrates evidence on tissue expression from + manually curated literature, proteomics and transcriptomics screens, and automatic text + mining. We map all evidence to common protein identifiers and Brenda Tissue Ontology terms, + and further unify it by assigning confidence scores that facilitate comparison of the + different types and sources of evidence. We finally visualize these scores on a schematic + human body to provide a convenient overview. + knowledge_level: mixed + agent_type: not_provided + - status: released + name: Tissue Expression Database + id: infores:tissues-expression-db + xref: + - https://tissues.jensenlab.org/About + synonym: + - TED + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: NHLBI Trans-Omics for Precision Medicine + id: infores:topmed + xref: + - https://www.nhlbi.nih.gov/science/trans-omics-precision-medicine-topmed-program + synonym: + - TOPMed + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Therapeutic Target Database (TTD) + id: infores:ttd + xref: + - https://db.idrblab.net/ttd/ + synonym: + - TTD + description: >- + TTD is a database providing information about the known and explored therapeutic protein and + nucleic acid targets, the targeted disease, pathway information and the corresponding + drugs directed at each of these targets. + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:biothings-multiomics-biggim-drugresponse + - infores:biothings-ttd + - infores:rtx-kg2 + - status: released + name: Ubergraph + id: infores:ubergraph + xref: + - https://www.ebi.ac.uk/ols4/ + description: >- + A graph representation of Ubergraph, an integration of ontologies including GO, CHEBI, + Uberon, and HPO. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Uber Anatomy Ontology + id: infores:uberon + xref: + - https://fairsharing.org/FAIRsharing.4c0b6b + - https://obophenotype.github.io/uberon/ + synonym: + - Uberon + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:biothings-uberon-ontology + - infores:rtx-kg2 + - status: released + name: Unified Medical Language System + id: infores:umls + xref: + - https://www.nlm.nih.gov/research/umls/index.html + synonym: + - UMLS + knowledge_level: knowledge_assertion + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: UMLS Metathesaurus (MTH) (from UMLS) + id: infores:umls-metathesaurus + xref: + - https://www.nlm.nih.gov/research/umls/sourcereleasedocs/current/MTH/index.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: deprecated + name: UNC Carolina Data Warehouse for Health Patient EHR Data + id: infores:unc-cdwh-ehr-data + xref: + - https://tracs.unc.edu/index.php/services/informatics-and-data-science/cdw-h + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: UniChem + id: infores:unichem + xref: + - https://www.ebi.ac.uk/unichem/ + synonym: + - unichem + knowledge_level: logical_entailment + agent_type: automated_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Unique Ingredient Identifier + id: infores:unii + knowledge_level: not_provided + agent_type: not_provided + consumed_by: + - infores:rtx-kg2 + - status: released + name: UniProt Knowledgebase + id: infores:uniprot + xref: + - https://fairsharing.org/FAIRsharing.s1ne3g + - https://www.uniprot.org/help/about + synonym: + - UniProt + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:ebi-proteins + - infores:molepro + - infores:rtx-kg2 + - status: released + name: UniRef + id: infores:uniref + xref: + - https://www.uniprot.org/help/uniref + synonym: + - UniRef + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Unsecret Agent OpenAPI for NCATS Biomedical Translator Reasoners + id: infores:unsecret-agent + xref: + - https://github.com/webyrd/mediKanren + description: >- + OpenAPI for NCATS Biomedical Translator Reasoners + knowledge_level: prediction + agent_type: not_provided + consumes: + - infores:robokop-kg + - infores:rtx-kg2 + - infores:text-mining-provider-targeted + consumed_by: + - infores:ars + - status: released + name: University of Osnabrueck Molecular Cell Biology Division + id: infores:uos-mcb + xref: + - https://holthuis-lab-uos.de + synonym: + - UOS-MCB + description: >- + A Gene Ontology Consortium annotation group at the University of + Osnabrueck, Molecular Cell Biology Division, contributing manual GO + annotations. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Unified phenotype ontology + id: infores:upheno + xref: + - https://obofoundry.org/ontology/upheno.html + synonym: + - uPheno + description: >- + The uPheno ontology integrates multiple phenotype ontologies into a + unified cross-species phenotype ontology. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: United States Census Bureau American Community Survey Data + id: infores:us-census-acs-data + xref: + - https://www.census.gov/programs-surveys/acs/data.html + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: United States Census Bureau TIGER/line Roadway Data + id: infores:us-census-tiger-roadway-exposures-data + xref: + - http://www.census.gov/geo/maps-data/data/tiger-line.html + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: United States Department of Transportation Roadway Exposures Data + id: infores:us-dot-roadway-exposures-data + xref: + - https://highways.dot.gov/ + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: deprecated + name: United States Environmental Protection Agency Airborne Pollutant Exposures + Data + id: infores:us-epa-airborne-pollutant-exposures-data + xref: + - https://obofoundry.org/ontology/upheno.html + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Veterans Association National Drug File (VANDF) (from UMLS) + id: infores:vandf-umls + xref: + - https://www.nlm.nih.gov/research/umls/rxnorm/sourcereleasedocs/vandf.html + knowledge_level: knowledge_assertion + agent_type: manual_agent + consumed_by: + - infores:rtx-kg2 + - status: released + name: Equine Problems and Diagnoses Terms + id: infores:vts-equine-pdt + xref: + - https://vtsl.vetmed.vt.edu/aaep/ + synonym: + - Equine-PDT + description: >- + An AAEP-endorsed subset of SNOMED CT and its Veterinary Extension that provides + preferred terms for recording equine problems and diagnoses, developed by the + Veterinary Terminology Services (VTS) group at the Virginia-Maryland College of + Veterinary Medicine for the American Association of Equine Practitioners. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Small Animal Problems and Diagnoses Terms + id: infores:vts-sa-pdt + xref: + - https://vtsl.vetmed.vt.edu/sa/ + synonym: + - SA-PDT + description: >- + A subset of SNOMED CT and its Veterinary Extension that provides preferred terms for + recording problems and diagnoses in small animal general, specialty and emergency + practice, maintained by the Veterinary Terminology Services (VTS) group at the + Virginia-Maryland College of Veterinary Medicine. It consolidates the former AAHA + Problem and Diagnosis Terms (AAHA PDT) and the small animal specialty subset (SAS + PDT). + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: C. elegans Gross Anatomy Ontology + id: infores:wbbt + xref: + - https://obofoundry.org/ontology/wbbt.html + synonym: + - WBBT + description: >- + A structured controlled vocabulary of the anatomy of Caenorhabditis elegans. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: C. elegans development ontology + id: infores:wbls + xref: + - https://obofoundry.org/ontology/wbls.html + synonym: + - WBls + description: >- + A structured controlled vocabulary of the development of Caenorhabditis elegans. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: C. elegans phenotype + id: infores:wbphenotype + xref: + - https://fairsharing.org/FAIRsharing.agvc7y + - https://obofoundry.org/ontology/wbphenotype.html + synonym: + - WBPhenotype + description: >- + A structured controlled vocabulary of Caenorhabditis elegans phenotypes + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Wikidata + id: infores:wikidata + xref: + - https://fairsharing.org/FAIRsharing.6s749p + - https://wikidata.org + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Wikidata Garbanzo + id: infores:wikidata-garbanzo + xref: + - https://query.wikidata.org + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: WikiPathways + id: infores:wikipathways + xref: + - https://fairsharing.org/FAIRsharing.1x53qk + - https://www.wikipathways.org/ + description: >- + WikiPathways is an open science platform for biological pathways contributed, updated, + and used by the research community. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: World of Molecular Bioactivity - Pharmacokinetics (WOMBAT-PK) + id: infores:wombat-pk + xref: + - https://onlinelibrary.wiley.com/doi/10.1002/9783527619375.ch13b + description: >- + The WOrld of Molecular BioAcTivity - PharmacoKinetics (WOMBAT-PK) contained clinical + pharmacokinetics data curated from literature. The resource does not seem to be directly + accessible now, but [DrugCentral](https://pmc.ncbi.nlm.nih.gov/articles/PMC10692006/#Sec10) + reports that it uses this resource as a source of bioactivity data. + knowledge_level: knowledge_assertion + agent_type: manual_agent + - status: released + name: Translator Workflow Runner + id: infores:workflow-runner + xref: + - https://github.com/NCATSTranslator/workflow-runner + description: >- + Translator general purpose workflow runner + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: WormBase + id: infores:wormbase + xref: + - http://www.wormbase.org/ + - https://fairsharing.org/FAIRsharing.zx1td8 + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Xenopus Anatomy Ontology + id: infores:xao + xref: + - https://fairsharing.org/FAIRsharing.17zapb + - https://obofoundry.org/ontology/xao.html + synonym: + - XAO + description: >- + Represents the anatomy and development of the African frogs Xenopus laevis and tropicalis. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Xenbase + id: infores:xenbase + xref: + - https://xenbase.org + synonym: + - Xenbase + description: >- + Xenbase's mission is to provide the international research community + with a comprehensive, integrated and easy to use web based resource that gives + access the diverse and rich genomic, expression and functional data available + from Xenopus research. Xenbase also provides a critical data sharing infrastructure + for many other NIH-funded projects, and is a focal point for the Xenopus community. + In addition to our primary goal of supporting Xenopus researchers, Xenbase enhances + the availability and visibility of Xenopus data to the broader biomedical research + community. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Xenopus Phenotype Ontology + id: infores:xpo + xref: + - https://obofoundry.org/ontology/xpo.html + synonym: + - XPO + description: >- + XPO represents anatomical, cellular, and gene function phenotypes + occurring throughout the development of the African frogs Xenopus laevis and tropicalis. + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Zebrafish anatomy and development ontology + id: infores:zfa + xref: + - https://obofoundry.org/ontology/zfa.html + synonym: + - ZFA + description: >- + A structured controlled vocabulary of the anatomy and development of + the Zebrafish + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Zebrafish Information Network + id: infores:zfin + xref: + - https://zfin.org/ + synonym: + - ZFIN + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Zebrafish Developmental Stages Ontology + id: infores:zfs + xref: + - https://obofoundry.org/ontology/zfs.html + synonym: + - ZFS + description: >- + An ontology of developmental stages of the Zebrafish (Danio rerio). + knowledge_level: knowledge_assertion + agent_type: not_provided + - status: released + name: Zebrafish Phenotype Ontology + id: infores:zp + xref: + - https://obofoundry.org/ontology/zp.html + synonym: + - ZP + description: >- + The Zebrafish Phenotype Ontology formally defines all phenotypes of + the Zebrafish model organism. + knowledge_level: knowledge_assertion + agent_type: not_provided diff --git a/src/tablassert/errors.py b/src/tablassert/errors.py index 2c5d8671..b5b970e5 100644 --- a/src/tablassert/errors.py +++ b/src/tablassert/errors.py @@ -83,6 +83,7 @@ def redact_secrets(text: str, secrets: Sequence[str] = ()) -> str: "network-transient", "llm-transient", "reward-config-invalid", + "infores-registry-unreadable", ] diff --git a/src/tablassert/infores_registry.py b/src/tablassert/infores_registry.py new file mode 100644 index 00000000..dd93ede0 --- /dev/null +++ b/src/tablassert/infores_registry.py @@ -0,0 +1,229 @@ +"""Information Resource (infores) registry validation. + +Tablassert emits ``infores:`` CURIEs as knowledge-source provenance on nodes, edges, and +the generated RIG. Until now only the ``infores:`` prefix was validated +(``models.validate_infores_curie``); the suffix was freeform, so a typo'd or invented +identifier could ship silently. This module closes that loop against the authoritative +NCATS Translator registry: ``biolink/information-resource-registry``'s +``infores_catalog.yaml``, vendored as a bundled snapshot +(``data/infores_catalog.yaml``) so the default path is offline and deterministic. + +Classification is three-way, mirroring the Translator reality that Tablassert legitimately +mints graph-local CURIEs (``rig.infores()``) that will never appear in the registry: + +* ``registered``: the CURIE is in the registry. +* ``allowed``: the CURIE is on the caller's allowlist (locally-minted ids). +* ``unregistered``: neither; the only class that ``--strict`` mode fails on. + +The default posture is advisory: the report counts every class and exits clean. Nothing +here rewrites emitted artifacts; registration of a new resource remains the upstream +contribution process documented by the registry repo. +""" + +from __future__ import annotations + +import json +from collections.abc import Iterator +from pathlib import Path +from typing import Any + +import yaml + +from tablassert.errors import TablassertError + +#: Bundled snapshot of the upstream ``infores_catalog.yaml`` (vendored, see the header +#: comment in that file for the source commit). The default validation path reads only +#: this file; live refresh is an explicit opt-in that lands in the user cache dir. +REGISTRY_SNAPSHOT_PATH: Path = Path(__file__).parent / "data" / "infores_catalog.yaml" + +#: Prefix every registry identifier carries. Values without it are malformed output, +#: not merely unregistered. +INFORES_PREFIX: str = "infores:" + +#: Provenance fields scanned on edges. ``primary_knowledge_source`` is a list on emitted +#: edges but a scalar survives hand-built fixtures, so both are accepted. +_EDGE_INFORES_FIELDS: tuple[str, ...] = ("primary_knowledge_source", "sources") + + +def load_registry_snapshot(path: Path = REGISTRY_SNAPSHOT_PATH) -> frozenset[str]: + """Load the bundled registry snapshot into a set of ``infores:`` CURIEs. + + Args: + path: Path to an ``infores_catalog.yaml`` document; defaults to the bundled + snapshot shipped as package data. + + Returns: + Frozenset of registry identifiers (``infores:`` CURIEs). Stanza entries without + a CURIE-shaped ``id`` are ignored: the catalog legitimately carries non-resource + metadata sections alongside the stanzas. + + Raises: + TablassertError: With code ``infores-registry-unreadable`` when the file is + missing, unparsable, or carries no ``information_resources`` stanza list -- + a truncated or corrupt snapshot must fail loudly, never read as an empty + registry. + """ + try: + document: Any = yaml.safe_load(path.read_bytes()) + except (OSError, yaml.YAMLError) as error: + raise TablassertError(f"Cannot read the infores registry snapshot at {path}: {error}", code="infores-registry-unreadable") from error + stanzas: Any = document.get("information_resources") if isinstance(document, dict) else None + if not isinstance(stanzas, list): + raise TablassertError( + f"The infores registry snapshot at {path} carries no `information_resources` stanza list; it is truncated or corrupt.", + code="infores-registry-unreadable", + ) + identifiers: set[str] = { + str(stanza["id"]) for stanza in stanzas if isinstance(stanza, dict) and str(stanza.get("id") or "").startswith(INFORES_PREFIX) + } + if not identifiers: + raise TablassertError( + f"The infores registry snapshot at {path} parsed but contains zero infores: identifiers.", code="infores-registry-unreadable" + ) + return frozenset(identifiers) + + +def _as_list(value: Any) -> list[Any]: + """Coerce a KGX field value to a list: emitted fields are lists, fixtures may pass scalars.""" + if value is None: + return [] + return value if isinstance(value, list) else [value] + + +def _iter_file_records(path: Path) -> Iterator[dict[str, Any]]: + """Yield decoded NDJSON records from ``path``; blank lines are skipped silently.""" + with path.open(encoding="utf-8") as handle: + for line in handle: + if line.strip(): + record: Any = json.loads(line) + if isinstance(record, dict): + yield record + + +def _edge_observations(record: dict[str, Any]) -> Iterator[tuple[str, str]]: + """Yield ``(value, field)`` pairs for the provenance fields of one edge record.""" + for value in _as_list(record.get("primary_knowledge_source")): + yield str(value), "primary_knowledge_source" + for sources in _as_list(record.get("sources")): + if not isinstance(sources, dict): + continue + resource_id: Any = sources.get("resource_id") + if resource_id is not None: + yield str(resource_id), "sources.resource_id" + for upstream in _as_list(sources.get("upstream_resource_ids")): + yield str(upstream), "sources.upstream_resource_ids" + + +def _node_observations(record: dict[str, Any]) -> Iterator[tuple[str, str]]: + """Yield ``(value, field)`` pairs for the provenance fields of one node record.""" + for value in _as_list(record.get("provided_by")): + yield str(value), "provided_by" + + +def _rig_observations(document: Any) -> Iterator[tuple[str, str]]: + """Yield ``(value, path)`` pairs for every infores-shaped string in a RIG document. + + The walk is generic on purpose: the RIG schema grows (``source_info.infores_id``, + ``target_info`` edge-type ``primary_knowledge_sources``, ``supporting_data_source_info``), + and a field-by-field list would silently miss the next section. The typed subtrees + are the only places Tablassert writes infores values, so a value-shaped match there + is exact, not heuristic. + """ + if isinstance(document, dict): + for key, value in document.items(): + for child_value, child_path in _rig_observations(value): + yield child_value, f"{key}.{child_path}" if child_path else key + elif isinstance(document, list): + for index, item in enumerate(document): + for child_value, child_path in _rig_observations(item): + yield child_value, f"[{index}].{child_path}" if child_path else f"[{index}]" + elif isinstance(document, str) and document.startswith(INFORES_PREFIX): + yield document, "" + + +def _observations(nodes_path: Path, edges_path: Path, rig_path: Path | None) -> tuple[list[tuple[str, str, str]], dict[str, bool]]: + """Collect ``(value, where, field)`` triples plus per-input ``missing`` flags.""" + observations: list[tuple[str, str, str]] = [] + missing: dict[str, bool] = {} + for label, path, walk in (("nodes", nodes_path, _node_observations), ("edges", edges_path, _edge_observations)): + missing[label] = not path.is_file() + if missing[label]: + continue + for record in _iter_file_records(path): + for value, field in walk(record): + observations.append((value, label, field)) + if rig_path is not None: + missing["rig"] = not rig_path.is_file() + if not missing["rig"]: + loaded: Any = yaml.safe_load(rig_path.read_bytes()) + for value, field in _rig_observations(loaded): + observations.append((value, "rig", field)) + return observations, missing + + +def validate_infores( + nodes_path: Path, + edges_path: Path, + *, + rig_path: Path | None = None, + allow: tuple[str, ...] | list[str] = (), + registry: frozenset[str] | set[str] | None = None, + limit: int = 20, +) -> dict[str, Any]: + """Classify every emitted infores CURIE against the registry. + + Args: + nodes_path: Path to ``_.nodes.ndjson``. + edges_path: Path to ``_.edges.ndjson``. + rig_path: Optional RIG yaml; when given, its infores values are checked too. + allow: Locally-minted CURIEs accepted without registry membership (e.g. the + graph's own ``infores:`` id from ``rig.infores()``). + registry: Pre-loaded identifier set; defaults to the bundled snapshot. Tests + inject tiny fixtures here. + limit: Maximum number of example unregistered/malformed observations retained. + + Returns: + Mapping with ``registered`` / ``allowed`` / ``unregistered`` / ``malformed`` + counts, ``examples`` (``{"curie", "where", "field", "problem"}``), a ``missing`` + map of absent input files, ``registry`` provenance, and the verdicts ``ok`` + (no missing inputs, no malformed values) and ``ok_strict`` (``ok`` and zero + unregistered CURIEs). The default CLI posture is advisory; only ``ok_strict`` + may drive a non-zero exit, and only under an explicit flag. + """ + registry_ids: frozenset[str] = load_registry_snapshot() if registry is None else frozenset(registry) + observations, missing = _observations(nodes_path, edges_path, rig_path) + registered: set[str] = set() + allowed: set[str] = set() + unregistered: dict[str, tuple[str, str]] = {} + malformed: list[tuple[str, str, str]] = [] + examples: list[dict[str, str]] = [] + for value, where, field in observations: + if not value.startswith(INFORES_PREFIX): + malformed.append((value, where, field)) + continue + if value in registry_ids: + registered.add(value) + elif value in allow: + allowed.add(value) + else: + unregistered.setdefault(value, (where, field)) + for value in sorted(unregistered): + if len(examples) >= limit: + break + where, field = unregistered[value] + examples.append({"curie": value, "where": where, "field": field, "problem": "unregistered"}) + for value, where, field in malformed: + if len(examples) >= limit: + break + examples.append({"curie": value, "where": where, "field": field, "problem": "malformed"}) + return { + "registered": len(registered), + "allowed": len(allowed), + "unregistered": len(unregistered), + "malformed": len(malformed), + "examples": examples, + "missing": missing, + "registry": {"source": str(REGISTRY_SNAPSHOT_PATH), "entries": len(registry_ids)}, + "ok": not any(missing.values()) and not malformed, + "ok_strict": not any(missing.values()) and not malformed and not unregistered, + } diff --git a/tests/test_infores_registry.py b/tests/test_infores_registry.py new file mode 100644 index 00000000..c5308c9e --- /dev/null +++ b/tests/test_infores_registry.py @@ -0,0 +1,229 @@ +"""Tests for infores registry validation (loader, collection, classification). + +The registry check closes the gap where only the ``infores:`` prefix was validated, so +these tests protect three invariants: the bundled snapshot is real and parseable, the +collector reads every provenance field Tablassert emits, and classification never +mistakes a locally-minted (allowlisted) CURIE for an unregistered one. Everything runs +offline: the bundled snapshot is read in place, and synthetic tiny snapshots + NDJSON +fixtures exercise the error paths. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +import pytest +import yaml + +from tablassert.errors import TablassertError, error_code_of +from tablassert.infores_registry import INFORES_PREFIX, REGISTRY_SNAPSHOT_PATH, load_registry_snapshot, validate_infores + +REAL_REGISTERED = "infores:monarchinitiative" +REAL_REGISTERED_TWO = "infores:semmeddb" + + +def write_ndjson(path: Path, records: list[dict[str, Any]]) -> Path: + """Write one NDJSON fixture file; records emit exactly as the build does (json.dumps).""" + path.write_text("".join(json.dumps(record) + "\n" for record in records), encoding="utf-8") + return path + + +def tiny_registry(tmp_path: Path, stanzas: list[dict[str, Any]] | None = None, *, drop_list: bool = False) -> frozenset[str]: + """Build an injectable registry set from a synthetic catalog document.""" + if drop_list: + return load_registry_snapshot(_write_catalog(tmp_path, {"unrelated": []})) + return frozenset(stanza["id"] for stanza in (stanzas or default_stanzas()) if isinstance(stanza, dict) and stanza.get("id")) + + +def default_stanzas() -> list[dict[str, Any]]: + """Two synthetic resources mirroring the upstream stanza shape (explicit ``id`` field).""" + return [{"id": REAL_REGISTERED, "name": "Monarch Initiative"}, {"id": REAL_REGISTERED_TWO, "name": "SemMedDB"}] + + +def _write_catalog(tmp_path: Path, document: Any) -> Path: + path = tmp_path / "catalog.yaml" + path.write_text(yaml.safe_dump(document), encoding="utf-8") + return path + + +class TestSnapshotLoader: + def test_bundled_snapshot_is_real(self) -> None: + """The vendored snapshot must be present, parseable, and carry the catalog's scale. + + Guards against the snapshot file being dropped from package data or truncated in + transit: both would silently turn every build's CURIEs 'unregistered'. + """ + identifiers = load_registry_snapshot() + assert len(identifiers) >= 400 + assert REAL_REGISTERED in identifiers + assert REAL_REGISTERED_TWO in identifiers + + def test_missing_file_fails_loudly(self, tmp_path: Path) -> None: + """A missing snapshot must raise, never read as an empty registry (exit-clean bug).""" + with pytest.raises(TablassertError) as excinfo: + load_registry_snapshot(tmp_path / "absent.yaml") + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + + def test_non_dict_document_fails_loudly(self, tmp_path: Path) -> None: + """Yaml that parses to a non-mapping (e.g. a bare list) has no stanza list.""" + with pytest.raises(TablassertError) as excinfo: + load_registry_snapshot(_write_catalog(tmp_path, ["infores:a"])) + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + + def test_document_without_stanza_list_fails_loudly(self, tmp_path: Path) -> None: + """A dict without ``information_resources`` is truncated, not empty.""" + with pytest.raises(TablassertError) as excinfo: + tiny_registry(tmp_path, drop_list=True) + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + + def test_empty_stanza_list_fails_loudly(self, tmp_path: Path) -> None: + """An empty stanza list would classify every real CURIE unregistered: corrupt, not clean.""" + with pytest.raises(TablassertError) as excinfo: + load_registry_snapshot(_write_catalog(tmp_path, {"information_resources": []})) + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + + def test_stanzas_without_ids_are_ignored(self, tmp_path: Path) -> None: + """Non-resource stanzas (no ``id``) ride along in upstream docs; only ids count.""" + stanzas = [{"name": "metadata stanza"}, {"id": REAL_REGISTERED}] + assert tiny_registry(tmp_path, stanzas) == frozenset({REAL_REGISTERED}) + + +class TestClassification: + def test_edge_fields_classified(self, tmp_path: Path) -> None: + """Edges: registered pks + sources[].resource_id pass; unknown pks are unregistered.""" + edges = write_ndjson( + tmp_path / "e.ndjson", + [ + { + "id": "urn:1", + "primary_knowledge_source": [REAL_REGISTERED, "infores:totally-made-up"], + "sources": [{"resource_id": REAL_REGISTERED_TWO, "upstream_resource_ids": ["infores:also-made-up"]}], + } + ], + ) + nodes = write_ndjson(tmp_path / "n.ndjson", [{"id": "NCBIGene:1", "provided_by": [REAL_REGISTERED]}]) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED, REAL_REGISTERED_TWO})) + assert report["registered"] == 2 + assert report["unregistered"] == 2 + assert report["malformed"] == 0 + assert report["ok"] is True + assert report["ok_strict"] is False + assert {"curie": "infores:totally-made-up", "where": "edges", "field": "primary_knowledge_source", "problem": "unregistered"} in report[ + "examples" + ] + + def test_scalar_primary_knowledge_source_coerced(self, tmp_path: Path) -> None: + """Hand-built fixtures may carry a scalar where the build emits a list: still read.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": REAL_REGISTERED}]) + nodes = write_ndjson(tmp_path / "n.ndjson", [{"id": "x"}]) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED})) + assert report["registered"] == 1 + assert report["unregistered"] == 0 + + def test_non_infores_value_is_malformed(self, tmp_path: Path) -> None: + """A non-infores value in an upstream field is malformed output, not merely unregistered.""" + edges = write_ndjson( + tmp_path / "e.ndjson", [{"id": "urn:1", "sources": [{"resource_id": "citeseer", "upstream_resource_ids": ["PMID:123"]}]}] + ) + nodes = write_ndjson(tmp_path / "n.ndjson", [{"id": "x"}]) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED})) + assert report["malformed"] == 2 + assert report["ok"] is False + assert report["ok_strict"] is False + assert all(example["problem"] == "malformed" for example in report["examples"]) + + def test_allowlist_absolves_locally_minted(self, tmp_path: Path) -> None: + """Locally-minted graph CURIEs are allowed, counted separately, and never fail strict.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:my-local-kg"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", [{"id": "x"}]) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED}), allow=("infores:my-local-kg",)) + assert report["allowed"] == 1 + assert report["unregistered"] == 0 + assert report["ok_strict"] is True + + def test_rig_document_scanned(self, tmp_path: Path) -> None: + """The RIG's source_info.infores_id and target primary_knowledge_sources are checked.""" + rig = tmp_path / "rig.yaml" + rig.write_text( + yaml.safe_dump( + { + "source_info": {"infores_id": REAL_REGISTERED}, + "target_info": {"edge_type_info": [{"primary_knowledge_sources": ["infores:rig-only-made-up"]}]}, + } + ), + encoding="utf-8", + ) + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, rig_path=rig, registry=frozenset({REAL_REGISTERED})) + assert report["registered"] == 1 + assert report["unregistered"] == 1 + assert { + "curie": "infores:rig-only-made-up", + "where": "rig", + "field": "target_info.edge_type_info.[0].primary_knowledge_sources.[0]", + "problem": "unregistered", + } in report["examples"] + + def test_missing_files_flagged(self, tmp_path: Path) -> None: + """A typo'd filename must never read as a clean bill of health (validate-kgx contract).""" + report = validate_infores(tmp_path / "absent.ndjson", tmp_path / "also-absent.ndjson", registry=frozenset({REAL_REGISTERED})) + assert report["missing"] == {"nodes": True, "edges": True} + assert report["ok"] is False + assert report["ok_strict"] is False + + def test_empty_files_are_clean(self, tmp_path: Path) -> None: + """Zero records out of zero emitted CURIEs is a legitimate pass, unlike a missing file.""" + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED})) + assert report == {**report, "registered": 0, "unregistered": 0, "malformed": 0, "ok": True, "ok_strict": True} + + def test_duplicate_observations_counted_once(self, tmp_path: Path) -> None: + """The same CURIE on ten edges is one distinct unregistered CURIE, not ten failures.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": f"urn:{i}", "primary_knowledge_source": ["infores:made-up"]} for i in range(10)]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED})) + assert report["unregistered"] == 1 + + def test_examples_capped_at_limit(self, tmp_path: Path) -> None: + """The example list is capped so a pathological build cannot flood the report.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": f"urn:{i}", "primary_knowledge_source": [f"infores:made-up-{i}"]} for i in range(30)]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED}), limit=5) + assert len(report["examples"]) == 5 + assert report["unregistered"] == 30 + + def test_example_cap_prioritizes_unregistered(self, tmp_path: Path) -> None: + """Unregistered examples exhaust the cap first; malformed stays counted, not shown. + + Also pins the defensive skip: a non-dict ``sources`` entry is ignored rather than + crashing the walk (a malformed provenance shape must not take down validation). + """ + edges = write_ndjson( + tmp_path / "e.ndjson", + [ + {"id": "urn:1", "primary_knowledge_source": "infores:made-up", "sources": [{"resource_id": "not-a-curie"}]}, + {"id": "urn:2", "sources": "junk"}, + ], + ) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, registry=frozenset({REAL_REGISTERED}), limit=1) + assert [example["problem"] for example in report["examples"]] == ["unregistered"] + assert report["malformed"] == 1 + + def test_bundled_snapshot_default_registry(self, tmp_path: Path) -> None: + """Without an injected registry, the bundled snapshot is the authority end to end.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": [REAL_REGISTERED]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", [{"id": "x"}]) + report = validate_infores(nodes, edges) + assert report["registered"] == 1 + assert report["registry"]["entries"] >= 400 + assert report["registry"]["source"] == str(REGISTRY_SNAPSHOT_PATH) + + +def test_prefix_constant_matches_validator() -> None: + """The malformed boundary is exactly the ``infores:`` prefix shared with models.py.""" + assert INFORES_PREFIX == "infores:" From bf87ce3f8f41cbc4ffaba0b0eb29c66b3cd9f9ac Mon Sep 17 00:00:00 2001 From: SkyeAv Date: Wed, 7 Oct 2026 11:08:15 -0700 Subject: [PATCH 2/5] feat: [US-002] validate-infores CLI command with snapshot, refresh, and off registry modes --- CHANGELOG.md | 5 ++ docs/cli.md | 45 +++++++++- src/tablassert/cli.py | 79 +++++++++++++++++ src/tablassert/infores_registry.py | 63 ++++++++++++- tests/test_cli_validate_infores.py | 136 +++++++++++++++++++++++++++++ tests/test_docs_cli_coverage.py | 2 + 6 files changed, 325 insertions(+), 5 deletions(-) create mode 100644 tests/test_cli_validate_infores.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 43cc7eb4..44142ef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project are documented in this file. +## Unreleased + +### Added +- **`validate-infores` checks every emitted knowledge-source identifier against the Translator registry.** The new command classifies each `infores:` CURIE on the edges (`primary_knowledge_source`, `sources[].resource_id`, `sources[].upstream_resource_ids`), the nodes (`provided_by`), and optionally the RIG document against `biolink/information-resource-registry`'s `infores_catalog.yaml` -- the authoritative catalog translator-ingests' SOP points at but never checks programmatically. The registry ships as a bundled offline snapshot (vendored from upstream commit `a72dbc3b55d5`), `--registry refresh` fetches the live catalog through the bounded-retry network layer, and `--registry off` reports structure only. The default posture is advisory (exit 0 with warnings) because Tablassert legitimately mints graph-local CURIEs; repeatable `--allow-infores` exempts them and `--strict` makes unregistered CURIEs fail in CI. Values without the `infores:` prefix are malformed, not unregistered. This closes the validation gap that only the CURIE prefix was ever checked. + ## 19.6.0 - 2026-10-05 ### Added diff --git a/docs/cli.md b/docs/cli.md index a93b3c15..b3e9646a 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -2,8 +2,8 @@ Tablassert extracts knowledge assertions from tabular data into KGX NDJSON. The `tablassert` app requires the `[cli]` extra (`pip install "tablassert[cli]"` or `uv tool install "tablassert[cli]"`) and -exposes **eight subcommands**: `agent`, `build-fullmap`, `build-kg`, `distill-export`, `distill-weigh`, `quick-map`, `validate`, -and `validate-kgx`, plus an app-level `--version` flag. Run `tablassert --help` (or ` --help`) +exposes **nine subcommands**: `agent`, `build-fullmap`, `build-kg`, `distill-export`, `distill-weigh`, `quick-map`, `validate`, +`validate-infores`, and `validate-kgx`, plus an app-level `--version` flag. Run `tablassert --help` (or ` --help`) for the live surface. ## Command index @@ -17,6 +17,7 @@ for the live surface. | [`distill-weigh`](#distill-weigh) | Join distillation records to outcomes and prepare LoRA-SFT training rows (experimental) | | [`quick-map`](#quick-map) | Show what fullmap entity resolution does with one or more terms | | [`validate`](#validate) | Validate a graph or table configuration without executing it | +| [`validate-infores`](#validate-infores) | Validate emitted infores CURIEs against the Translator registry | | [`validate-kgx`](#validate-kgx) | Validate built KGX NDJSON against the Biolink Model | ## App flags @@ -468,6 +469,46 @@ once a model release drops the requirement. --- +## validate-infores + +Use this to prove the knowledge-source identifiers a build emits are real. `validate-kgx` checks +*structure* against the Biolink Model; `validate-infores` checks *identity*: every `infores:` CURIE +on your edges (`primary_knowledge_source`, `sources[].resource_id`, `sources[].upstream_resource_ids`), +nodes (`provided_by`), and, with `--rig`, the RIG document, is classified against the NCATS +Translator registry ([`biolink/information-resource-registry`](https://github.com/biolink/information-resource-registry)'s +`infores_catalog.yaml`). The registry ships as a bundled snapshot (`validate-infores` is offline by +default); `--registry refresh` fetches the live catalog instead. Values without the `infores:` +prefix are reported as malformed, not unregistered. + +```bash +tablassert validate-infores --nodes MY_KG_1.0.0.nodes.ndjson --edges MY_KG_1.0.0.edges.ndjson --rig MY_KG_1.0.0.RIG.yaml +``` + +```text +registry: .../infores_catalog.yaml (508 entries) +curies: 3 registered, 1 allowed, 1 unregistered, 0 malformed + e.g. infores:totally-made-up (edges.primary_knowledge_source): unregistered +infores warnings present; pass --strict to fail on them. +``` + +The default posture is advisory and exits 0: Tablassert legitimately mints graph-local CURIEs (the +graph's own `infores:` id from the `rig:` section's name) that will never sit in the registry. Allow +those with repeatable `--allow-infores`, and pass `--strict` in CI to exit non-zero while any +unregistered CURIE remains. A missing or misspelled path is reported as `file not found` and exits +non-zero in every mode: a file that was never read must never count as a pass. + +| Option | Type | Required | Default | Description | +| --- | --- | --- | --- | --- | +| `--nodes`, `-n` | Path | Yes | n/a | Built `*.nodes.ndjson` file to validate | +| `--edges`, `-e` | Path | Yes | n/a | Built `*.edges.ndjson` file to validate | +| `--rig` | Path | No | n/a | RIG yaml to include in the scan (its `source_info.infores_id` and target `primary_knowledge_sources` are checked) | +| `--allow-infores` | list[str] | No | n/a | Registry-exempt CURIE, repeatable; use for the locally-minted graph identifier and other deliberate locals | +| `--registry` | snapshot\\|refresh\\|off | No | `snapshot` | `snapshot` validates offline against the bundled copy; `refresh` fetches the live upstream catalog (network) and caches it under the user cache dir; `off` skips membership classification and reports structure only | +| `--strict` | Flag | No | `False` | Exit non-zero while any unregistered CURIE remains; without it the run is advisory | +| `--limit` | int | No | `20` | Maximum example unregistered/malformed CURIEs retained for the `e.g.` report lines | + +--- + ## Typical workflow 1. Author a table config, then a graph config that references it. diff --git a/src/tablassert/cli.py b/src/tablassert/cli.py index 24ab16c9..2809b9b3 100644 --- a/src/tablassert/cli.py +++ b/src/tablassert/cli.py @@ -1045,6 +1045,85 @@ def validate_kgx_command( print("KGX output is Biolink-compliant.", file=sys.stderr) +@APP.command(name="validate-infores") +def validate_infores_command( + nodes: Annotated[Path, cyclopts.Parameter(name=["--nodes", "-n"])], + edges: Annotated[Path, cyclopts.Parameter(name=["--edges", "-e"])], + rig: Annotated[Path | None, cyclopts.Parameter(name=["--rig"])] = None, + allow_infores: Annotated[list[str] | None, cyclopts.Parameter(name=["--allow-infores"], negative="", allow_leading_hyphen=False)] = None, + registry: Annotated[Literal["snapshot", "refresh", "off"], cyclopts.Parameter(name=["--registry"])] = "snapshot", + strict: Annotated[bool, cyclopts.Parameter(name=["--strict"])] = False, + limit: Annotated[int, cyclopts.Parameter(name=["--limit"])] = 20, +) -> None: + """Validate emitted infores CURIEs against the NCATS Translator registry. + + Every knowledge-source identifier the build emits -- edge ``primary_knowledge_source``, + ``sources[].resource_id`` and ``sources[].upstream_resource_ids``, node ``provided_by``, + and, with ``--rig``, the RIG document's infores values -- is classified against + ``biolink/information-resource-registry``'s ``infores_catalog.yaml`` (vendored as the + bundled snapshot, so the default path is offline). Values without the ``infores:`` + prefix are malformed, not unregistered. + + The default posture is advisory: unregistered CURIEs are reported and the command + exits 0, because Tablassert legitimately mints graph-local CURIEs that will never sit + in the registry. ``--strict`` (CI gates) exits 1 when any unregistered CURIE remains; + allowlist legitimate local ids with repeatable ``--allow-infores``. Missing input + files fail in every mode: a typo'd path must never read as a clean bill of health. + + Args: + nodes: Path to the built nodes NDJSON file (``_.nodes.ndjson``). + edges: Path to the built edges NDJSON file (``_.edges.ndjson``). + rig: Optional RIG yaml (``_.RIG.yaml``); its infores values are + classified too. + allow-infores: Registry-exempt CURIE, repeatable; use for the locally-minted + graph identifier (``rig.infores()``) and other deliberate locals. + registry: Registry source. ``snapshot`` (default) validates offline against the + bundled copy; ``refresh`` fetches the live upstream catalog (network) and + caches it under the user cache dir; ``off`` skips membership classification + and reports structure only. + strict: Exit non-zero when any unregistered CURIE remains. Without it the run + is advisory and always exits 0 once inputs exist. + limit: Maximum number of example unregistered/malformed CURIEs retained for the + ``e.g.`` report lines; every observation is still classified regardless. + """ + from tablassert.infores_registry import REGISTRY_RAW_URL, refresh_registry, validate_infores + + ids: frozenset[str] | None = None + if registry == "refresh": + ids = refresh_registry() + report: dict[str, Any] = validate_infores( + nodes, edges, rig_path=rig, allow=tuple(allow_infores or ()), registry=ids, check_registry=registry != "off", limit=limit + ) + if ids is not None: + report["registry"]["source"] = f"{REGISTRY_RAW_URL} (refreshed)" + for label, absent in report["missing"].items(): + if absent: + print(f"{label}: file not found", file=sys.stderr) + if any(report["missing"].values()): + print("infores validation failed: missing input files.", file=sys.stderr) + raise SystemExit(1) + print(f"registry: {report['registry']['source']} ({report['registry']['entries']} entries)", file=sys.stderr) + counts: str = ( + f"curies: {report['registered']} registered, {report['allowed']} allowed, " + f"{report['unregistered']} unregistered, {report['malformed']} malformed" + ) + print(counts, file=sys.stderr) + logger.info(f"validate-infores: {counts}") + for example in report["examples"][:3]: + print(f" e.g. {example['curie']} ({example['where']}.{example['field']}): {example['problem']}", file=sys.stderr) + clean: bool = not report["unregistered"] and not report["malformed"] + if strict: + if report["ok_strict"]: + print("All emitted infores CURIEs are registered." if clean else "infores validation passed (strict).", file=sys.stderr) + return + print("infores validation failed (strict): unregistered CURIEs remain.", file=sys.stderr) + raise SystemExit(1) + if not clean: + print("infores warnings present; pass --strict to fail on them.", file=sys.stderr) + return + print("All emitted infores CURIEs are registered.", file=sys.stderr) + + @APP.command(name="quick-map") def quick_map_command( # negative="" suppresses cyclopts' auto-generated --empty-terms help row: the reset diff --git a/src/tablassert/infores_registry.py b/src/tablassert/infores_registry.py index dd93ede0..d84dba67 100644 --- a/src/tablassert/infores_registry.py +++ b/src/tablassert/infores_registry.py @@ -23,12 +23,14 @@ from __future__ import annotations import json +import os from collections.abc import Iterator from pathlib import Path from typing import Any import yaml +from tablassert import net from tablassert.errors import TablassertError #: Bundled snapshot of the upstream ``infores_catalog.yaml`` (vendored, see the header @@ -36,6 +38,18 @@ #: this file; live refresh is an explicit opt-in that lands in the user cache dir. REGISTRY_SNAPSHOT_PATH: Path = Path(__file__).parent / "data" / "infores_catalog.yaml" +#: Upstream document the snapshot vendors and ``--registry refresh`` fetches. +REGISTRY_RAW_URL: str = "https://raw.githubusercontent.com/biolink/information-resource-registry/main/infores_catalog.yaml" + + +#: Cache location for ``--registry refresh`` (honors ``XDG_CACHE_HOME``). The cache is a +#: convenience artifact for inspection and offline re-reads; every refresh run refetches. +def registry_cache_path() -> Path: + """Return the user cache path the refreshed registry document is written to.""" + cache_root: str | None = os.environ.get("XDG_CACHE_HOME") + return (Path(cache_root) if cache_root else Path.home() / ".cache") / "tablassert" / "infores_catalog.yaml" + + #: Prefix every registry identifier carries. Values without it are malformed output, #: not merely unregistered. INFORES_PREFIX: str = "infores:" @@ -83,6 +97,43 @@ def load_registry_snapshot(path: Path = REGISTRY_SNAPSHOT_PATH) -> frozenset[str return frozenset(identifiers) +def refresh_registry(destination: Path | None = None) -> frozenset[str]: + """Fetch the live upstream registry and load it. + + The document is parsed BEFORE it is written, so a truncated or hostile body can never + poison the cache file; on success the cache is a plain copy of the upstream yaml, left + for inspection and offline re-reads. + + Args: + destination: Cache path; defaults to :func:`registry_cache_path`. + + Returns: + The live registry's identifier set, identical in shape to + :func:`load_registry_snapshot`. + + Raises: + NetworkTransientError: When every fetch attempt fails with a transient error. + TablassertError: With code ``infores-registry-unreadable`` when the fetched body + is not a parseable catalog document. + """ + cache: Path = destination if destination is not None else registry_cache_path() + text: str = net.http_get_text(REGISTRY_RAW_URL) + try: + document: Any = yaml.safe_load(text) + except yaml.YAMLError as error: + raise TablassertError( + f"Fetched infores registry from {REGISTRY_RAW_URL} is not valid yaml: {error}", code="infores-registry-unreadable" + ) from error + if not (isinstance(document, dict) and isinstance(document.get("information_resources"), list)): + raise TablassertError( + f"Fetched infores registry from {REGISTRY_RAW_URL} carries no `information_resources` stanza list; refusing to cache it.", + code="infores-registry-unreadable", + ) + cache.parent.mkdir(parents=True, exist_ok=True) + cache.write_text(text, encoding="utf-8") + return load_registry_snapshot(cache) + + def _as_list(value: Any) -> list[Any]: """Coerce a KGX field value to a list: emitted fields are lists, fixtures may pass scalars.""" if value is None: @@ -168,6 +219,7 @@ def validate_infores( rig_path: Path | None = None, allow: tuple[str, ...] | list[str] = (), registry: frozenset[str] | set[str] | None = None, + check_registry: bool = True, limit: int = 20, ) -> dict[str, Any]: """Classify every emitted infores CURIE against the registry. @@ -179,7 +231,10 @@ def validate_infores( allow: Locally-minted CURIEs accepted without registry membership (e.g. the graph's own ``infores:`` id from ``rig.infores()``). registry: Pre-loaded identifier set; defaults to the bundled snapshot. Tests - inject tiny fixtures here. + inject tiny fixtures here. Ignored when ``check_registry`` is False. + check_registry: False runs the structural pass only (the ``--registry off`` + mode): CURIEs are counted as malformed or not, but never registered vs + unregistered, so membership never influences any verdict. limit: Maximum number of example unregistered/malformed observations retained. Returns: @@ -190,7 +245,7 @@ def validate_infores( unregistered CURIEs). The default CLI posture is advisory; only ``ok_strict`` may drive a non-zero exit, and only under an explicit flag. """ - registry_ids: frozenset[str] = load_registry_snapshot() if registry is None else frozenset(registry) + registry_ids: frozenset[str] = (load_registry_snapshot() if registry is None else frozenset(registry)) if check_registry else frozenset() observations, missing = _observations(nodes_path, edges_path, rig_path) registered: set[str] = set() allowed: set[str] = set() @@ -201,6 +256,8 @@ def validate_infores( if not value.startswith(INFORES_PREFIX): malformed.append((value, where, field)) continue + if not check_registry: + continue if value in registry_ids: registered.add(value) elif value in allow: @@ -223,7 +280,7 @@ def validate_infores( "malformed": len(malformed), "examples": examples, "missing": missing, - "registry": {"source": str(REGISTRY_SNAPSHOT_PATH), "entries": len(registry_ids)}, + "registry": {"source": "off" if not check_registry else str(REGISTRY_SNAPSHOT_PATH), "entries": len(registry_ids)}, "ok": not any(missing.values()) and not malformed, "ok_strict": not any(missing.values()) and not malformed and not unregistered, } diff --git a/tests/test_cli_validate_infores.py b/tests/test_cli_validate_infores.py new file mode 100644 index 00000000..b7ff03c5 --- /dev/null +++ b/tests/test_cli_validate_infores.py @@ -0,0 +1,136 @@ +"""CLI-level tests for ``tablassert validate-infores``. + +The core classifier is covered in ``test_infores_registry.py``; these tests pin the +command's contract: advisory by default, strict only on the flag, missing inputs never +a pass in any mode, ``--registry off`` skips membership, and ``--registry refresh`` +fetches through the bounded-retry network layer and caches the document. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +import pytest +import yaml + +from tablassert import cli, infores_registry + +REGISTERED = "infores:monarchinitiative" + + +def write_ndjson(path: Path, records: list[dict[str, Any]]) -> Path: + """Write one NDJSON fixture file.""" + path.write_text("".join(json.dumps(record) + "\n" for record in records), encoding="utf-8") + return path + + +def run(cli_kwargs: dict[str, Any], capsys: pytest.CaptureFixture[str]) -> str: + """Invoke the command directly (the registered callback is the plain function).""" + cli.validate_infores_command(**cli_kwargs) + return capsys.readouterr().err + + +class TestValidateInforesCommand: + def test_advisory_default_exits_zero(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """Unregistered CURIEs warn and exit 0 without --strict: the advisory contract.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:made-up"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + out = run({"nodes": nodes, "edges": edges}, capsys) + assert "1 unregistered" in out + assert "pass --strict" in out + + def test_strict_fails_on_unregistered(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """--strict is the CI gate: unregistered CURIEs exit 1.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:made-up"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + with pytest.raises(SystemExit) as excinfo: + run({"nodes": nodes, "edges": edges, "strict": True}, capsys) + assert excinfo.value.code == 1 + + def test_strict_passes_registered(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """A fully registered graph reads as a clean bill under --strict.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": [REGISTERED]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + out = run({"nodes": nodes, "edges": edges, "strict": True}, capsys) + assert "All emitted infores CURIEs are registered." in out + + def test_allow_infores_absolves_locally_minted(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """The graph's own CURIE is exempt via --allow-infores and strict stays green.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:my-local-kg"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + out = run({"nodes": nodes, "edges": edges, "allow_infores": ["infores:my-local-kg"], "strict": True}, capsys) + assert "1 allowed" in out + assert "All emitted infores CURIEs are registered." in out + + def test_missing_input_fails_in_advisory_mode(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """A typo'd path exits 1 even without --strict: never a silent pass.""" + edges = write_ndjson(tmp_path / "e.ndjson", []) + with pytest.raises(SystemExit) as excinfo: + run({"nodes": tmp_path / "absent.ndjson", "edges": edges}, capsys) + assert excinfo.value.code == 1 + assert "file not found" in capsys.readouterr().err + + def test_malformed_fails_strict(self, tmp_path: Path) -> None: + """Non-infores values are defects too: --strict fails on them.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["PMID:123"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + with pytest.raises(SystemExit) as excinfo: + cli.validate_infores_command(nodes=nodes, edges=edges, strict=True) + assert excinfo.value.code == 1 + + def test_registry_off_skips_membership(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: + """--registry off reports structure only: membership never fails, even strict.""" + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:made-up"]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + out = run({"nodes": nodes, "edges": edges, "registry": "off", "strict": True}, capsys) + assert "0 entries" in out + assert "All emitted infores CURIEs are registered." in out + + def test_registry_refresh_fetches_and_caches(self, tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch) -> None: + """--registry refresh pulls the live catalog via the retry layer and caches the body.""" + catalog = yaml.safe_dump({"information_resources": [{"id": REGISTERED}]}) + monkeypatch.setattr(infores_registry.net, "http_get_text", lambda url, **kwargs: catalog) + monkeypatch.setattr(infores_registry, "registry_cache_path", lambda: tmp_path / "cache" / "infores_catalog.yaml") + edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": [REGISTERED]}]) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + out = run({"nodes": nodes, "edges": edges, "registry": "refresh", "strict": True}, capsys) + assert "(refreshed)" in out + assert (tmp_path / "cache" / "infores_catalog.yaml").read_text(encoding="utf-8") == catalog + + def test_registry_refresh_rejects_garbage_body(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + """A fetched body without the stanza list raises and never poisons the cache.""" + monkeypatch.setattr(infores_registry.net, "http_get_text", lambda url, **kwargs: yaml.safe_dump({"unrelated": []})) + monkeypatch.setattr(infores_registry, "registry_cache_path", lambda: tmp_path / "cache.yaml") + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + with pytest.raises(infores_registry.TablassertError) as excinfo: + cli.validate_infores_command(nodes=nodes, edges=edges, registry="refresh") + assert "information_resources" in str(excinfo.value) + assert not (tmp_path / "cache.yaml").exists() + + def test_rig_option_scanned(self, tmp_path: Path) -> None: + """--rig includes the RIG document's infores values in the classification.""" + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + rig = tmp_path / "rig.yaml" + rig.write_text(yaml.safe_dump({"source_info": {"infores_id": "infores:rig-made-up"}}), encoding="utf-8") + with pytest.raises(SystemExit) as excinfo: + cli.validate_infores_command(nodes=nodes, edges=edges, rig=rig, strict=True) + assert excinfo.value.code == 1 + + def test_help_renders_every_flag(self) -> None: + """The help page must self-describe: an agent picks flags from help alone.""" + import io + + from rich.console import Console + + buffer = io.StringIO() + cli.APP.help_print(["validate-infores"], console=Console(file=buffer, width=120, legacy_windows=False)) + help_text = " ".join(buffer.getvalue().replace("│", " ").split()) + for flag in ("--nodes", "--edges", "--rig", "--allow-infores", "--registry", "--strict", "--limit"): + assert flag in help_text, f"help missing {flag}" + assert "snapshot" in help_text + assert "refresh" in help_text + assert "off" in help_text diff --git a/tests/test_docs_cli_coverage.py b/tests/test_docs_cli_coverage.py index 2c2ef9cd..26af0189 100644 --- a/tests/test_docs_cli_coverage.py +++ b/tests/test_docs_cli_coverage.py @@ -29,6 +29,7 @@ "distill-weigh": ("cli.md",), "quick-map": ("cli.md", "fullmap.md"), "validate": ("cli.md",), + "validate-infores": ("cli.md",), "validate-kgx": ("cli.md",), } COMMAND_FLAG_DOCS: dict[str, tuple[str, ...]] = { @@ -39,6 +40,7 @@ "distill-weigh": ("cli.md",), "quick-map": ("cli.md", "fullmap.md"), "validate": ("cli.md",), + "validate-infores": ("cli.md",), "validate-kgx": ("cli.md",), } From 7fb4ca1bd3a8522d6981f4b3e761262d485fd2e0 Mon Sep 17 00:00:00 2001 From: SkyeAv Date: Wed, 7 Oct 2026 11:13:28 -0700 Subject: [PATCH 3/5] test: [US-003] RIG mirror and generator drift tests against vendored LinkML schema --- tests/_rig_linkml.py | 108 +++ .../resource_ingest_guide_schema.yaml | 703 ++++++++++++++++++ tests/test_rig_schema_drift.py | 178 +++++ 3 files changed, 989 insertions(+) create mode 100644 tests/_rig_linkml.py create mode 100644 tests/fixtures/resource_ingest_guide_schema.yaml create mode 100644 tests/test_rig_schema_drift.py diff --git a/tests/_rig_linkml.py b/tests/_rig_linkml.py new file mode 100644 index 00000000..004c28c1 --- /dev/null +++ b/tests/_rig_linkml.py @@ -0,0 +1,108 @@ +"""Minimal LinkML-subset validator for RIG documents (TEST-ONLY helper). + +Validates a decoded RIG document against the vendored +``resource_ingest_guide_schema.yaml`` WITHOUT the ``linkml`` package (not installed, +and too heavy to add for a test). The subset enforces exactly the features the schema +uses, verified against the vendored copy: + +* class-level ``attributes`` (the schema declares no global ``slots``), +* ``required`` slots, +* closed world: keys outside the class's ``attributes`` are errors, +* ``range`` resolution to scalar types (``string`` / ``uriorcurie`` / ``boolean`` / + ``integer``), enums (``permissible_values`` membership), and nested classes, +* ``multivalued`` list handling. + +HONEST LIMITATIONS (documented so the subset is never mistaken for full LinkML): +``pattern`` regexes are NOT enforced; ``equals_string``/``any_of``/``union_of``/ +``is_a`` inheritance and ``designates_type`` are absent from this schema and therefore +unmodeled; ``exact_mappings`` annotations are ignored. If upstream adopts an unmodeled +feature, the staleness test (which refetches the schema) still passes -- feature-growth +drift is caught by review of that diff, not mechanically here. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any + +import yaml + +#: Scalar ranges the schema actually uses (verified against the vendored copy). +_SCALAR_RANGES: frozenset[str] = frozenset({"string", "uriorcurie", "boolean", "integer"}) + + +@dataclass(frozen=True) +class LinkMLSubsetError(Exception): + """One schema violation, named by class, slot path, and reason.""" + + path: str + reason: str + + def __str__(self) -> str: + return f"{self.path}: {self.reason}" + + +def load_schema(path: Any) -> dict[str, Any]: + """Load the vendored LinkML schema document.""" + return yaml.safe_load(path.read_bytes() if hasattr(path, "read_bytes") else open(path, "rb").read()) + + +def validate_document(document: Any, schema: dict[str, Any], class_name: str = "ReferenceIngestGuide") -> list[LinkMLSubsetError]: + """Validate ``document`` as ``class_name``; return every violation (empty = conformant).""" + errors: list[LinkMLSubsetError] = [] + _validate_node(document, schema, class_name, class_name, errors) + return errors + + +def _validate_node(node: Any, schema: dict[str, Any], class_name: str, path: str, errors: list[LinkMLSubsetError]) -> None: + """Recursive half of :func:`validate_document`; appends violations to ``errors``.""" + attributes: dict[str, Any] = schema["classes"][class_name].get("attributes", {}) or {} + if not isinstance(node, dict): + errors.append(LinkMLSubsetError(path, f"expected a mapping for class {class_name}, got {type(node).__name__}")) + return + for key in node: + if key not in attributes: + errors.append(LinkMLSubsetError(f"{path}.{key}", "unknown slot for class " + class_name)) + for key, attribute in attributes.items(): + if attribute.get("required") and key not in node: + errors.append(LinkMLSubsetError(f"{path}.{key}", "required slot missing")) + for key, value in node.items(): + if key in attributes: + _check_range(value, attributes[key], schema, f"{path}.{key}", errors) + + +def _check_range(value: Any, attribute: dict[str, Any], schema: dict[str, Any], path: str, errors: list[LinkMLSubsetError]) -> None: + """Check one slot's value against its ``range`` (recursing into classes).""" + rng: str = attribute.get("range", "string") + if attribute.get("multivalued"): + if not isinstance(value, list): + errors.append(LinkMLSubsetError(path, f"multivalued slot must be a list, got {type(value).__name__}")) + return + for index, item in enumerate(value): + _check_scalar_or_class(item, rng, schema, f"{path}[{index}]", errors) + return + _check_scalar_or_class(value, rng, schema, path, errors) + + +def _check_scalar_or_class(value: Any, rng: str, schema: dict[str, Any], path: str, errors: list[LinkMLSubsetError]) -> None: + """Dispatch one value against a scalar type, an enum, or a nested class range.""" + if rng in _SCALAR_RANGES: + if rng == "boolean" and not isinstance(value, bool): + errors.append(LinkMLSubsetError(path, f"expected boolean, got {type(value).__name__}")) + elif rng == "integer" and (not isinstance(value, int) or isinstance(value, bool)): + errors.append(LinkMLSubsetError(path, f"expected integer, got {type(value).__name__}")) + elif rng in ("string", "uriorcurie") and not isinstance(value, str): + # Type-only: the schema declares no patterns or min_length, so empty + # strings are legal (the generator emits '' for field lists on empty + # artifacts). Tightening here would misreport conformance. + errors.append(LinkMLSubsetError(path, f"expected {rng}, got {type(value).__name__}")) + return + if rng in schema.get("enums", {}): + permissible: dict[str, Any] = schema["enums"][rng].get("permissible_values", {}) or {} + if value not in permissible: + errors.append(LinkMLSubsetError(path, f"{value!r} is not a {rng} permissible value")) + return + if rng in schema.get("classes", {}): + _validate_node(value, schema, rng, path, errors) + return + errors.append(LinkMLSubsetError(path, f"range {rng!r} is neither a scalar, enum, nor class in this schema")) diff --git a/tests/fixtures/resource_ingest_guide_schema.yaml b/tests/fixtures/resource_ingest_guide_schema.yaml new file mode 100644 index 00000000..abe8ddbd --- /dev/null +++ b/tests/fixtures/resource_ingest_guide_schema.yaml @@ -0,0 +1,703 @@ +# Vendored from https://raw.githubusercontent.com/biolink/resource-ingest-guide-schema/f870823cfde8/src/resource_ingest_guide_schema/schema/resource_ingest_guide_schema.yaml +# Upstream commit: f870823cfde8 (2026-07-09T15:22:11Z). Vendored 2026-10-07. +# Refresh: the network-marked staleness test in tests/test_rig_schema_drift.py refetches and compares. +--- +id: https://w3id.org/biolink/resource-ingest-guide-schema +name: reference_ingest_guide +title: Reference Ingest Guide Schema +description: >- + A schema for describing the scope, rationale, and modeling approach for ingesting content from an external resource to + a data repository compliant with the Biolink Model. +license: MIT +prefixes: + linkml: https://w3id.org/linkml/ + biolink: https://w3id.org/biolink/vocab/ +default_prefix: biolink +default_range: string +see_also: + - https://biolink.github.io/resource-ingest-guide-schema + +imports: + - linkml:types + +classes: + ReferenceIngestGuide: + description: >- + A container that holds attributes for the discrete sections of information comprising + a Resource Ingest Guide. + attributes: + name: + description: A human readable name for the RIG. + range: string + supporting_data_source_info: + description: >- + Information about upstream sources of data that are used by an ingested source, to derive the knowledge that we ingest. + comments: >- + This slot is optional, and can be omitted for typical ingest of an external knowledge source - as it is mainly relevant for describing "ingest" of + data-derived KPs like ICEES, COHD, various Multiomics KPs, etc. + range: SupportingDataSourceInformation + multivalued: true + source_info: + description: >- + Information about the source from which content is ingested. + range: SourceInformation + required: true + ingest_info: + description: >- + Information about the rationale and scope of an ingest, including what source + content was included and excluded from the ingest, and what additional content + might be considered in future iterations. + range: IngestInformation + required: true + target_info: + description: >- + Information about the dataset / knowledge graph output by the ingest, + including what types of edges and nodes were produced, modeling rationale, + and what modeling changes might be considered in future iterations. + range: TargetInformation + required: true + provenance_info: + description: >- + Information about the provenance of the ingest, including who contributed and how, + and links to external provenance-related artifacts (e.g. Github tickets, ingest + surveys, etc.) + range: ProvenanceInformation + + SupportingDataSourceInformation: + description: >- + A container for information about upstream sources of data that are used by an ingested source, to derive the knowledge that we ingest. + This info is not relevant for typical ingest of an external knowledge source, and applies mainly for describing "ingest" of data-derived + KPs like ICEES, COHD, various Multiomics KPs, etc. + attributes: + infores_id: + description: >- + The infores identifier of the source from which content is being ingested, + e.g. "infores:ctd". + range: uriorcurie + required: true + name: + description: >- + A human-readable name for the source of supporting data, e.g. "Aggregate Analysis of ClinicalTrial.gov (AACT)" + range: string + description: + description: >- + A brief description of the source, including its purpose, scope, and any relevant background information. + range: string + terms_of_use_info: + description: >- + Information about conditions for use of the ingested source. May include the + name of a community license (e.g. `CC-BY 4.0`), a link to a "terms of use" + or license information web page (e.g. `https://ctdbase.org/about/legal.jsp`), and/or + a free-text summary of key terms of use. + range: TermsOfUseInformation + required: true + relevant_files: + description: >- + A description of each source file (or API endpoint, database, or table) that contains + data used to create the ingested knowledge. Source files that contain data not used to created + knowledge need not be listed or described. + range: RelevantFiles + multivalued: true + required: true + + SourceInformation: + description: A container for capturing information about the source of the ingest. + attributes: + infores_id: + description: >- + The infores identifier of the source from which content is being ingested, + e.g. "infores:ctd". + range: uriorcurie + required: true + name: + description: A human readable name for the source + range: string + description: + description: >- + A brief description of the source, including its purpose, scope, and any + relevant background information. + range: string + citations: + description: >- + One ore more citations to publications describing the source. May be a identifier + (e.g a pmid or doi), a url to the published document, or a free-text citation. + range: string + multivalued: true + terms_of_use_info: + description: >- + Information about conditions for use of the ingested source. May include the + name of a community license (e.g. `CC-BY 4.0`), a link to a "terms of use" + or license information web page (e.g. `https://ctdbase.org/about/legal.jsp`), and/or + a free-text summary of key terms of use. + range: TermsOfUseInformation + required: true + data_access_locations: + description: >- + Where the source data that is being ingested can be accessed. Provide one or more URLs, + along with optional descriptions of what each URL provides. + range: string + multivalued: true + required: true + data_provision_mechanisms: + description: >- + How the source distributes their data (file download, API endpoints, database dump). + range: ProvisionMechanismEnum + multivalued: true + data_formats: + description: >- + The format(s) in which the data is serialized for retrieval and use. + range: DataFormatEnum + multivalued: true + data_versioning_and_releases: + description: >- + A description of how releases are versioned and managed by the source (e.g. general + approach, frequency, other important considerations). May also include links to web pages + describing such information. + range: string + multivalued: false + source_status: + description: >- + A term indicating the development status of the data provided by resource. + range: SourceStatusEnum + additional_notes: + description: >- + Additional notes, considerations, or resources relevant to the source, that were not + otherwise captured in dedicated attributes. + range: string + multivalued: true + + TermsOfUseInformation: + description: >- + A structured representation describing terms for re-use of data from an information resource. + attributes: + terms_of_use_url: + description: >- + The url of a document or web page where a source describes its terms of use, and/or + references a community license that it adopts. (e.g. "https://ctdbase.org/about/legal.jsp") + range: uriorcurie + terms_of_use_description: + description: >- + A free text description of the terms of use for a source. + (e.g. "Source only indicates 'all rights reserved' in their documentation") + range: string + license_name: + description: >- + The name of an established license used by the source (e.g. "CC BY 4.0") + range: string + license_url: + description: >- + The url of an established license (e.g. "https://creativecommons.org/licenses/by/4.0/") + range: uriorcurie + + IngestInformation: + description: >- + A container for capturing information about the rationale and scope of an ingest, + including what source content was included and excluded from the ingest, and what + additional content might be considered in future iterations. + attributes: + ingest_categories: + description: >- + A term or terms indicating the type of source being ingested, from the perspective + of the ingesting system (e.g. primary knowledge provider, supporting data provider, + ontology/terminology provider). + range: IngestCategoryEnum + multivalued: true + utility: + description: >- + Brief description of why the source was ingested, and the utility of the data + it provides for target system use cases. + range: string + required: true + scope: + description: >- + A short, high-level narrative describing of the types of knowledge form the source that + are included and excluded in this ingest. + range: string + relevant_files: + description: >- + A description of each source file (or API endpoint, database, or table) that contains + content in scope for the ingest. Source files containing content which is not retrieved + in this ingest need not be listed or described. + range: RelevantFiles + multivalued: true + required: true + included_content: + description: >- + A description of what types of records from relevant files/endpoints/tables above are + included in this ingest, and optionally a list of fields from these records that are part + of the ingest or used to inform it. + range: IncludedContent + multivalued: true + filtered_content: + description: >- + A description of what types of records from each relevant file are not included in the + ingest, and the rationale for any filtering rules or exclusion criteria. Only list a file + if some but not all records it contains are included in the ingest - to document what subset + was excluded, and why. + range: FilteredContent + multivalued: true + future_considerations: + description: >- + Notes about content additions or changes to consider in future iterations of this ingest. + Separately consider content that will be represented as Edges vs Node Properties vs Edge + Properties in the target knowledge graph. + range: FutureContentConsiderations + multivalued: true + additional_notes: + description: >- + Additional notes, considerations or resources relevant to source content ingest, that were not + otherwise captured in dedicated attributes. + range: string + multivalued: true + + RelevantFiles: + description: >- + A structure for describing each source file (or API endpoint, database, or table) that contains + content in scope for the ingest. Source files containing which content is not retrieved + in this ingest need not be listed or described. + attributes: + file_name: + description: The name of the relevant file (or endpoint, or table). + range: string + required: true + location: + description: The URL of a web page or ftp site where the indicated file (or endpoint or table) was accessed. + range: uriorcurie + required: true + description: + description: An optional brief description of the content and/or utility of the file (or endpoint or table) + range: string + + IncludedContent: + description: >- + A structure for describing the types of records from relevant files/endpoints/tables are + included in this ingest, and optionally a list of fields from these records that are part + of the ingest or used to inform it. + attributes: + file_name: + description: The name of the relevant file (or endpoint, or table) from which content is included. + range: string + required: true + included_records: + description: A description of the types of records that are included in the ingest. + range: string + required: true + fields_used: + description: Optional list of the specific source fields that are part of or inform the ingest. + range: string + + FilteredContent: + description: >- + A structure for describing the types of records from each relevant file/endpoint/table not included + in the ingest, and the rationale for any filtering rules or exclusion criteria. Only list a file + if some but not all records it contains are included in the ingest - to document what subset was excluded, + and why. + attributes: + file_name: + description: The name of the relevant file (or endpoint, or table) form which content was filtered. + range: string + required: true + filtered_records: + description: A description of what types of records were excluded from the ingest, in terms of filtering + rules or exclusion criteria. + range: string + required: true + rationale: + description: The rationale for excluding the indicated content (why this subset of records was filtered out). + range: string + required: true + + FutureContentConsiderations: + description: >- + A structure for collecting notes about content additions or changes to consider in future iterations + of this ingest. Create separate objects for each distinct consideration, and indicate if it relates to + content that will be captured as Edges, Node Properties, or Edge Properties in the target knowledge graph. + attributes: + category: + description: >- + The category of content described by a given consideration, based on how the content + will be represented in the target graph (e.g. "Edges", 'Node Properties", + "Edge Properties"). + range: ContentCategoryEnum + required: true + consideration: + description: A description of what additional content should be considered and why. + range: string + required: true + relevant_files: + description: A list of the relevant source file or files that provide the considered content. + range: string + + TargetInformation: + description: >- + A structure for capturing information about the target dataset / knowledge graph + output by the ingest, including what types of edges and nodes were produced, + modeling rationale, and what modeling changes might be considered in future iterations. + attributes: + infores_id: + description: >- + An infores identifier assigned to the target resource that will be created from the + ingested content. e.g. "infores:translator-ctd". + range: uriorcurie + edge_type_info: + description: >- + A description of each type of edge (metaedge) created in the target knowledge graph by this ingest, + including what types of edge properties it holds, and a brief explanation of why this modeling pattern + was deemed appropriate to represent the source data (to be displayed for end users in a UI system). + range: EdgeType + required: true + multivalued: true + node_type_info: + description: >- + A description of each type of node created in the target knowledge graph by this ingest, in terms of + the high-level Biolink categories of nodes as assumed or assigned by ingestors. + Note however that downstream normalization of node identifiers may result in new/different categories + ultimately being assigned in the final graph. + range: NodeType + required: true + multivalued: true + future_considerations: + description: >- + Notes about mapping/modeling changes to consider in future iterations of this ingest. + range: FutureModelingConsiderations + multivalued: true + additional_notes: + description: + Additional notes, considerations or resources relevant to mapping or modeling source data + to the target model, that were not otherwise captured in dedicated attributes. + range: string + multivalued: true + + EdgeType: + description: >- + A structure for describing each type of edge (metaedge) created in the target knowledge graph by this ingest, + including what types of edge properties it holds, and a brief explanation of why this modeling pattern + was deemed appropriate to represent the source data (for display to end users in a UI system). Note that an edge type + with multiple subject_category and object_category values does not mean that the full cross-product must be instantiated + in the data. e.g. A KG with the edge type sub_cat: [Gene, Protein, Small Molecule], predicate: affects, obj_cat: [disease, + phenotype, symptom] might include Protein-affects-Disease and Gene-affects-Symptom edges, but not include any + Protein-affects-Symptom edges. + attributes: + subject_categories: + description: >- + The Biolink category of the subject node of this edge type. e.g. "biolink:SmallMolecule". + If two edge types differ only in their subject category, but use the same predicate, object_category, + edge properties, and general provenance, they can be described together in a single NodeType object + that captures the alternative subject categories. e.g. if a source provides SmallMolecule-treats-Disease and + MolecularMixture-treats-Disease edge types, these can be described in a single EdgeType object with two + subject categories (SmallMolecule and MolecularMixture). + range: uriorcurie + multivalued: true + required: true + predicates: + description: >- + Biolink predicate(s) that defines this type of edge. Multiple values allowed ONLY if they are a predicate + and one or more of its descendent predicates (e.g. ["biolink:affects", "biolink:regulates", "biolink:disrupts"]. Otherwise, + separate EdgeType objects should be created for each predicate. + range: uriorcurie + multivalued: true + required: true + object_categories: + description: >- + The Biolink category of the object node of this edge type. e.g. "biolink:Disease". + If two edge types differ only in their object category, but use the same predicate, subject_category, + edge properties, and general provenance, they can be described together in a single NodeType object + that captures the alternative object categories. e.g. if a source provides Gene-associated_with-Disease and + Gene-associated_with-PhenotypicFeature edge types, these can be described in a single EdgeType object with two + subject categories (Disease and PhenotypicFeature) + range: uriorcurie + required: true + multivalued: true + qualifiers: + description: >- + If relevant, report any qualifiers applied to the edge type, as a Qualifier object that contains a + qualifier_property and qualifier_range pair. e.g. the property "biolink:subject_aspect_qualifier", + and range "biolink:GeneOrGeneProductOrChemicalEntityAspectEnum + range: Qualifier + multivalued: true + knowledge_level: + description: >- + The knowledge level (or levels) relevant to this type of edge. Multivalued only if instances of this type of edge + can have different knowledge levels in the data. + range: KnowledgeLevelEnum + multivalued: true + required: true + agent_type: + description: >- + The agent type (or types) relevant to this type of edge. Multivalued only if instances of this type of edge + can have different agent types in the data. + range: AgentTypeEnum + multivalued: true + required: true + primary_knowledge_sources: + description: >- + The infores id(s) of the 'primary knowledge sources' for this type of edge. Note that only one primary knowledge source + is allowed per edge, but there may be more than one possible value here across edges for a given type (e.g. see the + infores:diseases RIG/data) + range: uriorcurie + multivalued: true + required: true + supporting_data_sources: + description: >- + The infores id(s) of any 'supporting data sources' for this type of edge. + range: uriorcurie + multivalued: true + aggregator_knowledge_sources: + description: >- + The infores id(s) of any 'aggregator_knowledge sources' for this type of edge. + range: uriorcurie + multivalued: true + edge_properties: + description: A list of one or more Biolink edge properties used in instances of this edge type in the data. + range: uriorcurie + multivalued: true + ui_explanation: + description: >- + An explanation of how the source data for an edge of a particular type was generated (as rationale for why + the knowledge level, agent type, and knowledge source choices for this edge type were made), along with an explanation + for how/why the source data record for a particular edge was transformed into a its current Biolink edge-based representation. + Note that this text will be displayed in the UI to explain the provenance of a specific edge, and should be framed accordingly. + range: string + required: true + source_files: + description: >- + The source file or files that provided data included in or informing edges of this type. Will usually be a single file. Multivalued + because some edges are based on data that come form more than one file. If the data is ingested from a database instance or API endpoint, + provide analogous information here (e.g. the name of an specific API endpoint, a database access url, or a set of tables in a database schema). + range: string + multivalued: true + additional_notes: + description: >- + Additional notes, considerations, or explanations of modeling patterns used for this edge type, that were + not otherwise captured in dedicated fields. + range: string + multivalued: true + + Qualifier: + description: >- + A qualifier property + value tuple that specifies a type of qualifier and value that may be applied to a Statement. + Qualified predicates are considered qualifiers and captured here as well. Values can be specified to come from a + proper range (e.g. Biolink class, data type, or enum), come from an enumerated list, use a specific id prefix, + and/or conform informally to a free-text description. + attributes: + property: + description: >- + The Biolink qualifier slot that defines the kind of Qualifier specified, + e.g. "biolink:subject_aspect_qualifier", "qualified_predicate". + range: uriorcurie + required: true + value_range: + description: >- + The Biolink class(es) or type(s) that specifies the kind of value the qualifier property takes, + Reported as the name of a Biolink class, enumeration, or data type, as appropriate. + e.g. "biolink:Disease", "biolink:GeneOrGeneProductOrChemicalEntityAspectEnum", "biolink:string" + range: uriorcurie + multivalued: true + value_enumeration: + description: >- + A set of one or more specific values for the qualifier in an Edge type (e.g. ["biolink:causes"] as the only + value for the "biolink:qualified_predicate" qualifier property, ["activity_or_abundance", "activity", "abundance"] + as the values for the "biolink:object_aspect_qualifier" property). + range: string + multivalued: true + value_id_prefixes: + description: >- + One or more id prefixes from which the qualifier value must come. e.g. "HP" if the qualifier must be a + Human Phenotype Ontology term. + range: string + multivalued: true + value_description: + description: >- + A free text description of the types of value allowed for the qualifier. + range: string + NodeType: + description: >- + A structured object describing each type of node created in the target knowledge graph by this ingest. + attributes: + node_category: + description: >- + The high-level Biolink category of nodes as assumed or assigned by ingestors. e.g. "biolink:Gene". + Note that downstream normalization of node identifiers may result in new/different categories + ultimately being assigned in the final graph. + range: uriorcurie + required: true + source_identifier_types: + description: >- + The type of identifier(s) used for this category of entity by the source system. Report as a prefix + for an identifier system where appropriate/possible (preferably a prefix as cataloged in the Biolink + prefix map here: https://github.com/biolink/biolink-model/blob/master/project/prefixmap/biolink-model-prefix-map.json). + e.g. "MESH", "CTD", "ECTO". If prefix for a public system/database is not in the prefix map, you may make a PR to add it. + If the identifiers used are bespoke, or no identifiers are used, the value can be a free text description. + e.g. "The source uses entity names but does not assign identifiers". + range: string + multivalued: true + required: true + node_properties: + description: A list of one or more Biolink node properties used in instances of this node type in the data. + range: uriorcurie + multivalued: true + additional_notes: + description: >- + Additional notes, considerations, or explanations concerning this node type, that were not otherwise + captured in dedicated attributes. + range: string + multivalued: true + + FutureModelingConsiderations: + description: >- + A structure for collecting discrete considerations about modeling changes to consider in future iterations + of this ingest. Create and categorize separate objects for each distinct consideration. + attributes: + category: + description: >- + An optional general category for the modeling consideration (e.g. "spoq_pattern", "edge_properties") + range: ModelingCategoryEnum + consideration: + description: A description of the modeling changes to consider, and why. + range: string + required: true + + ProvenanceInformation: + description: >- + A container holding information about the provenance of the ingest, including who + contributed and how, and links to external provenance artifacts. + attributes: + contributions: + description: >- + The name of a person making a contribution, and the type of contribution made. + e.g. "code author", "code support", "data modeling", "domain expertise". + multivalued: true + range: string + artifacts: + description: >- + Links to and descriptions of external artifacts related to the provenance of the ingest, such as + Github issues, surveys of prior ingests of the source, etc. + multivalued: true + range: string + +enums: + ProvisionMechanismEnum: + description: Ways in which data can be made accessible for retrieval. + permissible_values: + file_download: + api_endpoint: + database_dump: + other: + + SourceStatusEnum: + description: >- + A term indicating the development status of a resource. + permissible_values: + maintained_regular_updates: + description: the resource's data is being actively maintained and updated on a regular or recurring schedule + maintained_as_needed_updates: + description: the resource's data is not being actively maintained and updated on a regular or recurring schedule + not_maintained: + description: the resource's data is not being actively maintained, and not subject to updates. + unknown: + description: status of the source w.r.t. its maintenance and updates is not able to be determined. + + DataFormatEnum: + description: Formats in which data is serialized. + permissible_values: + tsv: + xml: + csv: + json: + yaml: + obo: + protobuff: + kgx: + mysql: + postgresql: + sqlite: + other: + + ContentCategoryEnum: + description: Categories of content for future considerations + permissible_values: + edge_content: + node_property_content: + edge_property_content: + other: + + KnowledgeLevelEnum: + exact_mappings: + - biolink:KnowledgeLevelEnum + description: Knowledge levels relevant to edges of a particular type. + permissible_values: + knowledge_assertion: + logical_entailment: + prediction: + statistical_association: + observation: + not_provided: + varies: + + AgentTypeEnum: + exact_mappings: + - biolink:AgentTypeEnum + description: Agent types relevant to edges of a particular type. + permissible_values: + manual_agent: + automated_agent: + computational_model: + data_analysis_pipeline: + text_mining_agent: + image_processing_agent: + manual_validation_of_automated_agent: + experimental_agent: + not_provided: + varies: + + + ModelingCategoryEnum: + description: >- + Categories of future modeling considerations (what type of modeling the + consideration is about). + permissible_values: + spoq_pattern: + predicates: + qualifiers: + edge_properties: + node_properties: + other: + + IngestCategoryEnum: + description: >- + The type of source being ingested, from the perspective of the ingesting system. + permissible_values: + primary_knowledge_provider: + description: >- + Provides knowledge that is curated/created/mined by the source (e.g. via + literature curation/interpretation, analysis of datasets, inference over evidence) + aggregation_provider: + description: >- + Aggregates knowledge from external sources and provides as is - with + minimal alteration/interpretation of what the primary source reported. + (e.g. Monarch, Diseases, Pharos) + aggregation_interpreter: + description: >- + Aggregates knowledge and assesses/interprets it as evidence to draw and report its + own conclusion (e.g. DGIdb, DisGenNet) + supporting_data_provider: + description: >- + Provides information (data or prior facts) that is subsequently analyzed/ interpreted + by a Translator tool to derive new knowledge (e.g. TCGA, GTex, Carolina Data Warehouse) + translator_knowledge_creator: + description: >- + A Translator tool that generates de novo knowledge from statistical + analysis, interpretation, or reasoning with more foundational data/ or facts + (e.g. ICEES, COHD, Multiomics Wellness, BigGIM) + ontology_provider: + description: >- + An ontology or terminology artifact providing concept identifiers, + definitions, mappings, hierarchical relationships that are ingested into Translator KGs + node_property_only_provider: + description: >- + Provides only information that is used to annotate nodes of a particular kind in + Translator graphs. + other: + description: >- + Used when the information provided by a source is not known, or does not fit into + the defined categories above diff --git a/tests/test_rig_schema_drift.py b/tests/test_rig_schema_drift.py new file mode 100644 index 00000000..43952016 --- /dev/null +++ b/tests/test_rig_schema_drift.py @@ -0,0 +1,178 @@ +"""RIG drift tests: the Pydantic mirror and the generator vs the canonical LinkML schema. + +Tablassert mirrors ``biolink/resource-ingest-guide-schema`` (class ``ReferenceIngestGuide``) +in hand-written Pydantic classes (``models.RIG*``) and composes the final document in +``rig.build_rig_document``. Nothing validated that mirror against the released schema, so +upstream slot renames or additions drifted silently until a downstream +``linkml-validate`` failure. These tests pin three layers: field-set lockstep (Test A), +generated-document conformance (Test B), and vendored-copy staleness (Test C). + +The schema is vendored at ``tests/fixtures/resource_ingest_guide_schema.yaml``; the +validator is the dependency-free LinkML subset in ``tests/_rig_linkml.py``. +""" + +from __future__ import annotations + +from collections.abc import Callable +from pathlib import Path +from typing import Any + +import pytest +import yaml + +from tablassert.models import RIGConfig +from tablassert.rig import build_rig_document +from tests._rig_linkml import load_schema, validate_document + +SCHEMA_PATH: Path = Path(__file__).parent / "fixtures" / "resource_ingest_guide_schema.yaml" + +#: Mirror class -> schema class, for the FULL mirrors whose field sets must be equal. +FULL_MIRRORS: tuple[tuple[str, str], ...] = ( + ("RIGSourceInfo", "SourceInformation"), + ("RIGTermsOfUseInfo", "TermsOfUseInformation"), + ("RIGIngestInfo", "IngestInformation"), + ("RIGSupportingDataSourceInfo", "SupportingDataSourceInformation"), + ("RIGProvenanceInfo", "ProvenanceInformation"), + ("RIGRelevantFile", "RelevantFiles"), + ("RIGIncludedContent", "IncludedContent"), + ("RIGFilteredContent", "FilteredContent"), + ("RIGFutureContentConsideration", "FutureContentConsiderations"), + ("RIGFutureModelingConsideration", "FutureModelingConsiderations"), +) + +#: Tablassert-specific keys on the ``rig:`` CONFIG that feed the generator and are +#: deliberately stripped from the emitted document (never schema slots). Keeping them +#: named here makes every NEW mirror-only key a visible decision instead of silent drift. +CONFIG_ONLY_KEYS: frozenset[str] = frozenset({"artifact_base_path", "artifact_base_url", "source_files", "ui_explanation"}) + + +@pytest.fixture +def schema() -> dict[str, Any]: + """The vendored LinkML schema document.""" + return load_schema(SCHEMA_PATH) + + +def _mirror_fields(models_module: Any, py_name: str) -> set[str]: + """Field names of one RIG mirror class (``model_fields`` keys).""" + return set(getattr(models_module, py_name).model_fields) + + +class TestMirrorLockstep: + def test_full_mirrors_match_schema_slots(self, schema: dict[str, Any]) -> None: + """Every full mirror's field set equals its schema class's attribute set. + + Both directions matter: a mirror field the schema lacks emits a slot downstream + validators will reject as unknown; a schema slot the mirror lacks means upstream + grew and Tablassert cannot author it. + """ + from tablassert import models + + for py_name, schema_name in FULL_MIRRORS: + mirror: set[str] = _mirror_fields(models, py_name) + canonical: set[str] = set(schema["classes"][schema_name].get("attributes", {})) + assert mirror == canonical, ( + f"{py_name} drifted from {schema_name}: mirror-only={sorted(mirror - canonical)} schema-only={sorted(canonical - mirror)}" + ) + + def test_target_info_extras_are_a_schema_subset(self, schema: dict[str, Any]) -> None: + """``RIGTargetInfoExtras`` mirrors only the authorable TargetInformation slots. + + The remaining schema slots (``edge_type_info`` / ``node_type_info`` / + ``infores_id``) are composed by ``rig.build_rig_document`` from observed graph + facts, so the mirror is a deliberate subset; a mirror key outside the schema is + still drift and fails. + """ + from tablassert import models + + mirror: set[str] = _mirror_fields(models, "RIGTargetInfoExtras") + canonical: set[str] = set(schema["classes"]["TargetInformation"].get("attributes", {})) + assert mirror <= canonical, f"RIGTargetInfoExtras carries non-schema keys: {sorted(mirror - canonical)}" + + def test_rig_config_covers_schema_requirements_plus_config_only(self, schema: dict[str, Any]) -> None: + """``RIGConfig`` carries every required ReferenceIngestGuide slot and only + documented config-only extras beyond the schema's attribute set.""" + from tablassert import models + + mirror: set[str] = _mirror_fields(models, "RIGConfig") + canonical: set[str] = set(schema["classes"]["ReferenceIngestGuide"].get("attributes", {})) + assert mirror - canonical <= CONFIG_ONLY_KEYS, f"undocumented mirror-only keys: {sorted((mirror - canonical) - CONFIG_ONLY_KEYS)}" + for key, attribute in schema["classes"]["ReferenceIngestGuide"].get("attributes", {}).items(): + if attribute.get("required"): + assert key in mirror, f"schema-required slot {key!r} missing from RIGConfig" + + +class TestGeneratedDocument: + def test_built_rig_conforms_to_schema(self, tmp_path: Path, rig_factory: Callable[..., dict[str, Any]]) -> None: + """A RIG generated from a real (minimal) build validates against the schema. + + This is the end-state guarantee: whatever the mirror permits, the emitted + document itself must satisfy the canonical schema -- unknown keys, missing + required slots, and illegal enum values all fail here with a class+slot path. + """ + from tablassert.models import RIGConfig + + rig: RIGConfig = RIGConfig.model_validate(rig_factory(tmp_path, infores_id="infores:drift-kg")) + nodes_path: Path = tmp_path / "DRIFT_1.0.0.nodes.ndjson" + edges_path: Path = tmp_path / "DRIFT_1.0.0.edges.ndjson" + nodes_path.write_text('{"id":"HGNC:1","category":["biolink:Gene"]}\n', encoding="utf-8") + edges_path.write_text("", encoding="utf-8") + document: dict[str, Any] = build_rig_document( + "DRIFT", + "1.0.0", + rig, + nodes_path, + edges_path, + node_type_info=[{"node_category": "biolink:Gene", "source_identifier_types": ["HGNC"]}], + edge_type_info=[], + node_count=1, + edge_count=0, + node_fields=["category", "id"], + edge_fields=[], + ) + errors = validate_document(document, schema=load_schema(SCHEMA_PATH)) + assert not errors, f"generated RIG violates the schema: {[str(error) for error in errors]}" + + def test_validator_rejects_unknown_and_missing(self, schema: dict[str, Any]) -> None: + """The subset validator actually bites: unknown keys and missing required slots fail. + + Guards against a vacuous validator (a checker that passes everything would make + Test B meaningless). + """ + document: dict[str, Any] = {"name": "x", "definitely_not_a_slot": 1} + errors = validate_document(document, schema=schema) + assert any("unknown slot" in error.reason for error in errors) + missing: set[str] = {error.path.rsplit(".", 1)[-1] for error in errors if "required slot missing" in error.reason} + for required, attribute in schema["classes"]["ReferenceIngestGuide"]["attributes"].items(): + if attribute.get("required"): + assert required in missing, f"validator did not flag missing required slot {required!r}" + + +@pytest.mark.network +class TestVendoredSchemaStaleness: + def test_vendored_copy_matches_upstream(self) -> None: + """The vendored schema is byte-identical to the pinned upstream commit's file. + + Skips when offline (CI/dev without network) so the suite stays deterministic; + when it runs, a non-identical copy means upstream changed and the vendored file + must be re-vendored and the drift reviewed. + """ + from tablassert import net + + upstream_ref = "f870823cfde8" + url = f"https://raw.githubusercontent.com/biolink/resource-ingest-guide-schema/{upstream_ref}/src/resource_ingest_guide_schema/schema/resource_ingest_guide_schema.yaml" + body: str | None + try: + body = net.http_get_text(url) + except Exception as error: + pytest.skip(f"network unavailable, staleness check skipped: {error}") + # Semantic (not byte) equality: the vendored copy carries three header comment + # lines recording the source, and yaml ignores comments. Any MODEL change + # (classes, attributes, enums) trips this assertion. + assert yaml.safe_load(body) == load_schema(SCHEMA_PATH), f"vendored schema drifted from upstream; re-vendor from {url} and review the diff" + + +def test_vendored_schema_parses() -> None: + """The vendored file must stay a parseable LinkML doc with the expected shape.""" + schema: dict[str, Any] = load_schema(SCHEMA_PATH) + assert "ReferenceIngestGuide" in schema["classes"] + assert schema["classes"]["ReferenceIngestGuide"]["attributes"] From 7f4ebff99bca6a7ff41a226aec4bf18c5385e5c9 Mon Sep 17 00:00:00 2001 From: SkyeAv Date: Wed, 7 Oct 2026 11:15:21 -0700 Subject: [PATCH 4/5] docs: index validate-infores and infores_registry in llms.txt --- llms.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llms.txt b/llms.txt index 188b3a35..bbaeb3a5 100644 --- a/llms.txt +++ b/llms.txt @@ -10,7 +10,7 @@ Current CLI behavior queries an embedded redb database whose primary file is `fu - [README](README.md): high-level overview, install snippets, and one-command graph build. - [Documentation Site Home](docs/index.md): docs landing page and navigation context. - [Installation Guide](docs/installation.md): three install paths (PyPI, GitHub main, development from source), platform and Rust-toolchain notes, and the missing-extra behavior. Optional extras: `cli`, `rt`, `aria2`, `qc`, `agent`, `optimize`, `distill`, and `log`; the last three back experimental surfaces whose APIs may change. -- [CLI Reference](docs/cli.md): the eight commands (`agent`, `build-fullmap`, `build-kg`, `distill-export`, `distill-weigh`, `quick-map`, `validate`, and `validate-kgx`) plus the app-level `--version` flag. +- [CLI Reference](docs/cli.md): the nine commands (`agent`, `build-fullmap`, `build-kg`, `distill-export`, `distill-weigh`, `quick-map`, `validate`, `validate-infores`, and `validate-kgx`) plus the app-level `--version` flag. - [Tutorial](docs/tutorial.md): first end-to-end run from CSV input to KGX NDJSON output. ## YAML Authoring @@ -54,6 +54,7 @@ Current CLI behavior queries an embedded redb database whose primary file is `fu - [Fullmap Module](src/tablassert/fullmap.py): embedded redb synonym resolution and ranking logic. - [Graph Target](src/tablassert/graph_target.py): graph output target preparation and locking. - [YAML Ingestion](src/tablassert/ingests.py): `from_yaml()`, `to_sections()`, template/section merge behavior, YAML loading, and section expansion. +- [InfoRes Registry](src/tablassert/infores_registry.py): bundled infores registry snapshot loader, KGX/RIG CURIE collection, and three-way registered/allowed/unregistered classification. - [Core Pipeline](src/tablassert/lib.py): extraction transforms, statement assembly, and graph compilation. - [Logging](src/tablassert/log.py): optional loguru logging abstraction. - [Pydantic Models](src/tablassert/models.py): authoritative schema for `Section` and `Graph`: table, graph, and RIG configuration models. From a43aefe28a813505f43b0c73c86b2f27c612953b Mon Sep 17 00:00:00 2001 From: SkyeAv Date: Wed, 7 Oct 2026 11:22:07 -0700 Subject: [PATCH 5/5] fix: [review] harden validate-infores crash paths, dedupe malformed units, mode-aware success message --- src/tablassert/cli.py | 8 ++- src/tablassert/infores_registry.py | 108 +++++++++++++++++++---------- tests/_rig_linkml.py | 5 +- tests/test_cli_validate_infores.py | 52 +++++++++++++- tests/test_infores_registry.py | 12 +++- 5 files changed, 139 insertions(+), 46 deletions(-) diff --git a/src/tablassert/cli.py b/src/tablassert/cli.py index 2809b9b3..74b4e93e 100644 --- a/src/tablassert/cli.py +++ b/src/tablassert/cli.py @@ -1098,7 +1098,8 @@ def validate_infores_command( report["registry"]["source"] = f"{REGISTRY_RAW_URL} (refreshed)" for label, absent in report["missing"].items(): if absent: - print(f"{label}: file not found", file=sys.stderr) + path_label = {"nodes": nodes, "edges": edges, "rig": rig}.get(label) + print(f"{label}: file not found ({path_label})", file=sys.stderr) if any(report["missing"].values()): print("infores validation failed: missing input files.", file=sys.stderr) raise SystemExit(1) @@ -1112,16 +1113,17 @@ def validate_infores_command( for example in report["examples"][:3]: print(f" e.g. {example['curie']} ({example['where']}.{example['field']}): {example['problem']}", file=sys.stderr) clean: bool = not report["unregistered"] and not report["malformed"] + passed: str = "infores membership check skipped (--registry off)." if registry == "off" else "All emitted infores CURIEs are registered." if strict: if report["ok_strict"]: - print("All emitted infores CURIEs are registered." if clean else "infores validation passed (strict).", file=sys.stderr) + print(passed if clean else "infores validation passed (strict).", file=sys.stderr) return print("infores validation failed (strict): unregistered CURIEs remain.", file=sys.stderr) raise SystemExit(1) if not clean: print("infores warnings present; pass --strict to fail on them.", file=sys.stderr) return - print("All emitted infores CURIEs are registered.", file=sys.stderr) + print(passed, file=sys.stderr) @APP.command(name="quick-map") diff --git a/src/tablassert/infores_registry.py b/src/tablassert/infores_registry.py index d84dba67..20020d24 100644 --- a/src/tablassert/infores_registry.py +++ b/src/tablassert/infores_registry.py @@ -59,6 +59,29 @@ def registry_cache_path() -> Path: _EDGE_INFORES_FIELDS: tuple[str, ...] = ("primary_knowledge_source", "sources") +def _extract_identifiers(document: Any, path_label: str) -> frozenset[str]: + """Pull the ``infores:`` identifier set out of a parsed catalog document. + + Shared by the snapshot loader and the refresh path so both enforce the identical + bar: a document without a non-empty identifier set is corrupt and must fail loudly + BEFORE the refresh path caches it. + """ + stanzas: Any = document.get("information_resources") if isinstance(document, dict) else None + if not isinstance(stanzas, list): + raise TablassertError( + f"The infores registry document at {path_label} carries no `information_resources` stanza list; it is truncated or corrupt.", + code="infores-registry-unreadable", + ) + identifiers: set[str] = { + str(stanza["id"]) for stanza in stanzas if isinstance(stanza, dict) and str(stanza.get("id") or "").startswith(INFORES_PREFIX) + } + if not identifiers: + raise TablassertError( + f"The infores registry document at {path_label} parsed but contains zero infores: identifiers.", code="infores-registry-unreadable" + ) + return frozenset(identifiers) + + def load_registry_snapshot(path: Path = REGISTRY_SNAPSHOT_PATH) -> frozenset[str]: """Load the bundled registry snapshot into a set of ``infores:`` CURIEs. @@ -81,20 +104,7 @@ def load_registry_snapshot(path: Path = REGISTRY_SNAPSHOT_PATH) -> frozenset[str document: Any = yaml.safe_load(path.read_bytes()) except (OSError, yaml.YAMLError) as error: raise TablassertError(f"Cannot read the infores registry snapshot at {path}: {error}", code="infores-registry-unreadable") from error - stanzas: Any = document.get("information_resources") if isinstance(document, dict) else None - if not isinstance(stanzas, list): - raise TablassertError( - f"The infores registry snapshot at {path} carries no `information_resources` stanza list; it is truncated or corrupt.", - code="infores-registry-unreadable", - ) - identifiers: set[str] = { - str(stanza["id"]) for stanza in stanzas if isinstance(stanza, dict) and str(stanza.get("id") or "").startswith(INFORES_PREFIX) - } - if not identifiers: - raise TablassertError( - f"The infores registry snapshot at {path} parsed but contains zero infores: identifiers.", code="infores-registry-unreadable" - ) - return frozenset(identifiers) + return _extract_identifiers(document, str(path)) def refresh_registry(destination: Path | None = None) -> frozenset[str]: @@ -124,14 +134,13 @@ def refresh_registry(destination: Path | None = None) -> frozenset[str]: raise TablassertError( f"Fetched infores registry from {REGISTRY_RAW_URL} is not valid yaml: {error}", code="infores-registry-unreadable" ) from error - if not (isinstance(document, dict) and isinstance(document.get("information_resources"), list)): - raise TablassertError( - f"Fetched infores registry from {REGISTRY_RAW_URL} carries no `information_resources` stanza list; refusing to cache it.", - code="infores-registry-unreadable", - ) + # Validate the identifier set BEFORE writing: a body with an empty stanza list + # would otherwise be cached as a "valid" registry that classifies every real + # CURIE unregistered on some later hand-inspection. + identifiers: frozenset[str] = _extract_identifiers(document, REGISTRY_RAW_URL) cache.parent.mkdir(parents=True, exist_ok=True) cache.write_text(text, encoding="utf-8") - return load_registry_snapshot(cache) + return identifiers def _as_list(value: Any) -> list[Any]: @@ -141,14 +150,26 @@ def _as_list(value: Any) -> list[Any]: return value if isinstance(value, list) else [value] -def _iter_file_records(path: Path) -> Iterator[dict[str, Any]]: - """Yield decoded NDJSON records from ``path``; blank lines are skipped silently.""" - with path.open(encoding="utf-8") as handle: +def _iter_file_records(path: Path) -> Iterator[tuple[dict[str, Any] | None, str | None]]: + """Yield ``(record, None)`` per decoded NDJSON record, ``(None, line)`` for non-JSON lines. + + Blank lines are skipped. A line that is not JSON at all is surfaced to the caller + (the same defect class ``validate-kgx`` counts explicitly) instead of crashing the + walk with a traceback. + """ + # errors="replace" keeps a bad byte from raising UnicodeDecodeError mid-file; + # the replacement glyph makes the line non-JSON, which reports as malformed. + with path.open(encoding="utf-8", errors="replace") as handle: for line in handle: - if line.strip(): + if not line.strip(): + continue + try: record: Any = json.loads(line) - if isinstance(record, dict): - yield record + except json.JSONDecodeError: + yield None, line + continue + if isinstance(record, dict): + yield record, None def _edge_observations(record: dict[str, Any]) -> Iterator[tuple[str, str]]: @@ -200,13 +221,21 @@ def _observations(nodes_path: Path, edges_path: Path, rig_path: Path | None) -> missing[label] = not path.is_file() if missing[label]: continue - for record in _iter_file_records(path): + for record, bad_line in _iter_file_records(path): + if record is None: + # A line that is not JSON at all is malformed output, matching how + # validate-kgx counts its own non-JSON lines. + observations.append((str(bad_line).strip()[:120], label, "")) + continue for value, field in walk(record): observations.append((value, label, field)) if rig_path is not None: missing["rig"] = not rig_path.is_file() if not missing["rig"]: - loaded: Any = yaml.safe_load(rig_path.read_bytes()) + try: + loaded: Any = yaml.safe_load(rig_path.read_bytes()) + except yaml.YAMLError as error: + raise TablassertError(f"Cannot parse the RIG document at {rig_path}: {error}", code="infores-registry-unreadable") from error for value, field in _rig_observations(loaded): observations.append((value, "rig", field)) return observations, missing @@ -231,7 +260,8 @@ def validate_infores( allow: Locally-minted CURIEs accepted without registry membership (e.g. the graph's own ``infores:`` id from ``rig.infores()``). registry: Pre-loaded identifier set; defaults to the bundled snapshot. Tests - inject tiny fixtures here. Ignored when ``check_registry`` is False. + inject tiny fixtures here (the report's ``registry.source`` then reads + ``injected``). Ignored when ``check_registry`` is False. check_registry: False runs the structural pass only (the ``--registry off`` mode): CURIEs are counted as malformed or not, but never registered vs unregistered, so membership never influences any verdict. @@ -239,22 +269,24 @@ def validate_infores( Returns: Mapping with ``registered`` / ``allowed`` / ``unregistered`` / ``malformed`` - counts, ``examples`` (``{"curie", "where", "field", "problem"}``), a ``missing`` - map of absent input files, ``registry`` provenance, and the verdicts ``ok`` - (no missing inputs, no malformed values) and ``ok_strict`` (``ok`` and zero - unregistered CURIEs). The default CLI posture is advisory; only ``ok_strict`` - may drive a non-zero exit, and only under an explicit flag. + counts -- all four are DISTINCT-value counts, so a defect repeated on every + record counts once -- ``examples`` (``{"curie", "where", "field", "problem"}``), + a ``missing`` map of absent input files, ``registry`` provenance, and the + verdicts ``ok`` (no missing inputs, no malformed values) and ``ok_strict`` + (``ok`` and zero unregistered CURIEs). The default CLI posture is advisory; + only ``ok_strict`` may drive a non-zero exit, and only under an explicit flag. """ registry_ids: frozenset[str] = (load_registry_snapshot() if registry is None else frozenset(registry)) if check_registry else frozenset() + registry_source: str = "injected" if registry is not None and check_registry else ("off" if not check_registry else str(REGISTRY_SNAPSHOT_PATH)) observations, missing = _observations(nodes_path, edges_path, rig_path) registered: set[str] = set() allowed: set[str] = set() unregistered: dict[str, tuple[str, str]] = {} - malformed: list[tuple[str, str, str]] = [] + malformed: set[tuple[str, str, str]] = set() examples: list[dict[str, str]] = [] for value, where, field in observations: if not value.startswith(INFORES_PREFIX): - malformed.append((value, where, field)) + malformed.add((value, where, field)) continue if not check_registry: continue @@ -269,7 +301,7 @@ def validate_infores( break where, field = unregistered[value] examples.append({"curie": value, "where": where, "field": field, "problem": "unregistered"}) - for value, where, field in malformed: + for value, where, field in sorted(malformed): if len(examples) >= limit: break examples.append({"curie": value, "where": where, "field": field, "problem": "malformed"}) @@ -280,7 +312,7 @@ def validate_infores( "malformed": len(malformed), "examples": examples, "missing": missing, - "registry": {"source": "off" if not check_registry else str(REGISTRY_SNAPSHOT_PATH), "entries": len(registry_ids)}, + "registry": {"source": registry_source, "entries": len(registry_ids)}, "ok": not any(missing.values()) and not malformed, "ok_strict": not any(missing.values()) and not malformed and not unregistered, } diff --git a/tests/_rig_linkml.py b/tests/_rig_linkml.py index 004c28c1..faf56d35 100644 --- a/tests/_rig_linkml.py +++ b/tests/_rig_linkml.py @@ -23,6 +23,7 @@ from __future__ import annotations from dataclasses import dataclass +from pathlib import Path from typing import Any import yaml @@ -42,9 +43,9 @@ def __str__(self) -> str: return f"{self.path}: {self.reason}" -def load_schema(path: Any) -> dict[str, Any]: +def load_schema(path: Path) -> dict[str, Any]: """Load the vendored LinkML schema document.""" - return yaml.safe_load(path.read_bytes() if hasattr(path, "read_bytes") else open(path, "rb").read()) + return yaml.safe_load(path.read_bytes()) def validate_document(document: Any, schema: dict[str, Any], class_name: str = "ReferenceIngestGuide") -> list[LinkMLSubsetError]: diff --git a/tests/test_cli_validate_infores.py b/tests/test_cli_validate_infores.py index b7ff03c5..ac34a366 100644 --- a/tests/test_cli_validate_infores.py +++ b/tests/test_cli_validate_infores.py @@ -81,12 +81,12 @@ def test_malformed_fails_strict(self, tmp_path: Path) -> None: assert excinfo.value.code == 1 def test_registry_off_skips_membership(self, tmp_path: Path, capsys: pytest.CaptureFixture[str]) -> None: - """--registry off reports structure only: membership never fails, even strict.""" + """--registry off reports structure only and never claims registry verification.""" edges = write_ndjson(tmp_path / "e.ndjson", [{"id": "urn:1", "primary_knowledge_source": ["infores:made-up"]}]) nodes = write_ndjson(tmp_path / "n.ndjson", []) out = run({"nodes": nodes, "edges": edges, "registry": "off", "strict": True}, capsys) assert "0 entries" in out - assert "All emitted infores CURIEs are registered." in out + assert "infores membership check skipped (--registry off)." in out def test_registry_refresh_fetches_and_caches(self, tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch) -> None: """--registry refresh pulls the live catalog via the retry layer and caches the body.""" @@ -120,6 +120,54 @@ def test_rig_option_scanned(self, tmp_path: Path) -> None: cli.validate_infores_command(nodes=nodes, edges=edges, rig=rig, strict=True) assert excinfo.value.code == 1 + def test_non_json_lines_count_as_malformed(self, tmp_path: Path) -> None: + """A line that is not JSON at all is malformed output, never a traceback. + + Mirrors validate-kgx's explicit handling of its own non-JSON lines: the report + stays structured so one corrupt line cannot crash a build gate. + """ + from tablassert.infores_registry import validate_infores + + edges = tmp_path / "e.ndjson" + edges.write_text('{"id": "urn:1", "primary_knowledge_source": ["infores:monarchinitiative"]}\nnot json at all\n', encoding="utf-8") + nodes = write_ndjson(tmp_path / "n.ndjson", []) + report = validate_infores(nodes, edges, registry=frozenset({REGISTERED})) + assert report["malformed"] == 1 + assert report["registered"] == 1 + assert report["ok"] is False + assert any(example["field"] == "" for example in report["examples"]) + + def test_corrupt_rig_raises_coded_error(self, tmp_path: Path) -> None: + """An unparsable --rig yaml raises the coded error, not a raw yaml traceback.""" + from tablassert.errors import TablassertError, error_code_of + from tablassert.infores_registry import validate_infores + + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + rig = tmp_path / "rig.yaml" + rig.write_text("source_info: [unclosed", encoding="utf-8") + with pytest.raises(TablassertError) as excinfo: + validate_infores(nodes, edges, rig_path=rig, registry=frozenset({REGISTERED})) + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + + def test_refresh_rejects_empty_stanza_list_before_caching(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + """A fetched body with an empty stanza list fails and never reaches the cache. + + Such a body would classify every real CURIE unregistered on later inspection; + it must be rejected at fetch time, not cached as a valid-looking registry. + """ + from tablassert.errors import TablassertError, error_code_of + + monkeypatch.setattr(infores_registry.net, "http_get_text", lambda url, **kwargs: yaml.safe_dump({"information_resources": []})) + cache = tmp_path / "cache.yaml" + monkeypatch.setattr(infores_registry, "registry_cache_path", lambda: cache) + edges = write_ndjson(tmp_path / "e.ndjson", []) + nodes = write_ndjson(tmp_path / "n.ndjson", []) + with pytest.raises(TablassertError) as excinfo: + cli.validate_infores_command(nodes=nodes, edges=edges, registry="refresh") + assert error_code_of(excinfo.value) == "infores-registry-unreadable" + assert not cache.exists() + def test_help_renders_every_flag(self) -> None: """The help page must self-describe: an agent picks flags from help alone.""" import io diff --git a/tests/test_infores_registry.py b/tests/test_infores_registry.py index c5308c9e..cadf134d 100644 --- a/tests/test_infores_registry.py +++ b/tests/test_infores_registry.py @@ -225,5 +225,15 @@ def test_bundled_snapshot_default_registry(self, tmp_path: Path) -> None: def test_prefix_constant_matches_validator() -> None: - """The malformed boundary is exactly the ``infores:`` prefix shared with models.py.""" + """The malformed boundary is the same ``infores:`` prefix models.py enforces. + + ``models.validate_infores_curie`` carries its own prefix literal, so a one-sided + change would let syntactically-valid-but-foreign CURIEs pass config validation and + then be classified unregistered here (or vice versa): the two must stay in lockstep. + """ + from tablassert.models import TablassertValidationError, validate_infores_curie + assert INFORES_PREFIX == "infores:" + assert validate_infores_curie("infores:some-resource", "rig-bad-infores") == "infores:some-resource" + with pytest.raises(TablassertValidationError): + validate_infores_curie("PMID:123", "rig-bad-infores")