stringtranslate.com

Реификация (информатика)

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

Рефлексивные языки программирования

В контексте языков программирования , овеществление — это процесс, посредством которого пользовательская программа или любой аспект языка программирования, который подразумевался в переведенной программе и системе выполнения, выражаются в самом языке. Этот процесс делает их доступными для программы, которая может проверять все эти аспекты как обычные данные . В рефлексивных языках данные овеществления причинно связаны с соответствующим овеществленным аспектом таким образом, что изменение одного из них влияет на другой. Следовательно, данные овеществления всегда являются точным представлением связанного овеществленного аспекта [ необходимо разъяснение ] . Часто говорят, что данные овеществления сделаны объектом первого класса [ необходима цитата ] . Овеществление, по крайней мере частично, было испытано во многих языках на сегодняшний день: в ранних диалектах Лиспа и в современных диалектах Пролога программы рассматривались как данные, хотя причинно-следственная связь часто оставалась на ответственности программиста. В Smalltalk -80 компилятор исходного текста в байт-код был частью системы времени выполнения с самых первых реализаций языка. [1]

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

Конкретизация данных ( пошаговое уточнение ) подразумевает нахождение более конкретного представления абстрактных типов данных, используемых в формальной спецификации .

Data reification — это терминология Венского метода разработки (VDM), который большинство других людей назвали бы уточнением данных. Примером может служить шаг к реализации путем замены представления данных без аналога в предполагаемом языке реализации, например, наборов, на то, которое имеет аналог (например, карты с фиксированными доменами, которые могут быть реализованы массивами), или, по крайней мере, на то, которое ближе к тому, чтобы иметь аналог, например, последовательности. Сообщество VDM предпочитает слово «reification» вместо «refinement», поскольку этот процесс больше связан с конкретизацией идеи, чем с ее уточнением. [4]

Для получения информации о схожих значениях см. раздел Реификация (лингвистика) .

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

Реификация широко используется в концептуальном моделировании . [5] Реификация отношения означает рассмотрение его как сущности. Целью реификации отношения является его явное выражение, когда к нему необходимо добавить дополнительную информацию. Рассмотрим тип отношения IsMemberOf(member:Person, Committee). Экземпляр IsMemberOf— это отношение, которое представляет тот факт, что человек является членом комитета. На рисунке ниже показан пример совокупности IsMemberOfотношений в табличной форме. Человек P1 является членом комитетов C1 и C2 . Человек P2 является членом только комитета C1 .

Пример совокупности IsMemberOfотношений в табличной форме. Лицо P1 является членом комитетов C1 и C2. Лицо P2 является членом только комитета C1.

Однако тот же факт можно рассматривать и как сущность. Рассматривая отношение как сущность, можно сказать, что сущность овеществляет отношение. Это называется овеществлением отношения. Как и любая другая сущность, она должна быть экземпляром типа сущности. В данном примере тип сущности был назван Membership. Для каждого экземпляра IsMemberOfсуществует один и только один экземпляр Membership, и наоборот. Теперь становится возможным добавить больше информации к исходному отношению. В качестве примера мы можем выразить тот факт, что «лицо p1 было номинировано на должность члена комитета c1 лицом p2». Овеществленное отношение Membershipможет использоваться в качестве источника нового отношения IsNominatedBy(Membership, Person).

Для получения информации о связанных с этим случаях см. Реификация (представление знаний) .

На унифицированном языке моделирования (UML)

Диаграмма классов UML для примера «Членство».

UML предоставляет конструкцию класса ассоциации для определения типов овеществленных отношений. Класс ассоциации — это единый элемент модели, который является как видом ассоциации [6] , так и видом класса. [7]

Ассоциация и тип сущности, который овеществляет, являются одним и тем же элементом модели. Обратите внимание, что атрибуты не могут быть овеществлены.

В семантической паутине

RDF и OWL

