У меня возникает проблема при попытке проверить дубликаты в OCL.Поиск вложенных дубликатов в OCL
Вот упрощение диаграммы классов:
+-----------+
|ChapterName|
+-----------+
^0..* chapterNames
|
^
V
+-------+ books 0..* +----+
|Catalog|<>------------>|Book|
+-------+ +----+
catalogs 0..*^ ^0..* books
| |
+----+ customers 0..* +--------+
|Shop|<>-------------->|Customer|
+----+ +--------+
Атрибуты для каждого класса объявлены следующим образом:
- ChapterName
- Имя
- Каталог
- Категория
Проблема: То, что я хочу, чтобы проверить, если у клиента есть какие-нибудь книги с повторяющимися названиями глав, которые также принадлежат к определенной категории в каталоге.
Мне не удалось обвести вокруг себя логику. До сих пор я знаю:
context Shop
self.customers.books->select(cubks | cubks =
self.catalogs.books->select(cabks | cabks = cubks)->first())
... Который должен найти книги из каталога, который имеет клиент.
Вопрос: Как я могу добавить дополнительные ограничения для решения проблемы выше?
Также. Я использую Eclipse, EMF и консоль OCL из Eclipse.