- From: Alan Garny <alan.garny AT inria.fr>
- To: cellml-tools-developers AT lists.cellml.org
- Cc: cellml-tools-developers AT cellml.org
- Subject: Re: [[cellml-dev] ] libCellML handling of non-valid CellML - discussion request
- Date: Thu, 15 Jan 2015 23:25:10 +0100 (CET)
Hi Randall,
I am not sure I fully understand the issue at hand. What do you mean exactly
by non-valid CellML models? Using libCellML, I would expect to be able to
create a model with a component C. Within that component, I would expect to
be able to create a variable V with units U, and stop here if I want. The
model would clearly be incomplete, yet I would still expect to be able to
save it and load it back without any problem. However, if if I was then to
ask libCellML to validate the model, then I would expect libCellML to tell me
that the unit U hasn't been defined, as well as probably tell me that there
is no equation that uses the variable V. More generally, when it comes to
validation, I would expect libCellML to implement all the rules that are in
the CellML specification, as well as Jonathan Cooper's algorithm for checking
units consistency.
About connections, I imagine I am once again missing something. Why would you
hide them? What if, for some reason or another, a CellML-capable software
needs to know about the connections? As an API, I would expect libCellML to
give me access to everything that is part of the CellML language.
Regarding your options:
1) I am clearly missing something. In other words, I don't see the need for
this.
2) Independent of whether a model is valid or not, I would in any case have a
"connection" class and make it accessible to libCellML users.
3) 80/20 rule?
Otherwise, "pa" (in "still under consruction, pa")?
Alan
----- Original Message -----
>
From: "Randall Britten"
>
<r.britten AT auckland.ac.nz>
>
To:
>
cellml-tools-developers AT cellml.org
>
Sent: Thursday, 15 January, 2015 9:46:47 PM
>
Subject: [[cellml-dev] ] libCellML handling of non-valid CellML - discussion
>
request
>
Hi all
>
Firstly, Happy New Year, hope you have a great 2015!
>
I had some conversations yesterday around the ABI about how libCellML should
>
handle non-valid CellML models. We are especially envisaging model-editing
>
software that uses libCellML, progressively building and modifying models,
>
meaning that as the model is worked on step-by-step, there will often be
>
steps that are part of a group of steps, and only once the group of steps is
>
complete is the model in a valid state. Another likely scenario is using
>
software that uses libCellML to load models that were created independently
>
of libCellML, and it would be necessary to handle the case where the loaded
>
model might be invalid (e.g. still under construction, or pa).
>
Within reason, we’d like libCellML to support the corresponding use cases,
>
although it might make sense to defer them till later.
>
An example that has arisen is how connections are represented. While the XML
>
has a “connection” element that is a child of the “model” element, the
>
design that I’ve followed so far aimed to hide that, treating it as an
>
implementation detail, so that variables would simply allow for a query
>
regarding which other variables they are connected to.
>
Some options considered so far:
>
1) Phantom Variables (and similarly for other situations, e.g. Phantom
>
Units), which serve as place-holders.
>
2) Reinstate “connection” class in the object model to handle the case where
>
the connection is not valid (e.g. refers to variables or components that
>
don’t exist in the model).
>
3) Defer consideration of partially defined and invalid models (80/20 rule).
>
Please provide feedback on this. I’ll be responding to feedback received
>
today and next week on the same day it is received (within reason).
>
Thanks in advance.
>
Regards,
>
Randall
Archive powered by MHonArc 2.6.18.