синтаксис | = метаутверждение {метаутверждение}. |
метаутверждение | = интервал метапеременная интервал ”=” метавыражение интервал ”.”. |
метапеременная | = буква {буква | цифра | ”-”}. |
метавыражение | = последовательность {или последовательность}. |
последовательность | = интервал элемент {запятая элемент}. |
элемент | = метапеременная | итерация | опция | гнездо | терминальный-символ. |
итерация | = ”{” метавыражение интервал ”}”. |
опция | = ”[” метавыражение интервал ”]”. |
гнездо | = ”(” метавыражение интервал ”)”. |
терминальный-символ | = описание-строки | терминальный-знак. |
описание-строки | = ограничитель-строки строка ограничитель-строки. |
ограничитель-строки | = ' ”. |
строка | = {терминальный-знак | любой-знак}. |
терминальный-знак | = ' ' (любой-знак | ' ”). |
пробел | = ” ”. |
интервал | = {пробел}. |
или | = интервал ”|”. |
запятая | = интервал [”,” интервал ]. |
буква | обозначает любую букву алфавита, более подробно здесь не определяется. |
цифра | обозначает любую цифру от 0 до 9, более подробно здесь не определяется. |
любой-знак | обозначает любой символ, кроме ” (двойная кавычка) в наборе символов, более подробно здесь не определяется. |
| концептуальная-схема | = ”CONCEPTUAL SCHEMA” | |
| | имя-концептуальной-схемы | |
| | описание-типа-сущности | |
| | {описание-типа-сущности} | |
| | описание-типа-связи | |
| | {описание-типа-связи}. | |
| описание-типа-сущности | = ”ENTITY-TYPE” имя-типа-сущности | |
| | ”IDENTIFIER” идентификатор | |
| | ”DESCRIPTION” описание-типа-атрибута | |
| | {описание-типа-атрибута}. | |
| описание-типа-связи | = ”RELATIONSHIP-TYPE” имя-типа-связи | |
| | ”DIMENSION" целое-без-знака | |
| | "COLLECTION” имя-типа-сущности | |
| | {имя-типа-сущности} | |
| | ”CARDINALITY” | |
| | имя-типа-сущности minс ”, ” maxc | |
| | {имя-типа-сущности minc ”, ” maxc} | |
| | {”FUNCTIONAL DEPENDENCY” | |
| | имя-типа-сущности {имя-типа-сущности} | |
| | ”ON имя-типа-сущности} | |
| | [”IDENTIFIER” идентификатор] | |
| | [”DESCRIPTION” | |
| | описание-типа-атрибута | |
| | {описание-типа-атрибута}]. | |
| описание-типа-атрибута | = имя-типа-атрибута. | |
| minc | = целое-без-знака | буква. | |
| maxc | = целое-без-знака | буква. | |
| имя-концептуальной-схемы | = идентифицирующее-имя. | |
| имя-типа-сущности | = идентифицирующее-имя. | |
| идентификатор | = имя-типа-атрибута {”,” имя-типа-атрибута}. | |
| имя-типа-атрибута | = идентифицирующее-имя. | |
| имя-типа-связи | = идентифицирующее-имя. | |
| идентифицирующее-имя | = буква {буква | цифра | дефис}. | |
НАЛИЧИЕ | НЕОБХОДИМЫЕ ВЫСКАЗЫВАНИЯ |
Е | 1. Проблемная область связана с регистрацией автомобилей и ограничена сферой интересов Органа Регистрации. |
Е | 2. Каждый изготовитель автомобилей имеет уникальное имя. |
* | 3. Новые изготовители автомобилей могут начать производство при условии, что они имеют разрешение Органа Регистрации. |
* | 4. Орган Регистрации не может отменить разрешение. |
* | 5. Одновременно могут работать не более пяти автономных изготовителей. |
* | 6. Изготовитель может прекратить работу при условии, что он больше не владеет автомобилями. |
Е | 7. Каждый изготовитель автомобилей производит автомобили нескольких моделей. |
Е | 8. Автомобиль относится к определенной модели. |
* | 9. Изготовитель автомобилей присваивает серийный номер каждому выпускаемому автомобилю. |
* | 10. Этот серийный номер является уникальным для всех автомобилей одного изготовителя. |
* | 11. Вновь произведенный автомобиль регистрируется Органом Регистрации, как только это окажется возможным. |
(Е) | 12. В этот момент автомобиль регистрируется как принадлежащий изготовителю. Поэтому первым владельцем автомобиля будет его изготовитель. |
* | 13. Только Орган Регистрации может назначить регистрационный номер каждому регистрируемому автомобилю. |
(Е) | 14. Этот регистрационный номер уникален для всех автомобилей в течение всего времени. |
Е | 15. Автомобиль имеет год выпуска. |
* | 16. Автомобиль может регистрироваться как произведенный в предыдущем году только в течение января. |
Е | 17. Автомобили могут быть уничтожены, после чего записывается дата уничтожения. |
* | 18. История автомобиля должна храниться до конца второго календарного года с момента его уничтожения. После этого она удаляется. |
(Е) | 19. Имя модели автомобиля уникально для моделей автомобилей в течение всего времени. |
* | 20. Любая определенная модель автомобиля производится только одним изготовителем. |
* | 21. Время от времени вводятся новые модели. |
Е | 22. Все автомобили одной и той же модели потребляют одинаковое количество топлива. |
(Е) | 23. Расход топлива должен быть известен Органу Регистрации. |
* | 24. Расход топлива может находиться в пределах 4-25 л на 100 км. |
* | 25. Расход топлива, усредненный по всем автомобилям, произведенным соответствующим изготовителем в определенный год, не должен превышать максимального значения, одинакового для всех изготовителей. |
Е | 26. Максимальный расход топлива может меняться от года к году. |
* | 27. В конце января изготовителю, не выполнившему требование по расходу топлива в предыдущем году, посылается уведомление. |
Е | 28. Каждый гараж имеет уникальное имя. |
* | 29. Могут открываться новые гаражи. |
Е | 30. Гаражи могут владеть автомобилями. |
* | 31. В любое время гараж может владеть автомобилями, произведенными не более чем тремя изготовителями (какими именно, не имеет значения, и они могут меняться со временем). |
* | 32. Существующий гараж может быть закрыт при условии, что в нем нет зарегистрированных за ним автомобилей. |
Е | 33. Определенное лицо может иметь один или более автомобилей, зарегистрированных как принадлежащие ему. |
Е | 34. Два или более человека могут иметь в одновременном владении один или несколько автомобилей. |
Е | 35. Люди имеют уникальные имена. |
* | 36. Люди известны Органу Регистрации только в том случае, если они имеют или имели один или более автомобилей, которые известны Органу Регистрации. |
* | 37. В любой момент времени автомобилем владеет его изготовитель или гараж, или некое лицо, или группа лиц, но не вместе две или более из этих категорий. |
Е | 38. Передача права на владение регистрируется, включая дату передачи предыдущего владельца (владельцев) и нового владельца (владельцев). |
* | 39. Передача права на владение может регистрироваться после уничтожения автомобиля. |
* | 40. Но передача права на владение может регистрироваться после уничтожения автомобиля при условии, что передача права на владение произошла до уничтожения автомобиля. |
Е | 41. Каждый изготовитель распределяет новые автомобили нескольким независимым гаражам, каждый из которых может получить автомобили от нескольких изготовителей. |
(Е) | 42. Поэтому гараж всегда будет вторым владельцем автомобиля. |
Е | 43. Изготовители не распределяют автомобили другим изготовителям или непосредственно людям. |
Е | 44. Каждый гараж может продавать (т.е. производить передачу зарегистрированного права владения) новые или бывшие в употреблении автомобили и может покупать (т.е. производить передачу зарегистрированного права владения) автомобили у людей. |
Е | 45. Гаражам не разрешается продавать автомобили другим гаражам. |
Е | 46. Гаражам не разрешается продавать автомобили изготовителям. |
Е | 47. Люди могут продавать автомобили друг другу или покупать их друг у друга. |
| (R1) концептуальная схема | = "begin" | |
| | "CONCEPTUAL-SCHEMA called" имя-схемы ”; ” | |
| | объявление-nolot {объявленне-nolot} | |
| | объявление-lot {объявление-lot} | |
| | {объявление-подтипа} | |
| | {объявление-идеи} | |
| | объявление-мостика {объявление-мостика} | |
| | {объявление-фразы} | |
| | {объявление-ограничения} | |
| | "end". | |
| (R2) объявление-nolot | = "NOLOT called" | |
| | (имя-nolot | список-имен-nolot). | |
| (R3) объявление-lot | = "LOT called" (имя-lot | список-имен-lot). | |
| (R4) объявление-подтипа | = подтип-nolot | подтип-lot. | |
| (R5) подтип-nolot | = "NOLOT called" | |
| | (имя-nolot-1 | список-имен-nolot-1) | |
| | "is subtype-of NOLOT called" | |
| | имя-поlоt-2 ”; ”. | |
| (R6) подтип-lot | = "LOT called" | |
| | (имя-lot-1 | список-имен-lot-1) | |
| | "is subtype-of LOT called" имя-lоt-2 ”;”. | |
| (R7) объявление-идеи | = "IDEA (with-first ROLE (called" | |
| | имя-роли-1 | |
| | "and on NOLOT called" | |
| | имя-поlоt-2 ”) ” | |
| | "and with-second ROLE (called" | |
| | имя-роли-2 | |
| | "and on NOLOT called" | |
| | имя-поlоt-2”)) ” | |
| | "in called" имя-идеи ”;”. | |
| (R8) объявление-мостика | = "BRIDGE (with-first ROLE (called" | |
| | имя-роли-1 | |
| | "and on NOLOT called" | |
| | имя-поlоt-2”)” | |
| | "and with-second ROLE (called" | |
| | имя-роли-2 | |
| | "and on LOT called" | |
| | имя-lоt-2”))” | |
| | "is called" имя-мостика ”;”. | |
| (R9) объявление-фразы | = "PHRASE (with-first ROLE (called" | |
| | имя-роли-1 | |
| | "and on LOT called" | |
| | имя-lоt-2 ”)” | |
| | "and with-second ROLE (called" | |
| | имя-роли-2 | |
| | "and on LOT called" | |
| | имя-lоt-2”))” | |
| | "is called" имя-фразы ”;”. | |
| (R10) объявление-ограничения | = "CONSTRAINT called" имя-ограничения | |
| | "is declared as" предложение ”;”. | |
| (R11) список-имен-nolot | = ”{” имя-nolot {имя-nolot} ”} ” ”; ”. | |
| (R12) список-имен-lot | = ”{” имя-lot {имя-lot} ”}” ”;”. | |
| Примечание - Список-имен-nolot-1 и список-имен-lot-1 имеют тот же синтаксис. | |
| (R13) имя-схемы | = идентифицирующее-имя. | |
| (R14) имя-nolot | = идентифицирующее-имя. | |
| (R15) имя-lot | = идентифицирующее-имя. | |
| (R16) имя-роли | = идентифицирующее-имя. | |
| Примечание - Имя-nolot-1 и т.д. имеют тот же синтаксис. | |
| (R17) имя-идеи | = идентифицирующее-имя. | |
| (R18) имя-мостика | = идентифицирующее-имя. | |
| (R19) имя-фразы | = идентифицирующее-имя. | |
| (R20) идентифицирующее-имя | = ” ' ' ” буква {буква | символ | дефис}” ' ' ”. | |
| Правило | Семантика | Описание | |
| (R2) | (S1) | Экземпляры NOLOT с однозначно идентифицирующими именами "имя-nolot" добавляются к концептуальной схеме | |
| (R3) | (S2) | То же, что и (S1) для экземпляров LOT с именами имя-lot LOT и NOLOT | |
| | (S3) | - непересекающиеся подтипы типа метаобъектов "ТИП-ОБЪЕКТА", другими словами, "имя-lot" не должно уже существовать как "имя-nolot" | |
| (R5) | (S4) | Упомянутые NOLOT должны уже существовать | |
| | (S5) | Так как деление на подтипы - транзитивное свойство, не должно быть замкнутого "цикла" при определении подтипов | |
| (R6) | (S6) | То же, что и (S4) с соответствующими изменениями | |
| | (S7) | То же, что и (S5) | |
| (R7) | (S8) | Добавляются экземпляры ролей с "именем-роли"; два "имени-роли" должны быть различными, если они определены "на" том же NOLOT | |
| | (S9) | То же, что и (S4) | |
| | (S10) | Добавляется экземпляр ИДЕИ с однозначно идентифицирующим именем "имя-идеи" | |
| (R8) | (S11) | То же, что и (S8) | |
| | (S12) | Должны уже существовать упомянутые LOT и NOLOT | |
| | (S13) | То же, что и (S10) с соответствующими изменениями | |
| | (S14) | Упомянутый LOT не должен появиться в другом объявлении МОСТИКА | |
| (R9) | (S15) | То же, что и (S8) с соответствующими изменениями | |
| | (S16) | То же, что и (S6) | |
| | (S17) | То же, что и (S10) с соответствующими изменениями | |
| (R10) | (S18) | Экземпляр ОГРАНИЧЕНИЯ добавляется с однозначно идентифицирующим именем "имя-ограничения" | |
| | (S19) | "Предложение" должно синтаксически правильно описывать предикат (функтор), который должен сохраняться истинным всегда (для всех состояний информационной базы) | |
| | (S20) | Никакие два ограничения не могут противоречить друг другу (это приводит к невозможности заполнения информационной базы) | |
| | (S21) | Набор всех ограничений считается исчерпывающим списком всех существующих правил или ограничений для всех состояний информационной базы, т.е. экземпляр бинарного отношения вводится в информационную базу только при условии, если ни одно ограничение не нарушается | |
| | (S22) | Множество ограничений подразумевает, что допустимы любые изменения в информационной базе, которые не нарушают объявленных ограничений | |
| (R20) | (S23) | Идентифицирующие имена должны быть уникальными в пределах концептуальной схемы, за исключением имен-ролей, которые имеют более ограниченную область уникальности (S10, S11, S15) | |