Log In   View a printable version of the current page.
Model Inventory (FP)
Added by Janice Wix, last edited by Janice Wix on Feb 05, 2007  (view change)
Labels: 
(None)


Model Inventory

Overview

This functional part enables an inventory of various types of element to be compiled as explicit objects. These are the typical inventories that would be expected within a facilities management requirement and enable lists of equipment to be maintained together with financial information concerning the items in the inventory.
The major types of inventory that can be captured include:

  • Asset
  • Furniture
  • Space

In addition, user defined inventories can be defined for particular types of element. Such lists may be useful when developing operating and maintenance information.
Information that can be included within an inventory includes:

  • Identifier of the type of inventory (asset, furniture or space)
  • The list of elements (furniture), groups (assets) or spaces that comprise the inventory
  • The organizational unit within whose jurisdiction the inventory falls
  • The identity of the person whose responsibility it is to maintain the inventory
  • The date on which the inventory was last updated
  • The current value of the inventory (totalled from the value of the contents)
  • The initial value of the inventory
    Basic Development of Inventory
    Technically, an inventory is simply a group that is constrained by certain rules to contain only certain other entities. However, unlike a system that can contain many different types of entities that acting together in a 'systematic' way, an inventory generally contains only a single type of entity (even if the entity is devised at a high level of abstraction within the IFC schema).

Thus, the functional part development can be seen as:

  • Identify the entity type
  • Identify all relevant occurrences of that entity type
  • Collect them together into a group
  • Identify the group as an inventory
  • Add further attributes to the inventory.
    Concepts of inventory
    This functional part deals with the following inventory concepts:
  1. Asset inventory model_inventory (asset)
  2. Furniture inventory model_inventory (furnishing_element)
  3. Space inventory model_inventory (space)

Suggested modifications to IFC model and documentation
* Current and original cost values for inventories are explicitly captured. Although this is a legal use of attributes within the model, it is now more normal to expect cost values to be associated with entities via IfcRelAssociatesAppliedValue relationship. Therefore, these attributes should be deprecated and the provision of cost values provided through the fp_associate_cost capability. In this case, CurrentValue and OrginalValue should both be asserted as cost types in IfcCostValue

Results

Inventory of entity of interest is captured together with relevant date, cost and organizational information.

Description Entity/Pset/Functional Part MAN REC OPT
Create the inventory in which entities will be recorded.        

Set the occurrence of the inventory

IfcInventory    

Set the global unique identifier

IfcInventory.GlobalId::IfcGloballyUniqueId    

Apply the owner history IfcInventory.

OwnerHistory::fp_apply_owner_history    

Specify the name of the inventory


Several inventories of the same type may be maintained by an organization so as to be able to identify ownership of items by e.g. department, building part etc.). Each inventory should carry an immediately identifiable name to support this.

IfcInventory.Name::IfcLabel    

Specify a description for the inventory

IfcInventory.Description::IfcText    
Assert the type of inventory        

Select the inventory type


Selection should be made from the predefined list available that includes:

  • Asset Inventory
  • Space Inventory
  • Furniture Inventory
  • User Defined
  • Not Defined
IfcInventory.InventoryType::IfcInventoryTypeEnum    
Concept of asset inventory
From the selection of the type of inventory, the entities that can be collected are controlled by rules to ensure that only those entities that are appropriate are included.
       

Collect the entities that are to be within the inventory


If the value of the inventory type specified above is 'ASSETINVENTORY' then all of the entities in the collection shall be occurrences of IfcAsset.

fp_model_asset (IfcAsset)    
Concept of furniture inventory        

Collect the entities that are to be within the inventory


If the value of the inventory type specified above is 'FURNITUREINVENTORY' then all of the entities in the collection shall be occurrences of IfcFurnishingElement.

fp_model_furniture (IfcFurnishingElement)    
Concept of space inventory        

Collect the entities that are to be within the inventory


If the value of the inventory type specified above is 'SPACEINVENTORY' then all of the entities in the collection shall be occurrences of IfcSpace.

fp_model_space (IfcSpace)    
Assign the inventoried collection to the inventory instance        

Assert the inventory

IfcRelAssignsToGroup.RelatingGroup::IfcInventory    

Assert the collection into the inventory

IfcRelAssignsToGroup.RelatedObjects::IfcAsset
OR
IfcRelAssignsToGroup.RelatedObjects::IfcFurnishingElement
OR
IfcRelAssignsToGroup.RelatedObjects::IfcSpace
   

Assert the type of related objects from the predefined list if required


This value can be used to identify the parent supertype of related objects as e.g. product, group, process, control etc. If the related objects have mixed supertypes, then the value .NOTDEFINED. should be used.


Use .GROUP. for asset inventory

Use .PRODUCT. for furniture or space inventory

