Copying the list - this is for the agenda for today.
Since sending the email below (and the attached diagram) I
realized several things:
(a) All attributes in XSD are optional; the Enterprise Architect
UML tooling I use doesn't get this right on import.
(b) Are attributes 0..1 or 0..*? Clearly 0 (optional) is the
(c) If there are no attributes expressed, there's still an Obj
instance. Is this right? Are there needed constraints?
(d) Optionality and emptiness: if there's no ts attribute,
there's no tagspace applied. If there is, should ts be
(e) What's the difference between the absence of (say)
"writable" and having "writable" exist and initialized to false?
(f) UML basic types should be used in UML; the mix of XSD and
UML types is a bit strained. Key places are the dateTime/etc
areas - I've solved this in the UML for the WS-Calendar PIM by
conformed strings, so they're all of type String. In XSD they're
(g) The places where an attribute is required AND initialized
(see Str - val: String = "" as initial value) seem odd; in what
sense does initialization apply, and what does it mean during
the transition from "nothingness to being"?
Talk to you at the meeting shortly.
On 9/24/14 11:46 PM, William Cox wrote:
Craig and Toby --
I've attached the WD31 UML diagram as a 400dpi PNG. Scale as
needed to fit in the spec.
I used the obix-v1_1_WD31.xsd Toby uploaded to produce this. The
beautification attempt cannot be blamed on the schema.
There are some modeling issues:
(1) The XSD types are embedded in the earlier diagram; I've done
- Used the UML primitive types for Boolean, String, Integer,
Real instead of boolean, string, int, and double
- Used the XSD NMTOKEN and anyURI (these should probably
both be conformed Strings)
- Left the XSD dateTime and date and time types - I could
define those as in the WS-Calendar PIM as conformed strings;
that's what they are, but I don't think that level of
persnicketiness (sp?) is useful
- obix:Nil is used only as a literal default/initial value
and seems otherwise undefined. Not sure whether this is an
issue in the XSD
- obix:obj is used in the same way; same issues - but it's a
defined element of type Obj. Confused. It's a default for
contract. It's also an xs:any in a different namespace with
lax process Contents. Huh? "contract" is an alias for
"anyURI" so how come it's xs:any in several places??
(2) I note that several classes have additional attributes
and there are some related issues.
- Should ts have a default value of "" (the empty string)?
- Enum has "range" added
- Int has added "unit"
So this diagram is pretty close to valid UML; the gaps are
dateTime, date, time, etc (easy to fix if it needs to be
fixed). The use of obix:obj and Nil need discussion. And
perhaps (since the xsd is the basis) I should go back from the
UML types to the XSD types for boolean, int, etc.