Comments (7)
It seems yet again that the decision should be made to support inheritance: #86
Handling these little edge cases are pretty frustrating. Both options are little "gotchas" for implementers.
from ids.
Well, as discussed, enabling inheritance in evaluation will also result in unexpected (or undesirable) features. Such as the IFC4.3.IfcBuiltElement which has two "functions" (a) the supertype of build(ing) elements (b) the designated entity for use when no applicable element is found (the old proxy elem basically). Without inheritance both of these cases are nice and separated. In my view it's simply a matter of fact that the IFC schemas has too many quirks to expect end-users to make sense/use of inheritance.
Also, with the standard cases being deprecated/partly removed, it warrants some special casing.
These kind of (evaluation-time) expansion rules were also discussed here for type objects without a missing occurence. #116 (comment) I would also here go with option 2.
from ids.
@Moult I'm pretty optimistic that this is the only thing related to inheritance we'd need to implement. Also, if we'd add support for generic inheritance, that might limit the people willing to implement IDS, for example, inside of a CAD tool since they should be aware of the IFC inheritance there and even which schema they should consider even before they've exported their model to any IFC.
from ids.
Commenting to voice some additional dissatisfaction at the current decision not to implement inheritance. Common requirements that desperately need inheritance to avoid verbose entity definitions in applicability:
- All building elements should be classified
- ... should be assigned to a building storey
- ... should be classified
- ... should have property "StandardCompanyProperty" in "StandardCompanyPset"
- more..
The applicability section ends up being an ugly list of all possible ifc types.
from ids.
Maybe a special entity facet option: 'all supertypes of ...' for these cases?
from ids.
(a) the supertype of build(ing) elements (b) the designated entity for use when no applicable element is found (the old proxy elem basically). Without inheritance both of these cases are nice and separated
@aothms, would a flag to include/exclude inheritance solve your objection?
from ids.
Inheritance is an ongoing/returning debate.
It can be argued both ways.
The use-cases that require this are minimal, while the risk of invalid behaviour in implementations grows exponentially.
The project made the decision in the beginning to not support it and that still seems the correct decision.
We can always reevaluate after 1.0
from ids.
Related Issues (20)
- List of datatypes with Enum types used by attributes HOT 6
- List of datatypes without IfcCompoundPlaneAngleMeasure HOT 2
- IfcLogical representation in XML base HOT 1
- IMPROVEMENT: functionality to point towards bSDD (data dictionaries) HOT 4
- IDS BIM
- Restriction of values: Enumeration limited to string-based datatype or do we allow for real, integer and measurements HOT 3
- Predefined type evaluation
- userdefuned HOT 6
- Test case naming consistency HOT 2
- 2 testcases have .html file instead of .ifc HOT 2
- Tolerance documentation 1.0.0 HOT 6
- Wrong file name in the entity directory of test cases HOT 1
- Tolerance test issues in 1.0 HOT 3
- Are complex restrictions applicable to all facet parameters? HOT 2
- Test case for indirect containment is incorrect
- Relation between enumerations in Applicability and Requirements HOT 1
- Broken links on dev Readme HOT 1
- Add textual definitions to each IDS element HOT 1
- IfcTester check ifc version?
- Proposal: Permit dataType equivalents for non-measure Property values HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ids.