Введение

Формальные методы: терминология

Реификация – это процесс, посредством которого абстрактная идея о компьютерной программе преобразуется в явную модель данных или другой объект, созданный на языке программирования. Вычислимый/адресуемый объект – ресурс – создается в системе как заместитель для невычислимого/неадресуемого объекта. С помощью реификации то, что ранее было неявным, невыраженным и, возможно, невыразимым, становится явно сформулированным и доступным для концептуальных (логических или вычислительных) манипуляций. Неформально реификация часто называется "предоставлением чего-либо статуса полноправного объекта" в контексте конкретной системы. Некоторые аспекты системы могут быть реифицированы на этапе проектирования языка, что связано с рефлексией в языках программирования. Реификация может применяться как поэтапная детализация на этапе проектирования системы. Реификация является одним из наиболее часто используемых методов концептуального анализа и представления знаний.

Реификация данных против уточнения данных

Реификация данных (пошаговое уточнение) заключается в поиске более конкретного представления абстрактных типов данных, используемых в формальной спецификации. Реификация данных – это термин, принятый в Венском методе разработки (ВДМ), который большинство специалистов называют уточнением данных. Например, это может быть шаг к реализации, при котором представление данных, не имеющее прямого соответствия в целевом языке реализации (например, множества), заменяется представлением, которое такое соответствие имеет (например, отображения с фиксированными областями, которые могут быть реализованы массивами), или, по крайней мере, ближе к нему (например, последовательности). Сообщество ВДМ предпочитает термин "реификация" термину "уточнение", поскольку этот процесс больше связан с конкретизацией идеи, чем с её улучшением. См. также статью "Реификация (лингвистика)" для аналогичного использования термина.

В концептуальном моделировании

Реификация широко используется в концептуальном моделировании. Реификация отношения означает рассмотрение его как сущности. Цель реификации отношения – сделать его явным, когда необходимо добавить к нему дополнительную информацию. Рассмотрим тип отношения IsMemberOf (member:Person, Committee). Экземпляр IsMemberOf – это отношение, представляющее факт членства человека в комитете. На рисунке ниже показан пример заполнения отношения IsMemberOf в табличной форме. Лицо P1 является членом комитетов C1 и C2, а лицо P2 – только комитета C1. Однако тот же факт можно рассматривать и как сущность. Рассматривая отношение как сущность, можно сказать, что сущность реифицирует это отношение. Это называется реификацией отношения. Как и любая другая сущность, оно должно быть экземпляром типа сущности. В данном примере тип сущности назван Membership (Членство). Для каждого экземпляра IsMemberOf существует ровно один экземпляр Membership, и наоборот. Теперь становится возможным добавить больше информации к исходному отношению. Например, можно выразить факт, что "лицо p1 было выдвинуто на членство в комитет c1 лицом p2". Реифицированное отношение Membership может быть использовано в качестве источника нового отношения IsNominatedBy (Membership, Person). См. также Реификация (представление знаний) для связанных применений.

В едином языке моделирования (UML)

UML предоставляет конструкцию "ассоциативный класс" для определения типов реифицированных связей. Ассоциативный класс — это единичный элемент модели, который является одновременно и ассоциацией, и классом. Ассоциация и тип сущности, который реифицируется, представляют собой один и тот же элемент модели. Следует отметить, что атрибуты не могут быть реифицированы.

Противо котировки

Также важно отметить, что описанная здесь реификация не является тем же самым, что "цитирование", встречающееся в других языках. Вместо этого, реификация описывает взаимосвязь между конкретным экземпляром тройки и ресурсами, на которые эта тройка ссылается. Реификацию можно интуитивно понимать как утверждение "эта RDF-тройка говорит об этих вещах", а не (как при цитировании) "эта RDF-тройка имеет такую форму". Например, в примере реификации, приведенном в этом разделе, тройка: committee:membership12345 rdf:subject person:p1 описывает rdf:subject исходного утверждения, указывая, что субъект этого утверждения – это ресурс (человек), идентифицированный URIref person:p1. Она не утверждает, что субъект утверждения является самим URIref (то есть строкой, начинающейся с определенных символов), как это было бы при цитировании.