UUIDs (related to GUIDs) are used frequently in computing applications. If you don't know these by name, you will probably recognize the 128-bit value in the format in which it is typically rendered:
This is just an example value--these are usually generated on demand to uniquely identify an object. In WS-Discovery and DPWS, UUIDs are recommended as a way to uniquely identify devices, services, clients, and even individual messages.
Although the process for generating UUIDs is well-understood, there is a lot of inconsistency in how they are renedered in Web Services messages. In most cases, these UUIDs are used as URIs, which means we have to supply a scheme (such as "urn:uuid:"--"http:" is another scheme) in addition to the URI content (the UUID).
It's common to see two URI schemes used to describe UUIDs: "uuid:" and "urn:uuid:" So the example UUID above would be either uuid:7673868d-231e-490d-9c4f-19288e7e668d or urn:uuid:7673868d-231e-490d-9c4f-19288e7e668d, depending on which scheme is used. Here's the difference between the two:
There are cases where uuid: is explicitly required (UPnP is one of them) but in all other cases, you should consider whether urn:uuid: is a better alternative. In most Web Services applications, urn:uuid: is preferred--in fact, WSDAPI does additional validation on urn:uuid:-scheme URIs that it does not perform on uuid:-scheme URIs.
So if you're implementing DPWS on your own, or are generating UUIDs to pass into WSDAPI, please use the urn:uuid: form whenever possible.