Está en la página 1de 16

Tratamiento automático de la información II

Guía de clase práctica 4


Temas a desarrollar

✔ Introducción al formateo de colecciones.


✔ Exploración del archivo de configuración en GS3.
✔ Creación de un esquema de metadatos propio.

Bibliografía de apoyo
• Bibliografía propuesta en las clases teóricas.

• Guías del Seminario-taller: Gestión de bibliotecas digitales usando Greenstone 3.


Clase 1, 3 y 4. 2017. Disponible en el campus en TAI permanente.

• Wiki de Greenstone: http://wiki.greenstone.org/doku.php?id=en:beginner:index

Desarrollo de la clase

Parte 1

Vamos a continuar trabajando con la colección que creamos en la primera clase.


Agregaremos a nuestra colección un nuevo esquema de metadatos.

Desde la pestaña enriquecer > gestionar esquemas de metadatos:


Agregamos un nuevo esquema que llamaremos tai2, cuyo espacio de nombre será ta.
Aceptamos y se abrirá el editor en el que iremos agregando los metadatos de un esquema
propio para la cátedra. ¿Recuerdan cuando hablamos de perfiles de aplicación?
Tarea en clase

1. Agregamos cinco (5) elementos de metadatos que puedan ser útiles para
nuestra colección. Definimos cada uno de sus atributos.
2. Realizamos la carga de los metadatos creados para nuestro esquema
propio.
3. Visualizamos el metadata.xml y lo analizamos.

Parte 2
Para poder visualizar los metadatos que asignamos en la descripción y que incluimos en
nuestros clasificadores, índices y registros es necesario conocer el lenguaje con que se
formatean esos datos. El lenguaje de formateo de GS3 está escrito en XSLT, que ya han
visto en las clases teóricas, junto con XML.

Si nos paramos en la pestaña “formato” vemos diferentes opciones que se aplican a los
componentes de la colección y que son características del formato:

Browse: Formato de los clasificadores

Search: Formato de los resultados de búsqueda

Global: Formato global que se aplica si no hay uno específico

Display: Formato de las páginas de documento

CL1,CL2, etc.: Formato para un clasificador específico

Archivo de configuración de la colección

En el archivo collectionConfig.xml se almacena toda la configuración de nuestra colección


y está alojado en el directorio etc de cada colección.

Como ya han trabajado con XML y XSLT no les resultará difícil comprender su estructura y
contenido. Abran ustedes el archivo con un editor de texto:
<?xml version="1.0" encoding="UTF-8"?>

<CollectionConfig
xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"xmlns:gslib="ht
tp://www.greenstone.org/skinning" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<metadataList>
<metadata lang="en" name="creator"/>
<metadata lang="en" name="maintainer"/>
<metadata lang="en" name="public">true</metadata>
</metadataList>

<displayItemList>
<displayItem assigned="true" lang="en" name="text">text</displayItem>
<displayItem assigned="true" lang="en"
name="dc.Title,ex.dc.Title,Title">titles</displayItem>
<displayItem assigned="true" lang="en" name="Source">filenames</displayItem>
<displayItem assigned="true" lang="en" name="document:text">text</displayItem>
<displayItem assigned="true" lang="en" name="document:ex.Title">Title</displayItem>
<displayItem assigned="true" lang="en"
name="document:ex.Source">Source</displayItem>
<displayItem assigned="true" lang="en" name="document">document</displayItem>
<displayItem assigned="true" lang="en" name="section">section</displayItem>
<displayItem assigned="true" lang="en" name="shortDescription">curso</displayItem>
</displayItemList>
<format> <gsf:template name="choose-title">
<gsf:choose-metadata>
<gsf:metadata name="dc.Title"/>
<gsf:metadata name="exp.Title"/>
<gsf:metadata name="ex.dc.Title"/>
<gsf:metadata name="Title"/>
<gsf:default>Untitled</gsf:default>
</gsf:choose-metadata>
</gsf:template>
</format>
<search type="lucene">

