El intercambio de datos es el proceso de tomar datos estructurados bajo un esquema de origen y transformarlos en un esquema de destino , de modo que los datos de destino sean una representación precisa de los datos de origen. [1] El intercambio de datos permite compartir datos entre diferentes programas informáticos.
Es similar al concepto relacionado de integración de datos, excepto que los datos se reestructuran (con posible pérdida de contenido) en el intercambio de datos. Es posible que no haya forma de transformar una instancia dadas todas las restricciones. Por el contrario, puede haber numerosas formas de transformar la instancia (posiblemente infinitas), en cuyo caso se debe identificar y justificar una "mejor" opción de soluciones.
En algunos dominios, pueden existir unas pocas docenas de esquemas de origen y destino diferentes (formatos de datos propietarios). A menudo se desarrolla un "intercambio" o "formato de intercambio" para un solo dominio y, a continuación, se escriben las rutinas necesarias (mapeos) para transformar/traducir (indirectamente) todos y cada uno de los esquemas de origen a todos y cada uno de los esquemas de destino utilizando el formato de intercambio como paso intermedio. [2] Eso requiere mucho menos trabajo que escribir y depurar los cientos de rutinas diferentes que se requerirían para traducir directamente todos y cada uno de los esquemas de origen a todos y cada uno de los esquemas de destino.
Algunos ejemplos de estos formatos de intercambio transformador incluyen:
Existen dos tipos de intercambio de datos: intercambio de datos de difusión e intercambio de datos punto a punto (unicast). [9]
En una red de difusión, los datos se transmiten simultáneamente a todos los participantes. Al igual que en una llamada en conferencia, todos los participantes reciben exactamente la misma información del orador al mismo tiempo. [10]
En un modelo de intercambio de datos entre pares (unicast), los datos se envían únicamente al receptor de destino definido por una dirección específica. Al igual que en una llamada telefónica o un correo electrónico, la información solo fluye entre dos participantes de la red. [11]
Un lenguaje o formato de intercambio de datos es un lenguaje que es independiente del dominio y puede utilizarse para datos de cualquier tipo de disciplina. [12] Han "evolucionado desde estar orientados al marcado y la visualización hasta respaldar aún más la codificación de metadatos que describen los atributos estructurales de la información". [13]
La práctica ha demostrado que ciertos tipos de lenguajes formales son más adecuados para esta tarea que otros, ya que su especificación está impulsada por un proceso formal en lugar de por necesidades particulares de implementación de software. Por ejemplo, XML es un lenguaje de marcado que fue diseñado para permitir la creación de dialectos (la definición de sublenguajes específicos del dominio). [14] Sin embargo, no contiene diccionarios específicos del dominio ni tipos de hechos. La disponibilidad de diccionarios-taxonomías estándar y bibliotecas de herramientas como analizadores sintácticos , validadores de esquemas y herramientas de transformación es beneficiosa para un intercambio de datos confiable . [ cita requerida ]
La siguiente es una lista parcial de lenguajes genéricos populares utilizados para el intercambio de datos en múltiples dominios.
Nomenclatura
Notas:
La popularidad de XML para el intercambio de datos en la World Wide Web se debe a varias razones. En primer lugar, está estrechamente relacionado con los estándares preexistentes Standard Generalized Markup Language (SGML) y Hypertext Markup Language (HTML), y, como tal, un analizador escrito para admitir estos dos lenguajes se puede ampliar fácilmente para que admita también XML. Por ejemplo, XHTML se ha definido como un formato que es XML formal, pero que la mayoría de los analizadores HTML (si no todos) lo entienden correctamente. [14]
YAML es un lenguaje que fue diseñado para ser legible por humanos (y como tal, fácil de editar con cualquier editor de texto estándar). Su concepto es a menudo similar al de reStructuredText o una sintaxis Wiki, que también intentan ser legibles tanto por humanos como por computadoras. YAML 1.2 también incluye un concepto abreviado que es compatible con JSON, y como tal, cualquier documento JSON también es YAML válido; sin embargo, esto no se aplica al revés. [16]
REBOL es un lenguaje que fue diseñado para ser legible por humanos y fácil de editar utilizando cualquier editor de texto estándar. Para lograrlo, utiliza una sintaxis simple de formato libre con puntuación mínima y un amplio conjunto de tipos de datos. Los tipos de datos REBOL como URL, correos electrónicos, valores de fecha y hora, tuplas, cadenas, etiquetas, etc. respetan los estándares comunes. REBOL está diseñado para no necesitar ningún metalenguaje adicional, ya que está diseñado de manera metacircular. La metacircularidad del lenguaje es la razón por la que, por ejemplo, el dialecto Parse utilizado (no exclusivamente) para las definiciones y transformaciones de dialectos REBOL también es en sí mismo un dialecto de REBOL. [17] REBOL se utilizó como fuente de inspiración para JSON. [18]
El inglés Gellish es un subconjunto formalizado del inglés natural, que incluye una gramática simple y un diccionario-taxonomía extensible de inglés que define la terminología general y específica del dominio (términos para conceptos), mientras que los conceptos están organizados en una jerarquía de subtipos-supertipos (una taxonomía), que admite la herencia de conocimientos y requisitos. El diccionario-taxonomía también incluye tipos de hechos estandarizados (también llamados tipos de relación). Los términos y los tipos de relación juntos se pueden utilizar para crear e interpretar expresiones de hechos, conocimientos, requisitos y otra información. Gellish se puede utilizar en combinación con SQL , RDF/XML , OWL y varios otros metalenguajes. El estándar Gellish es una combinación de ISO 10303-221 (AP221) e ISO 15926. [19]
Las rutinas de transformación constituirán un lenguaje y una sintaxis que deben ser independientes de la disciplina y de la máquina.