ControlLogic#

Fully qualified class name of the UML model DDI-CDI 1.1beta: DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic

Definition#

Program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.

Examples#

A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.

Explanatory notes#

DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.

Diagram#

Diagram

Inheritance#

Inheritance

Attributes#

Attributes
Attributes#

Name

Inherited from

Description

Data Type

Multiplicity

Default value

description

- own class -

A description of the control logic in human-readable language.

String

0..1

displayLabel

- own class -

A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.

LabelForDisplay

0..*

identifier

- own class -

Identifier for objects requiring short- or long-lasting referencing and management.

Identifier

0..1

name

- own class -

Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.

ObjectName

0..*

workflow

- own class -

Reference to the system or standard from which the workflow was taken.

ControlledVocabularyEntry

0..1

Associations#

Associations
Associations#

Direction

Association

Description

Multiplicity of ControlLogic

Package of Other Class

Other Class

Multiplicity of other class

Aggregation Kind

Inherited from

to

Activity hasInternal ControlLogic

An activity is embedded in the control construct which launches it.

0..*

- own package -

Activity

0..*

none

own class

to

ControlLogic hasSubControlLogic ControlLogic

Control logic is a container of control logic which is in turn a container of control logic ad infinitum so that it is able to represent the structure of a program.

0..*

- own package -

ControlLogic

0..1

none

own class

from

ControlLogic has InformationFlowDefinition

A control construct has zero or more information flow definitions each of which provides the control construct with zero or more input and output parameters used or produced in the step/sub-step with which it is associated.

0..*

- own package -

InformationFlowDefinition

0..*

shared

own class

from

ControlLogic informs ProcessingAgent

Control logic informs a processing agent. The information may be deterministic or non-deterministic.

0..*

- own package -

ProcessingAgent

0..*

none

own class

from

ControlLogic invokes Activity

Control logic invokes an activity deterministically (either conditionally or unconditionally) or non-derministically (based on temporal constraints or rule-based scheduling).

0..*

- own package -

Activity

1..*

none

own class

Encodings#

Syntax representations / encodings

All syntax representations except the Canonical XMI are provided as reference points for specific implementations, or for use as defaults if sufficient in the form presented.

Fragment for the class ControlLogic (entire model as XMI)

  1<packagedElement xmlns:StandardProfile="http://www.omg.org/spec/UML/20131001/StandardProfile"
  2                  xmlns:uml="http://www.omg.org/spec/UML/20131001"
  3                  xmlns:xmi="http://www.omg.org/spec/XMI/20131001"
  4                  xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic"
  5                  xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic"
  6                  xmi:type="uml:Class">
  7   <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedComment"
  8                  xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedComment"
  9                  xmi:type="uml:Comment">
 10      <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic"/>
 11      <body>Definition 
 12============ 
 13Program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  
 14
 15Examples 
 16========== 
 17A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  
 18
 19Explanatory notes 
 20=================== 
 21DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.</body>
 22   </ownedComment>
 23   <name>ControlLogic</name>
 24   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-description"
 25                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-description"
 26                    xmi:type="uml:Property">
 27      <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-description-ownedComment"
 28                     xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-description-ownedComment"
 29                     xmi:type="uml:Comment">
 30         <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-description"/>
 31         <body>A description of the control logic in human-readable language.
 32</body>
 33      </ownedComment>
 34      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-description-lowerValue"
 35                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-description-lowerValue"
 36                   xmi:type="uml:LiteralInteger"/>
 37      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-description-upperValue"
 38                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-description-upperValue"
 39                   xmi:type="uml:LiteralUnlimitedNatural">
 40         <value>1</value>
 41      </upperValue>
 42      <name>description</name>
 43      <type href="http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#String"
 44             xmi:type="uml:PrimitiveType"/>
 45   </ownedAttribute>
 46   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-displayLabel"
 47                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-displayLabel"
 48                    xmi:type="uml:Property">
 49      <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-displayLabel-ownedComment"
 50                     xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-displayLabel-ownedComment"
 51                     xmi:type="uml:Comment">
 52         <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-displayLabel"/>
 53         <body>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.
 54</body>
 55      </ownedComment>
 56      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-displayLabel-lowerValue"
 57                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-displayLabel-lowerValue"
 58                   xmi:type="uml:LiteralInteger"/>
 59      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-displayLabel-upperValue"
 60                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-displayLabel-upperValue"
 61                   xmi:type="uml:LiteralUnlimitedNatural">
 62         <value>*</value>
 63      </upperValue>
 64      <name>displayLabel</name>
 65      <isOrdered>true</isOrdered>
 66      <type xmi:idref="DDICDIModels-DDICDILibrary-DataTypes-StructuredDataTypes-LabelForDisplay"/>
 67   </ownedAttribute>
 68   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-identifier"
 69                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-identifier"
 70                    xmi:type="uml:Property">
 71      <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-identifier-ownedComment"
 72                     xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-identifier-ownedComment"
 73                     xmi:type="uml:Comment">
 74         <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-identifier"/>
 75         <body>Identifier for objects requiring short- or long-lasting referencing and management.</body>
 76      </ownedComment>
 77      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-identifier-lowerValue"
 78                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-identifier-lowerValue"
 79                   xmi:type="uml:LiteralInteger"/>
 80      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-identifier-upperValue"
 81                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-identifier-upperValue"
 82                   xmi:type="uml:LiteralUnlimitedNatural">
 83         <value>1</value>
 84      </upperValue>
 85      <name>identifier</name>
 86      <isID>true</isID>
 87      <isID>true</isID>
 88      <type xmi:idref="DDICDIModels-DDICDILibrary-DataTypes-StructuredDataTypes-Identifier"/>
 89   </ownedAttribute>
 90   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-name"
 91                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-name"
 92                    xmi:type="uml:Property">
 93      <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-name-ownedComment"
 94                     xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-name-ownedComment"
 95                     xmi:type="uml:Comment">
 96         <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-name"/>
 97         <body>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</body>
 98      </ownedComment>
 99      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-name-lowerValue"
