diff --git a/src/ontology/mondo-ingest.Makefile b/src/ontology/mondo-ingest.Makefile index a02640205..b9caa8682 100644 --- a/src/ontology/mondo-ingest.Makefile +++ b/src/ontology/mondo-ingest.Makefile @@ -170,8 +170,8 @@ $(COMPONENTSDIR)/icd11foundation.owl: $(TMPDIR)/icd11foundation_relevant_signatu remove -T $(TMPDIR)/icd11foundation_relevant_signature.txt --select complement --select "classes individuals" \ remove -T $(TMPDIR)/icd11foundation_relevant_signature.txt --select individuals \ query \ - --update ../sparql/fix-labels-with-brackets.ru \ --update ../sparql/exact_syn_from_label.ru \ + --update ../sparql/fix_icd11_synonyms.ru \ remove -T config/properties.txt --select complement --select properties --trim true \ annotate --ontology-iri $(URIBASE)/mondo/sources/icd11foundation.owl --version-iri $(URIBASE)/mondo/sources/$(TODAY)/icd11foundation.owl -o $@; fi diff --git a/src/sparql/fix_icd11_synonyms.ru b/src/sparql/fix_icd11_synonyms.ru new file mode 100644 index 000000000..d70e75c67 --- /dev/null +++ b/src/sparql/fix_icd11_synonyms.ru @@ -0,0 +1,24 @@ +PREFIX oboInOwl: + +# Fix synonym formatting for ICD11 where (MIM ######) or (OMIM ######) is appended to the synonym + +DELETE { + ?class oboInOwl:hasExactSynonym ?exactSynonym . +} + +INSERT { + ?class oboInOwl:hasExactSynonym ?updatedSynonym . +} + +WHERE { + # Match exact synonyms containing "(MIM ######)" or "(OMIM ###)" + ?class oboInOwl:hasExactSynonym ?exactSynonym . + FILTER(regex(str(?exactSynonym), "\\((MIM \\d{6}|OMIM\\s+#\\d{6})\\)")) + + # Remove the "(MIM ######)" or "(OMIM ###)" part + BIND(REPLACE(STR(?exactSynonym), "\\s*\\((MIM \\d{6}|OMIM\\s+#\\d{6})\\)", "") AS ?updatedSynonym) + + # Ensure the updated synonym is different + FILTER(?exactSynonym != ?updatedSynonym) +} +