В языках семантической паутины , таких как Resource Description Framework (RDF) и Web Ontology Language (OWL), утверждение — это бинарное отношение. Оно используется для связи двух лиц или лица и значения. Иногда приложениям необходимо описывать другие утверждения RDF, например, для записи информации, например, когда были сделаны утверждения или кто их сделал, что иногда называется информацией о « происхождении ». Например, мы можем захотеть представить свойства отношения, такие как наша уверенность в нем, серьезность или сила отношения, релевантность отношения и т. д.

Пример из раздела концептуального моделирования описывает конкретного человека с URIref person:p1, который является членом committee:c1. RDF-триплет из этого описания —

 лицо : p1  комитет : isMemberOf  комитет : c1  .

Рассмотрите возможность сохранения двух дополнительных фактов: (i) для записи того, кто выдвинул данного человека в этот комитет (заявление о самом членстве), и (ii) для записи того, кто добавил факт в базу данных (заявление о заявлении).

Первый случай — это случай классической овеществления, как описано выше в UML: овеществить членство и сохранить его атрибуты, роли и т. д.:

 комитет : Членство  rdf : тип  owl : Класс  .  комитет : членство12345  rdf : тип  комитет : Членство  .  комитет : членство12345 комитет : ofPerson лицо : p1 . комитет : членство12345  комитет : inCommittee комитет : c1 . лицо : p2 комитет : назначенный комитет : членство12345 .          

Кроме того, RDF предоставляет встроенный словарь, предназначенный для описания утверждений RDF. Описание утверждения с использованием этого словаря называется овеществлением утверждения. Словарь овеществления RDF состоит из типа rdf:Statement, и свойств rdf:subject, rdf:predicate, и rdf:object. [8]

Используя словарь овеществления, овеществление утверждения о членстве человека может быть получено путем присвоения утверждению URIref, например, так, committee:membership12345чтобы описывающие утверждения можно было записать следующим образом:

 комитет : членство12345Статистика  rdf : тип  rdf : Утверждение  .  комитет : членство12345Статистика  rdf : субъект  лицо : p1  .  комитет : членство12345Статистика  rdf : предикат  комитет : являетсяЧленом  .  комитет : членство12345Статистика  rdf : объект  комитет : c1  .

Эти утверждения говорят, что ресурс, идентифицированный с помощью , URIref committee:membership12345Statявляется утверждением RDF, что субъект утверждения относится к ресурсу, идентифицированному с помощью person:p1, предикат утверждения относится к ресурсу, идентифицированному с помощью committee:isMemberOf, а объект утверждения относится к ресурсу committee:c1. Предполагая, что исходное утверждение фактически идентифицировано с помощью committee:membership12345, должно быть ясно, сравнивая исходное утверждение с овеществлением, что овеществление фактически описывает его. Традиционное использование словаря овеществления RDF всегда включает описание утверждения с помощью четырех утверждений в этом шаблоне. Поэтому их иногда называют «четверкой овеществления». [8]

Используя овеществление в соответствии с этим соглашением, мы могли бы записать факт person:p3добавления утверждения в базу данных

 лицо : p3  комитет : добавленоВБазу данных  комитет : членство12345Статья  .

Важно отметить, что при традиционном использовании овеществления предполагается, что субъект триплетов овеществления идентифицирует конкретный экземпляр триплета в конкретном документе RDF, а не какой-то произвольный триплет, имеющий тот же субъект, предикат и объект. Это конкретное соглашение используется, поскольку овеществление предназначено для выражения таких свойств, как даты составления и исходная информация, как в уже приведенных примерах, и эти свойства должны применяться к конкретным экземплярам триплетов. Обратите внимание, что (subject predicate object)сам описанный триплет не подразумевается таким четверным овеществления (и не обязательно, чтобы он фактически существовал в базе данных). Это позволяет также использовать этот механизм для выражения того, какие триплеты не содержатся .