100                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-name-lowerValue"
101                   xmi:type="uml:LiteralInteger"/>
102      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-name-upperValue"
103                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-name-upperValue"
104                   xmi:type="uml:LiteralUnlimitedNatural">
105         <value>*</value>
106      </upperValue>
107      <name>name</name>
108      <isOrdered>true</isOrdered>
109      <type xmi:idref="DDICDIModels-DDICDILibrary-DataTypes-StructuredDataTypes-ObjectName"/>
110   </ownedAttribute>
111   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_1"
112                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_1"
113                    xmi:type="uml:Property">
114      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_1-lowerValue"
115                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_1-lowerValue"
116                   xmi:type="uml:LiteralInteger"/>
117      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_1-upperValue"
118                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_1-upperValue"
119                   xmi:type="uml:LiteralUnlimitedNatural">
120         <value>*</value>
121      </upperValue>
122      <association xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic_informs_ProcessingAgent"/>
123      <type xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ProcessingAgent"/>
124   </ownedAttribute>
125   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_2"
126                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_2"
127                    xmi:type="uml:Property">
128      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_2-lowerValue"
129                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_2-lowerValue"
130                   xmi:type="uml:LiteralInteger">
131         <value>1</value>
132      </lowerValue>
133      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_2-upperValue"
134                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_2-upperValue"
135                   xmi:type="uml:LiteralUnlimitedNatural">
136         <value>*</value>
137      </upperValue>
138      <association xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic_invokes_Activity"/>
139      <type xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-Activity"/>
140   </ownedAttribute>
141   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_3"
142                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_3"
143                    xmi:type="uml:Property">
144      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_3-lowerValue"
145                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_3-lowerValue"
146                   xmi:type="uml:LiteralInteger"/>
147      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_3-upperValue"
148                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_3-upperValue"
149                   xmi:type="uml:LiteralUnlimitedNatural">
150         <value>*</value>
151      </upperValue>
152      <aggregation>shared</aggregation>
153      <association xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic_hasSubControlLogic_ControlLogic"/>
154      <type xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic"/>
155   </ownedAttribute>
156   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_4"
157                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_4"
158                    xmi:type="uml:Property">
159      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_4-lowerValue"
160                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_4-lowerValue"
161                   xmi:type="uml:LiteralInteger"/>
162      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-ownedAttribute_4-upperValue"
163                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-ownedAttribute_4-upperValue"
164                   xmi:type="uml:LiteralUnlimitedNatural">
165         <value>*</value>
166      </upperValue>
167      <aggregation>shared</aggregation>
168      <association xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic_has_InformationFlowDefinition"/>
169      <type xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-InformationFlowDefinition"/>
170   </ownedAttribute>
171   <ownedAttribute xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-workflow"
172                    xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-workflow"
173                    xmi:type="uml:Property">
174      <ownedComment xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-workflow-ownedComment"
175                     xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-workflow-ownedComment"
176                     xmi:type="uml:Comment">
177         <annotatedElement xmi:idref="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-workflow"/>
178         <body>Reference to the system or standard from which the workflow was taken.</body>
179      </ownedComment>
180      <lowerValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-workflow-lowerValue"
181                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-workflow-lowerValue"
182                   xmi:type="uml:LiteralInteger"/>
183      <upperValue xmi:id="DDICDIModels-DDICDILibrary-Classes-Process-ControlLogic-workflow-upperValue"
184                   xmi:uuid="http://ddialliance.org/Specification/DDI-CDI/1.0/XMI/#ControlLogic-workflow-upperValue"
185                   xmi:type="uml:LiteralUnlimitedNatural">
186         <value>1</value>
187      </upperValue>
188      <name>workflow</name>
189      <type xmi:idref="DDICDIModels-DDICDILibrary-DataTypes-StructuredDataTypes-ControlledVocabularyEntry"/>
190   </ownedAttribute>
191</packagedElement>

