OCL Benchmark B3 with extensions
abstract Person
ada : Person
cyd : Person
eve : Person
bob : Person
dan : Person
abstract Exam
date: string
[this != ""]
recorder -> Person
examiner -> Person
examinee -> Person
ada_bob_cyd:Exam
[date = "20001023"
recorder = cyd
examiner = bob
examinee = ada]
dan_bob_ada:Exam
[date = "20040817"
recorder = ada
examiner = bob
examinee = dan]
eve_ada_dan:Exam
[date = "20080331"
recorder = dan
examiner = ada
examinee = eve]
examineeAda -> Exam *
[examineeAda = {e:Exam|e.examinee = ada}]
recorderAda -> Exam *
[recorderAda = {e:Exam|e.recorder = ada}]
examinerAda -> Exam *
[examinerAda = {e:Exam|e.examiner = ada}]
//Navigating higher-order association using Set Comprehension extension
examineeOfAdaAsExaminer -> Person *
[examineeOfAdaAsExaminer = {e:Exam|e.examiner = ada|e.examinee}]
examineeOfAdaAsRecorder -> Person *
[examineeOfAdaAsRecorder = {e:Exam|e.recorder = ada|e.examinee}]
examinerOfAdaAsExaminee -> Person *
[examinerOfAdaAsExaminee = {e:Exam|e.examinee = ada|e.examiner}]
examinerOfAdaAsRecorder -> Person *
[examinerOfAdaAsRecorder = {e:Exam|e.recorder = ada|e.examiner}]
recorderOfAdaAsExaminee -> Person *
[recorderOfAdaAsExaminee = {e:Exam|e.examinee = ada|e.recorder}]
recorderOfAdaAsExaminer -> Person *
[recorderOfAdaAsExaminer = {e:Exam|e.examiner = ada|e.recorder}]
//Navigating higher-order association using Reverse Reference
examineeOfAdaAsExaminer -> Person *
[examineeOfAdaAsExaminer = ada.~examiner.parent.examinee]
examineeOfAdaAsRecorder -> Person *
[examineeOfAdaAsRecorder = ada.~recorder.parent.examinee]
examinerOfAdaAsExaminee -> Person *
[examinerOfAdaAsExaminee = ada.~examinee.parent.examiner]
examinerOfAdaAsRecorder -> Person *
[examinerOfAdaAsRecorder = ada.~recorder.parent.examiner]
recorderOfAdaAsExaminee -> Person *
[recorderOfAdaAsExaminee = ada.~examinee.parent.recorder]
recorderOfAdaAsExaminer -> Person *
[recorderOfAdaAsExaminer = ada.~examiner.parent.recorder]
Module Statistics:
|
No model.
|