Skip to content

SemMedDB Resource Ingest Guide (RIG)

Source Information

InfoRes ID: infores:semmeddb

Description: SemMedDB is a repository of semantic predications (subject-predicate-object triples) extracted by the SemRep natural-language-processing system from titles and abstracts in PubMed/MEDLINE. Produced by the U.S. National Library of Medicine, it captures assertions about biomedical entities (drugs, diseases, genes, anatomy, procedures, phenotypes, etc.) together with the sentences and PMIDs that support them, and is widely used for literature-based hypothesis generation. This RIG documents an ingest of a post-processed SemMedDB edge slice redistributed by the RTX-KG2 project, not a raw ingest of the NLM SemMedDB MySQL distribution. RTX-KG2 has already projected SemMedDB predications into Biolink-shaped edges (Biolink predicate, publications, publications_info, kg2_ids, optional qualifiers, domain_range_exclusion flag); this pipeline transforms that slice with Koza.

Citations: - Kilicoglu H, Shin D, Fiszman M, Rosemblat G, Rindflesch TC. SemMedDB: a PubMed-scale repository of semantic predications. Bioinformatics. 2012 Dec 1;28(23):3158-60. PMID: 23044550

Data Access Locations: - SemMedDB (original NLM source behind SemRep; not the file this ingest reads directly): https://lhncbc.nlm.nih.gov/temp/SemRep_SemMedDB_SKR/SemMedDB_download.html - RTX-KG2 public SemMedDB edges slice (gzipped JSONL - this is what this ingest downloads): https://rtx-kg2-public.s3.us-west-2.amazonaws.com/kg2.10.3-semmeddb-edges.jsonl.gz

Data Provision Mechanisms: file_download

Data Formats: json

Data Versioning and Releases: NLM released SemMedDB periodically, versioned as VER. The final release is semmedVER43_2024_R, processed through May 8, 2024. This ingest is pinned to the SemMedDB content captured in the RTX-KG2 kg2.10.3 snapshot (SemMedDB VER43-era content), and the effective version reported by the ingest is 'semmeddb-2023-kg2.10.3'. Because the upstream source is retired, the only remaining source of version change is a new RTX-KG2 snapshot build, not a new SemMedDB release.

Additional Notes: ['SemMedDB is retired. The NLM download page states that these tools "will no longer be maintained as of December 31, 2024", and describes semmedVER43_2024_R (processed through May 8, 2024) as the final update for the SemMedDB database. No further SemMedDB releases are expected, so this ingest documents a frozen source.', "The NLM pages linked above are served from a '/temp/' path, which is a link-rot risk for a resource that is no longer maintained. The NLM download page itself points to an Internet Archive capture as the long-term reference."]

Ingest Information

Ingest Categories: primary_knowledge_provider

Utility: Large-scale, literature-derived relationships spanning many biomedical entity types, suitable for hypothesis generation, cross-graph enrichment, and pathfinder-style reasoning where evidence-bearing (publication-supported) edges are valuable even when individually noisy.

Scope: Edges taken from RTX-KG2's SemMedDB slice, restricted to a selected set of 20 Biolink predicates and to evidence-bearing records (more than 3 supporting publications), with additional filtering to remove low-value predicates, domain/range-incoherent edges, and upstream-dropped predicates. Nodes are emitted only for the subject/object endpoints of included edges.

Relevant Files

File Name Location Description
kg2.10.3-semmeddb-edges.jsonl (RTX-KG2 SemMedDB slice) https://rtx-kg2-public.s3.us-west-2.amazonaws.com/kg2.10.3-semmeddb-edges.jsonl.gz KGX-compatible edges with Biolink predicates, literature evidence (publications, publications_info), kg2_ids, optional qualifiers, and a domain_range_exclusion flag. Downloaded via semmeddb/download.yaml; the decompressed JSONL is the Koza reader input. This is the only file downloaded by this ingest.

Included Content

File Name Included Records Fields Used
kg2.10.3-semmeddb-edges.jsonl Edges whose Biolink predicate is in the selected set of 20 predicates: biolink:affects, biolink:causes, biolink:close_match, biolink:coexists_with, biolink:derives_from, biolink:diagnoses, biolink:disrupts, biolink:exacerbates_condition, biolink:has_input, biolink:has_part, biolink:interacts_with, biolink:located_in, biolink:manifestation_of, biolink:occurs_in, biolink:precedes, biolink:predisposes_to_condition, biolink:preventative_for_condition, biolink:produces, biolink:related_to, biolink:treats_or_applied_or_studied_to_treat. These are mapped by KG2 from original SEMMEDDB predicates: ADMINISTERED_TO, AFFECTS, ASSOCIATED_WITH, AUGMENTS, CAUSES, COEXISTS_WITH, COMPLICATES, CONVERTS_TO, DIAGNOSES, DISRUPTS, INHIBITS, INTERACTS_WITH, LOCATION_OF (inverted), MANIFESTATION_OF, OCCURS_IN, PART_OF (inverted), PRECEDES, PREDISPOSES, PREVENTS, PROCESS_OF, PRODUCES, SAME_AS, STIMULATES, TREATS, USES, XREF. During transform, biolink:preventative_for_condition is remapped to biolink:treats_or_applied_or_studied_to_treat, leaving 19 distinct output predicates. subject, predicate, object, publications, publications_info, domain_range_exclusion, kg2_ids, qualified_predicate, qualified_object_aspect, qualified_object_direction

Filtered Content

File Name Filtered Records Rationale
kg2.10.3-semmeddb-edges.jsonl Edges whose original SemMedDB predicate (extracted from kg2_ids) is in the BTE-excluded set: COMPARED_WITH, ISA, MEASURES, HIGHER_THAN, LOWER_THAN. All five map to biolink:related_to in KG2 but are removed because BTE considers them non-informative for knowledge graph use. Align with BTE filtering of low-value predicates hidden inside biolink:related_to.
kg2.10.3-semmeddb-edges.jsonl Edges with 3 or fewer supporting publications. Ensure each edge has meaningful literature support; singleton text-mining extractions are noisy.
kg2.10.3-semmeddb-edges.jsonl Edges where the KG2 domain_range_exclusion flag is True. Remove semantically incoherent subject/object type combinations flagged by KG2.
kg2.10.3-semmeddb-edges.jsonl Qualifier triples (not whole edges) are stripped when an activity-like aspect (activity, activity_or_abundance, abundance) is applied to an edge whose subject or object is not a Gene, Protein, or ChemicalEntity. The edge is still emitted as a plain biolink:affects Association with its literature evidence preserved; only the qualifier is dropped. Per NCATSTranslator/Feedback#1213, KG2 emits chemical -> phenotype/disease/anatomy edges qualified as 'causes activity_or_abundance increased', which downstream reasoners chain on to produce nonsensical 'X has increased activity caused by Y' inferences.
kg2.10.3-semmeddb-edges.jsonl For edges with more than 200 publications, the publication list is trimmed to the union of top-100 by confidence score (min of subject/object score) and top-100 by recency (publication year), yielding at most ~200 PMIDs per edge. This only affects rare extreme cases (some edges have 60k+ PMIDs) and is disabled when the SEMMEDDB_UNCAPPED=1 environment variable is set. Prevent oversized edges while retaining the most informative publications by two orthogonal strategies. Configurable for uncapped builds.

Future Content Considerations

edge_property_content: Expand SemMedDB evidence payloads (supporting snippets, evidence/publication counts, and per-publication confidence scores) as richer edge properties after validating downstream UI and KG constraints. - Relevant files: kg2.10.3-semmeddb-edges.jsonl

other: Evaluate re-ingesting from raw SemMedDB (rather than the KG2-derived slice) to recover fields stripped by KG2 - negated statements, subject/object novelty, subject/object semantic types, and node names. This would enable negation filtering, novelty thresholds, BTE-parity per-metatriple publication-count thresholds (which require semantic types), and node labeling. - Relevant files: kg2.10.3-semmeddb-edges.jsonl

