Associate Document (FP)
Overview
This functional part provides a detailed description of the approaches that may be used in the association of a document to one or more objects or the referencing a stored document by name and location by one or more objects.
Concept: Specify a document
IFC is concerned with identifying information about a document and not the specific content of the document itself. This is the document metadata. This concept describes the metadata that must, should or may be specified for a document and describes how documents may be related to each other to enable identification of:
- multi-part documents
- replacement documents
- document chains
In addition, the concept shows how as well as the document metadata, the document reference may also be specified as in 'Specify a document reference'.
Concept: Specify a document reference
As an alternative to identifying document metadata, IFC also allows for documents to be referenced by name and location. This concept describes how document references should be specified and how more specific references to parts of a document may be set.
Concept: Associate a document
IFC enables documents to be associated with objects so that whatever qualifying, guidance or instruction information is given in the document can be located. This concept describes how documents should be associated with objects.
A document may be associated either with objects that are subtypes of IfcRoot or with objects that define applied values such as a cost value or an environmental impact value.
The subtypes of IfcRoot to which a document can be associated include the various subtypes of IfcObject (project, actors, physical items or products, groups, controls, resources and processes) and property definitions including property sets. Documents may not be associated with relationships; this is controlled by a WHERE rule in the EXPRESS schema.
Where the association of a document is to a set of objects, the set may contain objects of any allowable entity type. There is no requirement for all objects to be occurrences of the same entity.
Results
The association of a document with an object or set of objects is defined.
| Description | Entity/Pset/Functional Part | MAN | REC | OPT |
|---|---|---|---|---|
| Concept: Specify a document | ||||
| Set the document information | ||||
| An identifier that uniquely identifies the document must be asserted. This may be a globally unique identifier determined according to the algorithm used generally in IFC or any other unique identifier. Note that if a document already has an assigned unique identifier determined at its source or by its creator or owner then that identifier may be used to satisfy the attribute. |
IfcDocumentInformation.DocumentId -> IfcIdentifier | |
||
| A name must be asserted for the document. This will generally be the title in the case of a significant document or the heading in the case of a smaller document. |
IfcDocumentInformation.Name -> IfcLabel | |
||
| A description may be given for the document to provide further information about its content. This can be particularly useful for documents whose name is a cryptic reference. Although it is shown as optional in this functional part, it is suggested that users should take advantage of its provision to give further information. |
IfcDocumentInformation.Description -> IfcText | |
||
| The purpose of the document should be asserted. The purpose identifies the role that the document fulfils. This may be a value such as 'Standard', 'Legislation', 'Design Code' etc. or a more detailed textual description of purpose. It is recommended that an agreed list of document purposes should be defined by the user for use as values of this attribute. |
IfcDocumentInformation.Purpose -> IfcText | |
||
| The intended use of the document may be given. This can be used to further qualify the purpose. |
IfcDocumentInformation.IntendedUse -> IfcText | |
||
| The scope of the document may be given. A scope statement may be used to qualify what the document is, and is not, intended to cover. |
IfcDocumentInformation.Scope -> IfcText | |
||
| The creation time of the original version of the document may be given. Note that the creation time may be specified by date (year only or more explicitly by year and/or month and/or day) or time or both. |
IfcDocumentInformation.CreationTime -> fp_select_date_and_time | |
||
| The revision identifier for a document may be given if applicable. Whilst a document may undergo several revisions, it may be relevant for an object to be associated only with the current document in which case only the document itself needs to be identified. However, where the document revision is significant, it should be asserted. |
IfcDocumentInformation.Revision -> IfcLabel | |
||
| The date and time of the last revision may also be given. Note that the last revision time may be specified by date (year only or more explicitly by year and/or month and/or day) or time or both. Note also that the revision time may be asserted if, and only if, a revision identifier is asserted. |
IfcDocumentInformation.LastRevisionTime -> fp_select_date_and_time | |
||
| The document owner may be asserted. This is the person or organization having overall responsibility for the document and who carries out maintenance and revision. |
IfcDocumentInformation.DocumentOwner -> fp_select_actor | |
||
| The identities of the document editors may be asserted. This may be the editors of the last revision or a cumulative list of editors over the life of the document. Note that it is possible to identify many editors for a document. |
IfcDocumentInformation.Editors -> fp_select_actor | |
||
| The dates from which and to which the document if valid may be asserted. These dates may be given together or individually; there is no requirement to assert one date with another. Note that validity dates are specified using the date/time selection IfcCalendarDate which may be year only or more explicitly by year and/or month and/or day). Note that dates are checked for validity in terms of the days in a given month and for leap year within the EXPRESS version of the IFC schema. |
IfcDocumentInformation.ValidFrom -> fp_select_date_time IfcDocumentInformation.ValidUntil -> fp_select_date_time Select IfcCalendarDate YearComponent must be asserted MonthComponent may be asserted DayComponent may be asserted |
|
||
| A confidentiality level may be assigned to a document. The value is selected from a predefined range. The range also allows for selection of a user defined confidentiality level. This value cannot be set in the current IFC release. |
IfcDocumentInformation.Confidentiality -> IfcDocumentConfidentialityEnum | |
||
| The current status of a document may be defined. The status value is selected from a predefined range. |
IfcDocumentInformation.Status -> IfcDocumentStatusEnum | |
||
| For a particular document, as well as the document information being given, indirect reference to further documents may be given. Refer to the concept 'Specify a document reference' for further information in required attributes for document references. Note that a document may also be implicitly referenced by location information. See details for document referencing below. Note also that more than one reference may be given for a particular set of document information. This may be relevant for copies of a document stored in multiple locations. |
IfcDocumentInformation.DocumentReferences -> IfcDocumentReference | |
||
| If the document is stored in an electronic format, this should be asserted. Note that if this value is asserted in the document information then a minimum of either the file extension or the MIME content type (below) must be also be asserted. |
IfcDocumentInformation.ElectronicFormat -> IfcDocumentElectronicFormat | |
||
| The file extension may be asserted for a document stored in electronic format. This may be any valid file extension. Note that if document storage in electronic format is asserted then either this attribute or the MIMEContentType attribute must be asserted. |
IfcDocumentElectronicFormat.FileExtension -> IfcLabel | |
||
| For a file type having published MIME type information (by the World Wide Web Consortium), the main MIME type may be asserted. MIME types are published by the World Wide Web Consortium (W3C) and can be found by reference to their web site. Note that if document storage in electronic format is asserted then either this attribute or the FileExtension attribute must be asserted. |
IfcDocumentElectronicFormat.MimeContentType -> IfcLabel | |
||
| For a file type having a published MIME type the MIME subtype may be asserted. MIME subtypes are published by the World Wide Web Consortium (W3C) and can be found by reference to their web site. |
IfcDocumentElectronicFormat.MimeSubtype -> IfcLabel | |
||
| Define the relationship between document information Where document information is given, a document may be asserted as having a relationship with another document. For instance, where an associated document has appendices pub lished separately, a relationship may be declared between the associated document and the appendices |
||||
| Assert the master document in the relationship This is the document that is actually associated with an object. |
IfcDocumentInformationRelationship.RelatingDocument -> IfcDocumentInformation | |
||
| Assert the subsequent document in the relationship. Note that a relationship may identify several subsequent documents. |
IfcDocumentInformationRelationship.RelatedDocuments -> IfcDocumentInformation | |
||
| The type of relationship between the master document and subsequent documents may be asserted. Although optional in the IFC schema, it is recommended that it should be used to qualify the relationship. Relationship types should be set by the user in the context of the document use e.g. where a document revision replaces a previous revision but information about the prior revision is to be retained. |
IfcDocumentInformationRelationship.RelationshipType -> IfcLabel | |
||
| Concept: Specify a document reference | ||||
| Set the document reference | ||||
| The location of the document may be given. This can be either human readable or computer interpretable. An electronic location is normally given as a web interpretable URL location string; however other ways of accessing external references may be established by agreement. Note that for a document reference that is asserted for IfcDocumentInformation.DocumentReferences, each reference must assert the location. If the document reference is associated indirectly, the IFC schema indicates that this attribute need not be asserted. However, it is strongly recommended that it is asserted. |
IfcDocumentReference.Location | |
||
| An identifier for a specific item referenced within a document may be asserted. This identifier can provide an interpretable pointer into the document. Although the full definition within the IFC schema suggests that this is a computer interpretable pointer, it may alternatively be used as a human interpretable pointer for documents that are not stored electronically (such as a section, page of paragraph reference). |
IfcDocumentReference.ItemReference | |
||
| A name may also be given to further specify the reference. This can provide a human readable identifier for the document reference such as the document name. For a document reference is associated indirectly, this attribute must be asserted. For a document reference that is asserted for IfcDocumentInformation.DocumentReferences, the IFC schema indicates that this attribute need not be asserted. However, it is strongly recommended that it is asserted. |
IfcDocumentReference.Name | |
||
| Concept: Associate a document | ||||
| Select the concept to be associated A document may be associated with an object or set of objects either directly by providing information about the document or indirectly by providing a reference to the document and its location. Direct association uses the concept 'Specify a document' Indirect association uses the concept 'Specify a document reference' |
Concept: Specify a document IfcDocumentSelect -> IfcDocumentInformation Concept: Specify a document reference IfcDocumentSelect -> IfcDocumentReference |
|
||
| For objects that are subtypes of IfcRoot Set the relationship for the object(s) to which the document is to be associated. Note that the object(s) need not all be of the same entity type. A WHERE rule on the entity IfcRelAssociates prevents the association of a document to a relationship. Therefore, the object(s) must be subtypes of either IfcObject or IfcPropertyDefinition. Note that IfcObject and IfcPropertyDefinition are implied in this functional part. It is assumed that the object(s) will exist prior to associating the document. Therefore their attributes capturing unique identifier, owner history, name and description will already have been asserted. |
IfcRelAssociatesDocument.RelatedObjects -> IfcRoot <subtypes> | |
||
| If a document reference is selected: | ||||
| Set the relationship for the document reference that is to be associated. | IfcRelAssociatesDocument.RelatingDocument -> IfcDocumentReference | |
||
| If a document is selected: | ||||
| Set the relationship for the document that is to be associated. | IfcRelAssociatesDocument.RelatingDocument -> IfcDocumentInformation | |
||
| For objects that are subtypes of IfcAppliedValue Set the relationship for the cost value(s) or environmental impact value(s) to which the document is to be associated. Note that in this relationship, the objects with which the document is associated must be either all instances of IfcCostValue or all instances of IfcEnvironmentalImpactValue. Cost values and environmental impact values should not be mixed in the same set of related objects. |
IfcReferencesValueDocument.ReferencingValues -> IfcAppliedValue Where the subtype of IfcAppliedValue must be one of: IfcCostValue IfcEnvironmentalImpactValue |
|
||
| If a document reference is selected: | ||||
| Set the relationship for the document reference that is to be associated. | IfcReferencesValueDocument.ReferencedDocument -> IfcDocumentReference | |
||
| If a document is selected: | ||||
| Set the relationship for the document that is to be associated. | IfcReferencesValueDocument.ReferencedDocument -> IfcDocumentInformation | |
||
| A name may be asserted for relationship if required. | IfcReferencesValueDocument.Name -> IfcLabel | |
||
| A description may be asserted for relationship if required. | IfcReferencesValueDocument.Description -> IfcText | |
- IFC Entities Required
- IfcAppliedValue
- IfcDocumentElectronicFormat
- IfcDocumentInformation
- IfcDocumentInformationRelationship
- IfcDocumentReference
- IfcExternalReference
- IfcReferencesValueDocument
- IfcRelationship
- IfcRelAssociates
- IfcRelAssociatesDocument
- IfcRoot
- IFC Datatypes Required
- IfcDocumentConfidentialityEnum
- IfcDocumentSelect
- IfcDocumentStatusEnum
- IfcGloballyUniqueId
- IfcIdentifier
- IfcLabel
- IfcText
- IFC Functions Required
- -
- IDM Functional Parts Required
- fp_apply_owner_history
- fp_select_actor
- fp_select_date_and_time
EXPRESS-G Schema

