This would be a good example to include, as the limitation here isn’t the dep URLs (s/pkg/dep gives a valid concrete dep URL), it’s the lack of “A or B or C” dependency declarations outside virtual package definitions.
Without adding new syntax or semantics, we could potentially define a conventional approach to that situation via external extras (using the same target platform IDs as are defined for dep URLs):
[external.optional-dependencies]
ext-alpine = [
"dep:apk/alpine/ffmpeg-libs",
]
ext-debian = [
"dep:deb/debian/ffmpeg",
]
ext-fedora = [
"dep:rpm/fedora/ffmpeg-free",
]
ext-ubuntu = [
"dep:deb/ubuntu/ffmpeg",
]
Scoping by packaging manager may also be a reasonable idea for package names that are consistent across a distribution family (with the tools replacing the platform ID if necessary):
[external.optional-dependencies]
ext-apk = [
"dep:apk/alpine/ffmpeg-libs",
]
ext-deb = [
"dep:deb/debian/ffmpeg",
]
ext-rpm = [
"dep:rpm/fedora/ffmpeg-free",
]
As long as the platform specific converters agree on the name of the extra (or extras) to use for that platform, this would work (since package manager specific dep URLs use the same paths as pkg URLs, just different version specification syntax)
Edit: it does occur to me that this is duplicating info that is present in the concrete dep URLs already (the target ecosystem and platform IDs). So perhaps the simpler convention is to say that converters should ignore concrete external dependency declarations for unrelated ecosystems, unless they have an applicable non-Python-specific PURL translation registry they can use to make them applicable.
Potential wording: “Package conversion tools for specific platforms SHOULD ignore concrete external dependencies for other ecosystems and platforms that they do not recognise. Package conversion tools MAY map such external dependencies to the relevant external dependency declarations for their target platform if mapping data is available (while, at time of writing, we are not aware of any such mappings being generally available, it’s possible that tools may choose to develop such mappings if concrete external dependency declarations are used in popular packages).”