There really isn't a centralized resource that you can just "query" to get at this information. Rather it's maintained in a couple of text files that you can either manually parse if you know where to look or you can use the tool
xdg-mime to construct the relationships.
Say I have a PNG file on disk. I can find out its MIME type like this.
$ xdg-mime query filetype DSCN4747_DSCN4061_800x600.PNG
I can then query
xdg-mime asking it what the association is for this particular MIME type.
$ xdg-mime query default image/png
Looking through the
mimeinfo.cache on my system I can find out a bit more about associations for a given MIME type using the following command:
$ grep 'image/png' /usr/share/applications/mimeinfo.cache
The desktop definitions in the
mimeinfo.cache file are stored here:
$ locate shotwell-viewer.desktop
And it contains the name of the executables you're asking about:
$ grep 'Exec=' !$
grep 'Exec=' /usr/share/applications/shotwell-viewer.desktop
Often times if I just want to launch something, I'll use the tool
xdg-open <file|URL> to open a file rather than go and launch the app first, and then open the file.