.NET 4 y Web Semántica: el inicio de un romance

Uno de los Principios de Diseño (para una arquitectura web) de Tim Berners-Lee es el Principio de la Menor Potencia (Principle of Least Power). Referente a los lenguajes de programación plantea que “… En la actualidad debemos tomar en consideración una razón para escoger la solución menos potente en lugar de la más poderosa: mientras menos potente sea el lenguaje, más puedes lograr con los datos almacenados en el lenguaje …”.

Durante muchos años ha ocurrido cierta “discriminación” en círculos elitistas de programación hacia los lenguajes de tipificación dinámica (ej. Visual Basic anterior a VB.NET, ASP, Javascript), aquellos en los cuales el chequeo de tipos ocurre en tiempo de ejecución, opuesto a los de tipificación estática (ej. C, C++, C#, Java), para los que el chequeo de tipos se realiza durante la compilación. Lo mismo sucede con otras clasificaciones de los lenguajes como tipificación fuerte vs débil, interpretados vs compilados, entre otras. En estas élites se consideran “verdaderos programadores” a los que trabajan en lenguajes compilados y tipificados estáticamente, leáse cualquier variante con llaves { }. Para muchos, los lenguajes sin tipos o con un comodín como el Variant de Visual Basic, son algo así como demonios malignos, y realmente la asignación de un tipo de datos a cada variable y el chequeo en el proceso de compilación de su uso correcto, evita un gran número de problemas y errores durante la ejecución. Un comentarista del post I like strong typing and compilation errors plantea muy acertadamente que “la tipificación fuerte y los errores de compilación (entre ellos los relativos a la tipificación estática) son unidades de prueba (unit tests) implícitas que nunca será necesario escribir, opuesto a cuando se usa un lenguaje con tipificación dinámica, en el cual es obligatorio construir estas unidades de prueba si deseamos cierto nivel de protección contra errores de regresión”.

Pero bueno, estos debates casi que apasionados han perdurado durante mucho tiempo y seguirán así por mucho más. En la práctica, la elección del lenguaje para un proyecto depende mucho de las preferencias y/o dominio del equipo y de la misma naturaleza del trabajo en cuestión. He visto muchos proyectos implementados en Visual Basic con una calidad y diseño impecables y otros hechos en C# realmente vergonzozos.

Finalmente, aparece la version 4 de .NET y con ella la posibilidad de usar variables dinámicas en C# y el resto de los lenguajes compatibles. Muchos interpretan esto como un paso atrás, un regreso al viejo Variant del viejo Visual Basic.

Si ha leído hasta aquí, ya se estará preguntando: qué tiene que ver todo lo anterior con el Principio de la Menor Potencia y con el título del post? Muy sencillo, actualmente las tecnologías semánticas se encuentran muy cerca de alcanzar la “masa crítica” de popularidad y con ello los “lenguajes discriminados” o mejor, los conceptos en los están basados, se convierten en poderosas herramientas para el tratamiento de las estructuras de datos semánticas. Pensemos en XML, RDF, OWL, que permiten representar objetos eminentemente dinámicos; resulta bastante díficil encasillarlos en un sistema de tipos estáticos. Con la introducción de las características dinámicas en .NET 4, evidentemente Microsoft está abriendo el camino a los desarrolladores hacia la Web Semántica (además de otras aplicaciones, por supuesto). Sin embargo, creo que aún queda mucho camino por recorrer.

En los últimos días he estado experimentando un poco con el “nuevo dinamismo” de C#, en parte motivado por la “asignatura pendiente” de mi post Consultando RDF con SPARQL en C# (2da parte), y con la esperanza de que el problema presentado allí sería ahora mucho más simple de resolver. Concretamente, se trata de construir progresivamente una lista genérica de objetos de una clase diferente en cada ejecución; por tanto debe ser una clase dinámica. La definición de la clase en si, proviene del resultado de una consulta SPARQL a un almacén RDF y consiste de un grupo de nombres de variables (definidas por el usuario en el texto de la consulta). La ejecución de la consulta retorna en cada paso los nombres de estas variables (miembros de la clase dinámica) y sus valores, conformando ambos un nuevo objeto para agregar a la lista. Una vez obtenidos todos los resultados se desea mostrarlos en una tabla (DataGridView) empleando las capacidades de enlace de datos (data binding).

Leer más de esta entrada

Anuncios

Consultando RDF con SPARQL en C# (2da parte)

En la primera parte de este artículo describí cómo mostrar los resultados de una consulta SPARQL en un DataGridView, transformando los datos originales en formato SPARQL/XML a un Dataset.  Ahora describiré un segundo método en el cual DataSource es una lista genérica de tipo “desconocido” en tiempo de compilación.  En cada ejecución de la consulta se construirá una nueva clase cuyas propiedades se nombrarán según los nombres de las variables de la consulta.

Leer más de esta entrada

Consultando RDF con SPARQL en C# (1ra parte)

En enero de 2008, el W3C publicó con carácter de Recomendación las especificaciones del Lenguaje de Consulta SPARQL para RDF, dotando de esta forma al versátil modelo de representación de una poderosa herramienta de consulta distribuída. Muchos aseveran que SPARQL es para RDF lo que SQL es para las bases de datos relacionales: el estándar de consulta. La especificación actual no contiene todavía mecanismos para inserción/actualización/eliminación pero se anuncia su pronta incorporación. De cualquier forma, ya es fácil encontrar en la red numerosos proyectos que exponen sus datos en forma de puntos de acceso (endpoints) SPARQL a través de HTTP, luego resulta interesante jugar un poco con estos sitios, ejecutar consultas sobre ellos y visualizar los resultados.  Con esto vamos adquiriendo “visión” sobre como emplear estas novedosas tecnologias en nuestras aplicaciones.

Como parte del trabajo en Infocam, he estado creando una herramienta interactiva muy sencilla para experimentar con archivos RDF en formato RDF/XML, N3 y puntos de acceso SPARQL.  En este articulo muestro dos formas alternativas de visualizar los resultados de una consulta SELECT SPARQL en un DataGridView (o GridView en ASP.NET).  Al mismo tiempo, los tropiezos recibidos me sirven de pretexto para dar unas vueltas a las limitaciones de la implementación actual de C# (3.0) para el trabajo con RDF y la web semántica en general.  Para ambos métodos uso la biblioteca SemWeb de Joshua Tauberer.

A modo de ejemplo emplearé el punto de acceso SPARQL (http://www4.wiwiss.fu-berlin.de/dblp/sparql) a la base de datos bibliográfica DBLP de la universidad alemana de Trier.  Esta base contiene referencias bibliográficas de más de un millón de artículos y proceedings de las revistas más importantes sobre Ciencia de la Computación.  Si deseamos recuperar cinco artículos cualesquiera, enviamos la consulta: Leer más de esta entrada