Fragment for the class ControlLogic (entire XML Schema)

  1<xs:element name="ControlLogic"
  2            type="ControlLogicXsdType"
  3            xml:id="ControlLogic">
  4  <!-- based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic -->
  5  <xs:annotation>
  6    <xs:documentation>Definition 
  7          ============ 
  8          Program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  
  9          
 10          Examples 
 11          ========== 
 12          A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  
 13          
 14          Explanatory notes 
 15          =================== 
 16          DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.</xs:documentation>
 17  </xs:annotation>
 18</xs:element>
 19<xs:complexType name="ControlLogicXsdType"
 20                xml:id="ControlLogicXsdType">
 21  <xs:annotation>
 22    <xs:documentation>Definition 
 23          ============ 
 24          Program in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  
 25          
 26          Examples 
 27          ========== 
 28          A loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  
 29          
 30          Explanatory notes 
 31          =================== 
 32          DDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook.</xs:documentation>
 33  </xs:annotation>
 34  <xs:sequence>
 35    <xs:element name="description"
 36                type="xs:string"
 37                minOccurs="0"
 38                maxOccurs="1"
 39                xml:id="ControlLogic-description">
 40      <xs:annotation>
 41        <xs:documentation>A description of the control logic in human-readable language.</xs:documentation>
 42      </xs:annotation>
 43    </xs:element>
 44    <xs:element name="displayLabel"
 45                type="LabelForDisplayXsdType"
 46                minOccurs="0"
 47                maxOccurs="unbounded"
 48                xml:id="ControlLogic-displayLabel">
 49      <xs:annotation>
 50        <xs:documentation>A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations.</xs:documentation>
 51      </xs:annotation>
 52    </xs:element>
 53    <xs:element name="identifier"
 54                type="IdentifierXsdType"
 55                minOccurs="0"
 56                maxOccurs="1"
 57                xml:id="ControlLogic-identifier">
 58      <xs:annotation>
 59        <xs:documentation>Identifier for objects requiring short- or long-lasting referencing and management.</xs:documentation>
 60      </xs:annotation>
 61    </xs:element>
 62    <xs:element name="name"
 63                type="ObjectNameXsdType"
 64                minOccurs="0"
 65                maxOccurs="unbounded"
 66                xml:id="ControlLogic-name">
 67      <xs:annotation>
 68        <xs:documentation>Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage.</xs:documentation>
 69      </xs:annotation>
 70    </xs:element>
 71    <xs:element name="workflow"
 72                type="ControlledVocabularyEntryXsdType"
 73                minOccurs="0"
 74                maxOccurs="1"
 75                xml:id="ControlLogic-workflow">
 76      <xs:annotation>
 77        <xs:documentation>Reference to the system or standard from which the workflow was taken.</xs:documentation>
 78      </xs:annotation>
 79    </xs:element>
 80    <xs:element name="ControlLogic_informs_ProcessingAgent"
 81                minOccurs="0"
 82                maxOccurs="unbounded"
 83                xml:id="ControlLogic_informs_ProcessingAgent">
 84      <xs:annotation>
 85        <xs:documentation>Control logic informs a processing agent. The information may be deterministic or non-deterministic.</xs:documentation>
 86      </xs:annotation>
 87      <xs:complexType>
 88        <xs:complexContent>
 89          <xs:restriction base="AssociationReferenceXsdType">
 90            <xs:sequence>
 91              <xs:element name="ddiReference"
 92                          type="InternationalRegistrationDataIdentifierXsdType"
 93                          minOccurs="0"
 94                          maxOccurs="1"
 95                          xml:id="ControlLogic_informs_ProcessingAgent-ddiReference"/>
 96              <xs:element name="validType"
 97                          minOccurs="0"
 98                          maxOccurs="unbounded"
 99                          xml:id="ControlLogic_informs_ProcessingAgent-validType">
