Searching...
miércoles, 9 de noviembre de 2016

Modelo de Datos Semiestructurados

Se puede decir sin lugar a dudas que Internet y la web nos ha cambiado la vida. De hecho, la web es la mayor fuente de información que existe en la actualidad. Pero, ¿En qué modelo de datos está basada la web? En general decimos que es el modelo de datos semi-estructurado. Después de este post espero que seas capaz de distinguir entre el modelo de datos estructurado del que hemos hablado en un artículo anterior y el modelo de datos semi-estructurado. Además, podrás observar que la mayoría de las veces los datos semi-estructurados se refieren a datos con estructura arborescente y explicar por qué las operaciones de navegación en árbol son importantes en formatos como XML y JSON.
Como se combina el modelo de datos semiestructurado con los datos estructurados
Pongamos por ejemplo una página web muy sencilla, sin una gran cantidad de contenido o estilización y sin ni siquiera enlaces a otras páginas. Vamos a echar un vistazo al código HTML correspondiente. Este código es utilizado por el navegador para que pueda procesar el HTML. Observa algunas cosas en estos datos.
Ejemplo sencillo de HTML
Todos los datos están incluidos dentro de los bloques <HTML> y </HTML>. De manera similar también tenemos un comienzo y un final de cuerpo, un comienzo y un final de cabecera, un comienzo y un final de lista y un comienzo y un final de párrafo. Por todas partes tenemos un bloque anidado dentro de un bloque más grande.

El segundo punto a observar es que a diferencia de una estructura relacional hay múltiples elementos de lista y múltiples párrafos, y cualquier documento único tiene un número diferente de ellos. Esto significa que aunque el objeto de datos tenga cierta estructura, sin embargo es más flexible. Esta es la característica distintiva del modelo de datos semi-estructurado.

XML (eXtensible Markup Language) es un estándar de representación de datos. Se puede pensar en XML como una generalización de HTML donde los elementos, es decir, los marcadores de inicio y de final dentro de los corchetes angulares, pueden ser cualquier cadena, y no como los que permite el estándar HTML.

Veamos un ejemplo de un caso biológico. Como se puede ver, hay dos elementos llamados sampleattribute. Son estructuralmente diferentes porque tienen diferente número de subelementos llamados value.
XML permite consultar tanto el esquema como los datos
Otra cuestión interesante sobre el procesamiento de datos XML es que podemos reconocer realmente los elementos de la estructura. Por ejemplo, es perfectamente posible preguntar: ¿Cuál es el nombre del elemento que contiene un sub-elemento cuyo contenido textual es CellType? Como se puede ver, podemos obtener dos resultados, sampleattribute y experimentalfactor, ya que sampleattribute tiene un sub-elemento denominado category y experimentalfactor tiene un nombre de sub-elemento, y cada uno de estos sub-elementos tiene el valor CellType. No podemos realizar una operación de este tipo en un modelo de datos relacional. Por ejemplo, no podemos decir qué relación tiene una columna con un valor John.

La misma idea también se puede ver en JSON (Java Script Object Notation), que es un formato muy popular utilizado para muchos datos diferentes como los de Twitter y Facebook. Considera el siguiente ejemplo, donde todos los formatos parecen diferentes. Tenemos una estructura anidada similar que difiere en que sus listas contienen otras listas que contienen tuplas que consisten en parejas de clave-valor. Por lo tanto, las parejas de clave-valor son nombres de propiedades atómicas junto con sus valores. Pero una manera de generalizar todas estas formas diferentes de datos semi-estructurados es modelarlos como árboles.
JSON
Volvamos al XML. En el siguiente gráfico el lado izquierdo muestra un documento XML y el lado derecho muestra el árbol correspondiente. Puesto que el objeto superior del elemento raíz es el documento, también es la raíz del árbol. Bajo el documento tenemos un elemento report con el autor y la fecha por debajo de él, y también un elemento paper con el título, el autor y la fuente por debajo de él. Los valores reales son el contenido textual de un elemento. Puesto que un elemento de datos de texto no puede tener componentes adicionales, estos valores de texto son siempre las hojas del árbol.
Estructura de datos en árbol
Modelar un documento como un árbol tiene ventajas significativas. Un árbol es una estructura de datos popular que permite lo que se conoce como acceso de navegación a los datos. Imagina que estás situado en el nodo paper. Puedes realizar una operación getParent y navegar por el documento, o puedes realizar una operación getChildren para obtener el título, el autor y la fuente. Incluso puedes realizar una operación getSiblings hasta llegar al nodo report. También puedes hacer una consulta textual, como que cadenas contienen la subcadena data y buscar su ruta desde el documento hasta los nodos de texto.
Operaciones en un árbol
Podemos ver como las consultas pueden ser evaluadas en el árbol. Por ejemplo, supongamos que tenemos la consulta “¿Quién es el autor del modelo de datos de la consulta XML?”. En un esquema de evaluación podemos navegar hacia arriba desde el nodo de texto al título, al nodo paper, y luego navegar hacia abajo al autor y luego a Don Robie. ¿Cómo podemos saber que tenemos que llegar hasta paper antes de invertir la dirección? El nodo paper es el antecesor común más bajo del arbol del nodo autor y del nodo del modelo de datos de la consulta XML. 

Volveré a tratar el modelo de datos semi-estructurado en un artículo posterior.

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!