Drupal 7 será el CMS semántico

Sólo una pequeña nota para informar de lo que he leído en Sitepoint sobre la nueva versión de Drupal. Si hasta ahora era de los mejores CMS (sus premios le avalan), compitiendo directamente con el “monstruo” Plone, con este movimiento, y si todo sale bien creo que se convertirá en el súper-CMS del presente y el futuro (perdona que me ponga en plan gurú-profeta amarillista).

La idea es darle a Drupal la forma necesaria para convertirse en un nodo de la web semántica, perfectamente interconectado por Web Services, REST o HTTP sin más, que sea capaz de tomar y servir información de otros nodos, permitiendo a los usuarios localizar información dentro y fuera del sitio web. Lo que no sé todavía es si el almacenamiento se mantendrá como hasta ahora, en una base de datos relacional, o por el contrario pasarán a usar una base de datos semántica. Si se diera el primer caso (y así parece, según los avances de Carlos Rincón), deberían utilizar una especie de ORM para mapear las descripciones en la BD, y seguramente esa capa fuese reutilizable más allá de Drupal (como pasó con su motor de plantillas).

Drupal pasa dejando huella, haciendo avanzar el ecosistema de programación PHP y la web en general. Gracias y felicidades, Drupal.

PD: la imagen está alojada por Facebook Inc., hosting gratuito de imágenes. Gracias a su falta de privacidad me voy a ahorrar unos eurillos…

La web semántica según ReadWriteWeb

Leyendo un artículo de ReadWriteWeb encuentro este interesante párrafo sobre lo que se entiende por web semántica:

The Semantic Web means many things to different people, because there are a lot of pieces to it. To some, the Semantic Web is the web of data, where information is represented in RDF and OWL. Some people replace RDF with Microformats. Others think that the Semantic Web is about web services, while for many it is about artificial intelligence – computer programs solving complex optimization problems that are out of our reach. And business people always redefine the problem in terms of end user value, saying that whatever it is, it needs to have simple and tangible applications for consumers and enterprises.

Sólo se me ocurre una respuesta a estas diferentes perspectivas: todos ellos tienen razón.

En la web Semántica la información se representa en RDF y OWL, aunque también en HTML, RSS y otros formatos. Sobre RDF se han escrito y se escribirán ríos de tinta.

Los microformatos son un buen invento, factible a corto plazo pero no se pueden comparar a RDF, ya que esta tecnología aporta una infraestructura válida y escalable para ser adoptada a pequeña y gran escala, con cantidades pequeñas y grandes de información, con relaciones simples y complejas. Y, para quien no lo sepa, RDF se puede embeber en HTML mediante RDFa.

Los servicios web, aunque ya son un invento antiguo, ofrecen una funcionalidad definida, algo que no puede hacer un formulario en HTML. Además, las tecnologías de la web semántica aportan significado y universalidad a los servicios web. Más sobre SW semánticos en el W3C y en un interesante artículo del IEEE.

La inteligencia artificial es una pieza clave para hacer de la web semántica algo útil. Mediante IA se pueden crear descripciones semánticas (¿quién va a describir en RDF los miles de millones de sitios web actuales?), se pueden procesar (búsquedas inteligentes, búsquedas en lenguaje natural, agentes inteligentes que descubren, buscan y utilizan servicios web) y filtrar (cotejamiento de diferentes descripciones sobre un mismo recurso, capa de confianza, etc).

Los que ponen la pasta quieren ideas de valor visible (demostrable), aplicaciones útiles, que puedan convertirse en un producto. Pero no nos precipitemos, la ciencia siempre ha ido por delante de la tecnología, y la tecnología por delante del negocio. En Internet todo va muy rápido, creo que demasiado rápido, y enseguida se busca un modelo de negocio para todo. Dejemos que los científicos e investigadores hagan su trabajo, y cuando las tecnologías estén desarrolladas que se busque cómo rentabilizarlas y cómo crear un valor añadido para el usuario. No quiero decir que no haya que cuestionar la viabilidad y utilidad de todas las investigaciones, máxime en el caso de la Web Semántica, cuyas ventajas son evidentes y cuyos modelos de negocio deben ser explorados: si ya cuesta encontrar modelos de negocio para las empresas de la web tradicional y de la web social, para empresas que trabajen con la web semántica puede ser complicado.