Мощность словаря овеществления в RDF ограничена отсутствием встроенных средств для назначения URIrefs утверждениям, поэтому для выражения информации о «происхождении» такого рода в RDF необходимо использовать некоторый механизм (вне RDF) для назначения URI отдельным утверждениям RDF, а затем делать дальнейшие утверждения об этих отдельных утверждениях, используя их URI для их идентификации. [8]

В тематических картах

В XML Topic Map (XTM) только тема может иметь имя или играть роль в ассоциации. Можно использовать ассоциацию, чтобы сделать утверждение о теме, но нельзя напрямую делать утверждения об этом утверждении. Однако возможно создать тему, которая овеществляет нетематическую конструкцию в карте, таким образом позволяя ассоциации быть названной и рассматриваться как сама тема. [9]

н-арные отношения

В языках семантической паутины, таких как RDF и OWL, свойство — это бинарное отношение, используемое для связи двух лиц или лица и значения. Однако в некоторых случаях естественным и удобным способом представления определенных концепций является использование отношений для связи лица с более чем одним лицом или значением. Эти отношения называются n-арными отношениями . Примерами являются представление отношений между несколькими лицами, такими как комитет, лицо, являющееся членом комитета, и другое лицо, которое назначило первого человека членом комитета, или покупатель, продавец и объект, который был куплен при описании покупки книги.

Более общий подход к реификации заключается в создании явного нового класса и n новых свойств для представления n -арного отношения, делая экземпляр отношения, связывающего n индивидов, экземпляром этого класса. Этот подход также может использоваться для представления информации о происхождении и других свойств для отдельного экземпляра отношения. [10]

 : p1  a  : Лицо  ;  : имеет_членство  _ : членство_12345  .  _ : членство_12345  a  : Членство  ;  : комитет  : c1 ;  : номинирован_кем  : p2  .

Против цитаты

Также важно отметить, что описанная здесь реификация не то же самое, что «цитата», встречающаяся в других языках. Вместо этого реификация описывает связь между конкретным экземпляром триплета и ресурсами, на которые ссылается триплет. Реификацию можно интуитивно прочитать как «эта триплет RDF говорит об этих вещах», а не (как в цитате) «эта триплет RDF имеет такую ​​форму». Например, в примере реификации, использованном в этом разделе, триплет:

 комитет : membership12345  rdf : субъект  лицо : p1  .

описывая rdf:subjectисходного утверждения, говорит, что субъектом утверждения является ресурс (лицо), идентифицированный URIref person:p1. Он не утверждает, что субъектом утверждения является сам URIref (т. е. строка, начинающаяся с определенных символов), как это было бы в случае цитаты.

Смотрите также

Ссылки

  1. ^ Дж. Маленфант, М. Жак и Ф.-Н. Демерс, Учебник по поведенческой рефлексии и ее реализации Архивировано 28.05.2010 на Wayback Machine
  2. ^ Спецификация языка Java, раздел 4.7, Java SE 7 Edition
  3. ^ "Smalltalk Blocks And Closures". C2.com. 2009-10-15 . Получено 2010-10-09 .
  4. ^ Формальные методы Европы, часто задаваемые вопросы, часть 13 Архивировано 12 марта 2005 г. на Wayback Machine .
  5. ^ Антони Оливе, Концептуальное моделирование информационных систем, Springer Verlag, 2007.
  6. ^ "Ассоциации". Унифицированный язык моделирования 2.5.1. Номер документа OMG formal/2017-12-05. Организация по разработке стандартов группы управления объектами (OMG SDO). Декабрь 2017 г. стр. 199.
  7. ^ "Классы". Унифицированный язык моделирования 2.5.1. Номер документа OMG formal/2017-12-05. Организация по разработке стандартов группы управления объектами (OMG SDO). Декабрь 2017 г. стр. 194.
  8. ^ abc "RDF Primer". W3.org . Получено 2010-10-09 .
  9. ^ Практическое введение в тематические карты. Архивировано 03.02.2009 на Wayback Machine .
  10. ^ "W3C Определение N-арных отношений в семантической паутине". W3.org . Получено 2010-10-09 .