Gå til indhold
BIM Lab på DTU Construct

Værktøj · prototype

BIMdb

En åben database, hvis ordforråd kommer fra bSDD, buildingSMART Data Dictionary. IFC 4.3 er den faste rygrad; andre bSDD-ordbøger (lufthavne, cirkularitet, nationale klassifikationer) kommer med, når data har brug for dem.

  • version 0.4.3
  • koncept: ikke klar til brug

Kode EUPL-1.2 · indhold CC BY 4.0, medmindre andet er angivet · kildekoden offentliggøres på GitLab

Prøv den i din browser

Hver knap åbner en komplet BIMdb-database, der kører i en browserfane. Åbn to medlemmer og derefter linsen: linsen viser begge fanernes data samlet og kan flette dem til én database. Intet forlader din browser.

Fundamentet for et fælles datamiljø

Industry Foundation Classes (IFC) are a set of standardized, digital descriptions of the built asset industry. It is an open, global standard published under a Creative Commons license, and as ISO 16739. […] It is vendor-neutral and available to everyone.

buildingSMART International, Industry Foundation Classes (IFC)

På dansk: Industry Foundation Classes (IFC) er et sæt standardiserede, digitale beskrivelser af bygge- og anlægsbranchen. Det er en åben, global standard, udgivet under en Creative Commons-licens og som ISO 16739. […] Den er leverandøruafhængig og tilgængelig for alle.

BIMdb is an open, versioned database for the built asset industry. Every element is an identified item anchored to IFC 4.3 and described in the vocabulary of the buildingSMART Data Dictionary (bSDD), so that databases owned by different parties can check, sign and merge each other's information.

Kristoffer Negendahl, BIM Lab, DTU Construct, 2026

På dansk: BIMdb er en åben, versionsstyret database for bygge- og anlægsbranchen. Hver bygningsdel er et element med sin egen identitet, forankret i IFC 4.3 og beskrevet med ordforrådet fra buildingSMART Data Dictionary (bSDD), så databaser med forskellige ejere kan tjekke, signere og flette hinandens information.

ISO 19650 kalder den aftalte kilde til information for et projekt eller et anlæg for dets fælles datamiljø (CDE, common data environment). Mange CDE'er håndterer informationen som filer: en model går ind og kommer ud i ét stykke. BIMdb er bygget til at være laget under en CDE-platform. Den rummer selve informationen, element for element, med den historik, de tjek og de fletninger, et CDE har brug for; platformen lægger mennesker, roller og arbejdsgange ovenpå.

skal bygges

CDE-platform

mennesker og roller · arbejdsstatus (i arbejde, delt, publiceret, arkiveret) · visning og apps

i dag

BIMdb-API

HTTP (bimdb serve) · i browseren (WebAssembly)

i dag

BIMdb

  • Elementer på IFC 4.3hvert med eget id og egen licens
  • bSDD-ordforrådIFC 4.3 plus udvidelsesordbøger
  • Signerede commitshver ændring gemt, enhver tidligere tilstand kan læses
  • Dørvogter og IDStjekket ved døren: taget ind, afvist eller holdt tilbage
  • Fletning og medlemmerdatabaser forenes; databaser i databaser
  • Filer ved hashdokumenter, billeder, tidsseriemålinger

Sådan gemmer BIMdb IFC

