geração (semi)automática de metadados - Universidad Autónoma ...
geração (semi)automática de metadados - Universidad Autónoma ...
geração (semi)automática de metadados - Universidad Autónoma ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ISBN: 978–972–8924–45-4 © 2007 IADIS<br />
o CASCADE. La información se pasa únicamente al primer hijo y lo que éste <strong>de</strong>vuelva al<br />
segundo, y así sucesivamente. El resultado generado por el último hijo será el resultado <strong>de</strong>l<br />
robot padre. Esto supone la conexión en serie <strong>de</strong> los transformadores.<br />
o BRANCH-DUPLICATED. La información se pasa a todos los hijos (una copia a cada uno).<br />
o BRANCH-SCATTERED. La información se pasa a los hijos <strong>de</strong> forma repartida, es <strong>de</strong>cir, el<br />
vector <strong>de</strong> resultados generado por el padre es dividido <strong>de</strong> forma que la posición 1 le<br />
correspon<strong>de</strong> al primer hijo, la 2 al segundo, y así sucesivamente, volviendo al primer hijo en<br />
caso <strong>de</strong> que el tamaño <strong>de</strong>l vector fuese mayor que el número <strong>de</strong> hijos.<br />
• MERGE MODE. En caso <strong>de</strong> que el valor <strong>de</strong>l primer parámetro no fuese CASCADE, este parámetro<br />
permite indicar cómo se unirán los resultados que <strong>de</strong>vuelva cada hijo tras la bifurcación con el fin <strong>de</strong><br />
construir el resultado <strong>de</strong>l padre. Existen tres opciones:<br />
o ORDERED. El resultado <strong>de</strong>l padre será un único vector que contiene las ca<strong>de</strong>nas <strong>de</strong> los<br />
vectores <strong>de</strong> todos sus hijos correspondiendo las primeras posiciones al primer hijo, las<br />
segundas al segundo y así sucesivamente.<br />
o SCATTERED. Funciona igual que ORDERED, salvo que se toman las ca<strong>de</strong>nas <strong>de</strong> los hijos<br />
<strong>de</strong> forma alternada, es <strong>de</strong>cir, en primer lugar se colocarán las primeras posiciones <strong>de</strong> los<br />
vectores resultantes <strong>de</strong> cada hijo, luego las segundas y así sucesivamente.<br />
o COLLAPSED. El resultado <strong>de</strong>l padre es un vector con una única posición resultado <strong>de</strong><br />
concatenar todas y cada una <strong>de</strong> las ca<strong>de</strong>nas <strong>de</strong> los vectores resultantes <strong>de</strong> los hijos.<br />
Otra característica interesante <strong>de</strong> los transformadores es que posibilitan la implementación <strong>de</strong> bucles.<br />
Aunque por <strong>de</strong>finición actúan sobre un vector <strong>de</strong> ca<strong>de</strong>nas <strong>de</strong> texto (lo que ya les confiere un carácter<br />
iterativo), es posible a<strong>de</strong>más que un transformador vuelva a ejecutarse cíclicamente en función <strong>de</strong> lo que<br />
<strong>de</strong>vuelva el primero <strong>de</strong> sus hijos. Para ello se utiliza el parámetro LOOP, <strong>de</strong> tipo booleano, presente en todos<br />
los transformadores. Si un transformador padre es un bucle, funcionará <strong>de</strong>l siguiente modo:<br />
• Primero actúa sobre la entrada y trabaja con los hijos <strong>de</strong> forma normal haciendo uso <strong>de</strong> los<br />
parámetros <strong>de</strong> interconexión vistos anteriormente, salvo para el caso <strong>de</strong>l primer hijo. A este hijo<br />
siempre se le pasa el resultado parcial que genera el padre y su salida no se consi<strong>de</strong>ra como tal, si no<br />
que será utilizada por el padre para el control <strong>de</strong>l bucle.<br />
• El padre recoge la salida <strong>de</strong> todos sus hijos, excepto <strong>de</strong>l primero. Las salidas se acumulan en cada<br />
iteración <strong>de</strong>l bucle, <strong>de</strong> forma que al final habrá una o varias posiciones en el vector resultante por<br />
cada iteración efectuada (una posición por cada iteración si MERGE MODE es COLLAPSED).<br />
• El padre examina la salida <strong>de</strong> su primer hijo. Si no <strong>de</strong>vuelve ningún resultado, el bucle termina, en<br />
caso contrario, se utiliza <strong>de</strong> nuevo la salida <strong>de</strong>l hijo como entrada.<br />
Un ejemplo ilustrativo <strong>de</strong> la utilidad <strong>de</strong> las capacida<strong>de</strong>s <strong>de</strong> iteración se pue<strong>de</strong> ver en el análisis <strong>de</strong> sitios<br />
web, cuyos resultados se <strong>de</strong>vuelven en varias páginas (p. ej. Google). Mediante los bucles se pue<strong>de</strong> hacer que<br />
el robot vaya buscando los enlaces que permiten pasar a la siguiente página, <strong>de</strong> modo que se puedan alcanzar<br />
dichas páginas y continuar con la extracción <strong>de</strong> información.<br />
2.2 Transformadores<br />
aAUTOMATOR proporciona un conjunto <strong>de</strong> transformadores básicos para la creación <strong>de</strong> robots, tal y como<br />
se muestra en la Tabla 1. Algunos <strong>de</strong> estos transformadores pue<strong>de</strong>n recibir parámetros adicionales para<br />
controlar su funcionamiento. Es preciso <strong>de</strong>stacar que el API <strong>de</strong> aAUTOMATOR ha sido diseñado <strong>de</strong> tal<br />
forma que se contempla la posibilidad <strong>de</strong> añadir más transformadores en el futuro, instalables fácilmente<br />
mediante un sistema <strong>de</strong> plugins.<br />
218<br />
Tabla 1. Transformadores disponibles actualmente en aAUTOMATOR.<br />
Transformador (clase Java) Descripción Parámetros<br />
SimpleTransformer La entrada es igual a la salida Ninguno<br />
URLRetriever Cada ca<strong>de</strong>na <strong>de</strong> texto <strong>de</strong> la entrada se<br />
interpreta como una URL y se convierte<br />
en su correspondiente texto HTML<br />
accediendo a Internet<br />
Ninguno