100                <xs:simpleType>
101                  <xs:restriction base="xs:NMTOKEN">
102                    <xs:enumeration value="Curator"/>
103                    <xs:enumeration value="ProcessingAgent"/>
104                    <xs:enumeration value="Service"/>
105                  </xs:restriction>
106                </xs:simpleType>
107              </xs:element>
108            </xs:sequence>
109          </xs:restriction>
110        </xs:complexContent>
111      </xs:complexType>
112    </xs:element>
113    <xs:element name="ControlLogic_invokes_Activity"
114                minOccurs="1"
115                maxOccurs="unbounded"
116                xml:id="ControlLogic_invokes_Activity">
117      <xs:annotation>
118        <xs:documentation>Control logic invokes an activity deterministically (either conditionally or unconditionally) or non-derministically (based on temporal constraints or rule-based scheduling).</xs:documentation>
119      </xs:annotation>
120      <xs:complexType>
121        <xs:complexContent>
122          <xs:restriction base="AssociationReferenceXsdType">
123            <xs:sequence>
124              <xs:element name="ddiReference"
125                          type="InternationalRegistrationDataIdentifierXsdType"
126                          minOccurs="0"
127                          maxOccurs="1"
128                          xml:id="ControlLogic_invokes_Activity-ddiReference"/>
129              <xs:element name="validType"
130                          minOccurs="0"
131                          maxOccurs="unbounded"
132                          xml:id="ControlLogic_invokes_Activity-validType">
133                <xs:simpleType>
134                  <xs:restriction base="xs:NMTOKEN">
135                    <xs:enumeration value="Activity"/>
136                    <xs:enumeration value="Step"/>
137                  </xs:restriction>
138                </xs:simpleType>
139              </xs:element>
140            </xs:sequence>
141          </xs:restriction>
142        </xs:complexContent>
143      </xs:complexType>
144    </xs:element>
145    <xs:element name="ControlLogic_hasSubControlLogic_ControlLogic"
146                minOccurs="0"
147                maxOccurs="unbounded"
148                xml:id="ControlLogic_hasSubControlLogic_ControlLogic">
149      <xs:annotation>
150        <xs:documentation>Control logic is a container of control logic which is in turn a container of control logic ad infinitum so that it is able to represent the structure of a program.</xs:documentation>
151      </xs:annotation>
152      <xs:complexType>
153        <xs:complexContent>
154          <xs:restriction base="AssociationReferenceXsdType">
155            <xs:sequence>
156              <xs:element name="ddiReference"
157                          type="InternationalRegistrationDataIdentifierXsdType"
158                          minOccurs="0"
159                          maxOccurs="1"
160                          xml:id="ControlLogic_hasSubControlLogic_ControlLogic-ddiReference"/>
161              <xs:element name="validType"
162                          minOccurs="0"
163                          maxOccurs="1"
164                          xml:id="ControlLogic_hasSubControlLogic_ControlLogic-validType">
165                <xs:simpleType>
166                  <xs:restriction base="xs:NMTOKEN">
167                    <xs:enumeration value="AllenIntervalAlgebra"/>
168                    <xs:enumeration value="ConditionalControlLogic"/>
169                    <xs:enumeration value="ControlLogic"/>
170                    <xs:enumeration value="DeterministicImperative"/>
171                    <xs:enumeration value="NonDeterministicDeclarative"/>
172                    <xs:enumeration value="RuleBasedScheduling"/>
173                    <xs:enumeration value="Sequence"/>
174                    <xs:enumeration value="TemporalConstraints"/>
175                    <xs:enumeration value="TemporalControlConstruct"/>
176                  </xs:restriction>
177                </xs:simpleType>
178              </xs:element>
179            </xs:sequence>
180          </xs:restriction>
181        </xs:complexContent>
182      </xs:complexType>
183    </xs:element>
184    <xs:element name="ControlLogic_has_InformationFlowDefinition"
185                minOccurs="0"
186                maxOccurs="unbounded"
187                xml:id="ControlLogic_has_InformationFlowDefinition">
188      <xs:annotation>
189        <xs:documentation>A control construct has zero or more information flow definitions each of which provides the control construct with zero or more input and output parameters used or produced in the step/sub-step with which it is associated.</xs:documentation>
190      </xs:annotation>
191      <xs:complexType>
192        <xs:complexContent>
193          <xs:restriction base="AssociationReferenceXsdType">
194            <xs:sequence>
195              <xs:element name="ddiReference"
196                          type="InternationalRegistrationDataIdentifierXsdType"
197                          minOccurs="0"
198                          maxOccurs="1"
199                          xml:id="ControlLogic_has_InformationFlowDefinition-ddiReference"/>
200              <xs:element name="validType"
201                          minOccurs="0"
202                          maxOccurs="unbounded"
203                          xml:id="ControlLogic_has_InformationFlowDefinition-validType">
204                <xs:simpleType>
205                  <xs:restriction base="xs:NMTOKEN">
206                    <xs:enumeration value="InformationFlowDefinition"/>
207                  </xs:restriction>
208                </xs:simpleType>
209              </xs:element>
210            </xs:sequence>
211          </xs:restriction>
212        </xs:complexContent>
213      </xs:complexType>
214    </xs:element>
215  </xs:sequence>
216</xs:complexType>