EXPRESS Schema
SCHEMA FP_ASSOCIATE_DOCUMENT;
TYPE IfcGloballyUniqueId = STRING (22) FIXED;
END_TYPE;
TYPE IfcIdentifier = STRING;
END_TYPE;
TYPE IfcLabel = STRING;
END_TYPE;
TYPE IfcText = STRING;
END_TYPE;
TYPE IfcDocumentConfidentialityEnum = ENUMERATION OF
(PUBLIC,
RESTRICTED,
CONFIDENTIAL,
PERSONAL,
USERDEFINED,
NOTDEFINED);
END_TYPE;
TYPE IfcDocumentStatusEnum = ENUMERATION OF
(DRAFT,
FINALDRAFT,
FINAL,
REVISION,
NOTDEFINED);
END_TYPE;
TYPE IfcDocumentSelect = SELECT
(IfcDocumentReference,
IfcDocumentInformation);
END_TYPE;
ENTITY IfcExternalReference
ABSTRACT SUPERTYPE;
Location : OPTIONAL IfcLabel;
ItemReference : OPTIONAL IfcIdentifier;
Name : OPTIONAL IfcLabel;
WHERE
WR1 : EXISTS(ItemReference) OR EXISTS(Location) OR EXISTS(Name);
END_ENTITY;
ENTITY IfcDocumentReference
SUBTYPE OF(IfcExternalReference);
INVERSE
ReferenceToDocument : SET [0:1] OF IfcDocumentInformation FOR DocumentReferences;
WHERE
WR1 : EXISTS(Name) XOR EXISTS(ReferenceToDocument[1]);
END_ENTITY;
ENTITY IfcDocumentInformation;
DocumentId : IfcIdentifier;
Name : IfcLabel;
Description : OPTIONAL IfcText;
DocumentReferences : OPTIONAL SET [1:?] OF IfcDocumentReference;
Purpose : OPTIONAL IfcText;
IntendedUse : OPTIONAL IfcText;
Scope : OPTIONAL IfcText;
Revision : OPTIONAL IfcLabel;
DocumentOwner : OPTIONAL fp_select_actor;
Editors : OPTIONAL SET [1:?] OF fp_select_actor;
CreationTime : OPTIONAL fp_select_date_and_time;
LastRevisionTime : OPTIONAL fp_select_date_and_time;
ElectronicFormat : OPTIONAL IfcDocumentElectronicFormat;
ValidFrom : OPTIONAL fp_select_date_and_time;
ValidUntil : OPTIONAL fp_select_date_and_time;
Confidentiality : OPTIONAL IfcDocumentConfidentialityEnum;
Status : OPTIONAL IfcDocumentStatusEnum;
INVERSE
IsPointedTo : SET OF IfcDocumentInformationRelationship FOR RelatedDocuments;
IsPointer : SET [0:1] OF IfcDocumentInformationRelationship FOR RelatingDocument;
END_ENTITY;
ENTITY IfcDocumentElectronicFormat;
FileExtension : OPTIONAL IfcLabel;
MimeContentType : OPTIONAL IfcLabel;
MimeSubtype : OPTIONAL IfcLabel;
WHERE
WR1 : EXISTS(FileExtension) OR EXISTS(MimeContentType);
END_ENTITY;
ENTITY IfcDocumentInformationRelationship;
RelatingDocument : IfcDocumentInformation;
RelatedDocuments : SET [1:?] OF IfcDocumentInformation;
RelationshipType : OPTIONAL IfcLabel;
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : fp_apply_owner_history;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
UNIQUE
UR1 : GlobalId;
END_ENTITY;
ENTITY IfcRelationship
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcRoot);
END_ENTITY;
ENTITY IfcRelAssociates
SUBTYPE OF(IfcRelationship);
RelatedObjects : SET [1:?] OF IfcRoot;
WHERE
WR1 : SIZEOF(QUERY(temp <* RelatedObjects |
NOT(('IFC2X2_FINAL.IFCOBJECT' IN TYPEOF(temp))
OR ('IFC2X2_FINAL.IFCPROPERTYDEFINITION' IN TYPEOF(temp)))
)) = 0;
END_ENTITY;
ENTITY IfcRelAssociatesDocument
SUBTYPE OF(IfcRelAssociates);
RelatingDocument : IfcDocumentSelect;
END_ENTITY;
ENTITY IfcAppliedValue
ABSTRACT SUPERTYPE;
INVERSE
ValuesReferenced : SET OF IfcReferencesValueDocument FOR ReferencingValues;
WHERE
WR1 : EXISTS (AppliedValue) OR
EXISTS (ValueOfComponents);
END_ENTITY;
ENTITY IfcReferencesValueDocument;
ReferencedDocument : IfcDocumentSelect;
ReferencingValues : SET [1:?] OF IfcAppliedValue;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
END_ENTITY;
ENTITY fp_apply_owner_history;
END_ENTITY;
ENTITY fp_select_actor;
END_ENTITY;
ENTITY fp_select_date_and_time;
END_ENTITY;
END_SCHEMA;
Examples of Associating Documents
Example 1: Associate a standard with a project
The following shows how a national standard that governs the manufacture and use of copper tubes may be applied generally to a project. The standard:
- has the identifier 'BS EN 1057'
- has the name 'Copper and copper alloys. Seamless, round copper tubes for water and gas in sanitary and heating applications'
- has the purpose 'Standard for copper pipes used in domestic water services'
- is owned by 'British Standards Institution' or 'BSI'
- was last revised in '1996'.
Detailed information about the project is not specified. For the purpose of this example, it is sufficient to identify that a project exists.
Alternative associations for the document in this case are:
- instances of IfcFlowSegment; every instance of IfcFlowSegment would have been included in the set of related objects.
- instances of IfcFlowSegmentType; there would be one type instance for each size of copper tube used and there would have been several related objects in the set.

