@@ -77,17 +77,22 @@ UPSTREAM_VERSIONS_SPARQL = $(SPARQLDIR)/get-upstream-version.sparql
7777# transitively depends on every mirror via the `$(MIRRORDIR)/%.owl: mirror-%`
7878# pattern rule, and (unlike $(IMPORT_FILES)) it doesn't cycle back through
7979# $(IMPORTSEED) → $(PRESEED) → $(SRCMERGED).
80- UPSTREAM_VERSIONS_DEPS = $(MIRRORDIR ) /merged.owl
80+ UPSTREAM_VERSIONS_DEPS = $(MIRRORDIR ) /merged.owl $( filter-out $( COMPONENTSDIR ) /upstream-versions.owl, $( OTHER_SRC ) )
8181
8282.PHONY : upstream_versions
8383upstream_versions : $(ONT ) -upstream-versions.tsv $(COMPONENTSDIR ) /upstream-versions.owl
8484
8585.PHONY : $(ONT ) -upstream-versions.tsv
8686$(ONT ) -upstream-versions.tsv : $(UPSTREAM_VERSIONS_SPARQL ) | $(UPSTREAM_VERSIONS_DEPS ) $(TMPDIR )
8787 @printf " source\tontologyIRI\tversionIRI\tversionInfo\n" > $@
88- @for f in $(TMPDIR ) /mirror-* .owl; do \
88+ @for f in $(TMPDIR ) /mirror-* .owl $( TMPDIR ) /component-download- * .owl.owl ; do \
8989 [ -s " $$ f" ] || continue ; \
90- src=$$(basename "$$f" .owl) ; src=$$ {src#mirror-}; \
90+ base=$$(basename "$$f") ; \
91+ case " $$ base" in \
92+ mirror-* ) src=$$ {base#mirror-}; src=$$ {src%.owl} ;; \
93+ component-download-* ) src=$$ {base#component-download-}; src=$$ {src%.owl.owl} ;; \
94+ * ) continue ;; \
95+ esac ; \
9196 out=$(TMPDIR ) /upstream-version-$$ src.tsv; \
9297 $(ROBOT ) query -i " $$ f" -f tsv --query $< " $$ out" > /dev/null 2>&1 || continue ; \
9398 tail -n +2 " $$ out" \
@@ -96,6 +101,28 @@ $(ONT)-upstream-versions.tsv: $(UPSTREAM_VERSIONS_SPARQL) | $(UPSTREAM_VERSIONS_
96101 sub(/^" /," " ,$$ i); sub(/" $$ /," " ,$$ i) } } \
97102 $$ 1! =" " {print src,$$ 1,$$ 2,$$ 3}' >> $@; \
98103 done
104+ @# Pass through Mondo's own source-versions.tsv for transitive upstreams
105+ @# (doid, ncit, omim, ordo, icd*) — keyed off the mondo versionIRI we
106+ @# just captured, so the manifest reflects exactly the Mondo release
107+ @# that was merged into this phenio. Skip rows whose source we already
108+ @# have directly (direct ingest wins over transitive).
109+ @mondo_ver=$$(awk -F'\t' '$$1=="mondo"{print $$3; exit}' $@ ) ; \
110+ date=$$(printf '%s' "$$mondo_ver" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}' | head -1 ) ; \
111+ if [ -n " $$ date" ]; then \
112+ url=" https://github.com/monarch-initiative/mondo/releases/download/v$$ date/source-versions.tsv" ; \
113+ if curl -sLf --retry 3 --max-time 60 " $$ url" -o $( TMPDIR) /mondo-source-versions.tsv; then \
114+ awk -F' \t' ' NR>1{print $$1}' $@ | sort -u > $(TMPDIR ) /upstream-versions-have.txt; \
115+ tail -n +2 $(TMPDIR ) /mondo-source-versions.tsv \
116+ | awk ' BEGIN{FS=OFS="\t"} \
117+ { for (i=1; i< =NF; i++) { sub(/^< /," " ,$$ i); sub(/> $$ /," " ,$$ i); \
118+ sub(/^" /," " ,$$ i); sub(/" $$ /," " ,$$ i) } } \
119+ $$ 1! =" " ' \
120+ | awk -F' \t' ' NR==FNR{seen[$$1]=1; next} !seen[$$1]' \
121+ $(TMPDIR ) /upstream-versions-have.txt - >> $@ ; \
122+ else \
123+ echo " WARN: could not fetch $$ url; mondo-transitive sources will be absent" >&2 ; \
124+ fi ; \
125+ fi
99126 @rows=$$(($$(wc -l < $@ ) - 1 ) ); \
100127 if [ $$ rows -eq 0 ]; then \
101128 echo " ERROR: $@ produced zero data rows. Mirror files in $( TMPDIR) may not be ready." >&2 ; \
0 commit comments