Algunas ideas: servicios de indexado semántico externo (mmm… pongámosle un nombre en plan dospuntocero: semantic cloud computing… yeah!), minería de datos sobre bases de datos semánticas o mismamente consultoría sobre implantación de tecnologías semánticas en sitios y servicos web.

[OFF-TOPIC] Feliz Navidad a todos los lectores, especialmente al selecto grupo de suscriptores RSS ;-) No os extrañe si no publico un post al respecto, os agradezco que me leáis y os deseo lo mejor para estos días de vacaciones, descanso y reflexión, así como para todo el venidero 2009. Pero prefiero utilizar el blog para tratar los temas para los que fue creado.

Construyendo la web social semántica

A través de un interesante post de Furilo, acabo de conocer la existencia de DiSo, un proyecto que pretende crear y promover tecnologías y estándares abiertos para la creación de una web social descentralizada. Para ello, han empezado con los microformatos y los estándares de autenticación OpenID y OAuth, desarrollando sendos plug-ins para WordPress. Aprovecho para adelantar que estoy preparando una guía para aplicar tecnologías de la web semántica (entre ellas, microformatos y OpenID) a un blog.

Al conocer la existencia del proyecto, y dado el carácter del post de Furilo, no he podido evitar una especie de “escepticismo 2.0″, ya que este proyecto pretende construir comunidades descentralizadas con las tecnologías actuales, y creo sinceramente que no tiene futuro. Por una parte, ya existen ontologías como SIOC (Semantically Interlinked Online Communities) que posibilitan (o lo intentan) la compartición de datos sobre personas a partir de distintas fuentes. Pero por otra parte, la Web Semántica parece tan lejana, y SIOC tan poco tangible para las masas, que parece necesario que alguien ponga orden a la caótica web social, demasiado obcecada con los RSS, sus lifestreaming, sus Google Friend Connect y sus gurús 2.0 aunque desde sea “su propio bando”.

Pero, repito, creo que eso no tiene futuro. Seguramente me equivoque, pero cuando digo futuro no quiero decir que no vaya a tener éxito, ni siquiera que no vaya a servir para hacer avanzar la web semántica y la descentralización de servicios. Cuando digo que no tiene futuro me refiero a que las tecnologías están abocadas a ser sustituidas por las tecnologías de la Web Semántica, y no porque este blog hable sobre web semántica, sino porque los microformatos son un invento temporal (acabarán dejando paso a RDFa). Y sobre todo, porque la web social no está aislada de “otras webs”. Si sólo trabajamos para la web social, crearemos un subconjunto quizá bien formado de servicios sociales, pero muy endogámico y ligado a servicios concretos, que es lo contrario a lo que se pretende inicialmente:

We’re building WordPress plugins [...]

¿Y cuando desaparezca WordPress, qué? Cuando (Sir) Tim Berners-Lee empezó con el rollo de la Web Semántica, no dijo “vamos a hacer estándares para taxonomías” o “vamos a hacer estándares para gestión documental”. La Web Semántica provee tecnologías para la web social, para el comercio electrónico y la administración on-line, para los fondos documentales y prácticamente cualquier otro uso que se le quiera dar a la web. Si queremos una web social semántica, por favor, que sea semántica, no sólo “interlinked”.

Experimentos en el blog

