stringtranslate.com

Cosificación (informática)

La cosificación es el proceso mediante el cual una idea abstracta sobre un programa de computadora se convierte en un modelo de datos explícito u otro objeto creado en un lenguaje de programación . Un objeto computable/direccionable (un recurso) se crea en un sistema como proxy para un objeto no computable/direccionable. Por medio de la cosificación, algo que antes estaba implícito, no expresado y posiblemente inexpresable se formula explícitamente y se pone a disposición de la manipulación conceptual (lógica o computacional). De manera informal, a menudo se hace referencia a la cosificación como "convertir a algo en un ciudadano de primera clase " dentro del alcance de un sistema particular. Algún aspecto de un sistema puede cosificarse en el momento del diseño del lenguaje , lo que está relacionado con la reflexión en los lenguajes de programación. Puede aplicarse como un refinamiento gradual en el momento del diseño del sistema . La cosificación es una de las técnicas de análisis conceptual y representación del conocimiento más utilizadas .

Lenguajes de programación reflexivos

En el contexto de los lenguajes de programación , la cosificación es el proceso mediante el cual un programa de usuario o cualquier aspecto de un lenguaje de programación que estaba implícito en el programa traducido y el sistema de ejecución, se expresa en el lenguaje mismo. Este proceso lo pone a disposición del programa, que puede inspeccionar todos estos aspectos como datos ordinarios . En los lenguajes reflexivos , los datos de cosificación están causalmente conectados con el aspecto cosificado relacionado, de modo que una modificación de uno de ellos afecta al otro. Por lo tanto, los datos de cosificación son siempre una representación fiel del aspecto cosificado relacionado [ aclaración necesaria ] . A menudo se dice que los datos de cosificación se convierten en un objeto de primera clase [ cita requerida ] . La cosificación, al menos parcialmente, se ha experimentado en muchos idiomas hasta la fecha: en los primeros dialectos Lisp y en los actuales dialectos Prolog , los programas se han tratado como datos, aunque la conexión causal a menudo se ha dejado a la responsabilidad del programador. En Smalltalk -80, el compilador desde el texto fuente hasta el código de bytes ha sido parte del sistema de ejecución desde las primeras implementaciones del lenguaje. [1]

Cosificación de datos versus refinamiento de datos

La reificación de datos ( refinamiento paso a paso ) implica encontrar una representación más concreta de los tipos de datos abstractos utilizados en una especificación formal .

La reificación de datos es la terminología del Método de Desarrollo de Viena (VDM) que la mayoría de la gente llamaría refinamiento de datos. Un ejemplo es dar un paso hacia una implementación reemplazando una representación de datos sin una contraparte en el lenguaje de implementación previsto, como conjuntos, por una que sí tiene una contraparte (como mapas con dominios fijos que pueden implementarse mediante matrices), o al menos uno que esté más cerca de tener una contraparte, como las secuencias. La comunidad VDM prefiere la palabra "cosificación" a "refinamiento", ya que el proceso tiene más que ver con concretar una idea que con refinarla. [4]

Para usos similares, consulte Cosificación (lingüística) .

En modelado conceptual

La cosificación se utiliza ampliamente en el modelado conceptual . [5] Cosificar una relación significa verla como una entidad. El propósito de cosificar una relación es hacerla explícita, cuando es necesario agregarle información adicional. Considere el tipo de relación IsMemberOf(member:Person, Committee). Un ejemplo de IsMemberOfes una relación que representa el hecho de que una persona es miembro de un comité. La siguiente figura muestra un ejemplo de población de IsMemberOfrelaciones en forma tabular. La persona P1 es miembro de los comités C1 y C2 . La persona P2 es miembro únicamente del comité C1 .

Ejemplo de población de IsMemberOfrelaciones en forma tabular. La persona P1 es miembro de los comités C1 y C2. La persona P2 es miembro únicamente del comité C1.

Sin embargo, el mismo hecho también podría considerarse como una entidad. Al considerar una relación como una entidad, se puede decir que la entidad cosifica la relación. A esto se le llama cosificación de una relación. Como cualquier otra entidad, debe ser una instancia de un tipo de entidad. En el presente ejemplo, el tipo de entidad se ha denominado Membership. Para cada instancia de IsMemberOf, hay una y solo una instancia de Membership, y viceversa. Ahora es posible agregar más información a la relación original. Como ejemplo, podemos expresar el hecho de que "la persona p1 fue nominada para ser miembro del comité c1 por la persona p2". La relación cosificada Membershippuede utilizarse como fuente de una nueva relación IsNominatedBy(Membership, Person).

