GUIDs are the key

In my previous post, The impossible problem of naming things, I mentioned how GUIDs are a great way to make a document unique. In fact, they are a great reference for any thing in construction and can form the backbone of integrated systems. But first…

What is a GUID?

A Globally Unique IDentifier (GUID) is a 128 bit random integer.

Sometimes pronounced “GOO-IDD” or refered to as Universally Unique IDentifier (UUID).

In layman’s terms, a bit is a 1 or 0 so a GUID is a list of 128 1s and 0s. A full example would be:


This is in binary (base 2). If converted to the more familiar decimal (base 10) that we use in everyday life the number would look similar to:


Which is a staggeringly large number. This is still a very awkward way of writing this number so for convinience sake it is often displayed as hexadecimal (base 16) and formatted into groups of 8, 4, 4, 4, and 12 characters, like below:


GUIDs are used extensively in all sorts of databases and data environment and the above may have a familiar looking structure.

In IFC the GUID (under the attribute name GlobalId) is converted to base 64 which looks like this:


What’s important is that all these are the same underlying random number.

Note: The hexadecimal (base 16) version is not case sensative, but the IFC base 64 version is. Some software, such as Navisworks, Excel, and SQL Server have search functions that are not always case sensative so may pick up the wrong IFC GUID.

There is a specification that details how to generate these random numbers, but that is way beyond the scope of this blog post.

Phew! That’s a enough geeky computer science for now, let’s get back to construction…

Back to Reality

One of the biggest differences between BIM tools like Revit, ArchiCAD, and Tekla and the traditional CAD software is the idea that you’re modelling actual objects and we can create links, references, and constraints.

That’s all well and good when the object is within one piece of software only, but increasingly this is not the case.

And despite all the marketing, no tool or platform is suitable for everything. Inevitably data about a particular object will get spread across many pieces of software.

The challenge then becomes, how do we connect together objects between each software?

For example, we have a 3D model with a piece of rebar in it. Often this is all anyone thinks about when it comes to BIM. The 3D model describes its geometry and some specification properties. But let’s have a think where else that rebar is actually referenced…

  1. Project plan
  2. Procurement
  3. Accounts and finance
  4. Delivery management
  5. Cost analysis
  6. Employee work time tracking
  7. Manufacturing traceability
  8. On site material tracking
  9. Fabrication models
  10. Structural analysis
  11. Environmental impact
  12. Quality records
  13. O&M documents
  14. Productivity tracking

How are on earth are we going to be able to track a simple piece of rebar through all those systems and integrate the data together?

What we need is a common and constant way to refer to objects.

Traditionally tags, marks, or ref with values like “R01” for Radiator 01, or recently more sophisticated values such as 01-Z1-55-UR-01 have been used. However, as previously discussed naming things is incredibly difficult. And it’s very possible the tag for a particular object may change at some point.

This is where GUIDs come in!

When an object is created it should have a GUID assigned. This GUID will be the only attribute that we can garauntee to be effectively 100% unique and constant throughout the life cycle of that object.

When integrating systems to create tools or data analytics, you would use the GUID as your common value (primary key) between multiple systems.

To extend the golden thread metaphor then surely the GUIDs are the sewing needles that tie the data together.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s