PublicShow sourceuuid.pl -- Universally Unique Identifier (UUID) Library

The library provides operations on UUIDs. Please consult other sources for understanding UUIDs and the implications of the different UUID versions. Some typical calls are given below:

?- uuid(X).
X = 'ea6589fa-19dd-11e2-8a49-001d92e1879d'.

?- uuid(X, [url('http://www.swi-prolog.org')]).
X = '73a07870-6a90-3f2e-ae2b-ffa538dc7c2c'.
See also
- http://www.ossp.org/pkg/lib/uuid/
- https://en.wikipedia.org/wiki/Universally_unique_identifier
To be done
- Compare UUIDs, extract time and version from UUIDs
Source uuid(-UUID) is det
UUID is an atom representing a new UUID. This is the same as calling uuid(UUID, []). See uuid/2 for options.
Source uuid(-UUID, +Options) is det
Create a new UUID according to Options. The following options are defined:
version(+Versions)
Integer in the range 1..5, which specifies the UUID version that is created. Default is 1.
dns(DNS)
url(URL)
oid(OID)
x500(X500)
Provide additional context information for UUIDs using version 3 or 5. If there is no explicit version option, UUID version 3 is used.
format(+Format)
Representation of the UUID. Default is atom, yielding atoms such as 8304efdd-bd6e-5b7c-a27f-83f3f05c64e0. The alternative is integer, returning a large integer that represents the 128 bits of the UUID.

If SWI-Prolog was not built with the OSSP UUID dependency library a simple Prolog alternative that only implements version 4 random UUIDs is provided. In this case the default version is 4 and the only admissible options are version(4) and format(Format).

Source uuid_property(+UUID, ?Property)
True when UUID is a property of the given UUID. Supported properties are:
version(V)
Return the version of the UUID (1..5)
time(-Stamp)
Time using SWI-Prolog's time stamp (float with seconds since January 1, 1970, UTC). Only for version 1 and 2 UUIDs
To be done
- Implement more properties.
Source is_uuid(@UUID) is semidet
True when UUID is a UUID represented as an atom. It merely validates that the length is 36 characters, there are - at the right place and all other characters are hexadecimal.