Sé que hacer experimentos cuando hay invitados no es de buen gusto, pero en este caso podemos aprender todos del experimento. Si habéis visitado el blog últimamente (no sólo a través de RSS), habréis notado la presencia de tres caralladas nuevas: los status Twitter de mis followers y míos, un widget de Google Friend y, más recientemente, los comentarios externalizados con Disqus.

Sobre Twitter poco que comentar: para gustos, colores. A veces lo uso y a veces no. Tenerlo en el blog me ayuda a extenderlo más alla de su misión original (publicar posts), para llegar a ser eso que denominan “Life streaming”. Aunque, por supuesto, lo central son los posts, ya que lo demás solo interesa a unos pocos.

Sobre Google Friend Connect diré tener un widget no me vale para nada, aunque la API no está mal. De todas maneras, los usuarios están más en Facebook que en GMail (con toda la información añadida que aporta), y por ello estoy haciendo pruebas con Facebook Connect. Es cierto que ambas son plataformas propietarias, pero OpenID y OAuth (ésta segunda me gusta más) están muy lejos de ser estándares de facto.

Y sobre Disqus… la verdad es que me cautivó la idea de “globalizar” las conversaciones generadas en el blog. Me parecía una idea muy buena de cara a la web semántica y al filtrado de información útil (me viene a la cabeza el mashup de comentarios que hizo Enrique Dans con Meneame y su blog). Me ahorro el almacenamiento de los comentarios, el CAPTCHA y tengo RSS de los comentarios sin esfuerzo. Pero si Disqus no añade tecnologías semánticas a su sistema, va a perder más de un usuario.

Bases de datos orientadas a objetos, la plataforma óptima para la Web Semántica

Una de los últimas tendencias en el desarrollo de software orientado a objetos es el abandono de las bases de datos relacionales como sistemas de almacenamiento, en favor de bases de datos orientadas a objetos (por ejemplo, ZODB es la base de datos orientada a objetos de Zope, el potente framework de desarrollo para Python), o bien sistemas que, aun utilizando un DBMS relacional aportan una capa de abstracción al programador para crear objetos persistentes (Object-Relational Mapping, ORM), por ejemplo Hibernate o Doctrine.

Con la aparición en escena de estos sistemas de almacenamiento, surgió la polémica entre seguir usando los seguros, estables y rápidos RDBMS o sencillamente almacenar los objetos que maneja internamente el programa, prescindiendo de DAOs y demás inventos.

Hoy en día la papeleta se soluciona con motores de persistencia (capas de abstracción para guardar objetos que se apoyan sobre BBDD relacionales), como el ya citado Hibernate; aunque existen Sistemas de Gestión de Bases de Datos orientadas a objetos, como ZODB (Zope Object Database), que ofrece resultados muy buenos en cuanto a rendimiento y seguridad. Destaca también OpenLink Virtuoso, un puente entre SQL y RDF/XML. En Wikipedia se resume muy bien el concepto de persistencia de objetos.

Bases de datos orientadas a objetos, diseño y semántica

Todo este rollo viene a cuento de la Web Semántica, y su evidente estructura orientada a objetos (iba a poner un enlace a la especificación del RDF-Schema pero no quiero quedar como un pedante con semejante tostón). Pero no sólo es una cuestión de estructura. Las bases de datos orientadas a objetos, y sobre todo las bases de datos semánticas, ofrecen una flexibilidad muy apropiada para proyectos web (no sólo “3.0”). Y el mejor ejemplo que he encontrado es Plone, el gestor de contenidos para portales web basado en Zope, permite crear archetypes de información que Zope/ZODB manejan de forma semi-automática, permitiendo extender el portal rápidamente.

