Expressing conditional usage rules

I posted the following to the the wiki, at http://wiki.saltis.org/display/XDMDL/Call-02?focusedCommentId=7536654&#comment-7536654, as a comment.
A further thought on my proposed "usage rules", which seemed rather over-complex when presented on the call. I had structured these round a series of logic statements, using a combination of if-then-else and switch-case statements.
It strikes me that this might be better, more simply, done with a series of condition statements, which would effectively encode the following table (illustrating the use-case used in the presentation, around the formatting of the xAPI "Actor" table).
NS = Not supported
O = Optional
M = Mandatory
ConditionobjectTypeMemberInverse Functional Identifier"agent""Agent"NSM"anonymous_group""Group"MNS"identified_group""Group"OM
In terms of expressing this table in an XML hierarchy of properties:
* the different conditions (i.e. the rows of the table) would be declared on the parental "Actor" declaration;
* the columns would be represented by the nested property declarations;
* the cells would be represented by <conditional> clauses on the property declarations.
So, on the parent...
<declaration id="Actor">...
<conditions>
<condition id="agent">
<condition id="anonymous_group"/>
<condition id="identified_group/>
</conditions>

And on the nested objectType declaration:
<declaration id="objectType">...
<usage>
<conditional reference="agent">
<set_value>.Agent</set_value>
</conditional>
<conditional reference="anonymous_group">
<set_value>.Group</set_value>
</conditional>
<conditional reference="identified_group">
<set_value>.Group</set_value>
</conditional>
</usage>...

And on the nested Member declaration:
<declaration id="Member">
<usage>
<conditional reference="agent">
<not_supported/>
</conditional>
<conditional reference="anonymous_group">
<mandatory/>
</conditional>
<conditional reference="identified_group">
<optional/>
</conditional>
</usage>...

Received on Sunday, 29 March 2015 12:09:51 UTC