Fragment for the class ControlLogic (entire JSON Schema)

  1"cls-ControlLogic": {
  2  "description": "http://ddialliance.org/Specification/DDI-CDI/1.0/RDF/ControlLogic",
  3  "type": "object",
  4  "properties": {
  5    "@context": {
  6      "$ref": "#/defs/at-context"
  7    },
  8    "@id": {
  9      "type": "string",
 10      "format": "iri-reference"
 11    },
 12    "@type": {
 13      "const": "ControlLogic"
 14    },
 15    "description": {
 16      "$comment": "cardinality 0..1 – from cdi:ControlLogic",
 17      "$ref": "#/defs/xsd:string"
 18    },
 19    "displayLabel": {
 20      "$comment": "cardinality 0..-1 – from cdi:ControlLogic",
 21      "if": { "type": "array" },
 22      "then": { "items": { "$ref": "#/defs/dt-LabelForDisplay" } },
 23      "else": { "$ref": "#/defs/dt-LabelForDisplay" }
 24    },
 25    "identifier": {
 26      "$comment": "cardinality 0..1 – from cdi:ControlLogic",
 27      "$ref": "#/defs/dt-Identifier"
 28    },
 29    "name": {
 30      "$comment": "cardinality 0..-1 – from cdi:ControlLogic",
 31      "if": { "type": "array" },
 32      "then": { "items": { "$ref": "#/defs/dt-ObjectName" } },
 33      "else": { "$ref": "#/defs/dt-ObjectName" }
 34    },
 35    "workflow": {
 36      "$comment": "cardinality 0..1 – from cdi:ControlLogic",
 37      "$ref": "#/defs/dt-ControlledVocabularyEntry"
 38    },
 39    "hasSubControlLogic": {
 40      "description": "ControlLogic_hasSubControlLogic_ControlLogic",
 41      "$comment": "cardinality 0..-1",
 42      "anyOf": [
 43        {
 44          "$ref": "#/defs/target-ControlLogic"
 45        },
 46        {
 47          "type": "array",
 48          "items": {
 49            "$ref": "#/defs/target-ControlLogic"
 50          }
 51        }
 52      ]
 53    },
 54    "has_InformationFlowDefinition": {
 55      "description": "ControlLogic_has_InformationFlowDefinition",
 56      "$comment": "cardinality 0..-1",
 57      "anyOf": [
 58        {
 59          "$ref": "#/defs/target-InformationFlowDefinition"
 60        },
 61        {
 62          "type": "array",
 63          "items": {
 64            "$ref": "#/defs/target-InformationFlowDefinition"
 65          }
 66        }
 67      ]
 68    },
 69    "informs": {
 70      "description": "ControlLogic_informs_ProcessingAgent",
 71      "$comment": "cardinality 0..-1",
 72      "anyOf": [
 73        {
 74          "$ref": "#/defs/target-ProcessingAgent"
 75        },
 76        {
 77          "type": "array",
 78          "items": {
 79            "$ref": "#/defs/target-ProcessingAgent"
 80          }
 81        }
 82      ]
 83    },
 84    "invokes": {
 85      "description": "ControlLogic_invokes_Activity",
 86      "$comment": "cardinality 1..-1",
 87      "anyOf": [
 88        {
 89          "$ref": "#/defs/target-Activity"
 90        },
 91        {
 92          "type": "array",
 93          "items": {
 94            "$ref": "#/defs/target-Activity"
 95          }
 96        }
 97      ]
 98    },
 99    "hasInternal_OF_Activity": {
100      "description": "Activity_hasInternal_ControlLogic",
101      "$comment": "cardinality 0..-1",
102      "anyOf": [
103        {
104          "$ref": "#/defs/target-Activity"
105        },
106        {
107          "type": "array",
108          "items": {
109            "$ref": "#/defs/target-Activity"
110          }
111        }
112      ]
113    },
114    "hasSubControlLogic_OF_ControlLogic": {
115      "description": "ControlLogic_hasSubControlLogic_ControlLogic",
116      "$comment": "cardinality 0..1",
117      "$ref": "#/defs/target-ControlLogic"
118    },
119    "sameAs": {
120      "$ref": "#/defs/owl:sameAs"
121    }
122  },
123  "required": ["invokes","@type"],
124  "additionalProperties": false
125},
126"target-ControlLogic": {
127  "description": "all subclasses of http://ddialliance.org/Specification/DDI-CDI/1.0/RDF/ControlLogic",
128  "anyOf": [
129    { "$ref": "#/defs/cls-ControlLogic" },
130    { "$ref": "#/defs/cls-DeterministicImperative" },
131    { "$ref": "#/defs/cls-NonDeterministicDeclarative" },
132    { "type": "string", "format": "iri-reference" }
133  ]
134},