CONFIGURACIÓN DE LA BÚSQUEDA
<level name="document">
<displayItem lang="en" name="name">document</displayItem>
<displayItem lang="es" name="name"/>
</level>
<level name="section">
<displayItem lang="en" name="name">section</displayItem>
<displayItem lang="es" name="name"/>
</level>
16
<defaultLevel name="document"/>
<index name="text">
<displayItem lang="en" name="name">text</displayItem>
</index>
<index name="dc.Title,ex.dc.Title,Title">
<displayItem lang="en" name="name">titles</displayItem>
</index>
<index name="Source">
<displayItem lang="en" name="name">filenames</displayItem>
</index>
<defaultIndex name="text"/>
<sort name="rank">
<displayItem lang="en" name="name">rank</displayItem>
</sort>
<sort name="none">
<displayItem lang="en" name="name">natural (build) order</displayItem>
</sort>
<searchType name="plain"/>
<searchType name="simpleform"/>
<searchType name="advancedform"/>
<format> <gsf:template match="documentNode">
<td valign="top">
<gsf:link type="document">
<gsf:icon type="document"/>
</gsf:link>
</td>
<td>
<gsf:link type="document">
<xsl:call-template name="choose-title"/>
</gsf:link>
</td>
</gsf:template>
</format>
</search>

<infodb type="jdbm"/>
<import>
CONFIGURACION DE LOS PLUGIN ACTIVOS
<pluginList>
<plugin name="ZIPPlugin"/>
<plugin name="GreenstoneXMLPlugin"/>
<plugin name="TextPlugin"/>
<plugin name="HTMLPlugin"/>
<plugin name="EmailPlugin"/>
<plugin name="PDFPlugin">
<option name="-convert_to" value="html"/>
<option name="-pdfbox_conversion"/>
</plugin>
<plugin name="RTFPlugin"/>
<plugin name="WordPlugin"/>
<plugin name="PostScriptPlugin"/>
<plugin name="PowerPointPlugin"/>
<plugin name="ExcelPlugin"/>
<plugin name="ImagePlugin"/>
<plugin name="ISISPlugin"/>
<plugin name="NulPlugin"/>
<plugin name="OAIPlugin"/>
<plugin name="MetadataXMLPlugin"/>
<plugin name="ArchivesInfPlugin"/>
<plugin name="DirectoryPlugin"/>
</pluginList>
</import>
<browse>

FORMATO Y CONFIGURACIÓN DE LOS CLASIFICADORES


<classifier name="List">
<option name="-metadata" value="dc.source/dc.title"/>
<option name="-metadata_selection_mode" value="firstvalue/firstvalue"/>
17
<option name="-bookshelf_type" value="always"/>
<option name="-partition_type_within_level" value="none"/>
</classifier>
<format> <gsf:template match="documentNode">
<td valign="top">
<gsf:link type="document">
<gsf:icon type="document"/>
</gsf:link>
</td>
<td valign="top">
<gsf:link type="source">
<gsf:choose-metadata>
<gsf:metadata name="thumbicon"/>
<gsf:metadata name="srcicon"/>
</gsf:choose-metadata>
</gsf:link>
</td>
<td valign="top">
<gsf:link type="document">
<!--
Defined in the global format statement
-->
<xsl:call-template name="choose-title"/>
<gsf:switch>
<gsf:metadata name="Source"/>
<gsf:when test="exists">
<br/>
<i>(<gsf:metadata name="Source"/>)</i>
</gsf:when>
</gsf:switch>
</gsf:link>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'VList']">
<td valign="top">
<gsf:link type="classifier">
<gsf:icon type="classifier"/>
</gsf:link>
</td>
<td valign="top">
<gsf:metadata name="Title"/>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'HList']">
<gsf:link type="classifier">
<gsf:metadata name="Title"/>
</gsf:link>
</gsf:template>
</format>
</browse>
<display>
CONFIGURACIÓN DE LA VISUALIZACIÓN DEL DOCUMENTO, ESTÁ COMENTADO
<format> <gsf:option name="TOC" value="true"/>
<!--
Overwriting this template allows you to change the heading of the document.
-->
<!--
<gsf:template name="documentHeading">
<span style="font-weight:bold; font-size: 120%;">
<xsl:call-template name="choose-title"/>
</span>
</gsf:template>
-->
<!--
18
Overwriting this template can be used to redefine the content of the whole document. This
is useful for simple documents, but not
recommended for more complex documents (e.g. hierachical and paged documents) as it
can prevent any sub-sections from showing.
-->
<!--
<gsf:template name="documentContent">
<xsl:call-template name="wrappedSectionImage"/>
<xsl:call-template name="wrappedSectionText"/>
</gsf:template>
-->
<!--
Overwriting this template can be used to change the content of section headings.
-->
<!--
<gsf:template name="sectionHeading">
<xsl:call-template name="choose-title"/>
</gsf:template>
-->
<!--
Overwriting this template can be used to change the content of the top-level section.
-->
<!--
<gsf:template name="topLevelSectionContent">
<xsl:call-template name="wrappedSectionImage"/>
<xsl:call-template name="wrappedSectionText"/>
</gsf:template>
-->
<!--
Overwriting this template can be used to change the content of sections.
-->
<!--
<gsf:template name="sectionContent">
<xsl:call-template name="wrappedSectionImage"/>
<xsl:call-template name="wrappedSectionText"/>
</gsf:template>
-->
</format>
</display>
<replaceListRef id="gs2-standard"/>
<replaceListRef id="gs2-image"/>
<serviceRackList><!-- comment out the following serviceRack if you want to disable RSS
for this collection -->
<serviceRack name="RSSRetrieve"/><!-- comment out the following serviceRack if you
want to disable OAI for this collection
-->
<serviceRack name="OAIPMH">
<setName>curso</setName>
<setDescription/><!-- uncomment the following and set the name attribute if
you want this collection to be part of a super set. --><!--<oaiSuperSet name="xxx"/>-->
<ListMetadataFormats><!--What metadata sets to support for this collection. You can
select any set that is
specified in OAIConfig.xml. To use a new set, you need to add a set definition in
OAIConfig.xml, then reference it here, like:
<metadataFormat metadataPrefix="prefix"/> -->
<metadataFormat metadataPrefix="oai_dc"><!-- you can customize the mappings by
adding elements in
here. See resources/oai/OAIConfig.xml for the format--></metadataFormat>
</ListMetadataFormats>
</serviceRack>
</serviceRackList>
</CollectionConfig>

