Open VladimirAlexiev opened 1 year ago
I do not think we should define any properties of this level of expressiveness - we could use the expression syntax from T2.3 to achieve this without enumerating a wide list of properties
How are such specifics expressed in IFC?
modular_room_height
quite matches https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/property/FinishCeilingHeight.htm (part of https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/Qto_SpaceBaseQuantities.htm), but FinishCeilingHeight talks about suspended ceilings, whereas modular_room_height
should also apply to fixed ceilings
ifc:FinishCeilingHeight skos:broader aec3po:ModularRoomHeight
We would just define it as ClearDoorWidth in the expression. We would then create such a property in the BSDD or whatever we end up using and map to the IFC. If it doesn't exist in the IFC we can define our own custom propertyset.
@beachtom Ok, so we'll have to define ClearWidth
! We have to say:
ClearWidth broader Width
I know how to represent this in BSDD as well (Property definition).
We also have to attach it to the appropriate class Door
(ClassificationProperty definition).
Tom, how do we "map to the IFC"?
So when I last used BSDD about two years ago, we could define the concept in the IFC context (to whatever IFC version) and then link them. They have made changes since. I need to clarify what has changed
Do we need to define this in the ontology, though? Or in this ontology?
I don't think we should create a data property for every thing we may need in the regulations.
Perhaps it is enough to have a BSDD Concept class - and then ClearWidth is an individual? Perhaps even this is not needed.
https://bsdd.ontotext.com/ has a lot of info about BSDD. In particular PlantUML Full Diagram: png or svg
relatedIfcEntityName
, eg IfcDoor
relationType="IsChildOf"
can put this prop under the other.replacedObjectCode, replacingObjectCode
. https://github.com/buildingSMART/bSDD/issues/31 says they are ISO 12006-3 properties. It is about "being replaced by" and "replacing". If "A" replaces "B" then for "A" ReplacingObjectCode will be "B" and for "B" ReplacedObjectCode will be "A")In its current state, the src/vocabularies is probably unmaintainable.
However it has the benefit to illustrate how things are expected to be defined, and provide examples.
You can see the semantic representation of prop/Width at ONTO's "Semantic BSDD" ( admin / 2rNS*i@mNR@YfS ):
@prefix bsdd: <http://bsdd.buildingsmart.org/def#>.
<https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/Width> a bsdd:Property;
bsdd:activationDateUtc "2022-12-31T00:00:00"^^xsd:dateTime;
bsdd:code "Width";
bsdd:dataType "Real";
bsdd:description "The width of the object. Only given, if the object has constant thickness (prismatic).";
bsdd:isDynamic false;
bsdd:name "Width";
bsdd:propertyValueKind "SINGLE";
bsdd:status "Active";
bsdd:versionDateUtc "2022-12-31T00:00:00"^^xsd:dateTime .
Then you can find usages of Width
with a query like this (limiting to IFC classes, you see that we need to hack URLs even for this simple task!)
select * where {
?s ?p <https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/Width>
filter(strstarts(str(?s),"https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3"))
}
These ?s are bsdd:ClassificationProperty
, eg one is class/VehicleROLLINGSTOCK/Width. It relates the prop to a class, and can change prop characteristics (eg here it sets propertySet
):
<https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/class/IfcVehicleROLLINGSTOCK/Width>
a bsdd:ClassificationProperty;
bsdd:activationDateUtc "2022-12-31T00:00:00"^^xsd:dateTime;
bsdd:code "Width";
bsdd:dataType "Real";
bsdd:description "The width of the object. Only given, if the object has constant thickness (prismatic).";
bsdd:isDynamic false;
bsdd:name "Width";
bsdd:property <https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/Width>;
bsdd:propertySet "Qto_VehicleBaseQuantities";
bsdd:propertyValueKind "SINGLE";
bsdd:status "Active";
bsdd:versionDateUtc "2022-12-31T00:00:00"^^xsd:dateTime .
The representation is rather poor:
https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/FinishCeilingHeight is the same: it doesn't relate to Height in any way.
My take:
@prefix ifc-prop: <https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/>.
@prefix acd-prop <https://identifier.buildingsmart.org/uri/accord/bco/prop/>.
ifc-prop:Height qudt:kind quantitykind:Height; qudt:applicableUnit unit:M, unit:MilliM. # BSDD also can attach units, but they're just string and single/multivalued is unclear ifc-prop:FinishCeilingHeight skos:broader ifc-prop:Height. acd-prop:ModularRoomHeight skos:broader ifc-prop:FinishCeilingHeight.
- these are `bsdd:Property` individuals. However, in semantic rendition of IFC data, it's better to use them directly as RDF props. Eg see below. (I've used LINDT specially formatted literals for simplicity: to avoid the need for intermediate node with `unit, value`)
```ttl
<room>
ifc-prop:FinishCeilingHeight "2.20 m"^^ucum:length;
acd-prop:ModularRoomHeight "2.18 m"^^ucum:length.
Need intermediate quantityKinds like "height", "width"
aec3po:modular_room_height is declared to be directly under
qudt:Length
. However, we need an intermediate quantityKind (or property) "height" since IFC has such a property.Same pertains to eg aec3po:width_of_angled_corridor, which should come under "width" (together with sibling props like door_clear_width, etc).
https://github.com/Accord-Project/aec3po/blob/5fb6f7e2b8b9f0f208caeeab68461aa8b3c0dfcd/src/quantity_kinds.ttl#L49-L60
@beachtom , @EdliraK do you agree?