IFC beskriver en bygning som instanser af klasser med attributter, egenskaber og relationer. BIMdb bevarer IFC's betydning, men gemmer den som en graf af fakta (RDF): hvert faktum er ét udsagn om ét element. Tegningerne følger én væg.

  • Klasser og instanser

    IfcWall: én klasse, tre elementerTre vægelementer, hver med sit eget urn:uuid-id, peger med rdf:type på én klasse, IfcWall, kendt ved sin bSDD-adresse.identifier.buildingsmart.org/…/ifc/4.3/class/IfcWallIfcWallrdfs:Classrdf:typeVæg Aurn:uuid:7c9e…Væg Burn:uuid:3f2a…Væg Curn:uuid:b81d…

    IFC En klasse som IfcWall siger, hvilken slags ting noget er; en instans er én bestemt væg i en model.

    BIMdb Klassen er dens bSDD-adresse. Hver væg er et element med sit eget id og ét faktum, rdf:type, der peger på klassen. To vægge, der ligner hinanden, er stadig to elementer.

  • Underklasser

    IfcWall og IfcSlab med deres forældreKæden IfcRoot, IfcObjectDefinition, IfcObject, IfcProduct, IfcElement, IfcBuiltElement, med IfcWall og IfcSlab under IfcBuiltElement. Én væg gemmer 7 klasser; et dæk lægger 1 til.IfcRootIfcObjectDefinitionIfcObjectIfcProductIfcElementIfcBuiltElementIfcWallIfcSlab1 væg: 7 klasserIfcWall + 6 forældre+ 1 dæk: 8 klasserforældrene er derspørg om IfcBuiltElement:vægge og dæk↑ rdfs:subClassOf

    IFC Klasser danner et træ: IfcWall er en slags IfcBuiltElement, som er en slags IfcElement, og så videre op til IfcRoot.

    BIMdb En database starter uden klasser. En klasse kommer ind med alle sine forældre, så én væg giver syv klasser, og et dæk lægger én til. Spørger man efter bygningsdele, finder man vægge og dæk, og fordi hvert træ er komplet, kan to databaser altid flettes uden reparation.

  • Egenskaber og egenskabssæt

    En brandklasse i IFC og i BIMdbI IFC kræver en brandklasse IfcWall, IfcRelDefinesByProperties, IfcPropertySet og IfcPropertySingleValue. I BIMdb er det ét faktum på elementet: Pset_WallCommon.FireRating er REI60.IFCBIMdbIfcWall#12 'Væg A'IfcRelDefinesByPropertiesbinder væg og sætIfcPropertySet'Pset_WallCommon'IfcPropertySingleValueFireRating: IfcLabel('REI60')4 entiteterVæg APset_WallCommon.FireRatingREI60eller FireRating,eller en bSDD-egenskabs-URI1 faktum

    IFC En egenskab ligger i et egenskabssæt (Pset_WallCommon), som en relation binder til væggen: fire entiteter for én værdi.

    BIMdb Ét faktum på elementet. Sættet er en del af egenskabens navn (Pset_WallCommon.FireRating); et rent navn eller en bSDD-egenskabsadresse virker også. Værdier er tekst, tal eller ja/nej.

  • Attributter

    IFC-attributter, og hvor BIMdb gemmer demGlobalId bliver elementets id, Name dets rdfs:label, PredefinedType en del af klassekoden (IfcWallSHEAR), OwnerHistory de signerede commits; hvert element har også en licens.IFC-attributi BIMdbGlobalIdelementets idurn:uuid:7c9e…Namedets navnrdfs:labelPredefinedTypeklassekodenIfcWallSHEAROwnerHistorycommitsSHA-256, signeret(ingen)en licenspå hvert element

    IFC Attributter er fastlagt af klassen: GlobalId, Name, PredefinedType, OwnerHistory og andre.

    BIMdb Hver har sin plads: elementets id, dets navn, klassekoden (bSDD skriver IfcWall af typen SHEAR som IfcWallSHEAR) og de signerede commits. Hvert element har også en licens.

  • Rooted og non-rooted

    Rooted og non-rooted, i IFC og i BIMdbRooted IFC-entiteter (objekter, relationer, egenskabssæt) ligger under IfcRoot og har et GlobalId; non-rooted (en egenskabsværdi, et punkt, en enhed) har ikke. I BIMdb er elementet det rooted; værdier bliver fakta på det, og filer gemmes ved deres SHA-256-hash.RootedNon-rootedIfcRootobjekterIfcWallrelationerIfcRel…egenskabssætIfcPropertySethver har et GlobalIdog en OwnerHistoryIfcPropertySingleValueIfcCartesianPointIfcSIUnitintet GlobalId: de leverinde i en rooted entitetI BIMdbVæg AFireRating: REI60en værdi: et faktum på elementetreport.pdf, sha256:9f2c…en fil: gemt én gang ved sin hashElementet er det rooted: eget id, egen historik og licens.

    IFC Entiteter under IfcRoot (objekter, relationer, egenskabssæt) har et GlobalId og en historik og kan refereres for sig selv. Ressourceentiteter som en egenskabsværdi, et punkt eller en enhed har ingen af delene; de lever inde i den rooted entitet, der bruger dem.

    BIMdb Elementet er BIMdb's rooted ting: eget id, egen historik og licens. Det, IFC lægger i non-rooted entiteter, bliver en del af et element: en værdi er et faktum på det, en fil gemmes én gang ved sin SHA-256-hash og bæres af elementet.

Eksperimenter

