When property location matters¶
The same fact can appear in different places in a building model. Sometimes a requirement only cares about the fact. Sometimes it also requires one exact place. Axioval supports both choices.
Think of it like asking for a book:
- Any shelf is fine: find this book wherever the library stores it.
- One shelf is required: find this book in the reference section.
In technical terms, Axioval separates property identity from container qualification. Property sets are real relationship objects in IFC, but their names do not need to become the universal identity of a property.
Canonical property identity¶
A vocabulary defines the property once:
Show the property definition
["axioval:example.ifc.load-bearing"] = new Definitions.PropertyDefinition {
id = "axioval:example.ifc.load-bearing"
name = new Types.LocalizedText { default = "Load bearing" }
valueKind = "boolean"
externalNames {
new Definitions.ExternalName {
typeSystem = "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3"
name = "LoadBearing"
}
}
}
The definition is not nested in a property set. Its stable ID can be reused by selectors, templates, and instances.
Loose reference: property matters, container does not¶
Show the loose reference
An adapter resolves the external name and traverses the model's native relationships. The property may be found in any supported container.
Implementations must define deterministic conflict behavior. If the same canonical property resolves more than once with incompatible values, they should return a conflict. They must not choose one silently.
Strict reference: membership is part of the requirement¶
Show the strict reference
Now both facts are normative:
- the property is
LoadBearing; and - it is related through the external container mapped from
Pset_WallCommon.
A matching property in another set is not sufficient.
- the requirement is about semantic information, not authoring layout;
- exporters legitimately place equivalent properties in different sets; or
- a project mapping layer already canonicalizes sources.
- delivery requirements mandate a standard property set;
- interoperability depends on exact container placement; or
- the check is specifically auditing schema conformance.
Container-agnostic resolution is still fail-closed¶
When propertySet is omitted, an adapter must:
- map the canonical property concept into the active model schema;
- collect occurrences across supported property containers;
- report missing when no occurrence exists;
- converge type-correct occurrences only when their semantic values agree; and
- report conflicting or invalid when values disagree or cannot be typed.
It must never accept the first same-named property it happens to encounter.
IFC relationship context¶
In IFC, an object is related to property definitions through
IfcRelDefinesByProperties,
and a property set groups named properties. Axioval does not erase that
relationship. It lets each requirement decide whether the container identity
is significant.
The official IFC 4.3.2
Pset_WallCommon
documentation lists both LoadBearing and IsExternal as boolean single-value
properties. That makes it a useful demonstration, not a reason to hard-code
property-set ownership into the generic schema.