30.12.2012 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!