Home
Temas
Preguntas
Webs Amigas

Tecnología y Cultura
Sexo y Religión


Derechos Animales
Fotos Naturaleza
Ecología y Filosofía

Copyleft
Licencia de Creative Commons
Temas >> Estándares y Protocolos
por Alvaro Herrera
Annotea
Annotea 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.

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:

  • Uso de tecnologías abiertas. Existen sistemas de anotación basados en protocolos cerrados, haciéndolos inextensibles. Este uso de tecnología abierta permite la interoperabilidad con otros sistemas de anotación al tiempo que permiten la extensibilidad de los datos que el sistema puede llevar.
  • Los documentos anotados son estructurados. Otros sistemas de anotación permiten anotar cualquier recurso que cuente con una URI. Para simplificar el diseño, se decidió limitar los recursos anotables a aquellos que poseen estructura, es decir, documentos HTML o XML, incluyendo otras anotaciones.
  • Las anotaciones son recursos Web de primera clase, por lo que cada anotación cuenta con una URI.
  • Las anotaciones son fuertemente tipadas. Las anotaciones mismas tienen distintas propiedades. El tipo de una anotación es metadatos sobre la anotación misma; esto permite a los usuarios clasificar las anotaciones al momento de escribirlas.
  • Los tipos de anotaciones pueden ser definidos por los usuarios. Dado que existen diferentes grupos de usuarios, cada uno con diferentes necesidades, este sistema debe permitir que cualquier grupo de usuarios defina su propia taxonomía.
  • Las propiedades deben describirse con un esquema RDF.
  • Las anotaciones se almacenan en bases de datos RDF genéricas, en lugar de tener servidores de anotaciones especializados.
  • No se hacen suposiciones sobre la interfaz de usuario. Annotea no especifica cómo deben presentarse los metadatos al usuario; sin embargo, se predice que se necesita algún tipo de consistencia de interfaz.
  • Pueden existir anotaciones locales o remotas; estas últimas pueden ser compartidas. El servidor de notas es responsable del control de acceso a las notas que almacena.
  • Pueden existir múltiples servidores de anotaciones.
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:

  • 1. El usuario "navega" por un documento.
  • 2. El usuario selecciona algún texto del documento y le indica a su browser que quiere anotarlo.
  • 3. El browser abre una ventana nueva, donde el usuario puede escribir el texto de su anotación y escoger el tipo.
  • 4. El usuario publica la anotación en un servidor de anotaciones. Para esto, el browser genera una descripción RDF de la anotación que incluye los metadatos y el texto y lo envía al servidor, usando el método HTTP POST. El servidor le asigna una URI a la anotación y al cuerpo y responde con una descripción RDF que contiene esas URIs.
  • 5. Si el usuario modifica la anotación, la publicará a la URI que se le asignó.

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.

  • 1. El usuario "navega" por un documento.
  • 2. El browser consulta cada uno de los servidores de anotación, pidiendo via HTTP GET los metadatos de anotaciones asociados con la URI del documento.
  • 3. Cada servidor responde con una lista de los RDF de los metadatos de anotación. Si el servidor no almacena ninguna anotación relacionada, responde con un código HTTP 404.
  • 4. Para cada lista de anotaciones que recibe, el browser procesa los metadatos, resuelve el XPointer y si es posible marca el texto anotado.
  • 5. Si el usuario hace click en el texto marcado por el browser, éste usa el método HTTP GET para obtener el cuerpo de la anotación especificada en la URI de los metadatos.
  • 6. El browser despliega una ventana mostrando los metadatos y el cuerpo de la anotación.

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.

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:


Creando una nota con Amaya
Creando una nota con Amaya

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:


Cómo muestra amaya la existencia de una nota
Cómo muestra amaya la existencia de una nota

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:


Mozilla mostrando anotaciones en su sidebar
Mozilla mostrando anotaciones en su sidebar

Alojamiento Web

ChaTo = Carlos Castillo, Ph.D.  :::  Acerca de este Sitio ChaTo = Carlos Castillo, Ph.D. ::: Acerca de este Sitio