-
-
Notifications
You must be signed in to change notification settings - Fork 787
IDS support in IfcOpenShell #1349
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
Comments
A couple of minor implementation comments - one of the really valuable things about the way most BIMTester checks are implemented is that it doesn't just say "this failed" or "this passed". It formats it in this way:
This way:
|
@Moult very cool! I formatted the messages, feel free to adapt to your wishes. The logger verbosity indicates error or success so you don't need to test the string content.
'Living Room or Kitchen' should be 'Living Room' or 'Kitchen' ideally, but that's a bit of work that I'd like to postpone. |
By the way, I think there would be value in building a UI to generate the IDS XML as not everybody can write XML - this can also help test out the usability and full workflow for the average BIM user. Happy to do this, but probably need some guidance on the rules (e.g. an XSD, or an explanation of what it allows). |
Good point. The xsd is still in progress at bSI. That's when things get
precise. So I don't think it'll be ready in a short time frame
Sent from a mobile device. Excuse my brevity. Kind regards, Thomas
Op ma 1 mrt. 2021 09:24 schreef Dion Moult <notifications@github.com>:
… By the way, I think there would be value in building a UI to generate the
IDS XML as not everybody can write XML - this can also help test out the
usability and full workflow for the average BIM user. Happy to do this, but
probably need some guidance on the rules (e.g. an XSD, or an explanation of
what it allows).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1349 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAILWV33UIHSNNOREUXK3WDTBNFM3ANCNFSM4YKUUKNQ>
.
|
guys, thats great stuff :) How do you create ids files? Are there examples around? |
@berndhahnebach https://github.com/buildingSMART/IDS/blob/master/Development/First%20production%20release/Examples.md Ping @aothms and @berlotti - I will potentially be digging into the guts of the new FM Handover View MVDs as well as the spreadsheetML conversions. I think this makes for an excellent usecase for writing an IDS that checks whether or not all the appropriate fields are filled out. If this goes ahead, perhaps I can use this usecase to battle test the IDS capabilities? |
Great feature @Moult! Following our conversation, I would like to further develop this during GSoC'21 by:
I'm submitting the GSoC proposal, also available here: https://docs.google.com/document/d/15oQDhYrApuHsI1Zee5bDvSqRoUz67xHMr79hdFJUoZ8/edit?usp=sharing |
Great proposal! I believe the XSD link you have is correct. I have also attached an old version of the XML here. Comparing the old XML with the new XML examples may provide some insight on the changes made formal in the XSD. We should also organise a weekly catchup. BTW @aothms the BCF lib uses |
@atomczak by the way, the webapp seems to be emerging with a Python backend, so when you get around to developing the webapp to author IDSes, if the XML generation is done server-side, then it would be ideal for it to be a Python thing too. If it is done client-side, no worries. |
Oh, and one more thing, It would be good to investigate the ability to integrate IDS with MicroMVD's Gherkin syntax, where one would simply "call" the other. This way, it provides a nice human readable description that ties into business objectives, but the implementation still follows strict standards rather than bespoke test definitions. |
This looks really good. By the time I started there wasn't an XSD, I think it might be worth it. At the same time though there might be different dialects and versions (milestones) of IDS and the minInclusive etc aren't really part of the XSD schema, so perhaps the flexibility of using a schemaless approach might be beneficial for the time the IDS schema and implementations between vendors are still maturing. |
I was just informed that the minInclusive etc, things are going to be part of the XSD schema (or maybe a second imported schema namespace). I think it's worth an experiment to see if xmlschema makes life easier. |
the proposal submitted (link)! MicroMVD's, Gherkin, XML/XSD/IDS, minInclusive, web UI, IDS authoring, BCF authoring, difference between xml parsers, existing capabilities of IfcOpenShell and BIMTester... there is a lot for me to learn! I'm still confused with some of those, but looking forward to this opportunity and hope to get accepted :) @Moult, you mentioned to schedule regular meetings, how would you like to arrange them, should all three of us meet? What's your availability? For the next couple of weeks my availability to contribute is limited due to problems around relocation to Norway and academic work, but I will at least try to work on some small aspect of it and learn. Also, which communication channel apart from videocalls do you prefer: |
Great! There's a bit of a waiting time now until we work out how many Google slots there are. For weekly meetups and live questions, the osarch chat works best. For dev progress, this github issue works. At significant milestones , we should post on the forum so the wider community can keep track. |
To-do list for the GSoC project:
|
Speaking about the message syntax, I'm not sure if it follows some guidelines, such as this Gherkin syntax or not. Currently we have for example:
which is a bit long and mixes both failing and passing sentences, sometimes confusing. Can we reduce it to:
similarly for passing ones:
What do you think about grouping messages together?
|
I've found two bugs in our code that I'm trying to resolve:
Added to the To-do list |
My mistake when switching to xmlschema (from DOM to dictionaries). Fixed it. |
Wonderful overview @atomczak
I don't think all of these are intended to be used in the IDS spec. Maybe @berlotti can comment?
I think it's a good idea. It'll reduce some of the wall of text we currently have. It's a bit like a matrix transpose of the information. It probably just shows we need a better data structure for capturing the results so that this kind of grouping and sorting is easy. |
I listed those restrictions based on IDS.xsd: |
Regarding the grouping of messages, currently we have a list:
If we group it by specifications, the output would become a hierarchy not a list, but also benefit from less text - simpler to understand. I suggest:
I realise it doesn't solve the initial problem: one element can be flagged multiple times, once as True, once as False. For this we could add another level of the hierarchy, but I'm not sure if it's helpful 🤔 For example:
|
Sharing the work-in-progress authoring web-app: http://artomczak.pythonanywhere.com/create. Bare in mind it only looks like creating IDS, there is no save or validate functionality. Source-code repo: https://github.com/atomczak/IDS-web-app |
basic tests written in test_ids.py using unittest module. Validate using: Test files were created and can be found in this separate repo: https://github.com/atomczak/Sample-BIM-Files/tree/main/IDS |
Recent development: support for the new IDS 0.4.1 schema, full restrictions support including authoring, implemented asdict() functionality for all classes to easily convert to dictionaries and IDS.xml. |
Yes, let's do that. @atomczak but maybe first scroll through the text and see if there is something interesting we need to carry over to a new issue. After that feel free to close. |
I'm not able to close it. I also couldn't add labels to issues. Can you do it? I have checked the text and didn't see anything that we might still need. |
Sorry, missed this message. Closing :) |
@atomczak I have just stumbled across this discussion ... I am playing around again with Ifcopenshell and IDS and I was wondering if you took this idea any further: https://github.com/atomczak/IDS-web-app ... the repo seems to have vanished. I would be very interested in having an open source solution around IDS. Thanks! |
@MarkusSteinbrecher there is https://blenderbim.org/ifctester which is half built. |
Uh oh!
There was an error while loading. Please reload this page.
4e889b7 implements a very basic BIMTester integration. Ping @aothms as well as @rbertucat who this might impact, if IfcRail is testing pset applicability too.
To run, just point to the IDS XML instead of a feature file.
HTML report looks like this:
Because it just uses the same argument to specify a feature file, this means that the Blender UI to BIMTester, the FreeCAD UI to BIMTester, as well as the standalone UIs to BIMTester built by @berndhahnebach and @rbertucat all can just work out of the box.
I really like this new IDS approach. I can read the XML and it just makes sense.
BIMTester can provide additional value on top of this IDS XML spec by providing a test running interface, as well as a HTML report generator, and an xUnit compatible output (therefore, will integrated into many continuous integration apps). BIMTester also provides a nice interface for bSI standards development as you can specify a custom IFC schema prior to running tests.
As a separate concept to test running, there is the whole Gherkin approach. The biggest benefit of Gherkin is the ability for humans to understand it, and that it can be included in contracts, and read by non-technical people. At the end of the day, it still needs code to check. Right now, this is the biggest disadvantage of BIMTester. If you want to write your own check, you need to know a bit of Python + the IfcOpenShell API. I see this IDS XML as replacing the Python coding for simple checks that anybody can write who doesn't need / want to know Python or the IfcOpenShell API. And whilst IDS XML is great for general and common specifications, it will never cover everything, so allowing both approaches is great.
Possible Gherkin sentences:
... this is easy, but doesn't communicate well to non-technical people - defeats the purpose of Gherkin. Maybe it should exist as a template simply for techies who are prototyping new bSI standards, but definitely deserves the blank looks it'll encounter on real projects :)
... this can autoconvert XML<->Gherkin, and is highly specific. Kinda midway - readable but contains jargon for non-techies, and extra effort for techies, since it'll probably end up being its own DSL and would need to be translated into different languages ...
... this is perhaps the best from a Gherkin point of view. This looks like exactly the type of sentence that already exists in contracts. From a UX perspective, there can be a simple UI that a spec writer can use to link this arbitrary user sentence to an XML definition - or even better, reuse
<specification name="">
. Easy for the manager, easy for the spec writer (can use any tool, IfcOpenShell Python API optional). I personally think this would be the way to go.The text was updated successfully, but these errors were encountered: