Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

using BSDD for numeric props #28

Open
VladimirAlexiev opened this issue Jun 28, 2023 · 8 comments
Open

using BSDD for numeric props #28

VladimirAlexiev opened this issue Jun 28, 2023 · 8 comments
Assignees
Labels

Comments

@VladimirAlexiev
Copy link
Contributor

VladimirAlexiev commented Jun 28, 2023

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).

aec3po:modular_room_height a aec3po:QuantityKind ;
rdfs:label "modular room height"@en ;
rdfs:comment "vertical distance within one storey between the modular plane of the upper surface of flooring and the modular plane of the finished ceiling."@en ;
qudt:applicableUnit unit:CentiM ;
qudt:applicableUnit unit:IN ;
qudt:applicableUnit unit:M ;
qudt:applicableUnit unit:MilliIN ;
qudt:applicableUnit unit:MilliM ;
qudt:hasDimensionVector qkdv:A0E0L1I0M0H0T0D0 ;
qudt:normativeReference "https://www.iso.org/obp/ui/#iso:std:iso:6707:-1:ed-6:v1:en:term:3.7.2.47"^^xsd:anyURI ;
rdfs:isDefinedBy aec3po:quantity_kinds ;
skos:broader quantitykind:Length .

@beachtom , @EdliraK do you agree?

@beachtom
Copy link
Contributor

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

@VladimirAlexiev
Copy link
Contributor Author

How are such specifics expressed in IFC?

@beachtom
Copy link
Contributor

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.

@VladimirAlexiev
Copy link
Contributor Author

@beachtom Ok, so we'll have to define ClearWidth! We have to say:

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"?

@beachtom
Copy link
Contributor

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.

@VladimirAlexiev
Copy link
Contributor Author

VladimirAlexiev commented Jun 28, 2023

https://bsdd.ontotext.com/ has a lot of info about BSDD. In particular PlantUML Full Diagram: png or svg

@maximelefrancois86
Copy link
Contributor

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.

@VladimirAlexiev
Copy link
Contributor Author

VladimirAlexiev commented Sep 1, 2023

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:

  • doesn't connect to the IFC property explicitly (although it duplicates it!)
  • doesn't say it's quantity Length, the dimension vector, units, etc.
  • doesn't relate to QUDT

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:

  • These are defects of specific BSDD data that we shouldn't be satisfied with. We should use all BSDD prop attributes, and when not enough we can add our own, eg:
@prefix ifc-prop: <https://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/>.
@prefix acd-prop <https://identifier.buildingsmart.org/uri/accord/bco/prop/>.

# BSDD stuff as per above, and then
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)
<room>
   ifc-prop:FinishCeilingHeight "2.20 m"^^ucum:length;
   acd-prop:ModularRoomHeight "2.18 m"^^ucum:length.

@VladimirAlexiev VladimirAlexiev changed the title Need intermediate quantityKinds like "height", "width" using BSDD for numeric props Sep 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants