Common interfaces for ORD exchange across RDM platforms #27
Replies: 6 comments 7 replies
|
We discussed the RO-Crate Schema Plus specification developed by openBIS, conceptually stress testing it as we establish understanding w.r.t its motivation and implementation details. The current understanding is that, since openBIS is domain-less, there is a requirement for imported/exported data/metadata to also carry the corresponding schemas. This allows a domain-agnostic system such as openBIS to digest any metadata and construct from it ELN objects. There remain some questions (that may already have answers somewhere):
We also discussed more concretely as a working example the use case of PREMISE - transfer of data+metadata between an ELN/LIMS and a WFMS in the context of a request for a simulation. Specifically, an ELN client requests a simulation given a structure description (e.g., molecule), with the final goal being a new simulation object in the ELN (metadata+semantics) with attached datasets. A demonstration (video) of such a process leveraging direct platform-specific APIs can be found here. To decouple from the platform-specific APIs, @edan-bainglass proposed a crate-based two-way interaction:
Potential deliverables
|
|
@JFRudzinski representing the NOMAD ELN (FAIRmat) has expressed initial concern w.r.t the openBIS spec regarding how one resolves links? (@JFRudzinski correct me if I'm wrong). Further discussion is warranted on this, perhaps including @hampusnasstrom. Let's fix a call. |
|
@jan-janssen is in favor of REST API interactions (motivated in part by a potentially inevitable agentic future). Through some discussion, also with @giovannipizzi, a current compromise is to avoid by default the exchange of raw files (possibly leaving the option) in favor of links to storage locations. This in principle reduces crates to their manifests (including file URLs), which still covers the requirements stated above. This shifts the focus to two goals:
For 1, the discussion should consider along with ELN/WFMS, and now agents, also the FINALES broker (and other such systems), which register tenants via JSON schemas. @jan-janssen @giovannipizzi point here to a potential use case of semantics in FINALES to mark quantities and methods by meaning, possibly improving discovery and/or reducing the burden on the schema requirements. @jan-janssen @giovannipizzi if you can please say more? |
|
An alternative(?) has emerged as a means for mediating interoperability across platforms - FINALES. Briefly, recasting the PREMISE use case as a FINALES-brokered workflow:
The above is a top-level overview of the interaction. However, several details can be further described w.r.t the PREMISE case, some not yet supported. For example, the concept of interactive capabilities has yet to be considered in FINALES. However, through discussions with @MonikaVo of FINALES, it is clear that the PREMISE use case is not the only one requiring such a mechanism. In other words, there exists motivation to "upgrade" FINALES for this support. To keep this comment brief, much of the discussion on this topic is summarized in reports by @MonikaVo and @giovannipizzi, to be linked here. The approach was then discussed also with the MADICES community, which so far appears to be in favor. @giovannipizzi developed a minimal PoC demonstrating the concept, to be linked here. Further discussion in the coming days will aim to flesh this PoC out w.r.t the PREMISE project, in collaboration with the FINALES team, also to test it in practice. |
Extension of FINALES with the concept of partial results@MonikaVo, @giovannipizzi IntroductionHere, we propose to extend FINALES with the concept of partial results (and possibly partial requests). The idea is that the tenant that reserves a request and starts operating on it, can post partial results at any time until it completes (and thus posts the final result, setting the status of the request to RESOLVED). If a capability supports partial results, their cntent must comply to a JSON schema. This schema is in general a third schema, i.e. different both from the request schema and from the results schema. Note: In general, it could be possible that the results schema is the same as the partial results schema, in which case, the two schemas are just the same. But in general, they could be different (e.g. a "progress" float field ranging between 0% and 100% is not useful in the final results; in the same way, some final results can only be generated at the very end, and are never available as partial results). One could also consider to implement the partial results as a kind of "wrapper" around the regular result schema. In this way, a final result might be deduced from a partial result in case a process needs to be cancelled. In this context, the "progress" field could even make sense in final results. From the point of view of the user, one only sees the most recent partial result. A new partial result posted by the tenant will typically overwrite the previous results. This is also a consideration of size and performance, since for a given experiment, there could be partial results posted more often. Probably, keeping the last partial result for RESOLVED requests should be on only if the user is running FINALES in a debugging mode; otherwise, it is clearer for the user if these are removed (as they might not contain all relevant data, but only data up to the last time the partial result was updated; the final results might contain also some final data points). Not cleaning it might result in confusion by the user, who might not know whether to check the partial results or the final results. Goal
How to use this mechanism to ask for human-feedback interactionWe envision three use cases in which a human interaction is needed. Perform an action as part of the workflow ("human tenant")In this case, an action is required as part of the workflow. The imporant aspects defining this usecase are:
An example: as part of a autonomous workflow to create and test batteries, one of the tasks is to move (at a given point) the battery from the robot to the cycler. This use case is already covered by FINALES, and does not require partial results (even if of course they can be helpful to communicate partial results to the original user). This is implemented by OVERLORT. A new FINALES request is submitted for the human action; the human is notified in some way (e.g. email); the human performs the action, and at the end posts a response in FINALES to confirm the action has been successfully completed; any orchestrating tenant who submitted the request will notice that it is now RESOLVED, and will continue. Ask for user feedback to the same user who submitted the requestIn this case, instead, the action is required by the user who submitted the workflow. In this case, the FINALES capability would also have the third schema for the partial results, and one of the field specified in the schema could be an optional URL string keyword, say This web page is usually provided by the tenant. When the results are submitted, the tenant would know that it has to post a new patial result, removing the NOTE: at a later time, the same tenant can put a new Usage in a web GUI to submit requests to FINALESThe usage could be the following. The ELN would post the request, knowing that the partial results exist, and one of them is about a In any case, even without human interaction, the ELN would have to poll FINALES to know if the request is RESOLVED, and show the results to the user (and potentially import them). If partial results exist, the ELN could show them visually to the user to indicate progress. If a human feedback is required (of the second category discussed above, i.e. by the submitter), the ELN would know because of the schema of the (partial results associated to the) request, and thus also monitor those while polling, and specifically the field If a non- When going back to the ELN (and possibly waiting a few seconds and refreshing the page, or waiting for the ELN to perform another poll of the partial response), the user will not see anymore the yellow message, and will therefore just continue waiting (either to get the final results, or for a new "yellow-box" human interaction request to be shown). Error handling in tenants requiring human interventionIn this usecase, a monitoring tenant could be implemented to notify a user in case the tenant runs into an error and an incomplete request therefore changes its status to There are errors that require direct access to the tenant for troubleshooting. Such tasks might lead to a change in status but the notification about the details of the error might not be sent to the user submitting the request but rather to the maintainer(s) of the tenant. Ideally, in this use case, if the URL is opened by the submitting user, they will not be authorized and should get a message that the action needs to be performed by an admin. Other use cases, where the error might be that a process failed after several attempts. In this case a tenant could provide some reasoning why this is and provide hints to the user posting the request about how to alter its request to increase the chance of success. Extension of FINALES with the concept of subrequestsCurrent situationWorkflows involving actions from various tenants to answer a request are managed by the OVERLORT. Although, this concept works, it is not possible to reconstruct the relation between the requests and results generated in a workflow from the FINALES database until the final workflow-result is posted that contains the list of involved requests and results. GoalThe goal of subrequests is to make the links between requests that belong to a workflow explicit in the FINALES database. In this way, the current status of a workflow would be more clearly visible and a workflow could be traced within the FINALES database (e.g. by the user who submitted the request for the workflow but does not know about the details of the workflow). Subrequests and their related results should not be deleted when finishing the workflow, but their link to the "initial request" should remain. PropertiesIn addition to a regular request, a subrequest requires a field, in which the parent request can be linked. Apart from that, it is a regular request, which gets answered by a result. |
|
@MonikaVo let's fix a call to discuss moving this from mock-up to proper PoC 💪 |
Uh oh!
There was an error while loading. Please reload this page.
Working group notes building on #2
All reactions