<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <link rel="stylesheet" type="text/css" href="../../ifc-styles.css">

    <title>Roots</title>

  </head>

  <body>


<script language="JavaScript1.1" type="text/javascript">
<!--
    parent.index.location.replace("../toc-4.htm#4.1");
//-->
</script>

<h2 class="std">4.1 Roots</h2>
      <p class="std">

        All entities having semantic significance derive from <a href="../ifckernel/lexical/ifcroot.htm">IfcRoot</a>, where instances are identifiable within a data set using a

        compressed globally unique identifier (IFC-GUID). This identifier must never change during the lifetime of an

        object, which allows data to be merged, versioned, or referenced from other locations.

      </p>

      <p>

        Resource-level instances (not deriving from <a href="../ifckernel/lexical/ifcroot.htm">IfcRoot</a>) do not have any identity, such that two instances

        having identical state are considered equal. For example, if an object has coordinates described by an

        <a href="../ifcgeometryresource/lexical/ifccartesianpoint.htm">IfcCartesianPoint</a> instance, another object with the same coordinates may have a separate instance of

        <a href="../ifcgeometryresource/lexical/ifccartesianpoint.htm">IfcCartesianPoint</a> or share the same instance; such difference is a matter of data storage optimization

        and does not imply any semantic relationship. This also implies that non-rooted instances may only exist if

        referenced by at least one rooted instance through either a direct attribute or inverse attribute, or following

        a chain of attribute references on instances.

      </p>

      <p>

        The distinction between rooted and non-rooted (resource-level) entities achieves several goals:

      </p>

      <ul class="ref">

        <li class="std">File size may be reduced by interning (sharing) non-rooted data instances;

        </li>

        <li class="std">Database retrieval may be more efficient by storing non-rooted data local to rooted data

        instances;

        </li>

        <li class="std">Storage size may be reduced by avoiding IFC-GUID storage for items not requiring direct

        retrieval;

        </li>

        <li class="std">Comparisons of differences may be done at a higher level where the context of such change is

        apparent;

        </li>

        <li class="std">Implementations may treat non-rooted data instances as immutable for efficiency or simplified

        usage.

        </li>

      </ul>

<p><a href="../../link/roots.htm" target="_top" ><img src="../../img/permlink.png" style="border: 0px" title="Link to this page" alt="Link to this page"/>&nbsp; Link to this page</a></p>
<p></p>
  </body>
</html>