Hvert eksperiment stiller ét forskningsspørgsmål og besvarer det med en måling eller en test. Tallene er fra den udgivelse, siden hører til.

  • Spor A

    Skåret ind til benet

    Hvor lidt af IFC 4.3 har en database brug for, og kan slanke databaser stadig flettes?

    20 almindelige bygningsdele kræver 36 af IFC 4.3's 1.418 klasser. En klasse gemmes altid med alle sine forældre, så to slanke databaser kan altid flettes uden reparation.

  • Afstemningsløkken

    Fra almindelige ord til den rigtige klasse

    Kan almindelige ord finde den rigtige klasse, og spørge, når de ikke kan?

    På 30 nye forespørgsler: 16 af 20 ramte rigtigt, 2 forkert, 2 spurgte; 10 af 10 foreslog den rigtige bSDD-ordbog (lufthavn, cirkularitet, ETIM, Molio).

  • Spor B

    Hver fane er en database

    Kan databaser med hver sin ejer danne ét projekt uden en server?

    Ja, i én browser: faner læser hos hinanden, men skriver aldrig; en linse samler dem ved at flette; fanerne husker deres data. På tværs af computere kræver det et relæ (næste skridt).

  • Versionsstyring

    Hver ændring gemt

    Kan hver ændring gemmes, bevises og genafspilles, og hurtigt?

    Hver skrivning er et commit med et SHA-256-id. At skrive til disk tager 0,05 ms ved 1 million fakta (at gemme hele grafen tog omkring et sekund). Enhver tidligere tilstand kan læses.

  • Spor C og E

    Håndtryk og fletning

    Hvordan forenes to databaser uden at blande "lignende" ting sammen?

    Identitet er bSDD-URI'en, og versioner holdes adskilt. En trevejsfletning samler begge siders arbejde; elementer, som begge sider har ændret forskelligt, venter på et menneske. Hver database signerer sine commits; dens offentlige nøgle er dens identitet.

  • Spor D

    Levende skema

    Hvad skal en database gøre, når bSDD ændrer sig?

    En indstilling: off, passive, active eller auto. Ændringer, der bryder noget, venter altid på et menneske. At tjekke 16 klasser mod bSDD tog 14 s; hele IFC 4.3 ville tage omkring 20 minutter.

  • Spor F

    IDS ved døren

    Kan en leverancespecifikation (IDS) vogte, hvad der kommer ind i en database?

    Ja: en væg uden brandklasse afvises, en med brandklasse tages ind, og afgørelsen logges. Et tjek tager omkring 0,4 µs; hvad der endnu ikke kan tjekkes, noteres.

  • Tidsserier

    Sensorer i modellen

    Kan sensormålinger bo i en BIM-database uden at begrave dens graf?

    Ja: en beskrivelse på 21 fakta (IFC 4.3 IfcTimeSeries) plus målingerne i filer. Et år hvert kvarter er 4 filer; at tilføje en dag tager 3,6 ms, et år som døgnmiddel 6 ms.

  • Spor G

    Databaser i databaser

    Kan en bydatabase rumme sine bygningers databaser som enkelte elementer?

    Ja: ét element på 8 fakta (1,26 kB) pr. medlem, låst til en tilstand eller fulgt til den nyeste. Låste medlemmer kan ikke danne løkker; løkker blandt fulgte medlemmer opdages.

Anvendelser

AnvendelseHvad BIMdb gørEksperiment
En lufthavns bagagesystem i en IFC-modelfinder lufthavnsordbogens "bagagetransportbånd", henter det med sin licens og placerer det under IFC 4.3's båndtransportørAfstemningsløkken
To firmaer modellerer én bygninghver beholder sin egen database; et håndtryk og en fletning samler dem, og konflikter listesSpor C og E
En by af bygningerbydatabasen rummer hver bygning som ét element; zoom kun ind, hvor der er brug for detSpor G
Indeklima i en bygning i drifthver sensors målinger som en serie på dens IfcSensor; timemiddel pr. rum i ét kaldTidsserier
Kvalitetskontrol, før data kommer inden IDS-fil tjekker hvert element på vej ind; elementer, der ikke består, afvises eller holdes tilbage, og hver afgørelse loggesSpor F

Kilder, licenser og privatliv

BIMdb er et forskningsprojekt i BIM Lab på DTU Construct, af K. Negendahl og kolleger. IFC 4.3-klasser: buildingSMART International, CC BY-ND 4.0, brugt uændret. Kildekode: EUPL-1.2, offentliggøres på GitLab (dtu-construct-dbt/bimdb).

Privatliv: sitet sætter ingen cookies og indsamler intet. Demoen gemmer det, du indtaster, i din egen browser; slet sitets data for at fjerne det.