Element
Prosa-Definition¶
Ein Element ist ein abstrakter Oberbegriff für ein identifizierbares, geometrisch verortetes, in einem Bauwerk verbautes Einzelobjekt, das durch eine eigene technische Identität (UUID), eine Geometrie und eine Lage im Weltkoordinatensystem charakterisiert ist und das in einer der vier konkreten Subklassen Bauteil, Verbindungsmittel, Verbinder oder Verstärkungselement instanziiert wird.
Mathematische Definition¶
Sei
- W das Weltkoordinatensystem (siehe
weltkoordinatensystem), - 𝓤 der UUID-Raum nach RFC 9562 (siehe
uuid), - 𝓖 die Menge aller geometrischen Repräsentationen, die in der
Domänen-Schicht zugelassen sind (Stab-Achse + Querschnitt,
Trägerfläche + Dicke, Polyeder, Achsenpunkt, Linsen-/Stab-
Geometrie eines Verbindungsmittels; eigene Einträge
geometrie,bauteilachse,polyeder, … in Folgearbeit), - SE(3) = SO(3) ⋉ ℝ³ die Menge der Starrkörpertransformationen (Rotation R ∈ SO(3) und Translation t ∈ ℝ³),
- 𝓦 die Menge der zulässigen Werkstoffe (siehe
werkstoff, abstrakter Oberbegriff der Werkstoff-Hierarchie mit den vier konkreten Subklassenaxiales_holz,mehrlagenholz,gerichteter_plattenwerkstoff,isotroper_plattenwerkstoff), - ℙ = String ⊎ {⊥} die Menge der zulässigen Positionsnummern
(siehe
positionsnummer), - ℛ die Menge der zulässigen Produktkennzeichnungen (siehe
produktkennzeichnung), - 𝒩 = String ⊎ {⊥} die Menge der zulässigen freien Bezeichnungen.
Dann ist ein Element das Tupel
E := (uuid, geometrie, lokale_platzierung, werkstoff,
positionsnummer?, produktkennzeichnung?, bezeichnung?)
mit den Pflichtkomponenten
- uuid ∈ 𝓤 (eindeutiger, persistenter, technischer Identifikator),
- geometrie ∈ 𝓖 (geometrische Repräsentation im lokalen Element-Koordinatensystem; konkrete Subklasse bestimmt die zulässige Teilmenge von 𝓖),
- lokale_platzierung ∈ SE(3) (Starrkörpertransformation, die das lokale Element-Koordinatensystem nach W überführt),
- werkstoff ∈ 𝓦 (Materialklasse, aus der das Element besteht;
abstrakte Wurzel
werkstoffmit vier konkreten Subklassen nach Faserrichtungs-Modus),
und den Optionalkomponenten
- positionsnummer? ∈ ℙ (humanlesbarer Geschäftsschlüssel, mutable, scoped pro Projekt + Kategorie),
- produktkennzeichnung? ∈ ℛ (normativ kodifizierte Charge-/ Produkt-Identifikation, nur bei Werkstoff-Charge relevant),
- bezeichnung? ∈ 𝒩 (freier Anzeigename ohne Strukturanspruch).
Das Element ist abstrakt: Element selbst ist nicht instanziierbar, sondern bezeichnet die Vereinigung der vier konkreten Subklassen-Mengen
𝓔 := 𝓑 ⊎ 𝓥𝓜 ⊎ 𝓥𝓑 ⊎ 𝓥𝓢
mit
- 𝓑 = Menge der Bauteile (siehe
bauteil), - 𝓥𝓜 = Menge der Verbindungsmittel (siehe
verbindungsmittel), - 𝓥𝓑 = Menge der Verbinder (siehe
verbinder), - 𝓥𝓢 = Menge der Verstärkungselemente
(siehe
verstaerkungselement).
Die geometrische Punktmenge eines Elements im Weltkoordinatensystem ist
G_W(E) := { lokale_platzierung(p) | p ∈ G_lokal(geometrie) } ⊂ ℝ³.
Wohldefiniertheit¶
- Existenz: Für jedes konkrete in einem Bauwerk verbaute
Objekt mit eigener Identität lässt sich die obige Tupelstruktur
erfassen. Die UUID wird bei Objekterzeugung systemseitig vergeben
(siehe
uuid); Geometrie und lokale Platzierung sind Pflichtfelder mit nicht-leerer Wertemenge. - Eindeutigkeit der Identität: Innerhalb eines Modells gilt
∀ E₁, E₂ : (E₁ ≠ E₂) ⇒ (E₁.uuid ≠ E₂.uuid). Die UUID ist
technisch und persistent; siehe
uuidfür die Eindeutigkeits- garantie nach RFC 9562. - Abstrakt, nicht instanziierbar: Element selbst hat keine
Konstruktoren in der Domänen-Schicht (Kotlin:
sealed interfaceoderabstract class). Jede Instanz ist notwendigerweise einer der vier Subklassen zugeordnet. - Disjunktheit der Subklassen: 𝓑, 𝓥𝓜, 𝓥𝓑, 𝓥𝓢 sind paarweise
disjunkt. Die Klassifikation eines konkreten Objekts in eine der
vier Mengen ist eine Konstruktionsentscheidung, nicht eine
Eigenschaft des Materials (Memory
project_element_ontologie, Designregel 2: dieselbe Vollgewindeschraube ist Verbindungsmittel im Abscher-Anschluss, Verstärkungselement als Querzugverstärkung — getrennt instanziiert mit eigener UUID; siehehg_verstaerkungselement.md). - Unabhängigkeit von der Wahl des lokalen Koordinatensystems:
Für jede zulässige Wahl des lokalen Element-Koordinatensystems
liefert die zugehörige
lokale_platzierungSE(3)-Transformation dieselbe Punktmenge G_W(E). Die Wahl ist Modellierungs- konvention, semantisch invariant. - Optionale Identifikatoren:
positionsnummer?undproduktkennzeichnung?sind algebraisch optional (Wert oder ⊥); ⊥ ist ein zulässiger Wert und nicht das Fehlen einer Definition. Die Identitätspflicht wird ausschließlich durchuuiderfüllt; positionsnummer und produktkennzeichnung sind orthogonale Identifikator-Spuren mit je eigenem Zweck (siehe Memoryproject_bauteil_identifikation). - Nicht-Zirkularität: Die Definition verwendet ausschließlich
die Primitive
uuid,weltkoordinatensystem,toleranzen, den (angelegten) Werkstoff-Oberbegriffwerkstoffsowie die als Folge-Begriffe markierten Bausteinegeometrie,positionsnummer,produktkennzeichnung. Sie verweist nicht auf die Subklassen Bauteil/Verbindungsmittel/ Verbinder/Verstärkungselement in ihrer eigenen Definition, sondern grenzt sich nur extensional zu deren Vereinigung 𝓔 ab.
Erläuterung (nicht normativ)¶
Der Element-Begriff dieses Glossars ist die Wurzel der App-Ontologie für verbaute Einzelobjekte. Er trägt diejenigen Eigenschaften, die jede konkrete Subklasse generisch erbt: Identität, Geometrie, Lage in W, Werkstoff, optionale Beschriftung.
Die vier Subklassen unterscheiden sich in Funktion und Bemessungsverfahren:
- Bauteil — tragend oder raumbildend; Querschnittsbemessung nach EC5 Kap. 6, SIA 265 Kap. 4 ff. Stab-, Flächen- oder Volumenbauteil.
- Verbindungsmittel — Nagel, Schraube, Bolzen, Stabdübel,
Klammer, Klebung, Holzdübel; Anschlussbemessung nach EC5
Kap. 8 (Johansen). IFC:
IfcMechanicalFastener. - Verbinder (Synonym: Verbindungselement) — Balkenschuh,
Winkel, Knotenblech, Schlitzblech; meist mit eigener
Zulassung (ETA, ABZ). IFC:
IfcDiscreteAccessory. - Verstärkungselement — Vollgewindeschraube als Querzug-,
Querdruck- oder Schubverstärkung; axial bemessen nach
EC5:2022-Entwurf bzw. ETA. IFC:
IfcMechanicalFastenermit Funktions-Property-Set.
Aggregate sind keine Elemente. Eine Verbindung, ein Tragwerk, ein Dach oder ein Dachaufbau bündeln mehrere Elemente, sind aber selbst keine verbauten Einzelobjekte. Sie führen eine eigene UUID-Klasse für ihre Identität, gehören aber strukturell auf eine andere Hierarchie-Ebene.
Drei orthogonale Identifikator-Spuren (Memory
project_bauteil_identifikation): Jedes Element trägt potenziell
drei verschiedene Identifikatoren mit unterschiedlichen Zwecken
und Semantiken:
| Spur | Zweck | Mutabilität | Eindeutigkeit | Foreign-Key-Ziel |
|---|---|---|---|---|
uuid |
technische Identität | unveränderlich | global (RFC 9562) | immer |
positionsnummer |
Werkplan-/Baustellenkommunikation | mutable | (projekt, kategorie) | nie |
produktkennzeichnung |
Charge/Lieferung (CE, DIN 4074) | von Charge ererbt | je Norm festgelegt | nie |
Foreign Keys aus Verbindungen, Aggregaten, BCF-Issues u. ä. referenzieren ausschließlich die UUID. Renumbering der Positionsnummer oder Materialwechsel bricht keine Beziehung.
Beziehungen¶
- Oberbegriff: keiner. Element ist die Wurzel der App-Ontologie für verbaute Einzelobjekte.
- Subklassen (vier Geschwister unter dieser Basisklasse):
- Bauteil (
bauteil): tragend/raumbildend, Querschnitts- bemessung. Bestehender Eintrag; Umstellung aufoberbegriff: elementerfolgt im Update-Task #16. - Verbindungsmittel (
verbindungsmittel): Nagel, Schraube, Bolzen, Stabdübel, Klammer, Klebung. Eintrag angelegt. - Verbinder (
verbinder, Synonymverbindungselement): Balkenschuh, Winkel, Knotenblech, Schlitzblech, Sherpa- Verbinder, Holzlasche. Eintrag angelegt. - Verstärkungselement (
verstaerkungselement): Vollgewindeschraube als Querzug-/Querdruck-/Schubverstärkung nach EC5:2022 / ETA. Eintrag angelegt. - Bestandteile (partitiv) eines Elements:
- UUID (
uuid): technische Identität, Pflicht. - Geometrie (
geometrie, eigener Eintrag folgt): geometrische Repräsentation, Pflicht. - Lokale Platzierung (SE(3)-Transformation gegenüber W):
Pflicht. Eigener Eintrag
lokales_koordinatensystem/lagefolgt. - Werkstoff (
werkstoff): Materialklasse, Pflicht. Abstrakte Wurzel mit vier konkreten Subklassen (axiales_holz,mehrlagenholz,gerichteter_plattenwerkstoff,isotroper_plattenwerkstoff) nach Faserrichtungs-Modus. - Positionsnummer (
positionsnummer): humanlesbarer Geschäftsschlüssel, optional. - Produktkennzeichnung (
produktkennzeichnung): normativ kodifizierte Charge-Identifikation, optional. - Bezeichnung: freier Anzeigename, optional.
- Abgrenzung:
- Verbindung (
verbindung, eigener Eintrag folgt): Aggregat aus Bauteilen + Verbindungsmitteln (+ Verbindern- Verstärkungen) an einem Knotenpunkt. Kein Element, sondern Container.
- Tragwerk (
tragwerk): Aggregat lastabtragender Bauteile mit Verbindungen, Auflagern, Lastfällen. Kein Element. - Dach (
dach), Dachaufbau (dachaufbau): Aggregate auf Bauwerksebene. Keine Elemente. - Bauteilaggregat (
bauteil_aggregat, eigener Eintrag folgt): allgemeiner Aggregat-Oberbegriff. - Werkstoff (
werkstoff): Stoffeigenschaft, kein Element. Abstrakte Werkstoff-Hierarchie mit vier konkreten Subklassen nach Faserrichtungs-Modus. - Geometrie (
geometrie, eigener Eintrag folgt): Repräsentationsbaustein, kein Element. - Lokales Koordinatensystem
(
lokales_koordinatensystem, eigener Eintrag folgt): Bezugssystem, kein Element.
Implementierungshinweis¶
Datentyp (Domänen-Schicht, Kotlin, Schicht domain.element):
package domain.element
import domain.geometrie.Geometrie // eigener Eintrag folgt
import domain.geometrie.LokalePlatzierung // SE(3); eigener Eintrag folgt
import domain.holzbau.werkstoff.Werkstoff // sealed; vier Subklassen
// (axiales_holz, mehrlagenholz,
// gerichteter_plattenwerkstoff,
// isotroper_plattenwerkstoff)
import domain.identifikation.Positionsnummer
import domain.identifikation.Produktkennzeichnung
import java.util.UUID
/**
* Wurzel der App-Ontologie für verbaute Einzelobjekte.
* Glossar: hg_element.md
*
* Abstrakt, nicht direkt instanziierbar. Konkrete Subklassen sind
* Bauteil, Verbindungsmittel, Verbinder, Verstärkungselement.
*
* Pflichtfelder: uuid, geometrie, lokalePlatzierung, werkstoff.
* Optionalfelder: positionsnummer, produktkennzeichnung, bezeichnung.
*
* Foreign-Key-Regel (siehe Memory project_bauteil_identifikation):
* Verweise aus Verbindungen, Aggregaten, BCF-Issues etc.
* referenzieren ausschließlich `uuid`, niemals `positionsnummer`
* oder `produktkennzeichnung`.
*/
sealed interface Element {
/** Technischer Surrogatschlüssel (UUID v7). Pflicht, persistent. */
val uuid: UUID
/** Geometrische Repräsentation im lokalen Element-Koordinatensystem. */
val geometrie: Geometrie
/** SE(3)-Transformation lokal → W. */
val lokalePlatzierung: LokalePlatzierung
/** Werkstoff-Klasse. Glossar: hg_werkstoff.md (sealed, 4 Subklassen). */
val werkstoff: Werkstoff
/** Humanlesbarer Geschäftsschlüssel (mutable, scoped). */
val positionsnummer: Positionsnummer?
/** Normativ kodifizierte Charge-Identifikation. */
val produktkennzeichnung: Produktkennzeichnung?
/** Freier Anzeigename. */
val bezeichnung: String?
}
- Einheit: Längen in mm (Double); Winkel intern in Radiant; lokale Platzierung als SE(3)-Element (Rotation + Translation).
- Identität:
uuidist Pflicht und wird bei Objekterzeugung systemseitig vergeben (UUID v7 nach RFC 9562, sieheuuid). Niemals händisch setzen.uuidwird nach der Erzeugung niemals geändert, auch nicht bei IFC-/BTLx-Re-Import (externe GUIDs landen in eigenen Mapping-Feldern, nicht inuuid).- Foreign Keys aller anderen Domänen-Klassen referenzieren
ausschließlich
uuid— niemalspositionsnummeroderproduktkennzeichnung. Diese Regel ist die Schutzlinie der referentiellen Integrität. - Subklassenpflicht:
Elementistsealed; jede Instanz ist notwendigerweise einer der vier konkreten Subklassen Bauteil/Verbindungsmittel/Verbinder/Verstärkungselement zugeordnet (Glossareinträge angelegt; Bauteil-Umstellung aufoberbegriff: elementim Update-Task #16). - Optionalität (normativ):
positionsnummer: Positionsnummer?—nullzulässig im frühen Entwurfsstadium; wird typischerweise erst bei Werkplan-Erstellung vergeben. Niemals als Default-String setzen.produktkennzeichnung: Produktkennzeichnung?—nullzulässig solange noch keine Charge zugewiesen ist; wird bei Materialdisposition gesetzt.bezeichnung: String?—nullzulässig; Anzeige fällt dann aufpositionsnummeroder UUID zurück.- Invarianten (in Fabrikfunktionen /
initder Subklassen prüfen, bei VerletzungResultat.Fehlerbzw.Entartet-Variante; niemals Exception werfen): uuidist gesetzt und kein Null-UUID.geometrieist nicht-degeneriert (Subklassen-spezifisch, siehe je Subklasse-Eintrag).lokalePlatzierungist eine gültige SE(3)-Transformation (Rotation orthogonal, Determinante +1).werkstoffist gesetzt.- IFC-Mapping (Persistenzschicht, je Subklasse explizit dokumentieren): | Subklasse | IFC-Klasse | BTLx | |---------------------|--------------------------------------------|-------------------------------------| | Bauteil | IfcBeam / IfcColumn / IfcMember / IfcPlate | Part mit @GUID | | Verbindungsmittel | IfcMechanicalFastener | Processing oder eigenes Part | | Verbinder | IfcDiscreteAccessory | eigenes Part oder Reference | | Verstärkungselement | IfcMechanicalFastener + Pset_Function | wie VM + Funktionsattribut |
uuid→IfcRoot.GlobalId(22-stellig Base64 nach ISO/IEC 9834-8) bzw. BTLxPart/@GUID.positionsnummer→IfcElement.Tagbzw. BTLxSingleMemberNumber.produktkennzeichnung→ IFC Material-Resource Property Sets (Pset_MaterialWoodBasedBeam,Pset_MaterialWoodBasedPanel) bzw. BTLx Material-Element.- Edge Cases:
- Element ohne lokale Platzierung: nicht erlaubt; mindestens Identität in SE(3) (lokales System ≡ W) ist Pflicht.
- Element ohne Werkstoff: nicht erlaubt; jeder verbaute
Gegenstand hat eine Materialklasse (Holz, Stahl,
Verbindungsmittelstahl, …). In sehr frühen Entwurfsphasen
kann ein Platzhalter-Werkstoff
Werkstoff.UNBEKANNTgeführt werden, der vor Bemessung aufgelöst sein muss. - Aggregate: NICHT als Element instanziieren; eigene
Klassen
Verbindung,Tragwerk,Dach,BauteilAggregat(Folgearbeit). - Versionierung / Revisionen: Eine Modelländerung ohne
Identitätsänderung lässt
uuidunverändert (mutiertes Element). Eine konstruktive Neuanlage als Ersatz erzeugt eine neue UUID. Die Wahl zwischen event-sourced und temporal-versioniert ist Folgearbeit (Memoryproject_bauteil_identifikation). - Bezeichner-Konvention (CLAUDE.md): Domänen-Klasse heißt
Element(deutsch, Glossarbegriff); Subklassen heißenBauteil,Verbindungsmittel,Verbinder,Verstaerkungselement.
Quellen¶
Primär (normativ):
- ISO 16739-1:2024, „Industry Foundation Classes (IFC) for data sharing in the construction and facility management industries — Part 1: Data schema".
- buildingSMART International: „IFC4.3 Documentation", Version 4.3.2.0, 2024.
- RFC 9562:2024, „Universally Unique IDentifiers (UUIDs)", IETF, Mai 2024.
Sekundär:
- Evans, E.: Domain-Driven Design — Tackling Complexity in the Heart of Software. Addison-Wesley 2003.
- Vernon, V.: Implementing Domain-Driven Design. Addison-Wesley 2013.
- Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley 2003.
- design2machine: BTLx 2.x Specification (Stand 2024).
Korpus (nicht autoritativ):
- DIN EN 1995-1-1:2010-12, „Eurocode 5 — Bemessung und Konstruktion von Holzbauten" (Verwendung von „element" / „member" im engeren Sinn; nicht maßgeblich für die abstrakte Lesart dieses Eintrags).
- SIA 265:2021, „Holzbau", Schweizerischer Ingenieur- und Architektenverein, Zürich.