por Alvaro HerreraAnnoteaAnnotea es un proyecto que pretende mejorar un ambiente colaborativo a través del uso de anotaciones; una anotación puede ser un comentario, una nota, una explicación o cualquier texto que se pueda adjuntar a un documento Web externamente, esto es, sin necesidad de tocar el documento mismo. Annotea es un proyecto que pretende mejorar el ambiente colaborativo de la W3C (el "Consorcio de la World Wide Web") a través del uso de anotaciones compartidas; se entiende que una anotación puede ser un comentario, una nota, una explicación o cualquier texto que se pueda adjuntar a un documento Web externamente, esto es, sin necesidad de tocar el documento mismo. El usuario recibe las notas de un servidor o varios adjuntas a un documento junto con éste y puede ver qué piensan sus colegas del documento. Annotea es un proyecto abierto, en la medida en que usa y ayuda a mejorar los estándares de la W3C. Con este objetivo en mente, se usa un esquema RDF para describir las anotaciones como metadatos y el protocolo Xpointer para indicar las posiciones de las anotaciones en el documento. Annotea es un proyecto LEAD (Live Early Adoption and Demonstration, demostración y adopción práctica temprana), que es una filosofía de la W3C introducida específicamente con el objetivo de estudiar áreas donde pequeñas piezas deben encajar para hacer funcionar un sistema, pero no se puede saber a ciencia cierta qué problemas se encontrarán hasta que se haga la prueba. 1. Requerimientos
En el diseño de Annotea era fundamental construir una infraestura basada en RDF genérico, donde las anotaciones fueran una posible encarnación de esa infraestructura. A continuación se listan los requerimientos principales de Annotea:
2. Operación de Annotea
Las anotaciones que se manejan son colecciones de afirmaciones sobre un documento. Pueden ser comentarios, correcciones tipográficas, hipótesis o puntuaciones; lo que se sabe a ciencia cierta es que hay un autor que hace una afirmación sobre un documento o parte de él en algún momento. Los metadatos de la anotación, descritos como esquema RDF especializado, dan información como la fecha de creación de la anotación, el nombre del autor, el tipo de anotación, la URI del documento anotado, y un Xpointer que especifica la parte del documento que fue anotada. Los metadatos incluyen también la URI del cuerpo de la anotación, que se asume que es un documento XHTML. Los metadatos no dicen nada sobre cómo se presenta la anotación al usuario; esta es una decisión que se deja al diseñador de la aplicación. Las anotaciones se almacenan en bases de datos RDF genéricas, que son accesibles a través de un servidor HTTP. En el siguiente ejemplo se detalla la interacción entre esos componentes cuando un usuario crea una anotación:
Nótese que la primera vez que se publica una anotación, ésta no tiene una URI asociada. El servidor de anotaciones asigna dicha URI. Cuando el usuario pida la URI en el futuro, el servidor responderá con los metadatos de la anotación. Ahora se describe cómo un usuario "navega" por un documento anotado.
En el ejemplo, se divide el proceso de bajada de anotaciones en dos partes. En la primera, el browser automáticamente baja los metadatos de las anotaciones relacionadas con un documento. Luego, y sólo si el usuario lo pide explícitamente, el browser descarga los cuerpos de las anotaciones. La razón de esto es reducir la cantidad de datos transferidos; en un documento muy anotado, enviar las anotaciones completas puede consumir y el usuario puede no estar interesado en los textos de todas las anotaciones. Nótese que una vez que una anotación se publica en un servidor, se convierte en una anotación compartida, esto es, cualquier usuario con los permisos apropiados puede ver las anotaciones del servidor. Por el momento se espera que el servidor HTTP se preocupará de controlar el acceso a las anotaciones usando los mecanismos de autentificación HTTP estándares. También es posible almacenar las anotaciones localmente, en el computador del usuario, siempre y cuando el browser permita simular una respuesta a la consulta inicial. 3. Esquema RDF para anotaciones
La característica más importante de una anotación es que soporta las necesidades de grupos colaborativos que van evolucionando. Por ejemplo, un sistema para clasificar nuevas tecnologías necesitará expandir sus tipos de anotación para clasificar ciertas características de la tecnología que revisan. Otro grupo puede querer comenzar con un conjunto de tipos e irlo evolucionando conforme su trabajo se va modificando. Los usuarios de Annotea pueden querer definir nuevos tipos de anotaciones a medida que van acostumbrándose al sistema. El grupo también puede agregar relaciones a otros objetos que son específicos del trabajo del grupo. RDF provee soporte para estas necesidades. RDF provee un modelo simple pero muy flexible para describir propiedades de un recurso Web cualquiera. En su nivel más simple, provee tripletes de recurso, propiedad y valor. Un triplete indica que un recurso(cualquier recurso web asociado a una URI) tiene una propiedadcon un determinado valor(un string, posiblemente con marcas XML, o una URI de otro recurso Web). El tipo de una anotación es definida por el usuario, declarando clases adicionales de anotación. Esas clases son parte del modelo RDF y pueden ser descritas en el Web en un esquema RDF. La superclase general de anotación se llama Annotation(en realidad, su nombre es ). Se han definido varias subclases de ejemplo, en un esquema RDF separado, cuyo espacio de nombres es . De la misma forma, otros grupos pueden crear nuevas subclases. También se pueden agregar de manera simple nuevas propiedades a las clases de anotaciones. Las anotaciones son afirmaciones hechas por usuarios que consisten como partes principales de: a) el cuerpo de la anotación, que contiene el contenido gráfico o textual de la anotación, b) el link al documento anotado con una dirección dentro del documento, c) la identificación de la persona que hace la anotación y d) otros metadatos relacionados con la anotación. El esquema RDF que define las propiedades de la anotación consiste del nombre de la propiedad y su explicación en lenguaje natural. El tipo es una de las clases básicas (Advice, Change, Comment, Example, Explanation, Question, SeeAlso), o algún otro tipo de anotación definido en otro lugar. La propiedad annotatesalmacena el enlace al documento, bodyes el enlace al contenido, y dc:creatora quien hace la anotación. Contextdefine exactamente la posición del documento donde está anclada la anotación, usando XPointer para definir las posiciones dentro de documentos XML. Esto funciona bien para documentos invariantes, pero para documentos que pasan por revisiones o cambian por algún motivo, es fácil acabar con anotaciones huérfanas (es decir, sin una posición del texto válida como referencia) o que apuntan a posiciones erróneas. Para prevenir la pérdida innecesaria de punteros, se sugiere buscar el más cercano a un padre del objeto anotado para usarlo como punto de partida al camino XPointer. Afortunadamente, muchos documentos tienen al menos en sus niveles principales. Apuntar a detalles más finos después del puede hacerse por otros mecanismos provistos por XPointer, como patrones textuales. Los metadatos adicionales incluyen la fecha de creación y hora de última modificación, y el uso de relatedpara agregar relaciones con otros objetos. Se pueden agregar otros metadatos a la anotación cuando el grupo lo necesita. El Consorcio de la WWW mantiene su browser-editor Amaya como demostración de las especificaciones que publica. En particular, soporta CSS, MathML, XHTML, HTML e implementaciones básicas de XLink y XPointer, y está enlazado a libwww, que provee soporte HTTP y un procesador RDF. En particular, Amaya permite trabajar con anotaciones Annotea:
En este ejemplo, tres de los campos de metadatos están activos. Si el usuario hace click en el campo Source document, Amaya va a desplazarse hasta el texto anotado y marcarlo como selección. Si hace click en Annotation type, Amaya va a permitir cambiar el tipo de la anotación. Finalmente, cada vez que el usuario guarde la anotación, Amaya actualiza el valor del campo Last modified. No se muestra el valor del XPointer, sino que se utiliza el destacado en el documento anotado. El cuerpo de la anotación puede ser editado como cualquier otro documento XHTML. Amaya soporta anotaciones locales y remotas. Cuando el usuario crea una anotación, se considera local y se almacena en el directorio de Amaya. Cuando el usuario decida publicarla en un servidor de anotaciones, la anotación local será borrada y subsiguientes operaciones serán enviadas al servidor. Ambos tipos de anotaciones son representadas con el mismo formato de esquema. La única diferencia es que para anotaciones locales se emula la respuesta del servidor de anotaciones usando un índice que asocia URIs con metadatos de anotación. Las anotaciones aparecen en Amaya como una marca visible, con un ícono que representa un lápiz:
Amaya permite otro tipo de funcionalidad, como navegar a través de las anotaciones ya existen en uno o más servidores, mirar su contenido, filtrar por autor, tipo de anotación y servidor. Se ha implementado también un lenguaje experimental para filtrado personalizado de anotaciones, donde el usuario puede especificar una consulta propia. Por ejemplo, se pueden filtrar las anotaciones para pedir sólo aquellas que ocurrieron en un intervalo determinado de tiempo, por un autor determinado y de un tipo dado. Este lenguaje se llama Algae. Se usó simplemente porque el W3C ya contaba con una implementación de un lenguaje similar, Algernon. La sintaxis utiliza tripletes para definir cómo será la salida del resultado de la consulta. Un ejemplo de consulta es:
(ask
'((http://www.w3.org/1999/02/22-rdf-syntax-ns#type ?a
http://www.w3.org/2000/10/annotation-ns#Annotation)
(http://www.w3.org/2000/10/annotation-ns#annotates ?a
http://www.example.org/annotate/me)
(http://www.w3.org/2000/10/annotation-ns#context ?a ?context)
(http://purl.org/dc/elements/1.1/creator ?a ?creator)
(http://www.w3.org/2000/10/annotation-ns#created ?a ?created)
(http://purl.org/dc/elements/1.1/date ?a ?date)
(http://www.w3.org/2000/10/annotation-ns#body ?a ?body)
) :collect '(?a ?context ?creator ?created ?date
?body))
Un ejemplo de respuesta, que también sirve como ejemplo para ilustrar el RDF de las anotaciones, sería:
<r:Description about="http://quake.w3.org/CGI/annotate?annotation=/2000/05/08-18:04:55">
<r:type resource="http://www.w3.org/2000/10/annotation-ns#Annotation" />
<a:annotates r:resource="http://www.example.org/annotate/me" />
<a:context>#xpointer(id("Main")/p[2])</a:context>
<d:creator>Ralph Swick</d:creator>
<a:created>1999-10-14T12:10Z</a:created>
<d:date>1999-10-14T12:10Z</d:date>
<a:body r:resource="http://quake.w3.org/CGI/annotate?body=/2000/05/08-18:04:55" />
</r:Description>
Otra implementación de Annotea es en forma de un agregado para Internet Explorer, llamado Snufkin Browser. No hay más datos respecto de esta implementación, pero es a esta fecha simplemente un estudio de capacidad, no un programa completo y usable. Annozilla es un cliente Annotea para Mozilla, que despliega las notas en la barra lateral:
|