The logic of the UML and OCL modeling languages is based on crisp values, e.g., true or false. However, when modeling systems that work in physical environments or involve human actors, different users may have subjective opinions about the reality that they perceive, and thus may need to assign different levels of confidence to the models' logic predicates. These different points of view or opinions may also be subject to uncertainty when there is a lack of knowledge about the system, adding the dimension of ignorance to the traditional belief-disbelief dichotomy.

To address this problem, in [1] we propose an extension of the OCL/UML datatype Boolean called SBoolean that enables the representation of subjective uncertain opinions, together with a set of logical operators for reasoning with uncertain propositions in order to reach better-informed decisions. The work uses Subjective Logic [2] as underlying logic, since it provides the right kind of concepts, mechanisms and operators to represent subjective opinions.

The proposal has been implemented and is available as an extension of the modeling tool USE, which provides the newly defined SBoolean OCL datatype as well as the rest of the OCL uncertain datatypes [3]. The extended version of USE can be downloaded from our Git repository.

Project Resources

The extended version of USE can be downloaded from our Git repository, and also directly from the following zipped file.

We also conducted an experiment to evaluate the usability of the proposal. The models and all the materials used in the experiment, together with its raw results are available in the following bundle: OCL Subjective Logic Experiment


[1] Paula Muñoz, Loli Burgueño, Victor Ortiz, Antonio Vallecillo. "Extending OCL with Subjective Logic." Submitted.

[2] Audun Jøsang. "Subjective Logic – A Formalism for Reasoning UnderUncertainty." Springer, 2016. doi:10.1007/978-3-319-42337-1.

[3] Manuel F. Bertoa, Loli Burgueño, Nathalie Moreno, and Antonio Vallecillo. "Incorporating measurement uncertainty into OCL/UML primitive datatypes." Software and Systems Modeling, 2019. doi: 10.1007/s10270-019-00741-0.