Additional Notes: ['Upstream context, not a filter applied by this ingest: RTX-KG2 drops SEMMEDDB:MEASUREMENT_OF, SEMMEDDB:METHOD_OF, SEMMEDDB:NOM, SEMMEDDB:PREP, and SEMMEDDB:VERB before publishing the edge slice, so those predications never reach this pipeline and cannot be recovered from the downloaded file.', "Domain/range constraint violations are expected. SemMedDB is a text-mining source, so extracted subject/object types do not always fit Biolink's strict domain/range rules (e.g. 'surgery treats diabetes'). Roughly 10,000+ Biolink validation warnings result, chiefly on biolink:treats_or_applied_or_studied_to_treat and biolink:predisposes_to_condition where subjects such as Procedure, Protein, Gene, Device, Disease, or InformationContentEntity and objects such as Cohort, Cell, or PopulationOfIndividualOrganisms appear. These edges are retained because they carry real literature evidence; the warnings are expected, not bugs.", "The KGX summary report may list an 'original_json' edge property that is absent from the final normalized output. This is normal KGX behavior - the property exists in intermediate processing but is stripped during normalization.", "Qualifier object_aspect_qualifier values diverge from BTE for stimulates/inhibits: KG2 uses 'activity' while BTE uses 'activity_or_abundance' (only 'augments' matches). Per the DINGO call decision (2026-03-31), KG2 qualifier values are passed through as-is rather than remapped.", "KG2 pre-processing strips several SemMedDB fields we cannot recover (negated, subject_novelty, object_novelty, subject_semtype, object_semtype, subject_name, object_name). This prevents negation filtering, novelty thresholds, and BTE's per-metatriple publication-count thresholds. Resolving this would require a re-ingest from raw SemMedDB data (see future considerations)."]

Target Information

Edge Types

Subject Categories Predicate Object Categories Knowledge Level Agent Type UI Explanation
biolink:Gene, biolink:Protein, biolink:ChemicalEntity biolink:Gene, biolink:Protein, biolink:ChemicalEntity not_provided text_mining_agent This edge reports that one entity changes the activity of another, as stated in the biomedical literature. It comes from a SemMedDB predication that SemRep extracted automatically from PubMed titles and abstracts, originally recorded with a 'stimulates', 'inhibits', or 'augments' relation, which is represented here as a biolink:affects edge carrying a direction qualifier (increased or decreased). Because the assertion is produced by automated text mining rather than by curation or experiment, the knowledge level is 'not provided' and the agent type is 'text mining agent'. The cited publications are the sentences the assertion was extracted from, not independent confirmation of it.
biolink:Gene, biolink:Protein biolink:Disease, biolink:PhenotypicFeature not_provided text_mining_agent This edge reports that a gene or gene product causes a disease or phenotype, as stated in the biomedical literature. It comes from a SemMedDB predication that SemRep extracted automatically from PubMed titles and abstracts. The subject is qualified as a genetic variant form, because a causal claim of this shape is about a variant of the gene rather than the normal gene product. Because the assertion is produced by automated text mining rather than by curation or experiment, the knowledge level is 'not provided' and the agent type is 'text mining agent'.
biolink:Gene, biolink:Protein, biolink:ChemicalEntity, biolink:NamedThing biolink:Gene, biolink:ChemicalEntity, biolink:NamedThing not_provided text_mining_agent This edge reports that two concepts were referred to interchangeably in the biomedical literature. It comes from a SemMedDB 'SAME_AS' predication that SemRep extracted automatically from PubMed titles and abstracts. Unlike the other SemMedDB edge types, this is a statement about naming and identity rather than about biology, so it should be read as weak evidence that two terms denote the same thing, not as a curated identifier mapping.
biolink:Gene, biolink:Protein, biolink:ChemicalEntity, biolink:Disease, biolink:PhenotypicFeature, biolink:AnatomicalEntity, biolink:NamedThing biolink:Gene, biolink:Protein, biolink:ChemicalEntity, biolink:Disease, biolink:PhenotypicFeature, biolink:AnatomicalEntity, biolink:NamedThing not_provided text_mining_agent This edge reports that two entities were stated to be related in the biomedical literature, with the specific relationship shown by the predicate. It comes from a SemMedDB predication that SemRep extracted automatically from PubMed titles and abstracts, and the cited publications are the sentences the assertion was extracted from. Because the assertion is produced by automated text mining rather than by curation or experiment, the knowledge level is 'not provided' and the agent type is 'text mining agent'. Individual edges can be noisy, so these are most useful in aggregate or as supporting evidence rather than on their own.

Node Types