/* ownership information*/
#2=IFCOWNERHISTORY(...);
/* specifying the project */
#1=IFCPROJECT('abcdefghijklmnopqrst1',#2,'Tromso College','IFC Test Project',$,$,$,(#10),#11);
#10=IFCREPRESENTATIONCONTEXT(...);
#11=IFCUNITASSIGNMENT(...);
/* specifying the document */
#311=IFCDOCUMENTINFORMATION('BS EN 1057','Copper and copper alloys.
Seamless, round copper tubes for water and gas in sanitary and heating
applications',$,'Standard for copper pipes used in domestic water services',$,$,$,'BSI',$,$,#4003,$,#4004,$,.PUBLIC.,.REVISION.);
/* association of the document with the project */
#1000=IFCRELASSOCIATESDOCUMENT('abcdefghijklmnopqrst1000',#2,$,$,(#1),#311);
/* specify the revision and valid from dates */
#4003=IFCCALENDARDATE($,$,1996);
#4004=IFCCALENDARDATE(15,6,1996);
Example 2: Specify a Document Information Relationship
In this example, two appendices are locally defined by a company with the name 'MyCompany' for use in conjunction with BS EN 1057. Appendix A lists the sizes of tube that the company approve for use whilst Appendix B sets out acceptable jointing methods.