Para usos relacionados, consulte Reificación (representación del conocimiento) .

En lenguaje de modelado unificado (UML)

El diagrama de clases UML para el ejemplo de Membresía.

UML proporciona una construcción de clase de asociación para definir tipos de relaciones cosificadas. La clase de asociación es un elemento de modelo único que es a la vez un tipo de asociación [6] y un tipo de clase. [7]

La asociación y el tipo de entidad que cosifica son ambos el mismo elemento del modelo. Tenga en cuenta que los atributos no se pueden cosificar.

En la web semántica

RDF y BÚHO

En lenguajes de Web Semántica , como el Marco de Descripción de Recursos (RDF) y el Lenguaje de Ontología Web (OWL), una declaración es una relación binaria. Se utiliza para vincular dos individuos o un individuo y un valor. A veces, las aplicaciones necesitan describir otras declaraciones RDF, por ejemplo, para registrar información como cuándo se hicieron las declaraciones o quién las hizo, lo que a veces se denomina información de " procedencia ". Como ejemplo, es posible que queramos representar propiedades de una relación, como nuestra certeza sobre ella, la gravedad o fuerza de una relación, la relevancia de una relación, etc.

El ejemplo de la sección de modelado conceptual describe a una persona particular con URIref person:p1, que es miembro de committee:c1. El triple RDF de esa descripción es

 persona : p1  comité : isMemberOf  comité : c1  .

Considere almacenar dos datos más: (i) registrar quién nominó a esta persona en particular para este comité (una declaración sobre la membresía misma) y (ii) registrar quién agregó el hecho a la base de datos (una declaración sobre la declaración).

El primer caso es un caso de cosificación clásica como el anterior en UML: cosificar la membresía y almacenar sus atributos y roles, etc.:

 comité : Membresía  rdf : tipo  búho : Clase  .  comité : membresía12345  rdf : tipo  comité : Membresía  .  comité : membresía12345  comité : ofPerson  persona : p1  .  comité : membresía12345  comité : inCommittee  comité : c1  .  persona : comité p2  : comité designado : membresía12345 .  

Además, RDF proporciona un vocabulario integrado destinado a describir declaraciones RDF. Una descripción de una declaración usando este vocabulario se llama cosificación de la declaración. El vocabulario de reificación RDF consta del tipo rdf:Statement, y las propiedades rdf:subject, rdf:predicatey rdf:object. [8]

Usando el vocabulario de reificación, se daría una cosificación de la declaración sobre la membresía de la persona asignando a la declaración un URIref tal committee:membership12345que las declaraciones descriptivas se puedan escribir de la siguiente manera:

 comité : membresía12345Stat  rdf : tipo  rdf : Declaración  .  comité : membresía12345Stat  rdf : persona sujeta  : p1 . comité : membresía12345Stat rdf : comité predicado : isMemberOf . comité : membresía12345Stat rdf : comité objeto : c1 .         

Estas declaraciones dicen que el recurso identificado por URIref committee:membership12345States una declaración RDF, que el sujeto de la declaración se refiere al recurso identificado por person:p1, el predicado de la declaración se refiere al recurso identificado por committee:isMemberOfy el objeto de la declaración se refiere al recurso committee:c1. Suponiendo que la afirmación original está realmente identificada por committee:membership12345, debería quedar claro al comparar la afirmación original con la cosificación que la cosificación realmente la describe. El uso convencional del vocabulario de reificación RDF siempre implica describir una declaración usando cuatro declaraciones en este patrón. Por lo tanto, a veces se les denomina "cuadrilátero de reificación". [8]

Usando la cosificación de acuerdo con esta convención, podríamos registrar el hecho de que person:p3agregó la declaración a la base de datos mediante

 persona : comité p3  : comité agregado a la base de datos : membresía12345Stat .  

Es importante señalar que en el uso convencional de reificación, se supone que el sujeto de las tripletas de reificación identifica una instancia particular de una tripleta en un documento RDF particular, en lugar de una tripleta arbitraria que tenga el mismo sujeto, predicado y objeto. Esta convención particular se utiliza porque la cosificación está destinada a expresar propiedades como fechas de composición e información de origen, como en los ejemplos ya dados, y estas propiedades deben aplicarse a instancias específicas de tripletas. Tenga en cuenta que el triple descrito (subject predicate object)en sí no está implícito en dicho cuarteto de cosificación (y no es necesario que realmente exista en la base de datos). Esto permite también utilizar este mecanismo para expresar qué tripletas no se cumplen.

