A blog about data, information and IT, by Mario Alberich

Jun 29
2007

Facetas: aplicaciones en informática

En esencia, las facetas son interesantes porque comprimen los parámetros descriptivos. En comparación con esquemas arborescentes, las facetas son de lo más sencillas de utilizar. Al margen de las propiedades positivas y negativas de las facetas, el uso de esos factores es más manejable que una gran estructura, y su combinación genera gran cantidad de casos posibles.

Esa capacidad de compresión y sistematización es su herencia matemática: para el caso, descarta diferencias y se centra en los elementos comunes. Al entrar en ese detalle, ese objetivo de sistematización analítica y su posterior síntesis son muy aplicables a la informática.

Introducir las ventajas de las facetas en la informática es fácil: la base matemática de ambas disciplinas ayuda a una adaptación rápida y fructífera.


Facetas en la vida cotidiana

Un ejemplo muy rápido de lo que puede ser una faceta:

Un calendario es una muestra de uso de facetas

Qué ves? Yo veo facetas. Por ejemplo, una fecha es una combinación de tres facetas: día, mes y año. La pena es que algunos meses tienen 31 días, otros 30, y Febrero que oscila entre los 28 y los 30 (sí sí, cada 400 años, si no recuerdo mal).

Pero veamos más facetas:

  • Faceta Fecha, Faceta Día de la semana,
  • Faceta día, Faceta mes...

Todo esto se puede tratar entender como facetas. Desde luego no sería lo que más en mente tenía Ranganathan, pero como ejemplo creo que es comprensible. Dependiendo del contexto, la exhaustividad de las anteriores facetas puede flaquear. Por ejemplo, si el calendario fuera de dos años, las facetas dia-mes no serían suficientes.

Otro ejemplo fácil es el del juego de hundir la flota, los populares barquitos. En este caso, cada coordenada es una faceta. Pero incluso las cifras de cualquier número en base decimal (por ejemplo) pueden tratarse como facetas:

  • Según el valor de la unidad: (0,1,2,...9).
  • Según el valor de las decenas: (0,1,2,...9)
  • ...
  • Según el valor de las decenas de millar (0,1,2,...9)

Siguiendo este ejemplo, Clasificar los números de 0 a 99.999 es fácil contando con sólo 5 facetas, y 10 valores en cada faceta. ¿Se ve claro su potencial?


Aplicaciones de las facetas en la informática


Estructura y organización de datos

Hasta la fecha he aplicado las facetas en la informática a dos niveles distintos. La primera se refiere a la representación de datos, y más en concreto a su tipificación. En el otro caso, tenemos el diseño de interficies.

La relación entre las facetas y el tratamiento-tipificación de datos viene principalmente porque las bases de datos relacionales se basan en el álgebra relacional. Este álgebra, que expone una serie de operaciones a realizar con tuplas (que a su vez están compuestas de atributos).

Los atributos de cada tupla (que en esencia pueden entenderse como una fila o registro en una base de datos) pueden ser considerados facetas, y los distintos valores de cada una de esas tuplas pueden tomarse como sus miembros. Así, un registro en una base de datos equivale a una indexación en base a las facetas de la estructura de datos.

En los casos reales, no todos los valores de los campos son tipificables. Por ejemplo, los valores numéricos que reflejan datos cuantitativos pueden tener gran cantidad de valores y no ser tipificables en un sentido estricto, sino como un rango de valores.


Por ejemplo, los valores enteros de 1 a 10.000 son finitos y contables, pero ponte a hacer una lista...). El factor clave de la tipificación es que pueda ser fácilmente asimilable. Por ejemplo, separar los 10.000 valores posibles en 30 grupos o intervalos es una estrategia muy utilizada y recomendable.

En otros casos, cuando llegamos a los campos del tipo Sí/No, Mucho/Poco/Nada, Hombre/Mujer, y en general intervalos (por ejemplo, para grupos de edades); en esos casos el concepto de faceta entra de lleno. Se pueden mostrar los datos que tiene cada combinación de valores (Sí-Mucho-Hombre, No-Mucho-Mujer...). En este caso hay 12 combinaciones posibles (2 x 3 x 2), aunque eso siempre tiene un valor teórico (puede haber combinaciones imposibles).

En vista que es posible tipificar datos a nivel interno, es buen momento para ver cómo tipificarlos a nivel de interficie...


Diseño de interficies

Existe una gran cantidad de recursos que hablan sobre la aplicación de las clasificaciones facetadas en el diseño de interficies. Por ejemplo, Infoesfera habla sobre Ranganathan y los Arquitectos Informacionales. También en nosolousabilidad exponen los principios básicos de las clasificaciones facetadas, y el XFML.

En el ámbito de aplicaciones concretas, encontramos tutoriales para desarrollar y utilizar clasificaciones facetadas en la web, o también encontramos el flamencosearch, que demuestra que es posible mostrar gran cantidad de datos en una interficie más o menos limitada, sacando partido de las facetas.

Claro, teniendo tipificados los datos a nivel interno, por qué no utilizar esa tipificación para organizar los datos para el usuario. La primera cuestión es si siempre será útil, y en qué grado. Por ejemplo, es posible que existan tipificaciones de uso interno (gestión de la aplicación informática), o que simplemente no tengan utilidad para el propósito del usuario.

Por ejemplo, en casos donde existe una gran cantidad de información, la capacidad de compresión de las facetas es un buen punto de inicio para el acceso por navegación del usuario. El propio usuario debe ser conocedor de lo que significan esas tipificaciones.


Gestión de los CSS

Una de las utilidades más agradecidas que he encontrado últimamente a las facetas es en su uso de los CSS. Conocí hace unos tres meses que el HTML permite indicar más de una clase a un mismo elemento. Por ejemplo:

...a href="#" class="azul fondo-verde borde-rojo"

Indica que aplique sobre el enlace los estilos azul, fondo-verde y borde-rojo. Los atributos indicados en cada clase se combinan (sintetizan) para utilizarse sobre el enlace.

El proceso de análisis previo de los estilos acostumbra a ser así:

  • Se diferencia entre elementos (tags que llevan el atributo id y que en el CSS se indican con la #almohadilla) de las clases en general.
  • Se especifican las características de las cajas a utilizar en el diseño.
  • Se especifican listas de todos los posibles colores, tipografías, anchos y altos.
  • Se definen las características de los principales tags (h1-h5, p, table-tr-th-td, span, etc.).
  • Se indican clases para alineaciones (text-align, vertical-align).

Aprovechando las ventajas de las facetas, y teniendo ojo de aplicar este criterio sólo sobre lo estrictamente necesario, el tamaño del CSS se reduce, su legibilidad es mucho mejor (agrupando las facetas es fácil hacer modificaciones) y la capacidad de combinación se limita a las capacidades de los navegadores (utilizando dos o tres clases css como mucho acostumbra a ser suficiente).

Lo mejor de todo es cuando se reutiliza este CSS: para empezar, gran parte del trabajo ya está hecho. Lo único necesario es adaptar los colores y/o imágenes de fondo, los tamaños de las cajas y algunos detalles más. Un paso más allá están los temas: sólo variando el posicionamiento y otros detalles, es posible reorganizar los contenidos sin tocar ni un tag del HTML.

Bueno, esto es todo por hoy... Pronto habrá más.

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.