/* specifying the documents */
#311=IFCDOCUMENTINFORMATION('BS EN 1057',' Copper and copper alloys. Seamless,
round copper tubes for water and gas in sanitary and heating applications',$,'
Standard for copper pipes used in domestic water services',$,$,$,'BSI',$,$,#4003,$,#4004,$,.PUBLIC.,.REVISION.);
#321=IFCDOCUMENTINFORMATION('Local 1057 Appendix A','Table of Sizes',$,$,$,$,$,'MyCompany',$,$,$,$,$,$,$,$);
#322=IFCDOCUMENTINFORMATION('Local 1057 Appendix B','Jointing Methods',$,$,$,$,$,'MyCompany',$,$,$,$,$,$,$,$);
/* making the relationship between the documents */
#1001=IFCDOCUMENTINFORMATIONRELATIONSHIP(#311,(#321,#322),'Appendices');
Example 3: Specify a Document Reference
In this example, the two appendices to the standard are referenced directly from the project using their name and location instead of being included in the document information relationship. The example assumes that the documents are stored in electronic format which is accessible via the web.
Because the relationship normally assumes that one document applies to multiple objects, this example shows that two relationship occurrences must be used to deal with the fact that two documents are being related to one object.

/* ownership information*/
#2=IFCOWNERHISTORY(...);
/* specifying the project */
#1=IFCPROJECT('abcdefghijklmnopqrst1',#2,'Tromso College','IFC Test Project',$,$,$,(#10),#11);
#10=IFCREPRESENTATIONCONTEXT(...);
#11=IFCUNITASSIGNMENT(...);
/* specifying the document references*/
#331=IFCDOCUMENTREFERENCE('http://www.mycompany.qq',$,'MyCompany Local 1057 Appendix A');
#332=IFCDOCUMENTREFERENCE('http://www.mycompany.qq',$,'MyCompany Local 1057 Appendix B');
/* association of the document references with the project */
#1001=IFCRELASSOCIATESDOCUMENT('abcdefghijklmnopqrst1001',#2,$,$,(#1),#331);
#1002=IFCRELASSOCIATESDOCUMENT('abcdefghijklmnopqrst1002',#2,$,$,(#1),#332);
Example 4: Associating a Document to Cost Values
The principle of associating a document to a cost value or environmental impact value is similar to applying documents to general objects. However, since cost value is defined within the resource layer of the IFC technical architecture, a different relationship class must be used sine IfcRelAssociatesDocument does not apply. Instead, IfcReferencesValueDocument is used.
This example shows how cost values are related to a document. The document is the published price list for copper tube for MyCompany. In the diagram, the attributes for IfcCostValue are not fully expanded but the code sample shows a complete breakdown for the list price of copper tube priced in US dollars per metre.

/* specifying the document references*/
#333=IFCDOCUMENTREFERENCE('http://www.mycompany.qq/pricelist.htm',$,'Copper Tube Price List');
/* instances of IfcCostValue */
#10001=IFCCOSTVALUE($,$,#11001,#11002,$,$,'List Price',$);
#10002=IFCCOSTVALUE($,$,#11011,#11002,$,$,'List Price',$);
#10003=IFCCOSTVALUE($,$,#11021,#11002,$,$,'List Price',$);
/* association of the cost values with the document references */
#10501=IFCREFERENCESVALUEDOCUMENT=(#333,(#10001,#10002,#10003),$,$);
/* instances of IfcMeasureWithUnit that define the actual values and currency*/
#11001=IFCMEASUREWITHUNIT(7.76,#11501);
#11002= IFCMEASUREWITHUNIT(1,#11601);
#11011=IFCMEASUREWITHUNIT(9.76,#11501);
#11021=IFCMEASUREWITHUNIT(11.76,#11501);
/* unit specifications for applied value and unit basis */
#11501=IFCMONETARYUNIT(.USD.);
#11601=IFCSIUNIT($,.METRE.);