Fragment for the class ControlLogic (main ontology)

 1# class ControlLogic
 2# based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic
 3cdi:ControlLogic
 4  a rdfs:Class, owl:Class, ucmis:Class;
 5  rdfs:label "ControlLogic";
 6  rdfs:comment "Definition \n============ \nProgram in which the order of statements is explicit. Control logic is either deterministic (imperative) or non-deterministic (declarative). Deterministic control logic consists of control constructs. Declarative control logic is constraint- and/or rule-based. Control logic may contain control logic.  \n\nExamples \n========== \nA loop control construct is deterministic control logic. A script is deterministic control logic. Rule based scheduling is declarative control logic.  \n\nExplanatory notes \n=================== \nDDI-CDI has extended control logic to include non-deterministic activity and step controls, which are not specifically described in DDI Lifecycle or DDI Codebook."@en;
 7  
 8.
 9
10cdi:ControlLogic-description
11  a rdf:Property, owl:DatatypeProperty, ucmis:Attribute;
12  rdfs:label "description";
13  rdfs:comment "A description of the control logic in human-readable language."@en;
14  rdfs:domain cdi:ControlLogic;
15  rdfs:range xsd:string;
16.
17
18cdi:ControlLogic-displayLabel
19  a rdf:Property, owl:ObjectProperty, ucmis:Attribute;
20  rdfs:label "displayLabel";
21  rdfs:comment "A human-readable display label for the object. Supports the use of multiple languages. Repeat for labels with different content, for example, labels with differing length limitations."@en;
22  rdfs:domain cdi:ControlLogic;
23  rdfs:range cdi:LabelForDisplay;
24.
25
26cdi:ControlLogic-identifier
27  a rdf:Property, owl:ObjectProperty, ucmis:Attribute;
28  rdfs:label "identifier";
29  rdfs:comment "Identifier for objects requiring short- or long-lasting referencing and management."@en;
30  rdfs:domain cdi:ControlLogic;
31  rdfs:range cdi:Identifier;
32.
33
34cdi:ControlLogic-name
35  a rdf:Property, owl:ObjectProperty, ucmis:Attribute;
36  rdfs:label "name";
37  rdfs:comment "Human understandable name (linguistic signifier, word, phrase, or mnemonic). May follow ISO/IEC 11179-5 naming principles, and have context provided to specify usage."@en;
38  rdfs:domain cdi:ControlLogic;
39  rdfs:range cdi:ObjectName;
40.
41
42cdi:ControlLogic-workflow
43  a rdf:Property, owl:ObjectProperty, ucmis:Attribute;
44  rdfs:label "workflow";
45  rdfs:comment "Reference to the system or standard from which the workflow was taken."@en;
46  rdfs:domain cdi:ControlLogic;
47  rdfs:range cdi:ControlledVocabularyEntry;
48.
49
50
51cdi:ControlLogic_hasSubControlLogic_ControlLogic
52  a rdf:Property, owl:ObjectProperty, ucmis:Association;
53  # ASSOCIATION
54  rdfs:label "hasSubControlLogic";
55  skos:altLabel "ControlLogic_hasSubControlLogic_ControlLogic";
56  rdfs:comment "Control logic is a container of control logic which is in turn a container of control logic ad infinitum so that it is able to represent the structure of a program."@en;
57  rdfs:domain cdi:ControlLogic;
58  rdfs:range cdi:ControlLogic;
59.
60
61cdi:ControlLogic_has_InformationFlowDefinition
62  a rdf:Property, owl:ObjectProperty, ucmis:Association;
63  # ASSOCIATION
64  rdfs:label "has_InformationFlowDefinition";
65  skos:altLabel "ControlLogic_has_InformationFlowDefinition";
66  rdfs:comment "A control construct has zero or more information flow definitions each of which provides the control construct with zero or more input and output parameters used or produced in the step/sub-step with which it is associated."@en;
67  rdfs:domain cdi:ControlLogic;
68  rdfs:range cdi:InformationFlowDefinition;
69.
70
71cdi:ControlLogic_informs_ProcessingAgent
72  a rdf:Property, owl:ObjectProperty, ucmis:Association;
73  # ASSOCIATION
74  rdfs:label "informs";
75  skos:altLabel "ControlLogic_informs_ProcessingAgent";
76  rdfs:comment "Control logic informs a processing agent. The information may be deterministic or non-deterministic."@en;
77  rdfs:domain cdi:ControlLogic;
78  rdfs:range cdi:ProcessingAgent;
79.
80
81cdi:ControlLogic_invokes_Activity
82  a rdf:Property, owl:ObjectProperty, ucmis:Association;
83  # ASSOCIATION
84  rdfs:label "invokes";
85  skos:altLabel "ControlLogic_invokes_Activity";
86  rdfs:comment "Control logic invokes an activity deterministically (either conditionally or unconditionally) or non-derministically (based on temporal constraints or rule-based scheduling)."@en;
87  rdfs:domain cdi:ControlLogic;
88  rdfs:range cdi:Activity;
89.

