# Industry Foundation Classes

De Industry Foundation Classes (IFC) specificatie voor bestandsformaat is bedoeld om bouwkundige en constructieve data digitaal op te kunnen slaan in een uitwisselbaar formaat.
Het is een neutrale en open specificatie voor bestandsformaat, die niet afhankelijk van een specifieke software(-leverancier) is. Het is een object-georiënteerde bestandsformaat met een datamodel zoals ontwikkeld door buildingSMART (voorheen de International Alliance for Interoperability, IAI) om uitwisselbaarheid bij bouwkundige en constructieve teken- en ingenieursbureaus mogelijk te maken in de zogenoemde AEC industry - bedrijfstak voor architectuur, engineering & constructie - en is een breed gebruikte formaat voor samenwerking in projecten waarbij Bouwwerkinformatiemodel (BIM)-principe toegepast wordt. De IFC-model specificatie is openbaar en toegankelijk voor iedereen.
Deze specificatie is geregistreerd bij ISO en is een officiële internationale standaard ISO 16739-1:2018 en voor deel gebaseerd op de oudere ISO 10303 (2014) voor STEP (Standard for the Exchange of Product model data) "physical file" (SPF). De STEP-bestandsformaat is medio jaren tachtig van de twintigste eeuw ontwikkeld en in 1988 bij ISO aangedragen.

## Geschiedenis

