XMP
In April 2001 Adobe released the Extensible Metadata Platform or XMP standard. Unlike EXIF and IPTC, which are used to describe specific image attributes, XMP is a standard that defines how other metadata standards (like EXIF, IPTC, Dublin Core, etc.) should be embedded. It is essentially a wrapper around other metadata items. It defines how the metadata items should be embedded and how they should be stored. It uses XML to represent values rather than tags as used by EXIF and IPTC.
XMP also uses RDF (Resource Description Framework). RDF is a set of XML tags that allows data attributes to be defined. These attributes can be extracted from images (and other document types) by search engines to allow users to locate documents based on embedded metadata. Using RDF makes it possible to search for documents of any format rather than just HTML pages. This is the basis of the semantic web.
Since XMP does not define attributes, but rather uses other metadata standards there is no set of tags specific to XMP. Note that the other metadata standards do define attributes. So XMP provides a simple wrapper around other metadata types. A sample XMP document looks like:
<?xpacket begin="~K»¿" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.1-111">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:xap="http://ns.adobe.com/xap/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xapRights="http://ns.adobe.com/xap/1.0/rights/"
tiff:Orientation="1"
tiff:YCbCrPositioning="2"
tiff:XResolution="144/1"
tiff:YResolution="144/1"
tiff:ResolutionUnit="2"
tiff:Make="OLYMPUS OPTICAL CO.,LTD"
tiff:Model="E-20,E-20N,E-20P"
xap:CreatorTool="29-1104 "
xap:MetadataDate="2005-09-07T15:16:34+10:00"
exif:ExifVersion="0.2.1.0"
exif:FlashpixVersion="0.1.0.0"
exif:ColorSpace="1"
exif:PixelXDimension="2560"
exif:PixelYDimension="1920"
exif:DateTimeOriginal="2005-05-11T14:19:42+10:00"
exif:DateTimeDigitized="2005-05-11T14:19:42+10:00"
exif:ExposureTime="1/400"
exif:FNumber="40/10"
photoshop:ICCProfile="sRGB IEC61966-2.1"
photoshop:ColorMode="3"
photoshop:City="Broome"
photoshop:State="WA"
photoshop:Country="Australia"
Iptc4xmpCore:Location="Broome environs">
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<exif:ComponentsConfiguration>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>80</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:Flash
exif:Fired="False"
exif:Return="0"
exif:Mode="0"
exif:Function="False"
exif:RedEyeMode="False"/>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">Strapping camera to Holden for car journey scene.</rdf:li>
</rdf:Alt>
</dc:description>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang="x-default">Copyright, all rights reserved</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">Holden street scene</rdf:li>
</rdf:Alt>
</dc:title>
<xapRights:UsageTerms>
<rdf:Alt>
<rdf:li xml:lang="x-default">Copyrighted Material, no reproduction without prior permission</rdf:li>
</rdf:Alt>
</xapRights:UsageTerms>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
While you may not be able to understand XML a brief glance will show that EXIF (exif:), IPTC (Iptc4xmpCore:), TIFF (tiff:), Dublin Core (dc:) and other metadata standards are embedded. The RDF (rdf:) tags define the XMP structure of the document and are not metadata attribute tags.
As XMP is XML-based it is extensible, meaning that new metadata standards can be embedded as they emerge without changing the XMP specification. It is also possible to define your own XML schema (set of tags for your use) and embed them using XMP.
There are two parts to the definition of a metadata attribute in XMP. The first part is the namespace . This is a label used to define a certain metadata standard. The second part is the XML tag within that namespace. To determine the namespace:tag pair for a metadata attribute you must first locate the tag in the XML. In the above XML let's use <dc:title> as our example. The tag part of this XML is title . The dc: on the front is known as the prefix . To determine the namespace we need to use the prefix to locate the namespace value. Namespaces have a tag of xmlns:prefix=" namespace " . So you may be able to locate the line:
xmlns:dc="http://purl.org/dc/elements/1.1/"
This entry defines the namespace for the dc prefix to be http://purl/dc/elements/1.1/ . Thus to define the title element we need to use the form http://purl/dc/elements/1.1/:title . The reason why the prefix cannot be used is because XML allows any prefix value to be defined for a given namespace (so dc does not have to be the prefix).
Any namespace can be used in XMP, however there are some standards-based predefined namespaces. The table below details them. For a complete description of the XMP standard, please consult the XMP specification.
Namespace |
Metadata Standard |
---|---|
http://purl.org/dc/elements/1.1/ | Dublin Core Schema |
http://ns.adobe.com/xap/1.0/ | XMP Basic Schema |
http://ns.adobe.com/xap/1.0/rights/ | XMP Rights Management Schema |
http://ns.adobe.com/xap/1.0/mm/ | XMP Media Management Schema |
http://ns.adobe.com/xap/1.0/bj/ | XMP Basic Job Ticket Schema |
http://ns.adobe.com/xap/1.0/t/pg/ | XMP Paged-Text Schema |
http://ns.adobe.com/xmp/1.0/DynamicMedia/ | XMP Paged-Text Schema |
http://ns.adobe.com/pdf/1.3/ | Adobe PDF Schema |
http://ns.adobe.com/photoshop/1.0/ | Photoshop Schema |
http://ns.adobe.com/camera-rawsettings/1.0/ | Camera Raw Schema |
http://ns.adobe.com/tiff/1.0/ | EXIF Schema for TIFF Properties |
http://ns.adobe.com/exif/1.0/ | EXIF Schema for EXIF-specific Properties |
http://ns.adobe.com/exif/1.0/aux/ | EXIF Schema for Additional EXIF Properties |
http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/ | IPTC Core Schema |