El poder del vocabulario de reificación en RDF está restringido por la falta de un medio integrado para asignar URIrefs a declaraciones, por lo que para expresar información de "procedencia" de este tipo en RDF, se debe utilizar algún mecanismo (fuera de RDF). ) para asignar URI a declaraciones RDF individuales, luego hacer más declaraciones sobre esas declaraciones individuales, utilizando sus URI para identificarlas. [8]

En mapas temáticos

En un mapa de temas XML (XTM), sólo un tema puede tener un nombre o desempeñar un papel en una asociación. Se puede utilizar una asociación para hacer una afirmación sobre un tema, pero no se pueden hacer afirmaciones directamente sobre esa afirmación. Sin embargo, es posible crear un tema que cosifique una construcción no temática en un mapa, permitiendo así nombrar la asociación y tratarla como un tema en sí. [9]

relaciones n -arias

En lenguajes de Web Semántica, como RDF y OWL, una propiedad es una relación binaria que se utiliza para vincular dos individuos o un individuo y un valor. Sin embargo, en algunos casos, la forma natural y conveniente de representar ciertos conceptos es utilizar relaciones para vincular a un individuo con más de un individuo o valor. Estas relaciones se llaman relaciones n-arias . Algunos ejemplos son la representación de relaciones entre varios individuos, como un comité, una persona que es miembro del comité y otra persona que ha nominado a la primera persona para convertirse en miembro del comité, o un comprador, un vendedor y un objeto que se compró al describir una compra de un libro.

Un enfoque más general de la cosificación es crear una nueva clase explícita y n nuevas propiedades para representar una relación n -aria, haciendo que una instancia de la relación que vincula a los n individuos sea una instancia de esta clase. Este enfoque también se puede utilizar para representar información de procedencia y otras propiedades para una instancia de relación individual. [10]

 : p1  a  : Persona  ;  : tiene_membresía  _ : membresía_12345  .  _ : membresía_12345  a  : Membresía  ;  : comité  : c1 ;  : nominado_por  : p2  .

vs. cotización

También es importante señalar que la cosificación descrita aquí no es lo mismo que la "cita" que se encuentra en otros idiomas. En cambio, la cosificación describe la relación entre una instancia particular de un triple y los recursos a los que se refiere el triple. La cosificación puede leerse intuitivamente como diciendo "este triple RDF habla de estas cosas", en lugar de (como entre comillas) "este triple RDF tiene esta forma". Por ejemplo, en el ejemplo de cosificación utilizado en esta sección, el triple:

 comité : membresía12345  rdf : persona sujeta  : p1 . 

La descripción rdf:subjectde la declaración original dice que el sujeto de la declaración es el recurso (la persona) identificado por la URIref person:p1. No indica que el tema de la declaración es el propio URIref (es decir, una cadena que comienza con ciertos caracteres), como lo haría una cita.

Ver también

Referencias

  1. ^ J. Malenfant, M. Jacques y F.-N. Demers, un tutorial sobre la reflexión conductual y su implementación Archivado el 28 de mayo de 2010 en la Wayback Machine.
  2. ^ La especificación del lenguaje Java, sección 4.7, edición Java SE 7
  3. ^ "Bloques y cierres de Smalltalk". C2.com. 2009-10-15 . Consultado el 9 de octubre de 2010 .
  4. Formal Methods Europe, Preguntas frecuentes, parte 13 Archivado el 12 de marzo de 2005 en Wayback Machine .
  5. ^ Antoni Olivé, Modelado conceptual de sistemas de información, Springer Verlag, 2007.
  6. ^ "Asociaciones". Lenguaje de modelado unificado 2.5.1. Número de documento OMG formal/2017-12-05. Organización de desarrollo de estándares del grupo de gestión de objetos (OMG SDO). Diciembre de 2017. p. 199.
  7. ^ "Clases". Lenguaje de modelado unificado 2.5.1. Número de documento OMG formal/2017-12-05. Organización de desarrollo de estándares del grupo de gestión de objetos (OMG SDO). Diciembre de 2017. pág. 194.
  8. ^ a b C "Introducción RDF". W3.org . Consultado el 9 de octubre de 2010 .
  9. ^ Introducción práctica a los mapas temáticos Archivado el 3 de febrero de 2009 en Wayback Machine .
  10. ^ "W3C Definición de relaciones N-arias en la Web Semántica". W3.org . Consultado el 9 de octubre de 2010 .