Node Category Source Identifier Types Additional Notes
biolink:Gene NCBIGene, HGNC, ENSEMBL NCBIGene accounts for nearly all gene nodes, with a small number of HGNC. ENSEMBL is mapped by PREFIX_TO_CLASS but does not occur in the ingested slice.
biolink:Protein UniProtKB, PR All protein nodes in the ingested slice are UniProtKB. PR is mapped by PREFIX_TO_CLASS but does not occur.
biolink:ChemicalEntity CHEBI, DRUGBANK
biolink:Disease MONDO, DOID
biolink:PhenotypicFeature HP
biolink:AnatomicalEntity UBERON
biolink:NamedThing UMLS, MESH, NCBITaxon, GO, UNII, PUBCHEM.COMPOUND, NCIT, RXCUI, CL, EFO, OMIM, CHEMBL.COMPOUND, DrugCentral This is a transient fallback category, not a real node type in the delivered graph. It is recorded here because it is what the transform emits and because its size is a useful measure of how much type information this ingest is missing, but no node keeps this category downstream., It is the largest node type the ingest emits, covering about 65 percent of emitted nodes, and UMLS is by far the largest prefix within it. SemMedDB is built on UMLS Metathesaurus concepts, and RTX-KG2 strips the UMLS semantic types, so any concept KG2 could not map to an external ontology arrives as a bare UMLS CUI that PREFIX_TO_CLASS cannot type., Node normalization resolves all of them. In a full run of this ingest, zero nodes carried biolink:NamedThing after normalization, and they were reassigned to categories such as SmallMolecule, OrganismTaxon, Procedure, Drug, MolecularMixture, Cell, Behavior, PopulationOfIndividualOrganisms, and InformationContentEntity. Those are post-normalization categories and are not assigned by this ingest., Recovering real types at ingest time rather than relying on normalization would require the UMLS semantic types that KG2 strips, which is one of the main arguments for the raw SemMedDB re-ingest described in ingest_info.future_considerations.

Future Modeling Considerations

predicates: The plain-Association edge type still carries 18 predicates in one multivalued list rather than a predicate plus its descendants. Splitting it per predicate was measured against the data and rejected for now: six of those predicates already use all seven subject and object categories, and every one of them has a NamedThing endpoint on a large share of its edges, so per-predicate blocks would repeat the same categories, provenance, and UI explanation 18 times. Revisit if node typing becomes richer than CURIE-prefix matching, since tighter per-predicate category pairings would then be derivable and the split would carry real information.

qualifiers: KG2 object_aspect_qualifier values are passed through as-is and diverge from BTE, which uses activity_or_abundance for stimulates and inhibits where KG2 uses activity. Confirmed as intended per the DINGO call decision of 2026-03-31. Revisit if a canonical cross-source qualifier mapping is adopted.

node_properties: Node names/labels are stripped upstream by KG2, so emitted nodes carry identifiers but no source-provided names. Revisit if a raw SemMedDB re-ingest is adopted (see ingest_info future considerations).

other: Record infores:rtx-kg2 as an aggregator_knowledge_source on every edge. This ingest does not read the NLM distribution. It reads RTX-KG2's projection of it, and KG2 chose the Biolink predicate, assembled publications_info, set the domain_range_exclusion flag, and produced the qualifiers that are passed through here, all of which is aggregation work that the current provenance does not record. Not applied yet because it changes emitted edges and needs a change to build_association_knowledge_sources usage in semmeddb.py, so it is left for a data-modeling decision rather than being folded into this RIG review.

Provenance Information

Contributors: - Adilbek Bazarkulov: code author, domain expertise - Erica Wood: upstream RTX-KG2 SemMedDB processing that produces the ingested edge slice - Evan Morris: code support - Sierra Moxon: data modeling, domain expertise - Matthew Brush: data modeling, domain expertise

Artifacts: - SemMedDB overview: https://lhncbc.nlm.nih.gov/temp/SemRep_SemMedDB_SKR/dbinfo.html - Biolink Model (schema): https://github.com/biolink/biolink-model - KGX documentation: https://kgx.readthedocs.io - Summary of predicates included and filtered and their mappings: https://docs.google.com/spreadsheets/d/12XmPE9eJp3H7yJnwg5Wmx5-BZdXXbiwO02vDRc1BY-c/edit?gid=520297121#gid=520297121