Is ifcVersion a requirement or just metadata?
Follow-up on https://github.com/buildingSMART/IDS/pull/101#issuecomment-1271269032
The Specification tag contains the ifcVersion attribute. In version 0.9 of IDS this is a required attribute, but to be valid against the schema, a value of "" is allowed...
Currently in the test cases, the ifcVersion attribute is regarded as having no effect whatsoever on the outcome of any IDS check.
A few reasons for making the IFC schema more significant:
- Pre-check validation of IDS specs. For example non existing attributes, inverses and derived attributes all require knowledge of the applicable schema(s). This will of course be limited in use when regexes are used for identifying attributes, which I my opinion is still something we should not want to allow at all, but that's a different issue.
- When we added this to
Specification(it was first in theHeader) the idea was that you can have one IDS, that works for 2 different schemas, by having 2 specifications; one for schema X and one for schema Y. Logically they would check the same thing, but depending on the IFC schema, only one would be executed each time. You can imagine schema X having a Property for some information whereas schema Y now has a dedicated Attribute for the same information. Personally I am not too sure about how often this will happen.
It would be good to have a little bit of a discussion on this I think, my point would be that any Specification in an IDS that does not match with the IfcSchema of an IFC file, should simply be skipped and not evaluated at all. I did miss some meetings, so perhaps this is already a done deal, just let me know :).
I thought we agreed on this during the last phase - the ifcVersion should be a requirement, not just metadata. So if IDS says ifcVersion="IFC4.0", the IFC file in version "2x3" should fail.
I think this test case is wrong: https://github.com/buildingSMART/IDS/blob/development/Documentation/ImplementersDocumentation/TestCases/ids/pass-specification_version_is_purely_metadata_and_does_not_impact_pass_or_fail_result.ids