|Re: [higgins-dev] IdAS changes proposal|
> What Jim and all of us talked about several months ago is to remove the special IModel interfaces completely,
> and just use the existing entities and attributes to describe entity classes and attribute definitions. In other words, recurse.
The main Jim's argument to rid IModel interfaces was to reuse alredy existent IEntity and IAttribute inerfaces. Actually, I already gave arguments a year ago, why the current model interfaces are more convenient:
1. The current model interfaces allow to represent many things obviously. Suppose, we need to expose the model of a simple value. If we used Jim's model, we'd represent simple value model via IEntity intrerface (which is confusing by itself). Than, to represent params of this simple value (there are many things in OWL1.1 like length, minLength, maxLength, pattern, etc.), this IEntity should contain an attribute for each of those params. In turn, the attribute should contain some ISimpleAttrValue with data of its parameter. From the other hand, the current IModel interface can reflect OWL in a more convenient way. If we need params of some simple value, we get an instance of ISimpleValueModel (either from IAttributeModel or from ISimpleAttrValue), and invoke its methods getLength(), getMinLength(), getMaxLength() etc.
2. IdAS interfaces (IEntity, IAttribute) have a lot of methods behind of getType() and getData() which are not used in Jim's model. I suppose these methods will confuse people which need to use a model.
3. Jim's model is flexible and could represent anything, but we do not need this, because we limited by OWL and need to describe things which OWL provides. IModel, in turn, could be disigned to reflect OWL constructs handy.