Het initiatief voor IFC begon in 1994, toen Autodesk een industrieel consortium vormde voor een advies met betrekking tot een verzameling van C++ klassen die de ontwikkeling van een geïntegreerde toepassing kon ondersteunen. Twaalf Amerikaanse bedrijven sloten zich aan bij dit consortium, waaronder AT&T, HOK Architects, Honeywell, Carrier, Tishman and Butler Manufacturing. Aanvankelijk de Industry Alliance for Interoperability genoemd, stelde de alliantie lidmaatschap open voor alle geïnteresseerde partijen in september 1995. In 1997 veranderde de alliantie haar naam naar "International Alliance for Interoperability" (Internationale Alliantie voor Uitwisselbaarheid". De nieuwe alliantie werd hervormd tot een non-profit organisatie, door de industrie geleide, organisatie met als doel het publiceren van de specificaties voor de Industry Foundation Class (IFC) als een onpartijdig dienst, anticiperend op de AEC levenscyclus van gebouwen. Een volgende naamsverandering vond plaats in 2005, die van International Alliance for Interoperability (IAI) naar buildingSMART.

## IFC versies

* IFC 1.0 (Juni 1996)
* IFC 1.5 (November 1997)
* IFC 1.5.1 (September 1998)
* IFC 2.0 (Maart 1999)
* IFC 2x
* IFC 2x Addendum 1
* IFC 2x2
* IFC2x2 Addendum 1 (Juli 2004)
* IFC2x3 (Februari 2006)
* IFC4 (March 2013)
* IFC4 Add1 (2015)
* IFC4 Add2 (2016)
* IFC4 Add2 TC1 (2017)
* IFC4.1 (2018)
* IFC4.2 (2019)

## ifcXML versies

* ifcXML1 voor IFC2x en IFC2x Addendum 1
* ifcXML2 voor IFC2x2 (RC1)
* ifcXML2 voor IFC2x2 add1 (RC2)
* ifcXML2x3 (Juni 2007)

## Bestandsformaten

IFC definieert meerdere bestandsformaten, om zo te voorzien in uiteenlopende toepassingen op basis van dezelfde onderliggende data.
* IFC-SPF is een tekstformaat, gedefinieerd door ISO 10303-21 ("STEP-bestand"), waar per regel één object omschreven wordt, met de bestandsextensie ".ifc". Dit is het meest gebruikte IFC-formaat, met de voordelen zowel compact te zijn qua bestandsgrootte en desondanks toch "leesbare" tekst te bevatten. De afkorting SPF staat hier voor Standard Physical File (vrij vertaald: standaard fysiek bestand).
* IFC-XML is een XML-formaat, gedefinieerd door ISO 10303-28 ("STEP-XML"), met de bestandsextensie ".ifcXML". Dit formaat is geschikt voor het uitwisselen van gegevens met XML-software, zoals (delen van) gemodelleerde gebouwen. Vanwege de bestandsgrootte en de gebruikelijke grote afmeting van gebouwen wordt dit formaat in de praktijk minder vaak toegepast dan IFC-SPF.
* IFC-ZIP is een ZIP-formaat voor compressie van bestanden, bestaand uit een ingebedde IFC-SPF of IFC-XML bestandsformaat met de extensie ".ifcZIP".
IFC is in ASCII-formaat dat, hoewel nog leesbaar voor mensen, ook de nadelen kent van bestandsformaten gebaseerd op ASCII, waaronder inefficiënt grote bestanden en inlezen van begin tot eind in gedwongen volgorde. Delen halverwege het bestand inlezen is bijvoorbeeld niet mogelijk, waardoor de verwerkingssnelheid van dit formaat laag is, met niet-hiërarchisch opgebouwde definities. Als toevoeging aan ifcXML en ifcZIP, zijn er inspanningen gedaan tot het moderniseren zoals de ontwikkeling van ifcOWL (gebaseerd op Terse RDF N-Triples programmeertaal), ifcJSON (JavaScript Object Notation, vrij verkrijgbaar) en ifcHDF5 (Hierarchical Data Format v5, binary). In 2020 had buildingSmart twee lopende JSON projecten: ifcJSON v4 (een directe mapping vanuit EXPRESS-based IFC v4) en ifcJSON v5, plus een onderzoeksproject dat experimenteert met het converteren van IFC in een binair formaat.

## Architectuur (programma-technisch)

IFC defineert een op EXPRESS gebaseerde entity-relationshipmodel, bestaande uit honderden entiteiten, georganiseerd in een object-gebaseerde hiërarchie. Voorbeelden van dergelijke entiteiten omvatten gebouw-elementen zoals IfcWall (muur), geometrie zoals IfcExtrudedAreaSolid (vast lichaam uit extrusie van een oppervlakte) en basis-elementen zoals IfcCartesianPoint (punt in Cartesisch coördinatenstelsel).
Op het meest abstracte niveau maakt IFC een onderverdeling in alle entiteiten tussen "rooted" (geworteld) en "non-rooted" (niet geworteld). "Rooted" entiteiten zijn afgeleid en/of hebben een relatie met IfcRoot en bezitten een soort identiteit, (in bezit zijnd van een GUID), samen met andere attributen voor het invullen van parameters zoals (object)naam, beschrijving en revisie-nummering. "Non-rooted" entiteiten hebben geen "identiteit" en in een model voorkomende toepassingen ("instances") zijn alleen actief als ernaar verwezen wordt door "rooted" entiteiten, rechtstreeks of indirect. IfcRoot is verder onderverdeeld in drie abstracte concepten; definitie van objecten, relaties en sets van eigenschappen:
* IfcObjectDefinition beschrijft tastbare verschijningen van objecten en types, denk aan de geometrie van een muur.
* IfcRelationship beschrijft de relatie tussen objecten, denk aan restricties bij plaatsen van een raamopening in een muur
* IfcPropertyDefinition beschrijft de dynamisch aanpasbare eigenschappen van een object, denk aan het (snel) aanpassen van geometrie van betreffende muur

### IfcObjectDefinition

IfcObjectDefinition bestaat uit twee delen: of het object toegepast wordt en met welk type (variant). IfcObject legt ast hoe vaak een specifiek object toegepast wordt, zoals de fysieke plaatsing en serienummer. IfcTypeObject daarentegen legt de type (variant) vast, zoals een type van een product met een specifiek model-nummer en bijbehorende vorm. Hoe vaak het voorkomt en met welke type zijn verder onderverdeeld naar zes fundamentele concepten: operators ("wie"), besturing ("waarom"), groepen ("wat"), producten ("waar"), processen ("wanneer"), en benodigdheden in materiaal en materieel ("hoe").
* IfcActor (operators) vertegenwoordigt mensen en/of organisaties
* IfcControl (besturing) vertegenwoordigt regels die de kaders voor benodigde tijd, kosten of scope zoals werkorders bepalen
* IfcGroup (groepen) vertegenwoordigt verzamelingen van objecten met een specifiek doeleinde, zoals elektrische circuits.
* IfcProduct vertegenwoordigt toepassingen in de ruimte, zoals fysieke onderdelen van een gebouw en ruimtelijke geometrie.
* IfcProcess vertegenwoordigt toepassingen in de tijd zoals taken, gebeurtenissen en procedures.
* IfcResource vertegenwoordigt het aanwenden van in de tijd eindige bronnen, zoals benodigde materialen in voorraad, arbeid en gereedschappen/machines.

## Toepassingen van IFC wereldwijd

Vanwege de focus op het gemak van uitwisselbaarheid tussen applicaties van concurrerende leveranciers, heeft de Deense overheid gebruik van IFC formaat verplicht voor bouwprojecten die met publiek geld is gefinancierd. De Finse bedrijf voor beheer van gebouwen "Senate Properties", met de overheid als eigenaar vereist gebruik van software die compatibel zijn met IFC en BIM in alle projecten. De Noorse overheid, afdelingen Gezondheid en Defensie, vereisen gebruik van IFC BIM in alle projecten. De gemeenschappen, bedrijven, aannemers en ontwerpers hebben IFC en BIM in hun dagelijkse bedrijfsvoering geïntegreerd.