Fragment for the class ControlLogic (entire JSON-LD)

 1{
 2  "@context": [
 3    {
 4      "cdi": "http://ddialliance.org/Specification/DDI-CDI/1.0/RDF/",
 5      "xsd": "http://www.w3.org/2001/XMLSchema#",
 6
 7      "description": {
 8        "@id": "cdi:ControlLogic-description",
 9        "@type": "xsd:string"
10      },
11      "displayLabel": {
12        "@id": "cdi:ControlLogic-displayLabel",
13        "@type": "@id",
14        "@context": "LabelForDisplay.jsonld"
15      },
16      "identifier": {
17        "@id": "cdi:ControlLogic-identifier",
18        "@type": "@id",
19        "@context": "Identifier.jsonld"
20      },
21      "name": {
22        "@id": "cdi:ControlLogic-name",
23        "@type": "@id",
24        "@context": "ObjectName.jsonld"
25      },
26      "workflow": {
27        "@id": "cdi:ControlLogic-workflow",
28        "@type": "@id",
29        "@context": "ControlledVocabularyEntry.jsonld"
30      },
31      
32      "hasSubControlLogic": {
33        "@id": "cdi:ControlLogic_hasSubControlLogic_ControlLogic",
34        "@type": "@id",
35        "@context": "ControlLogic.jsonld"
36      },
37      "has_InformationFlowDefinition": {
38        "@id": "cdi:ControlLogic_has_InformationFlowDefinition",
39        "@type": "@id",
40        "@context": "InformationFlowDefinition.jsonld"
41      },
42      "informs": {
43        "@id": "cdi:ControlLogic_informs_ProcessingAgent",
44        "@type": "@id",
45        "@context": "ProcessingAgent.jsonld"
46      },
47      "invokes": {
48        "@id": "cdi:ControlLogic_invokes_Activity",
49        "@type": "@id",
50        "@context": "Activity.jsonld"
51      },
52      "hasInternal_OF_Activity": {
53        "@reverse": "cdi:Activity_hasInternal_ControlLogic",
54        "@type": "@id",
55        "@context": "Activity.jsonld"
56      },
57      "hasSubControlLogic_OF_ControlLogic": {
58        "@reverse": "cdi:ControlLogic_hasSubControlLogic_ControlLogic",
59        "@type": "@id",
60        "@context": "ControlLogic.jsonld"
61      },
62      " comment ": "tag:json-should-support-trailing-commas"
63    }
64  ],
65  "generatedBy": "This code was generated by the Eclipse Acceleo project UCMIS M2T on 2026-04-15 14:38:41.",
66  "basedOn": "based on the UML data type DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic"
67}

Fragment for the class ControlLogic (entire SHACL - Shapes Constraint Language)

  1# class ControlLogic
  2# based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic
  3<#ControlLogic> a sh:NodeShape;
  4    sh:targetClass cdi:ControlLogic;
  5	sh:message "See http://ddialliance.org/Specification/DDI-CDI/1.0/RDF/ControlLogic";
  6	sh:closed true;
  7	sh:ignoredProperties ( owl:sameAs );
  8    sh:property [
  9			sh:path rdf:type;
 10			sh:in (   cdi:ControlLogic
 11			  cdi:DeterministicImperative
 12			  cdi:ConditionalControlLogic
 13			  cdi:Sequence
 14			  cdi:NonDeterministicDeclarative
 15			  cdi:RuleBasedScheduling
 16			  cdi:TemporalConstraints
 17			  cdi:AllenIntervalAlgebra
 18			  cdi:TemporalControlConstruct
 19			 ) ;
 20    ];
 21    # attributes
 22    sh:property <#ControlLogic-description>;
 23    sh:property <#ControlLogic-displayLabel>;
 24    sh:property <#ControlLogic-identifier>;
 25    sh:property <#ControlLogic-name>;
 26    sh:property <#ControlLogic-workflow>;
 27    # associations from ControlLogic
 28    sh:property <#ControlLogic_hasSubControlLogic_ControlLogic>;
 29    sh:property <#ControlLogic_has_InformationFlowDefinition>;
 30    sh:property <#ControlLogic_informs_ProcessingAgent>;
 31    sh:property <#ControlLogic_invokes_Activity>;
 32    # associations to ControlLogic
 33    sh:property <#rev_Activity_hasInternal_ControlLogic>;
 34    sh:property <#rev_ControlLogic_hasSubControlLogic_ControlLogic>;
 35
 36
 37
 38.
 39
 40<#ControlLogic-description> a sh:PropertyShape ;
 41    sh:path cdi:ControlLogic-description;
 42    sh:datatype xsd:string;
 43    sh:maxCount 1;
 44.
 45<#ControlLogic-displayLabel> a sh:PropertyShape ;
 46    sh:path cdi:ControlLogic-displayLabel;
 47    sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 48        cdi:LabelForDisplay
 49      
 50    ) ]];
 51.
 52<#ControlLogic-identifier> a sh:PropertyShape ;
 53    sh:path cdi:ControlLogic-identifier;
 54    sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 55        cdi:Identifier
 56      
 57    ) ]];
 58    sh:maxCount 1;
 59.
 60<#ControlLogic-name> a sh:PropertyShape ;
 61    sh:path cdi:ControlLogic-name;
 62    sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 63        cdi:ObjectName
 64        cdi:OrganizationName
 65      
 66    ) ]];
 67.
 68<#ControlLogic-workflow> a sh:PropertyShape ;
 69    sh:path cdi:ControlLogic-workflow;
 70    sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 71        cdi:ControlledVocabularyEntry
 72      
 73    ) ]];
 74    sh:maxCount 1;
 75.
 76
 77<#ControlLogic_hasSubControlLogic_ControlLogic> a sh:PropertyShape ;
 78    sh:path cdi:ControlLogic_hasSubControlLogic_ControlLogic;
 79	sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 80        cdi:ControlLogic
 81        cdi:DeterministicImperative
 82        cdi:ConditionalControlLogic
 83        cdi:Sequence
 84        cdi:NonDeterministicDeclarative
 85        cdi:RuleBasedScheduling
 86        cdi:TemporalConstraints
 87        cdi:AllenIntervalAlgebra
 88        cdi:TemporalControlConstruct
 89      
 90    ) ]];
 91.
 92<#rev_ControlLogic_hasSubControlLogic_ControlLogic> a sh:PropertyShape ;
 93    sh:path [ sh:inversePath cdi:ControlLogic_hasSubControlLogic_ControlLogic ];
 94    sh:maxCount 1;
 95.
 96<#ControlLogic_has_InformationFlowDefinition> a sh:PropertyShape ;
 97    sh:path cdi:ControlLogic_has_InformationFlowDefinition;
 98	sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
 99        cdi:InformationFlowDefinition