Visualización de clasificadores

En la pestaña formato > formatos (format features para la versión en inglés) nos paramos
en la opción browse

Vemos que hay dos tipos de etiquetas:

1. etiquetas html que, por defecto, muestran la estructura de una fila de una tabla
<td></td>
2. etiquetas gsf, que son un conjunto simplificado de comandos de formateo, escritos
en XML, que luego serán transformados internamente a XSLT para poder gestionar
la visualización de los metadatos.
Etiquetas gsf

Plantillas (templates)

Hay dos tipos de plantillas

1. documentNode → cuando formateamos un documento

<gsf:template match="documentNode"></gsf:template>

2. classifierNode → cuando formateamos un clasificador

<gsf:template match="classifierNode”></gsf:template>

Metadatos

<gsf:metadata name='Title'/> → Muestra el metadato título

<gsf:metadata name='dc.Creator' separator='; ' /> → Muestra el metadato dc.Creator, cada


ocurrencia separada con ;

Enlaces

<gsf:link></gsf:link> o <gsf:link type='document'></gsf:link> → Link a la versión de


Greenstone del documento actual

<gsf:link type='source'></gsf:link> → Link al documento fuente

<gsf:link type='classifier'></gsf:link> → Link a un nodo clasificador

Iconos e imágenes

<gsf:icon/> or <gsf:icon type='document'/> → ícono de la versión de greenstone del


documento

<gsf:icon type='classifier'/> → ícono de estante

<gsf:metadata name="srcicon"/> → ícono del documento fuente

<gsf:metadata name="thumbicon"/> → imagen miniatura

Condicionales

<gsf:choose-metadata> → Mostrar el primer metadato de la lista que esté presente

<gsf:metadata name='dc.Title'/>

<gsf:metadata name='dls.Title'/>

<gsf:metadata name='Title'/>

<gsf:default>Untitled</gsf:default>
</gsf:choose-metadata>

Condición si un metadato existe o no

<gsf:if-metadata-exists>

<gsf:metadata name="abstract"/>

<gsf:if>output this if there is an abstract</gsf:if>

<gsf:else>output this if there is no abstract</gsf:else>

</gsf:if-metadata-exists>

<gsf:switch>

Condición con chequeo de valores

<gsf:metadata name='Title'/>

<gsf:when test='test-type' test-value='xxx'>...</gsf:when>

<gsf:when test='test-type' test-value='yyy'>...</gsf:when>

<gsf:otherwise>...</gsf:otherwise>

</gsf:switch>

Iteración

Usado en lugar de separator para insertar código html entre ocurrencias del mismo
metadato

<gsf:foreach-metadata name='Subject'>

<b><gsf:meta-value/></b>

</gsf:foreach-metadata>

Formato de un clasificador (función browse)

Vamos a editar la función browse en la pestaña de formato. En la plantilla classifierNode


identificamos el metadato Title --que representa el metadato generado a partir de todas las
ocurrencias de un determinado metadato asignado-- y lo editamos con un condicional,
vamos a agregarle un cartel al/los clasificadores que contengan la palabra Greenstone.