IfcRelAssignsToGroup.RelatedObjectsType::IfcObjectTypeEnum    

Assert the identity of the relationship

IfcRelAssignsToGroup.GlobalId::IfcGloballyUniqueId    

Assert the owner history of the relationship

IfcRelAssignsToGroup.OwnerHistory::fp_apply_owner_history    

Specify a name of the relationship

IfcRelAssignsToGroup.Name    

Specify a description of the relationship

IfcRelAssignsToGroup.Description    
Assert additional cost and actor attributes for the inventory        

Define the organizational unit to which the inventory is applicable


Jurisdiction may be either an organization or a person (or both in the case of a person and organization). Typically however, the organization unit is anticipated to be an occurrence of IfcOrganization

IfcInventory.Jurisdiction::fp_select_actor    

Designate the person or persons who are responsible for the inventory


Responsibility is always considered to rest with one or more person. The target datatype of this attribute must therefore be IfcPerson.


Several occurrences of IfcPerson may be designated as having responsibility. There is no upper limit to the number providing that there is at least one.

IfcInventory.ResponsiblePersons::fp_select_actor    

Record the date on which the last update of the inventory was carried out

IfcInventory.LastUpdateDate::IfcCalendarDate    

Record the day component

IfcCalendarDate.DayComponent::IfcDayInMonthNumber    

Record the month component

IfcCalendarDate.MonthComponent::IfcMonthInYearNumberNumber    

Record the year component

IfcCalendarDate.YearComponent::IfcYearNumberNumber    

The following cost information for inventories is explicitly captured. However, these attributes should be deprecated and the provision of cost values provided through the fp_associate_cost capability.


CurrentValue and OrginalValue should both be asserted as cost types in IfcCostValue

       

Make an estimate of the current cost value of the inventory


_For details of attribute settings for IfcCostValue, refer to fp_associate_cost _

IfcInventory.CurrentValue:: IfcCostValue    

Make an estimate of the original cost value of the inventory


For details of attribute settings for IfcCostValue, refer to fp_associate_cost _

IfcInventory.OriginalValue::IfcCostValue    

IFC Entities Required

  • IfcCalendarDate
  • IfcCostValue
  • IfcGroup
  • IfcInventory
  • IfcObject
  • IfcRelationship
  • IfcRelAssigns
  • IfcRelAssignsToGroup
  • IfcRoot

IFC Datatypes Required

  • IfcAppliedValueSelect
  • IfcDayInMonthNumber
  • IfcGloballyUniqueId
  • IfcIdentifier
  • IfcInventoryTypeEnum
  • IfcLabel
  • IfcMonetaryMeasure
  • IfcMonthInYearNumber
  • IfcObjectTypeEnum
  • IfcRatioMeasure
  • IfcText
  • IfcYearNumber

IFC Functions Required

  • IfcValidCalendarDate

IFC Property Sets Required

  • -

IDM Functional Parts Required

  • fp_apply_owner_history
  • fp_associate_cost
  • fp_measure_with_unit
  • fp_model_asset
  • fp_model_furniture
  • fp_model_space
  • fp_select_actor
  • fp_select_date_time

EXPRESS-G

EXPRESS Schema

