We have use-cases where globally-unique identifiers would be very annoying, if not impractical.

The NZETC contains 'originals' (documents which we have digitised) and annotated versions, which are copies of the originals which contain annotated by senior students. If we had to change the globally-unique identifiers in each of these copies, the magnitude of changes to the globally-unique identifiers would often exceed the magnitude of changes due to annotation.

Using file-unique identifiers minimises the need to make changes when a document is forked.



Stuart Yeates
Library Technology Specialist
Victoria University of Wellington
[log in to unmask]

From: Metadata Encoding and Transmission Standard <[log in to unmask]> on behalf of Sigfrid Lundberg <[log in to unmask]>
Sent: Monday, 25 March 2019 10:04:28 PM
To: [log in to unmask]
Subject: [METS] SV: CONTENTIDS example; where are you putting unique external IDs?

Dear Teresa & Robert (and anyone else),

I really think one should stick to having links to files in the file section. I'm well aware of the fact that it requires one of those ID/IDREF constructs in XML and that might be regarded as "difficult", on the other hand: Once implemented that way you a METS object where you could replace that file section while keeping the rest intact -- given that you keep your ID (or xml:id) attributes persistent.

The ID or xml:id of an element in an XML document should be regarded with as much respect as a PURL or a DOI or an URN, changing an xml:id might cause a 404.

From my perspective the best place to put links to components is in mets:FLocat/@xlink:href as in Robert's example.

If you want really unique ID feel free to use UUIDs (making sure that they start with a a-z or A-Z something). I once got into problems using the ordinary generate-id() xpath function as implemented in gnome libxml and it turned out not unique if run multiple times. Therefor I now always a uuid (even if it several bytes too long for the purpose).

If you put those links into the structMap you could just as well use DIDL rather than METS (superior format (again from my point of view).



Fra: Metadata Encoding and Transmission Standard [[log in to unmask]] på vegne af Robert Stephan [[log in to unmask]]
Sendt: 23. marts 2019 13:25
Til: [log in to unmask]
Emne: [METS] AW: CONTENTIDS example; where are you putting unique external IDs?

Dear Teresa,

at Rostock University Library we use Persistent URLs in CONTENTIDS.
In one of our digitization projects we also decided to use UUIDs as object ids.
Since we host our own PURL-Resolver, we could simply append the UUIDs to a URL. For elements of the internal structure we combine the UUID of the object with the ID of the DIV element.

One example METS can be found here:;data=02%7C01%7Cstuart.yeates%40VUW.AC.NZ%7Cf8014161f055474d8f2508d6b2061b5a%7Ccfe63e236951427e8683bb84dcf1d20c%7C0%7C1%7C636892136712600452&amp;sdata=%2Fgb3C6OcalU6tQPlcAOS%2B%2Fag0DxrTNKPLredhRmm2UA%3D&amp;reserved=0

In your case your right. You cannot put the UUID into the ID-attribute. On a conceptual level nobody can forbid the use of  UUID for IDs. If they are gloabally unique they are also unique within the XML document. But technically UUIDs do not comply with the XML-ID-Type (e.g. IDs cannot start with a number and cannot contain „:“) (;data=02%7C01%7Cstuart.yeates%40VUW.AC.NZ%7Cf8014161f055474d8f2508d6b2061b5a%7Ccfe63e236951427e8683bb84dcf1d20c%7C0%7C1%7C636892136712600452&amp;sdata=3vVe6dme4lFdUdTk7bjIO4pEFbG8RKPtOUmWBhBlz6w%3D&amp;reserved=0)

In your case I see several possibilities to convert the UUID-string into a URI:

a)  Output them as URN (wich is a valid URI) by using the prefix: „urn:uuid:“:
The URN-UUID-scheme is definied in;data=02%7C01%7Cstuart.yeates%40VUW.AC.NZ%7Cf8014161f055474d8f2508d6b2061b5a%7Ccfe63e236951427e8683bb84dcf1d20c%7C0%7C1%7C636892136712600452&amp;sdata=UdF6XHF8Gw5EaGyA9DcJ8Zum7MW6gydEECJ5Kpv8a1Y%3D&amp;reserved=0.

e.g.:   urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

b)      Define a local URL-Prefix like;data=02%7C01%7Cstuart.yeates%40VUW.AC.NZ%7Cf8014161f055474d8f2508d6b2061b5a%7Ccfe63e236951427e8683bb84dcf1d20c%7C0%7C1%7C636892136712600452&amp;sdata=mdBhOA%2B6HFukEHfpJGMxg7GlxkKf%2FiiNp5%2FBp4iJ6RY%3D&amp;reserved=0
If you do so, you can „claim“ the UUIDs as definied by your institution and later you could decide to implement your own resolver which leeds to the presentation of the object in your digital library.

c)       Alternatively you can define metadata sections (mets:dmdSec) for each div and link them via dmdid attribute.
Within this metdata section you can use MODS or another metadata schema to store the UUID.

Kind regards,

Robert Stephan

Dipl.-Inf. Robert Stephan
- Digitale Bibliothek -

Universitätsbibliothek Rostock
18051 Rostock
Tel.: +49 (381) 498 8625

[log in to unmask];data=02%7C01%7Cstuart.yeates%40VUW.AC.NZ%7Cf8014161f055474d8f2508d6b2061b5a%7Ccfe63e236951427e8683bb84dcf1d20c%7C0%7C1%7C636892136712600452&amp;sdata=IThq%2FxVShgT%2FHpA%2BBFrcU9reXPHMio3pgYTWxbby01Y%3D&amp;reserved=0

Von: Metadata Encoding and Transmission Standard <[log in to unmask]> Im Auftrag von Teresa Soleau
Gesendet: Samstag, 23. März 2019 00:38
An: [log in to unmask]
Betreff: [METS] CONTENTIDS example; where are you putting unique external IDs?


We are trying to find a place in the METS structMap divs to put UUIDs referring to unique physical objects that have been digitized (like a barcode for the physical object) and CONTENTIDS seems like a good element to use (since the ID element is only supposed to refer to links internal to the METS, right?) but I’d like to see an example of the CONTENTIDS values. The type is URI, not string.

Anyone adding this type of information to your METS documents and could share where you’ve added it?

~Teresa Soleau

Digital Preservation & Library Systems Manager
Collection & Content Management Systems
J. Paul Getty Trust
1200 Getty Center Drive
Los Angeles, CA 90049-1688
[log in to unmask]<mailto:[log in to unmask]>