# IFC Classification for FOSS HBIM: Open Issues and a Schema Proposal for Cultural Heritage Assets
## 2 IFC Customization and Proposal for Heritage Assets
### Schema Proposal for Heritage Assets  
Definitions of historical architectural entities, as well as the parametric family classification, inside the BuildingSMART schemas and standards is therefore the main ongoing research field for HBIM purposes. By accessing the Python source code of entities, the modification and implementation of FreeCAD IFC classification is nevertheless possible. The main idea has been the demonstrative extension of IFC entities by using particular historical architecture peculiarities derived from building archaeology purposes, even if they are not provided with the integration inside the IFC2x3 and IFC4.1 standard schema. Due to compatibility and interoperability issues regarding the lack of cultural heritage asset IFC standards, this kind of implementation is only related to the FreeCAD environment and it should be considered a proposal as well as a demonstrative modification of _roles_ and _types_ classification. As mentioned before, this classification is defined as _\"ifcRole\"_ on version 0.17-0.18 and _\"ifcType\"_ on 0.19 pre-release version by FreeCAD developers. Figure 1: Proposal extension of _ifcRole/ifcType_ related to Python files of ARCH elements inside FreeCAD. Figure 2: Access and modification of ArchWall.py Python file by using FreeCAD 0.17: highlighted in green are customized and possible roles for wall entity and related attributes below. This proposed hierarchical schema of ARCH Workbench of FreeCAD has been designed for including custom entities (objects definitions) to existing default modules: they have been considered as roles of ARCH modules as ifcWall, ifcWindow, and so on. Exactly as ifcWall and other entities inherit features of ifcBuildingElement (super-type) on the official IFC2x3 schema, implemented roles/types of FreeCAD inherit the main characteristics of generic upper entities like wall, window, roof referring to ARCH elements. IFC schema implementation has been designed for some entities referred to medieval historic architecture, medieval archaeology and building archaeology peculiarities, in order to ease the classification and documentation of heritage features through the FreeCAD HBIM platform. The default classification has been implemented with different entities like Agsis--Arch--Architrave--Archivolt--Base--Brick--Buttress--Capital--Cladding Wall--Double-Lancet Window--Pillar--Quoin--Retaining Wall--Rib--Rood Tile--Shaft--Sheft--Sheft--Single-Lancet Window--Stone Block--Stone Element--Triple-Lancet Window--Vault (Figure 1 and Table 1). These entities have been selected from medieval architecture elements which recur inside building archaeology documentation processes. Of course, this is a preliminary list of historic architectural entities that could be implemented with other important elements. Moreover, inside this list, there are two entities with a double semantic value: indeed, due to the general definition _block_ and _element_, the addition of material semantic information (in this case, _stone_) may be fundamental for documentation and analysis. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Wall** & **Structure** & **Roof** & **Window** & **Component** \\ \hline Apsis & Arch & Vault & Single-Lancet & Base \\ Cladding Wall & Architrave & & Double-Lancet & Brick \\ Retaining Wall & Archivolt & & Triple-Lancet & Capital \\ USM & Buttress & & & Quoin \\ USR & Pillar & & & Roof Tile \\  & Rib & & & Stone Block \\  & Shaft & & & Stone Element \\  & Shelf & & & \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Example of custom implementation referring to main elements of historic architecture and building archaeology. These definitions have been included on _“ifcRole”_ menu of FreeCAD. Figure 3: Access and modification of ArchComponent.py Python file by using FreeCAD 0.18: highlighted in green are customized and possible roles for BIM objects and related attributes below. According to different versions of FreeCAD, this IFC implementation has been performed in two different ways.