SCHEMA FP_MODEL_INVENTORY;

  TYPE IfcGloballyUniqueId = STRING (22) FIXED;
  END_TYPE;

  TYPE IfcLabel = STRING;
  END_TYPE;

  TYPE IfcMonetaryMeasure = REAL;
  END_TYPE;

  TYPE IfcRatioMeasure = REAL;
  END_TYPE;

  TYPE IfcText = STRING;
  END_TYPE;

  TYPE IfcInventoryTypeEnum = ENUMERATION OF
    (ASSETINVENTORY,
     SPACEINVENTORY,
     FURNITUREINVENTORY,
     USERDEFINED,
     NOTDEFINED);
  END_TYPE;

  TYPE IfcAppliedValueSelect = SELECT
    (IfcRatioMeasure,
     IfcMonetaryMeasure,
     fp_measure_with_unit);
  END_TYPE;

  TYPE IfcObjectTypeEnum = ENUMERATION OF
    (PRODUCT,
     PROCESS,
     CONTROL,
     RESOURCE,
     ACTOR,
     GROUP,
     PROJECT,
     NOTDEFINED);
  END_TYPE;

  TYPE IfcDayInMonthNumber = INTEGER;
  END_TYPE;

  TYPE IfcMonthInYearNumber = INTEGER;
    WHERE
      WR1 : { 1<= SELF <= 12 };
  END_TYPE;

  TYPE IfcYearNumber = INTEGER;
  END_TYPE;

  ENTITY IfcCostValue
    SUBTYPE OF(IfcAppliedValue);
      CostType  : IfcLabel;
      Condition : OPTIONAL IfcText;
  END_ENTITY;

  ENTITY IfcAppliedValue
    ABSTRACT SUPERTYPE;
      Name           : OPTIONAL IfcLabel;
      Description    : OPTIONAL IfcText;
      AppliedValue   : OPTIONAL IfcAppliedValueSelect;
      UnitBasis      : fp_measure_with_unit;
      ApplicableDate : fp_select_date_time;
      FixedUntilDate : fp_select_date_time;
    WHERE
      WR1 : EXISTS (AppliedValue) OR 
            EXISTS (ValueOfComponents);
  END_ENTITY;

  ENTITY IfcObject
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcRoot);
      ObjectType     : OPTIONAL IfcLabel;
    INVERSE
      HasAssignments : SET OF IfcRelAssigns FOR RelatedObjects;
    WHERE
      WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X2_FINAL.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1;
  END_ENTITY;

  ENTITY IfcRoot
    ABSTRACT SUPERTYPE OF (ONEOF(IfcObject, IfcRelationship));
      GlobalId     : IfcGloballyUniqueId;
      Name         : OPTIONAL IfcLabel;
      Description  : OPTIONAL IfcText;
      OwnerHistory : fp_apply_owner_history;
    UNIQUE
      UR1 : GlobalId;
  END_ENTITY;

  ENTITY IfcRelationship
    SUBTYPE OF(IfcRoot);
  END_ENTITY;

  ENTITY IfcRelAssigns
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcRelationship);
      RelatedObjects     : SET [1:?] OF IfcObject;
      RelatedObjectsType : OPTIONAL IfcObjectTypeEnum;
    WHERE
      WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects);
  END_ENTITY;

  ENTITY IfcRelAssignsToGroup
    SUBTYPE OF(IfcRelAssigns);
      RelatingGroup : IfcGroup;
    WHERE
      WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingGroup :=: Temp)) = 0;
  END_ENTITY;

  ENTITY IfcGroup
    SUBTYPE OF(IfcObject);
    INVERSE
      IsGroupedBy : IfcRelAssignsToGroup FOR RelatingGroup;
  END_ENTITY;

  ENTITY IfcInventory
    SUBTYPE OF(IfcGroup);
      InventoryType      : IfcInventoryTypeEnum;
      CurrentValue       : OPTIONAL IfcCostValue;
      OriginalValue      : OPTIONAL IfcCostValue;
      Jurisdiction       : fp_select_actor;
      ResponsiblePersons : SET [1:?] OF fp_select_actor;
      LastUpdateDate     : IfcCalendarDate;
    WHERE
      WR41 : SIZEOF(QUERY(temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects |
             NOT( ('IFC2X2_FINAL.IFCSPACE' IN TYPEOF (temp)) OR 
             ('IFC2X2_FINAL.IFCASSET' IN TYPEOF (temp)) OR
             ('IFC2X2_FINAL.IFCFURNISHINGELEMENT' IN TYPEOF (temp))
             ))) = 0;
  END_ENTITY;

  ENTITY IfcCalendarDate;
      DayComponent   : IfcDayInMonthNumber;
      MonthComponent : IfcMonthInYearNumber;
      YearComponent  : IfcYearNumber;
    WHERE
      WR21 : IfcValidCalendarDate (SELF);
  END_ENTITY;

  ENTITY fp_apply_owner_history;
  END_ENTITY;

  ENTITY fp_associate_cost;
  END_ENTITY;

  ENTITY fp_measure_with_unit;
  END_ENTITY;

  ENTITY fp_model_asset;
  END_ENTITY;

  ENTITY fp_model_furniture;
  END_ENTITY;

  ENTITY fp_model_space;
  END_ENTITY;

  ENTITY fp_select_actor;
  END_ENTITY;

  ENTITY fp_select_date_time;
  END_ENTITY;

  FUNCTION IfcValidCalendarDate
  (Date : IfcCalendarDate)
  	: LOGICAL;
    IF NOT ({1 <= Date.DayComponent <= 31}) THEN    
      RETURN(FALSE);  
    END_IF;
    CASE Date.MonthComponent OF
      4         : RETURN({ 1<= Date.DayComponent <= 30});
      6         : RETURN({ 1<= Date.DayComponent <= 30});
      9         : RETURN({ 1<= Date.DayComponent <= 30});
      11        : RETURN({ 1<= Date.DayComponent <= 30});    
      2         :    
      BEGIN
        IF (IfcLeapYear(Date.YearComponent)) THEN
          RETURN({ 1<= Date.DayComponent <= 29});      
        ELSE
          RETURN({ 1<= Date.DayComponent <= 28});      
        END_IF;    
      END;
      OTHERWISE : RETURN(TRUE);  
    END_CASE;
  END_FUNCTION;

END_SCHEMA;

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.1.3 Build:#408 Jan 23, 2006) - Bug/feature request - Contact Administrators