Para poder hacer los reemplazoas presten atención a las tablas que determinan las tres
columnas en la visualización: <td></td>
<gsf:template match="documentNode">
<td valign="top">
<gsf:link type="document">
<gsf:icon type="document"/>
</gsf:link>
</td>
<td valign="top">
<gsf:link type="source">
<gsf:choose-metadata>
<gsf:metadata name="thumbicon"/>
<gsf:metadata name="srcicon"/>
</gsf:choose-metadata>
</gsf:link>
</td>
<td valign="top">
<gsf:link type="document">
<xsl:call-template name="choose-title"/>
</gsf:link>
<gsf:switch>
<gsf:metadata name="Source"/>
<gsf:when test="exists">
<br/>
<i>(<gsf:metadata name="Source"/>)</i>
</gsf:when>
</gsf:switch>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'VList']">
<td valign="top">
<gsf:link type="classifier">
<gsf:icon type="classifier"/>
</gsf:link>
</td>
<td valign="top">
<gsf:switch>
<gsf:metadata name="Title"/>
<gsf:when test="contains" test-value="Greenstone">
<gsf:metadata name="Title"/>
<b><u>Sobre GS</u></b>
</gsf:when>
<gsf:otherwise>
<gsf:metadata name="Title"/>
</gsf:otherwise>
</gsf:switch>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'HList']">
<gsf:link type="classifier">
<gsf:metadata name="Title"/>
</gsf:link>
</gsf:template>

(!) Recuerden que cada vez que modificamos el formato tenemos que reiniciar el GS
Server

Ahora vamos a trabajar con la plantilla DocumentNode

Vemos que en el listado de títulos aparece el nombre del documento fuente y queremos
eliminarlo porque no es muy agradable para la visualización, lo mismo que el enlace a la
versión gsdl del documento fuente, que no siempre tiene un buen aspecto, entonces:

Vamos a comentar estas líneas en el DocumentNode, o directamente las eliminamos:

Para eliminar el enlace a la versión gsdl:

<td valign="top">
<gsf:link type="document">
<gsf:icon type="document"/>
</gsf:link>
</td>
Para eliminar el nombre del documento fuente:

<gsf:switch>
<gsf:metadata name="Source"/>
<gsf:when test="exists">
<br/>
<i>(<gsf:metadata name="Source"/>)</i>
</gsf:when>
</gsf:switch>

Ahora vamos a modificar documentNode para que se visualice el autor en negrita y el


título, dejando sólo el enlace al documento gsdl en el título:

<gsf:template match="documentNode">
<td valign="top">
<gsf:link type="source">
<gsf:choose-metadata>
<gsf:metadata name="thumbicon"/>
<gsf:metadata name="srcicon"/>
</gsf:choose-metadata>
</gsf:link>
</td>
<td valign="top">
<b> <gsf:metadata name="dc.Creator"/> </b>
<gsf:link type="document">
<gsf:metadata name="dc.Title"/>
</gsf:link>
</td>
</gsf:template>

Ahora queremos generar una visualización distinta para el clasificador por autor en la que
aparezcan solo los títulos y el autor separado por puntos y comas (;), para esto agregamos
la función CL4VList para que use otro formato en ese clasificador. (!) presten atención
porque el número de formato puede variar en función de los clasificadores que
hayamos agregado en nuestra colección
<gsf:template match="documentNode">
<td valign="top">
<gsf:link type="source">
<gsf:choose-metadata>
<gsf:metadata name="thumbicon"/>
<gsf:metadata name="srcicon"/>
</gsf:choose-metadata>
</gsf:link>
</td>
<td valign="top">
<gsf:metadata name="dc.Title"/>
<gsf:link type="document">
<i> <gsf:metadata name="dc.Creator" separator=" ; "/> </i>
</gsf:link>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'VList']">
<td valign="top">
<gsf:link type="classifier">
<gsf:icon type="classifier"/>
</gsf:link>
</td>
<td valign="top">
<gsf:metadata name="Title"/>
</td>
</gsf:template>
<gsf:template match="classifierNode[@classifierStyle = 'Hlist']">
<gsf:link type="classifier">
<gsf:metadata name="Title"/>
</gsf:link>
</gsf:template>

Tarea para la próxima clase

1. Vamos a modificar el formato del resultado de la búsqueda para que sea


igual que el clasificador por temas. ¿Qué sección del formato
(característica) tenemos que modificar?
2. Completar en la colección todos los pasos que fuimos realizando en esta
clase tratando de pensar una mejora en la visualización de los datos.