El caso es que la elección entre DBMS relacional y orientado a objetos depende de la orientación del problema a solucionar: si pretendes hacer un portal web grande (para una universidad o algo así), un sistema para gestión colaborativa del conocimiento o un proyecto que simplemente tenga que ser muy flexible y escalable, es muy probable que la mejor opción sea una base de datos orientada a objetos. También son útiles las BBDD orientadas a objetos (y además embebidas, como son la mayoría) para programas sencillos que no procesen grandes volúmenes de datos. En este último caso también son adecuadas las bases de datos basadas en pares atributo-valor, que resultan extremadamente sencillas, y cuyo máximo exponente es la oferta SimpleDB de Amazon Web Services. Aunque si no quieres “volar en la nube” también está BerkeleyDB (de hecho, es una de las tecnologías que usa SimpleDB). De todos modos, de bases de datos “”minimalistas”” hablaremos otro día.

En medio de esta jungla, para muchos desconocida por su novedad y poca penetración en el mercado (los consultores se sienten seguros con Oracle), surgen las Bases de Datos semánticas. Están manejadas por bibliotecas como Jena o RdfLib y consultadas por un “safari” de lenguajes como RDQL, SeRQL o SPARQL (este último iniciativa del W3C), un poco inmaduros para ser usados de manera extensiva. Hoy en día se usan para software de gestión del conocimiento, tesauros, biblioteconomía… casi todas ellas bases de datos privadas.

En la otra cara de la moneda tenemos la propuesta de Tim Berners-Lee, su visión de la Web Semántica en la que “sirvientes” software nos hacen el trabajo, compran entradas para el cine o buscan exactamente qué jugadores de la selección uruguaya de fútbol jugaron en el último mundial con un dorsal mayor a 10. Pero abrir las bases de datos y semantizar todo la información de la red (que es una utopía) no es el único camino para aplicar las tecnologías semánticas en Internet.

Pensemos en RDF. Es el lenguaje base de las tecnologías semánticas. Con sus “triplets” (sujeto, predicado y objeto) se construyen las estructuras de conocimiento y las ontologías. RDF se puede expresar en XML. XML es una buena manera de almacenar objetos. XML se puede procesar con diferentes extensiones: XSL-T, Xpath, Xlink, Xforms… y construir páginas web enteras sin usar prácticamente ni HTML ni programación en el lado del cliente. Pero aún hay más, la arquitectura REST es la óptima para la publicación de objetos. ¿Eins, y eso qué es? Pues la publicación de objetos es sencillamente eso: publicar los objetos persistentes en el servidor web. Por ejemplo, el Zpublisher de Zope (sé que soy repetitivo, pero cada vez confirmo más que Zope es la plataforma perfecta para aplicaciones semánticas): el usuario envía una petición (en principio una URI por HTTP, pero Zope permite publicar objetos incluso a través de FTP, WebDAV y XML-RPC), Zpublisher busca el objeto entre su Base de Datos y lo devuelve.

¡Anda, la arquitectura es como en un servidor de Bases de Datos! ¡Y como en los servicios web (los servicios web trabajan con XML, y hemos dicho que XML es un buen lenguaje para expresar objetos)!. De hecho, Zpublisher publica objetos a través de XML-RPC, algo que al lector atento no hace falta repetir ;-P. Es decir, que si hago una aplicación web en Zope con mis objetos persistentes, ZPublisher automáticamente creará servicios web para que otros sitios puedan interactuar con mi programa. Y si a esa Base de Datos orientada a objetos (expresable en XML) le agrego metadatos semánticos (algo fácil de hacer en XML, gracias a los namespaces y a los RDF-Schema), es posible disponer de servicios web semánticos. Fíjate hasta que punto Zope es el más indicado para estos menesteres su nombre significa Z Object Publishing Environment.

En fin, un buen comienzo, implementable sin grandes dificultades, para posibilitar un nodo inteligente en la web semántica, que produzca contenido y metadatos y pueda colaborar con otros servicios. Y si es Zope, encima de todo ese framework y esa base de datos orientada a objetos podemos poner Plone, el gestor de contenidos con la curva de aprendizaje más jodida que conozco, y convertir nuestra semantizada instancia de Zope en un portal web, con todo lo que ello implica.