In https://specifications.openehr.org/releases/1.0.2/architecture/rm/demographic_im.pdf
ACTOR.roles is 0..1
ACTOR.languages is 0..1
In Demographic Information Model (same spec and version, just the HTML version
ACTOR.roles is 1..*
ACTOR.languages is 1..*
I believe the PDF version is using the existence cardinality and the HTML version is using the cardinality of the list. Though if the attribute can be optional (existence 0..1)
, then de cardinality can’t be 1..*
, unless the interpretation is: the attribute is optional, though if it’s present, then it should contain at least one element.
Note the languages
type in the PDF is declared as List<DV_TEXT> [0..1]
, and in the HTML it’s DV_TEXT [1..*]
, so the List is omitted (implicit type). Same happens with ACTOR.roles. Also PARTY.reverse_relationships in the PDF is Set<LOCATABLE_REF> [0..1]
while in the HTML it’s LOCATABLE_REF [0..*]
.
In the HTML specs for demographics on 1.0.3, 1.0.4 and 1.1.0, it follows how types are defined in the 1.0.2 spec in HTML.
I found those differences confusing.
The problem is the JSON schemas I’m working on, depend on the correct interpretation of the spec’s existence and cardinality.