100      
101    ) ]];
102.
103<#rev_ControlLogic_has_InformationFlowDefinition> a sh:PropertyShape ;
104    sh:path [ sh:inversePath cdi:ControlLogic_has_InformationFlowDefinition ];
105.
106<#ControlLogic_informs_ProcessingAgent> a sh:PropertyShape ;
107    sh:path cdi:ControlLogic_informs_ProcessingAgent;
108	sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
109        cdi:ProcessingAgent
110        cdi:Curator
111        cdi:Service
112      
113    ) ]];
114.
115<#rev_ControlLogic_informs_ProcessingAgent> a sh:PropertyShape ;
116    sh:path [ sh:inversePath cdi:ControlLogic_informs_ProcessingAgent ];
117.
118<#ControlLogic_invokes_Activity> a sh:PropertyShape ;
119    sh:path cdi:ControlLogic_invokes_Activity;
120	sh:node [ sh:property [ sh:path rdf:type; sh:minCount 1; sh:in (
121        cdi:Activity
122        cdi:Step
123      
124    ) ]];
125    sh:minCount 1;
126.
127<#rev_ControlLogic_invokes_Activity> a sh:PropertyShape ;
128    sh:path [ sh:inversePath cdi:ControlLogic_invokes_Activity ];
129.

Fragment for the class ControlLogic (entire ShEx - Shape Expressions)

 1# class ControlLogic
 2# based on the UML class DDICDIModels::DDICDILibrary::Classes::Process::ControlLogic
 3cdi:ControlLogicShape CLOSED {
 4	a [cdi:ControlLogic];
 5	$cdi:ControlLogicProperties (
 6	cdi:ControlLogic-description	xsd:string?;
 7	cdi:ControlLogic-displayLabel	@cdi:LabelForDisplayShape*;
 8	cdi:ControlLogic-identifier	@cdi:IdentifierShape?;
 9	cdi:ControlLogic-name	@cdi:ObjectNameShape*;
10	cdi:ControlLogic-workflow	@cdi:ControlledVocabularyEntryShape?;
11	^cdi:Activity_hasInternal_ControlLogic @cdi:ActivityShape OR @cdi:StepShape*;
12	cdi:ControlLogic_hasSubControlLogic_ControlLogic	@cdi:ControlLogicShape OR @cdi:DeterministicImperativeShape OR @cdi:NonDeterministicDeclarativeShape*;
13	
14	cdi:ControlLogic_has_InformationFlowDefinition	@cdi:InformationFlowDefinitionShape *;
15	
16	cdi:ControlLogic_informs_ProcessingAgent	@cdi:ProcessingAgentShape OR @cdi:CuratorShape OR @cdi:ServiceShape*;
17	
18	cdi:ControlLogic_invokes_Activity	@cdi:ActivityShape OR @cdi:StepShape+;
19	
20		);
21}