What is a good model? what is a bad model? what is a valid model? These questions are raised when we are proposing a new package. Every package has its own specifications that contains a lot of useful information. For example, it tells what is the purpose of the package, what it contains, how it is constructed, what you can and what you cannot do with it. So far, I have implemented the arrays package in JSBML in accordance with the latest specifications. Though you can construct models with the arrays package, valid models are not enforced in JSBML. This means that nothing prevents you from constructing invalid models. But at this point may ask yourself, what is allowed and what is not allowed in the arrays package.
A valid model is one that does not violate any of the validation rules listed in the spec. Last week I worked mainly on documentation since the arrays package lacked validation rules. I updated the arrays specifications and wrote a list of validation rules. For example, the arrays package is currently limited to at most three array dimensions. This means that if you add a species with four dimensions, you violate the specifications. So if you are interested to know what the arrays validation rules are, let me know. The arrays package is still in development, so the spec is not yet finalized and is subject to change. Hopefully, my work helps the community reach a consensus.