The jpeg-xmp package contains the C source of four programs:

wrjpgxmp
insert XMP metadata into a JPEG file
wrjpgapp
insert application data into a JPEG file
rdjpgxmp
extract XMP metadata from a JPEG file
rdjpgapp
extract application data from a JPEG file

The xmptool package contains one program:

xmptool
query, insert or delete a property in an XMP file

jpegxmp is a Bash shell script:

jpegxmp
Set or modify common metadata properties in JPEG files

addxmp is also a Bash shell script:

addxmp
Convert (mostly Dublin Core) metadata described in a simple text file to XMP and insert it into a series of JPEG files.

The xmp-scan package contains one C file:

xmp-scan
Find XMP in arbitrary files by scanning for the magic string that starts an XMP packet. xmp-scan can be used to extract XMP when no dedicated program is available (such as rdjpgxmp for JPEG) or when the format of a file is unknown.

Use rdjpgxmp to extract the XMP data from a JPEG/JFIF file, use xmptool to query or update that XMP data, then use wrjpgxmp to put the XMP data back, e.g.: rdjpgxmp file.jpg | xmptool -w 'http...property' 'value' | wrjpgxmp file.jpg >newfile.jpg. The jpegxmp script is a wrapper around these to make the most common operations easier.

The addxmp script makes it easy to describe a series of JPEG images that share metadata in a simple text file. Metadata that is the same for several images only needs to be entered in the text file once. Addxmp uses the other tools to convert the text to XMP and insert it into the JPEG images. It can also extract existing metadata from images into such a text file for easy editing.

For more info on XMP/RDF, see: