lunes, 28 de marzo de 2005

Java, Jena, Xerces y CLASSPATH

Hoy me propuse ejecutar una prueba con Eclipse y Jena...llevo 2 horas y no lo he conseguido...

Etapas:

1.-En primer lugar, Eclipse no arrancaba porque había borrado la versión 1.5 de Java, el sistema tenía la 1.4.0 y Eclipse requería 1.4.2 o superiores. En realidad, Eclipse debería funcionar ya que carga de forma local a partir del directorio que he creado para el curso. Sin embargo, no sé porqué, pero al tener una versión vieja de Java no le gustaba y daba error al arrancar. Rebusqué por todos los sitios que pude para borrar todo rastro de Java. Acabé eliminándolo del registro a pedal y renombrando los ficheros "java.exe" y "javaw.exe" de C:/Windows/System32...lo que es increíble es la cantidad de basura que he visto...realmente Windows es una gran variable global que va cogiendo cada vez más basura...en fin, al final lo conseguí, y una vez que no había rastro de Java, Eclipse arrancó tirando del directorio preparado para el curso.

2.- El siguiente problema fue que no tenía configuradas las Jars que necesitaba Jena. Tuve que ir metiéndolas en "preferencias-->build path --> add external jars". El problema es que me daba un error "raro" al ejecutarse con la clase "Logger". Por supuesto, cualquier cosa menos intuitivo. Acabé encontrando la solución en google.

3.- Finalmente, me dio un error del tipo "java.lang.NoSuchFieldError: actualValueType" que al principio me dejó a cuadros...luego, con ayuda de google llegué a la FAQ y parece que es por usar una versión de xerces vieja...y que hay que configurar para usar la que utiliza Jena en lugar de la predefinida...problema: cómo sé cuál es la que está usando Eclipse? He probado hasta a quitar las librerías predefinidas de Java y nada...mañana intentaré crear un fichero "build.xml" y hacerlo con "ant" a ver si así tengo más control sobre el Classpath.

CONCLUSIÓN. Muchas veces, en informática, las cosas más sencillas se convierten en las más complicadas...y cada vez es más difícil hacer cosas sencillas...

viernes, 25 de marzo de 2005

Más Web Semántica...

Después de probar con 3 CDs (y creo que he fastidiado cada uno de ellos :(, por fin he logrado grabar un CD para el curso de extensión. Lástima que tenga que grabar otros 24 más...mañana sábado tendré que ir a comprarlos (y ya sé que tienen que ser de 700Mb, no valen los de 650...).

Mientras tanto, he revisado el trabajo reciente del grupo de Maryland: Mindswap en Web Semántica. Por lo que veo, han desarrollado un editor de ontologías llamado SWOOP y un razonador llamado Pellet. Además tienen muchos otros proyectos (aunque algunos ya no están activos...).

También he visto un programa que parece interesante llamado instance Store que promete facilitar el razonamiento sobre individuos en ontologías basadas en lógica descriptiva. Está desarrollado en Java y enlaza con las principales bases de datos. Si fuese suficientemente estable, podría ser un buen candidato para el BOPA...

Por cierto, no estoy seguro si "description logics" se traduce como lógica descriptiva. Y ya puestos, recordar que en wordreference hay unos foros de discusión muy interesantes sobre traducciones...y acabo de preguntarlo :) ...es que esto de los foros engancha. Por supuesto, el que más me divierte es el de la EUITIO.

Web semántica y ontologías legales

Después de comer y aprovechando una larga siesta de Sergio he podido seguir buscando material sobre web semántica. Estuve rebuscando en la página del proyecto WonderWeb, y entre la lista de participantes encontré un grupo de Italia. Pues bien, este grupo parece que trabaja en ontologías para temas legales (ojo, lo del BOPA no deja de ser una ontología de aspectos legales...). Incluso organizan un workshop sobre Legal Ontologies and Artificial Intelligence Techniques que parece interesante.

Pero lo más sorprendente fue encontrar una ontología sobre un tema relacionado con el Banco Central Italiano en este artículo. Yo ya intuía que el proyecto del Banco de España y XBRL se acercaba mucho a lo de la Web semántica, esto es una nueva confirmación y una línea que espero poder seguir en cuanto tenga tiempo.

Más sobre Web Semántica y curso

Estoy grabando el primer CD con el curso de Extensión...sólo me faltan 24 :)

Mientras, he ido rebuscando sobre la Web semántica y por lo que veo, hay una especie de competencia sobre formas de trabajar con OWL. Por un lado, está Jena que utiliza un modelo basado en tripletas RDF, y por otro lado, hay una API de OWL que al parecer utiliza un modelo más cercano a OWL. A simple vista, parece que la OwlAPI es mejor, al trabajar a un nivel más alto...habrá que compararlas. Este artículo realiza tal comparación: OWL DL: Trees or Triples, pero no he tenido tiempo para leerlo.

Por otro lado, he encontrado otra aplicación de la web semántica llamada TAP.

Me voy a comer...el CD ha fallado, voy a volver a intentarlo con otro...el problema es que ocupa cerca de 700Mb y tarda casi una hora...

Página Curso Extensión

Esta tarde (bueno noche, porque empecé a hacerlo después de las 22h y son las 1h) he generado la página del curso de extensión.
También he reorganizado los contenidos que quiero dar en el CD para que me quepa en un solo CD. He tenido que borrar el JRE 1.5 que creo que no necesito. También les he metido el graphviz para que puedan jugar con el plugin de protege owlviz.

Por la mañana fui a jugar a baloncesto y tuve suerte, me encontré con un grupo de 9 chavales que necesitaban uno y querían jugar a 2 canastas. Fue divertido porque lo de jugar a 2 canastas ya lo tengo casi olvidado (en los últimos años sólo juego en el partido profes-alumnos...). Los chavales me dejaron subir el balón y jugar de base que es mi puesto preferido (normalmente, al jugar en una canasta acabo jugando de pivot...).

Antes de empezar a jugar estuve leyendo en el coche el artículo Weaving the biomedical Semantic Web with the Protege OWL Plugin. El artículo está bien como introducción al tratamiento de OWL que realiza Protege. En el trabajo proporcionan la posibilidad de anotar imágenes médicas mediante Protégé. Realizan 2 ontologías, una ontología de conceptos médicos y otra sobre imágenes. Las ontología de imágenes contiene un campo hasContents que permite indicar qué contenidos tiene una imagen (los contenidos son conceptos de la ontología conceptual). Otro campo es hasURI que relaciona una imagen con la URI donde se encuentra. En el artículo indican que gracias a las posibilidades de Protégé es posible modificar el plugin para que en el formulario aparezca la vista de la imagen (obtenida a partir de la URI) que se está anotando. Por lo que yo entiendo, su trabajo se limita a proporcionar el sistema que permite marcar las imágenes, y dejan como trabajo futuro la posibilidad de realizar búsquedas sobre las mismas...

martes, 22 de marzo de 2005

Web Semántica

Esta mañana he buscado enlaces interesantes sobre Web semántica para una reunión que hemos tenido los del proyecto BOPA.

En el terreno de ontologías lingüísticas he jugado con el visualizador de SUMO (Suggested Upper Merged Ontology) que es en modo texto pero parece interesante. También puede servirnos de inspiración el Ontosaurus.

Una aplicación de Protègè - OWL es la posibilidad de generar clases e interfaces Java a partir de una ontología.

En el terreno de portales sobre ontologías, me ha gustado, aunque parece poco actualizado, el portal de ontologías de John Bateman.

También me ha llamado la atención la herramienta de exploración de ontologías Ontoxpl.

Finalmente, Chema encontró un proyecto similar al nuestro desarrollado en la Universidad Autónoma de Madrid, titulado Aniceto que aunque parece sencillo realiza tareas similares a las que nosotros queremos realizar.

lunes, 21 de marzo de 2005

Página de Intérpretes

Por fin he creado una página dedicada a los intérpretes y al diseño de lenguajes de programación (en inglés). Está en: http://www.di.uniovi.es/~labra/Interp y contiene un enlace a los apuntes de clase y enlaces a los diversos intérpretes.

He incluido incluso el intérprete que me envió Paco Domínguez realizado en Smalltalk.

Esta tarde estuve leyendo los artículos que me ha tocado revisar para el
9th Brazilian Simposium on Programming Languages. La calidad técnica de muchos de ellos es muy buena y además tuve la oportunidad de solicitar artículos que a mí me interesaban. Si dispusiese de más tiempo, esta revisión sería un placer. Realmente creo que el nivel brasileño en investigación, al menos en informática es muy bueno.

domingo, 13 de marzo de 2005

Ortogonalidad y Lenguajes de Programación

Después de estar toda la tarde cuidando a Sergio (estamos de Rodríguez los 2), ahora que se ha quedado dormido he vuelto a la carga buscando el ejemplo de la ortogonalidad.

De momento, el más sencillo que he encontrado es la expresión Java

// Inicializar a y b al valor 1

a = b;

// modificar b para que valga 0

Si a y b son tipos primitivos, entonces a valdría 1, mientras que si se modelizan como objetos, entonces valdría 0 (el cambio le afecta porque a es una referencia que apunta b).

Una situación similar aparece en el paso de parámetros de Java, para los tipos primitivos es por copia, mientras que para los objetos es por referencia. Se puede simular el paso por copia mediante clonación...

Después de encontrar el ejemplo, seguí buscando páginas interesantes sobre lenguajes de programación. En especial, busqué una que tenía marcada como bookmark pero había perdido (un fallo de firefox me dejó sin los bookmarks de mi casa). La página es:

An interactive historical roster of computer languages y es increíblemente detallada.

Como efecto lateral encontré otra página interesante que indica los tipos de nombres de los lenguajes de programación: Programming Language Naming patterns


sábado, 12 de marzo de 2005

Mi primer mensaje

No estoy seguro de que este proyecto vaya a tener continuidad...normalmente me gusta ver las posibilidades tecnológicas a mi alcance pero luego no suelo ser persistente...de todas formas, lo intentaré.

He empezado el blog en blogspot porque he visto que hasta Philip Wadler tiene un blog aquí. Y éso son palabras mayores.

Esta mañana, mientras Sergio dormía la siesta estaba preparando el curso de doctorado buscando contraejemplos de ortogonalidad en lenguajes de programación. Un ejemplo guapo en Java es:

a = b;
b = c;

que funciona diferente cuando son tipos primitivos (a tendría el valor original de b) que cuando son objetos (a, b y c tendrían el mismo valor porque apuntarían al mismo objeto). Sin embargo, al probarlo en Java, sale lo mismo...