<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stardust XS &#187; etiqueta</title>
	<atom:link href="http://www.stardustxs.com/tag/etiqueta/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stardustxs.com</link>
	<description>Web 2.0 en español</description>
	<lastBuildDate>Thu, 12 Jun 2008 17:34:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Esquema de etiquetas (tag schema)</title>
		<link>http://www.stardustxs.com/2008/03/04/esquema-de-etiquetas-tag-schema/</link>
		<comments>http://www.stardustxs.com/2008/03/04/esquema-de-etiquetas-tag-schema/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 22:43:56 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[datawarehouse]]></category>
		<category><![CDATA[esquema]]></category>
		<category><![CDATA[esquema de etiquetas]]></category>
		<category><![CDATA[etiqueta]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tag schema]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://www.stardustxs.com/2008/03/04/esquema-de-etiquetas-tag-schema/</guid>
		<description><![CDATA[Hablamos mucho sobre que es una etiqueta (un tag), que es una folcsonomía y varios temas relacionados. Ahora bien, si creo mi propia aplicación web 2.0 y quiero generar mi famosa nube de etiquetas (tag cloud), u obtener meta información relativa a dichas etiquetas, ¿cómo hago?
Bien, en el blog tagschema.com de Nitin Borwankar explica bastante [...]]]></description>
			<content:encoded><![CDATA[<p>Hablamos mucho sobre que es una etiqueta (un tag), que es una folcsonomía y varios temas relacionados. Ahora bien, si creo mi propia aplicación web 2.0 y quiero generar mi famosa nube de etiquetas (tag cloud), u obtener meta información relativa a dichas etiquetas, ¿cómo hago?</p>
<p>Bien, en el blog <a href="http://tagschema.com/">tagschema.com</a> de Nitin Borwankar explica bastante bien como hacerlo, y aquí voy a incluir un resumen traducido al castellano de lo que considero más importante de dicho blog.</p>
<p>He tenido la experiencia de hacer aplicaciones web 2.0 utilizando esquema de etiquetas, y es bastante sencillo de implementar si uno tiene los conceptos adecuados para hacerlo.</p>
<p><span id="more-233"></span></p>
<h2>La Web 2.0 necesita Datos 2.0</h2>
<p>Una de las principales características de muchas aplicaciones web 2.0 es que son folcsonomías, clasificando los contenidos por medio de palabras clave o &#8220;etiquetas&#8221; (tags) mnemotécnicas.</p>
<p>Normalmente estas aplicaciones a diferencia de las aplicaciones &#8220;1.0&#8243;, por llamarlas de alguna manera, relacionan a los usuarios con lo que denominaremos sus ítems (podrían ser bookmars, fotos, videos, música, o cualquier objeto de una aplicación). En las aplicaciones &#8220;2.0&#8243; no solo se relacionan los usuarios con sus ítems, sino que también se relacionan con las etiquetas que les ponen a sus ítems.</p>
<p>Los nuevos modelos de datos, ahora, deberán tener en cuenta una nueva dimensión a la hora de actuar, y esa nueva dimensión son las etiquetas. Para lograr eso de una forma eficiente se debe hacer una especie de datawarehousing. Ese datawarehousing en tiempo real son nuestros Datos 2.0, los datos que utilizaremos por medio de nuestro esquema de etiquetas.</p>
<p>Entonces, <strong>el esquema de etiquetas (o tags) representa un datawarehouse de datos etiquetados (o tabeados)</strong>, y esos serán nuestros Datos 2.0.</p>
<h2>Datos 2.0 a fondo</h2>
<p>Ahora que sabemos que un esquema de etiquetas (o esquema de tags) no es nada mas ni nada menos que un datawarehouse, para analizar estos esquemas de etiquetas vamos a tener que hacer un análisis de modelos multidimensionales.</p>
<p>Antes de interiorizarnos con profundidad en este tema vamos a darnos cuenta que para cualquier simple aplicación que utilice etiquetas <strong>vamos a necesitar tres dimensiones básicas: &#8220;Usuario&#8221;, &#8220;Etiqueta&#8221; y &#8220;Ítem&#8221;</strong>. A partir de esas tres dimensiones comenzaremos a hacer el análisis de un esquema de etiquetas.</p>
<p><strong>Con esas tres principales dimensiones se genera lo que en datawarehousing se conoce como &#8220;fact table&#8221;, y eso es una tabla donde se asocian y convergen las 3 dimensiones. En esa tabla tendremos la información de cada ocurrencia de un evento, como por ejemplo &#8220;el usuario X ha puesto la etiqueta Y al ítem Z&#8221;. Esta situación se da para todas las etiquetas Y que le incluye el usuario X a todos los objetos Z que posea.</strong></p>
<p>Entonces, si el usuario &#8220;pepe&#8221; utiliza las etiquetas &#8220;cine&#8221;, &#8220;música&#8221;, &#8220;literatura&#8221; y &#8220;ocio&#8221; de manera en la que a el le parece con algunos artículos de un sitio web que habla sobre hobbies, en un esquema de etiquetas podríamos llegar a encontrar las siguientes columnas en una &#8220;fact table&#8221;:</p>
<blockquote>
<pre>Usuario     Etiqueta        Ítem
----------------------------------------------------------------
'pepe'      'cine'          'http://algohobbies.com/articulo-1'
'pepe'      'cine'          'http://algohobbies.com/articulo-2'
'pepe'      'música'        'http://algohobbies.com/articulo-2'
'pepe'      'cine'          'http://algohobbies.com/articulo-3'
'pepe'      'literatura'    'http://algohobbies.com/articulo-3'
'pepe'      'ocio'          'http://algohobbies.com/articulo-4'</pre>
</blockquote>
<p>El usuario &#8220;juan&#8221; tendrá una cantidad similar de campos para todos sus objetos etiquetados, lo mismo para el usuario &#8220;laura&#8221;.</p>
<p><strong>Las &#8220;fact tables&#8221; son tablas de asociaciones de múltiple entrada, donde se asocian todas las dimensiones posibles en un solo lugar.</strong> Estas tablas permiten una gran cantidad de consultas interesantes para correr, con probablemente, una de las mejores escalabilidades.</p>
<h2>Creando un modelo de datos para navegar una folcsonomía</h2>
<p>Además de la unión de los Usuarios, Etiquetas e Ítems hay una cantidad de relaciones que, junto con la relación base, forman el modelo de datos 2.0. Exploremos estas relaciones y sus consecuencias para la arquitectura de los datos.</p>
<p>Los Usuarios tienen Ítems (URL&#8217;s, fotos, música, etc.), pero un Usuario puede existir en la base de datos sin poseer ningún Ítem, como por ejemplo luego de haberse registrado. Por el lado del Ítem, este terminara siendo incluido en la base de datos solamente si esta relacionado al menos a un usuario (el que lo haya cargado). Entonces, un Usuario tiene quizás-ninguno-pero-posiblemente-muchos Ítems, y un Ítem tiene al-menos-uno-y-posiblemente-muchos Usuarios.</p>
<p>Similarmente, un Ítem puede existir sin ninguna Etiqueta, pero una Etiqueta existe solamente para asignar un valor a un Ítem. Adicionalmente, un Usuario puede no haber etiquetado nada por lo cual no tener ninguna Etiqueta, pero una Etiqueta siempre va a ser asignada por un Usuario.</p>
<p>Teniendo en cuenta esas tres relaciones cíclicas obtenemos lo siguiente:</p>
<blockquote>
<pre>Usuario  (1-muchos)  &lt;---------&gt; (0-muchos)  Ítems
Etiqueta (0- muchos) &lt;---------&gt; (1- muchos) Ítems
Etiqueta (0- muchos) &lt;---------&gt; (1- muchos) Usuario</pre>
</blockquote>
<p>Transcribiendo eso para una mejor comprensión podemos obtener este hermoso diagrama:</p>
<p><!--[if gte vml 1]>                                                  <![endif]--></p>
<p style="text-align: center"><img src="http://www.stardustxs.com/wp-content/uploads/2008/03/tagschema11.png" alt="Esquema de Etiquetas (Tag Schema) - Logico" /></p>
<p><strong>Aquí podemos ver que hay relaciones muchos-a-muchos entre cada par de entidades. Este modelo que vemos aquí arriba es la representación de un modelo lógico de datos</strong>, que al pasarlo a un modelo físico de datos va a requerir algunas modificaciones debido a las relaciones de muchos-a-muchos.</p>
<p>La idea no es dar una clase sobre bases de datos, pero como una breve explicación, la forma estándar de representar las relaciones muchos-a-muchos es crear una tabla de relación en la base de datos, que asocie ambos campos por medio de sus identificadotes.</p>
<p>Por ejemplo si queremos almacenar los Ítems que ha guardado un Usuario, al mismo tiempo que queremos saber los Usuarios que poseen cierto Ítem de una forma eficiente, crearemos una tabla que se podría llamar UsuarioÍtem para resolver la relación de muchos-a-muchos entre esas dos entidades donde cada columna tendrá el identificador del Usuario y el identificador del Ítem. Con la misma lógica tendremos una tabla UsuarioEtiqueta y una tabla ÍtemEtiqueta.</p>
<p>Habiendo creado las tablas de relaciones, el modelo nos quedara similar al siguiente:</p>
<p><!--[if gte vml 1]>   <![endif]--></p>
<p style="text-align: center"><img src="http://www.stardustxs.com/wp-content/uploads/2008/03/tagschema2.png" alt="Esquema de Etiquetas (Tag Schema) - Fisico" /></p>
<p>Para completar nuestro modelo de datos, como vimos anteriormente, <strong>tenemos la famosa &#8220;fact table&#8221; donde se relacionan los Usuarios, Ítems y Etiquetas en una sola tabla</strong>, que puede ser representada de dicha manera:</p>
<p><!--[if gte vml 1]>   <![endif]--></p>
<p style="text-align: center"><img src="http://www.stardustxs.com/wp-content/uploads/2008/03/tagschema3.png" alt="Esquema de Etiquetas (Tag Schema) - “Fact Table”" /></p>
<p>Ahora bien, seguramente están pensando ¿todo esto para hacer una simple nube de etiquetas?</p>
<p>Bien, <strong>si estas pensando en hacer una arquitectura de una folcsonomía a gran escala va a ser necesario algo así</strong>, ya que en una primera instancia este modelo resuelve de forma muy simple las preguntas: &#8220;¿Cuáles son todos los Ítems de un Usuario?&#8221; O &#8220;¿Cuáles son todas las Etiquetas de este Ítem?&#8221;; pero yendo a un grado mayor de profundidad, nos podemos encontrar con preguntas como: &#8220;¿Cuáles son todos los Usuarios que tienen mas Ítems similares entre sí con otro Usuario?&#8221;. <strong>Usando este modelo, podemos responder muchas consultas sin hacer múltiples JOIN en una base de datos, y cuando hablamos de mas de 250.000.000 de columnas, es algo importante para la performance.</strong></p>
<p>Entonces, como nuestro modelo no puede evitar nunca tener nuestra &#8220;fact table&#8221; ya que mantiene la coherencia entre los Usuarios, Ítems y Etiquetas, combinando estos dos modelos de datos obtendremos lo que se podría denominar la base de <strong>nuestro modelo de datos 2.0</strong>, nuestro famoso esquema de etiquetas:</p>
<p style="text-align: center"><img src="http://www.stardustxs.com/wp-content/uploads/2008/03/tagschema4.png" alt="Esquema de Etiquetas (Tag Schema) - Final" /></p>
<h2>Relacionando datos en una folcsonomía</h2>
<p>Si bien SQL es un lenguaje perfectamente adecuado para hacer consultas de datos &#8220;tabulares&#8221;, no es particularmente elegante para representar las abstracciones que tenemos en mente a la hora de relacionar datos en una folcsonomía, como por ejemplo, relacionar Usuarios, Ítems o Etiquetas entre sí.</p>
<p>Vamos a usar una simple notación para hablar sobre las relaciones entre Usuario-Ítem-Etiqueta, para transformar momentáneamente SQL en un lenguaje un poco más descriptivo. Olvidémonos de SQL por un momento y vamos a seguir esta notación:</p>
<p>Las letras en minúscula &#8220;í&#8221;, &#8220;e&#8221; y &#8220;u&#8221; representaran a un &#8220;Ítem&#8221;, &#8220;Etiqueta&#8221; y &#8220;Usuario&#8221; respectivamente.</p>
<p>Las letras en mayúscula &#8220;Í&#8221;, &#8220;E&#8221; y &#8220;U&#8221; representaran una lista de &#8220;Ítems&#8221;, &#8220;Etiquetas&#8221; y &#8220;Usuarios&#8221;, como una búsqueda.</p>
<p>Veamos algunos ejemplos:</p>
<blockquote><p>Al pedir U(í), estaremos pidiendo todos los Usuarios de un Ítem í.<br />
<em>(En SQL sería: select u.* from usuarios u, usuarios_ítems ui where u.id = ui.usuario_id and ui.item_id = algun_item_id; )</em></p>
<p>Al pedir U(e), estaremos pidiendo todos los Usuarios que tengan la Etiqueta e.<br />
<em>(En SQL sería: select u.* from usuarios u, usuarios_etiquetas ue where u.id = ue.usuario_id and ue.etiqueta_id = alguna_etiqueta_id; )</em></p></blockquote>
<p>Similarmente obtendremos:</p>
<blockquote><p>Í(u) serán todos los Ítems de un Usuario u.<br />
Í(e) serán todos los Ítems que tengan una Etiqueta e.<br />
E(í) serán todas las Etiquetas que estén asignadas a un Ítem í.<br />
E(u) serán todas las Etiquetas que haya usado un Usuario u.</p></blockquote>
<p>Ahora, si buscamos en un segundo grado de profundidad, podremos encontrar consultas un poco mas interesantes que las anteriores.</p>
<blockquote><p>Por ejemplo, E(U(e)) es una colección de todas las Etiquetas que tienen todos los Usuarios que tienen una Etiqueta e.<br />
<em>(Su SQL sería: select e.* from etiquetas e, usuario_etiquetas ue, where ue.usuario_id in (select usuario_id from usuario_etiquetas where etiqueta_id = alguna_etiqueta_id))</em></p></blockquote>
<p>Aquí podemos observar que es mucho mas sencillo decir lo que queremos, &#8220;Una colección de todas las Etiquetas que tienen todos los Usuarios que tienen una Etiqueta e&#8221;, que su representación en SQL que puede llegar a ser mas compleja de entender sin la explicación previa.</p>
<p>De esta manera, con la notación que hemos utilizado podemos encontrar varias consultas de segundo grado.</p>
<p>Estas consultas las veremos mas adelante en alguna otra publicación, creo que ya es demasiada información por una única entrada.</p>
<img src="http://www.stardustxs.com/?ak_action=api_record_view&id=233&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.stardustxs.com/2008/03/04/esquema-de-etiquetas-tag-schema/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Que es una Folcsonomía (Folksonomy)?</title>
		<link>http://www.stardustxs.com/2008/02/28/que-es-una-folcsonomia-folksonomy/</link>
		<comments>http://www.stardustxs.com/2008/02/28/que-es-una-folcsonomia-folksonomy/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 18:30:23 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[Glosario]]></category>
		<category><![CDATA[catalogar]]></category>
		<category><![CDATA[comunidad]]></category>
		<category><![CDATA[etiqueta]]></category>
		<category><![CDATA[etiquetas]]></category>
		<category><![CDATA[folcsonomía]]></category>
		<category><![CDATA[folksonomy]]></category>
		<category><![CDATA[orden]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[taxonomía]]></category>

		<guid isPermaLink="false">http://www.stardustxs.com/2008/02/28/que-es-una-folcsonomia-folksonomy/</guid>
		<description><![CDATA[Es probable que no hayas escuchado nunca esta palabra, pero es una palabra bastante vieja e hizo mucho ruido en las aplicaciones web 2.0; por lo cual quiero escribir un poco acerca de esto y explicar que es, ya que se relaciona bastante con el tema de los tags (o etiquetas).
Como hacemos siempre que vamos [...]]]></description>
			<content:encoded><![CDATA[<p>Es probable que no hayas escuchado nunca esta palabra, pero es una palabra bastante vieja e hizo mucho ruido en las aplicaciones web 2.0; por lo cual quiero escribir un poco acerca de esto y explicar que es, ya que se relaciona bastante con el tema de los <a href="http://www.stardustxs.com/2008/02/27/que-es-una-nube-de-tags-etiquetas/">tags (o etiquetas)</a>.</p>
<p>Como hacemos siempre que vamos a dar una definición &#8220;de abuela&#8221; sobre algún tema, vamos a tratar de repasar que dicen en diferentes lugares sobre el termino que vamos a explicar. Así que empecemos por <a href="http://es.wikipedia.org/wiki/Folcsonom%C3%ADa">Wikipedia</a>:</p>
<p><strong><em>&#8220;Folksonomía</em></strong><em> es una indexación profesional, es decir, la clasificación colaborativa por medio de etiquetas simples en un espacio de nombres llano, sin jerarquías ni relaciones de parentesco predeterminadas. Se trata de una práctica que se produce en entornos de software social cuyos mejores exponentes son los sitios compartidos como del.icio.us (enlaces favoritos), Flickr (fotos), Tagzania (lugares), flof (lugares) o 43 Things (deseos).&#8221;</em></p>
<p>Si bien esta definición no me termina de gustar, y creo que no deja del todo claro el termino, podemos sacar cosas bastante claras: Es una clasificación colaborativa por medio de etiquetas.</p>
<p>En el  <a href="http://lalunarosa.com/hormiguero/2005/10/17/folcsonomia/">hormiguero</a> podemos encontrar una nota sobre folcsonomía, que es muy interesante, de la cual podemos sacar esto:</p>
<p><em>&#8220;Es decir, clasificar cosas mediante una serie de <strong>palabras clave</strong>. Por ejemplo, si quiero clasificar una receta de paella usaría las <strong>tags</strong> (o etiquetas, o palabras-clave): </em><em>paella</em><em>, </em><em>cocina</em><em>, </em><em>receta</em><em>, </em><em>marisco</em><em>, </em><em>arroz</em><em>. Todas a un mismo nivel, y todas independientes.&#8221;</em></p>
<p>Bueno, aquí podemos encontrar que las folcsonomías usan los benditos tags. O sea, ¡llamamos a una folcsonomía a catalogar con tags! Lo cual no creo que sea tan así, pero estamos mas cerca de lo que queremos llegar.</p>
<p>En <a href="http://www.tabernadelturco.com/2005/05/02/folksonomias/">la taberna del turco</a>, que hizo una buena nota sobre este tema, obteniendo muchos datos sobre la Wikipedia en ingles, podemos rescatar un poco de etimología de esta palabra, ya que creo que en este caso si es importante:</p>
<p><em>&#8220;Etimológicamente hablando, folcsonomía es una palabra derivada de taxonomía, la cuál significa clasificación (</em><em>taxis</em><em>) y orden (</em><em>nomia</em><em>). Teniendo en cuenta que folc significa en alemán pueblo, tenemos que folcsonomía vendría a significar &#8220;clasificación por el pueblo&#8221;.&#8221;</em></p>
<p>Bueno, al ver la etimología de la palabra creo que ya no deberían quedar muchas dudas sobre que es una folcsonomía; pero para no ser menos vamos a hacer una definición &#8220;de la abuela&#8221;.</p>
<h3>Definición de la abuela: ¿Qué es una Folcsonomía?</h3>
<p><strong>Una folcsonomía es una forma de catalogar o clasificar las cosas de manera colaborativa, o sea, es una forma de clasificación masiva en la cual las cosas son clasificadas por un conjunto de personas a la vez. La manera actual y mas popular de realizar las folcsonomías es por medio de los tags (o etiquetas).</strong></p>
<img src="http://www.stardustxs.com/?ak_action=api_record_view&id=209&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.stardustxs.com/2008/02/28/que-es-una-folcsonomia-folksonomy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
