Archive

Archive for December, 2005

Links on the Semantic Web

December 30th, 2005

On the web of [x]HTML documents, the links are critical. Links are references to 'anchors' in other documents, and they use URIs which are formed by taking the URI of the document and adding a # sign and the local name of the anchor. This way, local anchors get a global name.

On the Semantic Web, links are also critical. Here, the local name, and the URI formed using the hash, refer to arbitrary things. When a semantic web document gives information about something, and uses a URI formed from the name of a different document, like foo.rdf#bar, then that's an invitation to look up the document, if you want more information about. I'd like people to use them more, and I think we need to develop algorithms which for deciding when to follow Semantic Web links as a function of what we are looking for.

To play with semantic web links, I made a toy semantic web browser, Tabulator. Toy, because it is hacked up in Javascript (a change from my usual Python) to experiment with these ideas. It is AJAR - Asynchronous Javascript and RDF. I started off with Jim Ley's RDF Parser and added a little data store. The store understands the mimimal OWL ([inverse] functional properties, sameAs) to smush nodes representing the same thing together, so it doesn't matter if people use many different URIs for the same thing, which of course they can. It has a simple index and supports simple query. The API is more or less the one which cwm and had been tending toward in python.

Then, with the DOM and CSS and Ecmascript standards bookmarked, the rest was just learning the difference between Javascript and Python. Fun, anyway.

The result .. insert a million disclaimers... experimental, work in progress, only runs on Firefox for no serious reason, not accessible, too slow, etc ... at least is a platform for looking at Semantic Web data in a fairly normal way, but also following links. A blue dot indicates something which could be downloaded. Download some data before exploring the data in it. Note that as you download multiple FOAF files for example the data from them merges into the unified view. (You may have to collapse and re-expand an outline).

Here is the current snag, though. Firefox security does not allow a script from a given domain to access data from any other domain, unless the scripts are signed, or made into an extension. And looking for script signing tools (for OS X?) led me to dead ends. So if anyone knows how to do that, let me know. Untill I find a fix for that, the power of following links -- which is that they can potentially go anywhere -- is alas not evident!

Uncategorized , , , , , , , , ,

Thank you for all the comments

December 19th, 2005

Oops! Thanks for all the wonderful welcoming comments. We've had rather a lot, and had to turn the comments off on the first blog. I can't answer them all, but I would point out one thing. I just played my part. I built on the work of others -- the Internet, invented 20 years before the web, by Vint Cerf and Bob Kahn and colleagues, for example, and hypertext, a word coined by Ted Nelson for an idea of links which was already implemented in many non-networked systems. I just put these technologies together. And then, it all took off because of this amazing community of enthusiasts, who have done such incredible things with the technology, and are still advancing it in so many ways.

By the way, this blog is at DIG, the Decentralised Information group at MIT's CSAIL. I intend it to be geeky semantic web stuff mostly. For example, it won't be for W3C questions which should really be addressed to working groups.

So thanks for all the support, no need for more general 'thank you' comments! Thank *you* all.

Uncategorized , , , ,

So I have a blog

December 12th, 2005

In 1989 one of the main objectives of the WWW was to be a space for sharing information. It seemed evident that it should be a space in which anyone could be creative, to which anyone could contribute. The first browser was actually a browser/editor, which allowed one to edit any page, and save it back to the web if one had access rights.

Strangely enough, the web took off very much as a publishing medium, in which people edited offline. Bizarely, they were prepared to edit the funny angle brackets of HTML source, and didn't demand a what you see is what you get editor. WWW was soon full of lots of interesting stuff, but not a space for communal design, for discource through communal authorship.

Now in 2005, we have blogs and wikis, and the fact that they are so popular makes me feel I wasn't crazy to think people needed a creative space. In the mean time, I have had the luxury of having a web site which I have write access, and I've used tools like Amaya and Nvu which allow direct editing of web pages. With these, I haven't felt the urge to blog with blogging tools. Effectively my blog has been the Design Issues series of technical articles.

That said, it is nice to have a machine to the administrative work of handling the navigation bars and comment buttons and so on, and it is nice to edit in a mode in which you can to limited damage to the site. So I am going to try this blog thing using blog tools. So this is for all the people who have been saying I ought to have a blog.

Uncategorized ,

ONTOLOGÍAS: QUÉ SON Y PARA QUÉ SIRVEN

December 9th, 2005

Este texto explica muy brevemente una tecnología imprescindible para conseguir la Web semántica: las ontologías. Por razones de brevedad me centro sobre todo en las aplicaciones de las ontologías, dentro y fuera de la Web semántica. En el fondo, la Web semántica busca catalogar la información de los recursos web –páginas HTML, documentos PDF, vídeos, archivos de sonido– mediante ontologías (esto es, mediante el significado de las palabras), no mediante palabras clave.

Con las ontologías, los usuarios organizarán la información de manera que los agentes de software podrán interpretar el significado y, por tanto, podrán buscar e integrar datos mucho mejor que ahora. Gracias al conocimiento almacenado en las ontologías, las aplicaciones podrán extraer automáticamente datos de las páginas web, procesarlos y sacar conclusiones de ellos, así como tomar decisiones y negociar con otros agentes o personas. Por ejemplo, un agente inteligente que busque un vino que satisfaga las preferencias de un usuario, usará las ontologías vinícolas para elegir el vino (color, sabor, olor, embotellado) y empleará las ontologías empresariales para encargarlo a alguna tienda y regatear en el precio (siempre que se pueda). Otro ejemplo: mediante las ontologías, un agente encargado de comprar viviendas se podrá comunicar con agentes hipotecarios (de entidades bancarias) y con agentes inmobiliarios (de empresas constructoras e inmobiliarias).

Si desea más información sobre ontologías o sobre la Web semántica, puede consultar el trabajo La Web del futuro (http://www.javahispano.org/tutorials.item.action?id=55). Puede encontrar una introducción a la Web actual (estructura, protocolos, etc.) en la primera parte de Java y las redes (http://www.javahispano.org/tutorials.item.action?id=45).


Las ontologías proceden del campo de la Inteligencia Artificial; son vocabularios comunes para las personas y aplicaciones que trabajan en un dominio. Según el Grupo de Trabajo en Ontologías del consorcio W3C, una ontología define los términos que se usan para describir y representar un cierto dominio. Uso la palabra "dominio" para denotar un área específica de interés (el río Duero, por ejemplo) o un área de conocimiento (física, aeronáutica, medicina, contabilidad, fabricación de productos, etc.) Toda ontología representa cierta visión del mundo con respecto a un dominio. Por ejemplo, una ontología que defina "ser humano" como "espécimen vivo o muerto correspondiente a la especie Homo sapiens; primate bípedo que pertenece a la familia de los homínidos, como los chimpancés, gorilas y orangutanes" expresa una visión del mundo totalmente distinta a la de una ontología que lo defina como "sujeto consciente y libre, centro y vértice de todo lo que existe; todos tienen la misma dignidad, pues han sido creados a imagen y semejanza de Dios".

Así como la Ontología –nótese la mayúscula inicial– estudia los tipos de objetos que pueblan la realidad (así como sus propiedades y relaciones), las ontologías catalogan y definen los tipos de cosas que existen en un cierto dominio, así como sus relaciones y propiedades. Por ejemplo, una ontología del mundo empresarial usará conceptos como Venta, Compra, Transferencia, Pago, etc.; y relaciones como “Una Transferencia corresponde a una Venta o a una Compra”, “Un Pago corresponde a una o varias Transferencias”, etc.

Existen ontologías específicas (de términos médicos, empresariales, aeronáuticos, etc.) y ontologías de carácter general (proporcionan terminologías útiles para varios campos). En http://www.snomed.org/ se puede encontrar una ontología médica (SNOMED). WordNet (http://wordnet.princeton.edu/perl/webwn) es una ontología lingüística en línea que organiza los nombres, verbos y adjetivos del idioma inglés en grupos de sinónimos. En http://www.unspsc.org/ se describe una ontología de carácter general desarrollada por las Naciones Unidas (es un vocabulario para servicios y productos).


Cualquier persona tiene en su cabeza ontologías mediante las que representa y entiende el mundo que lo rodea. Estas ontologías no son explícitas, en el sentido de que no se detallan en un documento ni se organizan de forma jerárquica o matemática. Todos usamos ontologías en las que Automóvil representa un medio de transporte y tiene cuatro ruedas. ¿Formalizamos este tipo de ontologías? No, sería innecesario: los automóviles son tan habituales que todos compartimos la información de lo que son. Lo mismo sucede cuando pensamos en el dominio familiar: sabemos que una familia se compone de varios miembros, que un hijo no puede tener más de un padre y una madre biológicos, que los padres tienen o han tenido padres... No necesitamos explicitar este conocimiento, pues forma parte de lo que todo el mundo sabe. Sin embargo, cuando se tratan términos poco comunes o cuando se quiere que estos términos sean procesados por máquinas, se precisa explicitar las ontologías; esto es, desarrollarlas en un documento o darles una forma que sea inteligible para las máquinas.

Las máquinas carecen de las ontologías con las que nosotros contamos para entender el mundo y comunicarse entre ellas; por eso necesitan ontologías explícitas. En cuanto dos sistemas de información (sistemas ERP, bases de datos, bases de conocimiento) intentan comunicarse, aparecen problemas semánticos que dificultan o imposibilitan la comunicación entre ellos (no considero aquí los problemas técnicos de conexión o envío de datos). Los problemas semánticos son de dos tipos: de dominio y de nombre. Los conflictos de dominio aparecen cuando conceptos similares en cuanto a significado, pero no idénticos, se representan en distintos dominios. Por ejemplo, el concepto representado por Trabajador en una base de datos (BD) puede corresponder a un trabajador cualificado, mientras que otra BD puede usar Trabajador para cualquier trabajador, sea o no cualificado. Ambos conceptos están muy vinculados, pero no son equivalentes ni deberían mezclarse. Usando ontologías, podría especificarse que el primer concepto corresponde a una especialización del segundo; y un sistema de razonamiento automático basado en ontologías impediría, por ejemplo, que se contratara para tareas cualificadas a trabajadores no cualificados.

Los conflictos de nombre son de dos tipos: sinónimos y homónimos. Los sinónimos ocurren cuando los sistemas usan distintos nombres para referirse al mismo concepto. Por ejemplo, una BD puede usar Trabajador para el mismo concepto que otra usa Empleado. En ese caso, se podría usar una ontología que definiera como idénticos los dos términos. Así, las aplicaciones que manejaran esas bases de datos sabrían como llevar datos de una a otra.

El mismo concepto del mundo real se traduce en varios términos en distintos sistemas

Los homónimos surgen cuando los sistemas usan el mismo nombre para representar cosas distintas. Por ejemplo, en una aplicación de una compañía de seguros, Conductor representa a una persona que tiene contratada una póliza particular con la compañía; mientras que, en una aplicación de una compañía de taxis, Conductor representa a un trabajador que conduce un taxi de la compañía. Como es de suponer, si se intentara integrar automáticamente ambas aplicaciones basándose en que ambas usan el mismo término (Conductor) para significar lo mismo, se produciría el desastre más absoluto: al dar de baja a un conductor de taxi se le quitaría su póliza de seguros, con lo que no podría conducir ni su propio coche (al menos, no legalmente); y, al dar de alta a un asegurado, se le daría de alta como taxista, aunque no tuviera la licencia de taxista. Sólo una ontología explícita le puede comunicar a una aplicación que su Conductor no guarda ninguna relación con el de otra.

Las ontologías explícitas se pueden expresar de muchas maneras. Como mínimo, deben incluir un vocabulario de términos, con la definición de cada uno. Por ejemplo, la ontología empresarial Enterprise Ontology (EO) define así Venta: “Una Venta es un acuerdo entre dos Entidades Legales para el intercambio de un Producto por un Precio de Venta. Normalmente, el Producto es un bien o servicio y el Precio de Venta es monetario, aunque se incluyen otras posibilidades”. Las ontologías sencillas suelen representarse como una jerarquía de conceptos relacionados y ordenados.


Dependiendo del grado de formalidad, las ontologías explícitas se clasifican en informales, semi-informales, semi-formales y formales. Las primeras se expresan directamente en cualquier lenguaje natural. Las segundas se expresan en una forma estructurada y restringida de algún lenguaje natural. Las terceras se expresan en lenguajes estructurados, como RDF. Por último, las ontologías formales definen los términos mediante lenguajes lógico-matemáticos cuyos símbolos se definen exactamente y sin ambigüedades; en consecuencia, estas ontologías permiten emplear teoremas y demostraciones. Los dos últimos tipos de ontologías permiten que las aplicaciones puedan usar las definiciones de los conceptos del dominio y sus relaciones. Así como los tres primeros tipos de ontologías pueden contener términos ambiguos o inconsistentes, las ontologías formales no los permiten. Preguntas tan capciosas como "El único barbero de una ciudad afeita a todos los hombres que no se afeitan a sí mismos. ¿Quién lo afeita a él?"o "¿A qué conjunto pertenece el conjunto de los conjuntos que no se incluyen a sí mismos?" no pueden representarse en una ontología formal. A continuación figura un fragmento de una ontología formal (la expreso con la sintaxis XML de OWL DL). Corresponde a un dominio cartográfico:

<owl:Class rdf:ID="Mapa">
   <rdfs:subClassOf> 
      <owl:Restriction>
         <owl:onProperty rdf:resource="#tieneEscalaPredeterminada"/>
         <owl:maxCardinality 
            rdf:datatype="&xsd;nonNegativeInteger"> 1
         </owl:maxCardinality> 
      </owl:Restriction>
   </rdfs:subClassOf> 
</owl:Class>

<owl:ObjectProperty rdf:ID="tieneEscala">
   <rdfs:domain rdf:resource="#Mapa"/> 
   <rdfs:range rdf:resource="#Escala"/> 
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="tieneEscalaPredeterminada"> 
   <rdfs:subPropertyOf rdf:resource="#tieneEscala"/>
</owl:ObjectProperty>

Este fragmento define que las entidades Mapa tienen una propiedad llamada tieneEscala, que a su vez tiene una subpropiedad llamada tieneEscalaPredeterminada, y que un Mapa no puede tener más de una escala predeterminada.

Las ontologías se usan para favorecer la comunicación entre personas, organizaciones y aplicaciones, lograr la interoperabilidad entre sistemas informáticos, razonar automáticamente y para la ingeniería de software.


Las ontologías favorecen la comunicación entre personas, organizaciones y aplicaciones porque proporcionan una comprensión común de un dominio, de modo que se eliminan confusiones conceptuales y terminológicas. Los problemas derivados de la falta de comprensión común entre personas revisten una gran importancia en la ciencia y en la tecnología. Por ejemplo, hasta hace muy poco (septiembre de 2005) no existía un consenso general sobre la nomenclatura y clasificación de las neuronas corticales. Por lo tanto, al estudiar enfermedades como la esquizofrenia, la depresión, el trastorno bipolar y el Alzheimer, los médicos no se ponían de acuerdo sobre qué tipos de neuronas estaban afectadas. Pese a todas las investigaciones relacionadas con el cerebro, no había unanimidad a la hora de clasificar las neuronas corticales. La situación era sorprendente, tanto más cuanto que las investigaciones sobre la corteza cerebral comenzaron hace unos cien años, con el premio Nobel español Santiago Ramón y Cajal. El resultado final de dicha falta de entendimiento común durante cien años ha sido un gran retraso en las investigaciones sobre el cerebro, así como una bibliografía científica confusa y a veces contradictoria.

En los campos de la Inteligencia Artificial, la Teoría de Decisiones y la Teoría de Sistemas Distribuidos (campos muy relacionados con la Web semántica), sucede algo parecido: los investigadores de un campo no pueden leer fácilmente los resultados de los investigadores de los otros, pues se usan diferentes perspectivas y términos para las mismas ideas y conceptos. Construyendo una ontología común para los tres campos, las investigaciones de un campo serían inmediatamente aplicables a los otros.

El mundo empresarial no es tampoco ajeno a los problemas derivados de la falta de un entendimiento común: algunas empresas usan el término "recursos" para lo que son "máquinas" para otras empresas. Para otras, en cambio, los "recursos" son las "materias primas" que usan. Mediante las ontologías, se favorece la gestión de contenidos, la integración de la cadena de suministro y de la cadena de valor, así como la estandarización de la información de los mercados electrónicos (e-marketplaces). Esta estandarización resulta imperiosa para el comercio electrónico automático: si cada vendedor llama o clasifica de una manera a sus productos, resulta muy difícil automatizar las operaciones electrónicas. Por ejemplo, si un agente inteligente quiere comprar una memoria USB para un usuario o una empresa, deberá tener en cuenta que "memoria USB", "pen drive", "memoria flash USB" y "lápiz USB" designan un mismo dispositivo. En caso contrario, la aplicación no verá a muchos fabricantes y vendedores del dispositivo y, por ende, perderá muchas oportunidades de negocio.

Las ontologías favorecen también la comunicación entre aplicaciones y la comprensión común de la información entre ellas. Las ontologías serán imprescindibles en la Web semántica y en los futuros sistemas de gestión empresarial porque permitirán que las aplicaciones estén de acuerdo en los términos que usan cuando se comunican. Mediante ellas, será mucho más fácil recuperar información relacionada temáticamente, aun cuando no existan enlaces directos entre las páginas web. Por ejemplo, una ontología puede usarse para especificar que las termitas son un tipo de isóptero. De este modo, un buscador que use esa ontología mostrará páginas web sobre termitas cuando un usuario busque información sobre los isópteros.

Del mismo modo, si en una intranet empresarial se quisiese encontrar información sobre las ferias que ha visitado el director de la compañía, resultaría muy útil disponer de una ontología que incluyera una relación Visita, con relaciones "hijas" como VisitaFeria, VisitaEmpresa, etc. Clasificando los documentos con esa ontología, una búsqueda en la intranet mostraría enseguida los documentos relacionados con las visitas del director a ferias. Sin la ontología, la búsqueda se haría mediante palabras clave como "visita", "feria" y el nombre del director, lo que arrojaría una gran cantidad de resultados (muchos inútiles), que deberían ser evaluados, para determinar su pertinencia, por una o más personas.


Las ontologías también sirven para conseguir que los sistemas interoperen. Dos sistemas son interoperables si pueden trabajar conjuntamente de una forma automática, sin esfuerzo por parte del usuario. Por ejemplo, dos teléfonos móviles de distintos fabricantes y abonados a diferentes compañías telefónicas interoperan para que los usuarios puedan hablar entre sí. En el campo de la informática, las ontologías sirven para traducir los términos usados por una aplicación a otra (las aplicaciones pueden estar escritas en distintos lenguajes de programación). Consideremos una aplicación empresarial que usa el término "materia prima" y otra que emplea "suministro": ambas no podrían trabajar juntas. Para lograr que interoperen, una ontología haría de traductora entre ambas (la ontología podría usar el término "recurso"). La ontología actuaría como puente entre ambas, como una especie de lengua común. Vaya por caso, si se quiere que cuatro aplicaciones (A1, A2, A3 y A4) interoperen se necesitan seis aplicaciones que actúen de "traductores" (A1-A2, A1-A3, A1-A4, A2-A3, A2-A4, A3-A4); con una ontología común (O), sólo se necesitarían cuatro "traductores" (A1-O, A2-O, A3-O, A4-O). Según aumenta el número de aplicaciones que deben interoperar, más necesario se hace emplear ontologías traductoras.


Las ontologías resultan muy útiles para facilitar el razonamiento automático, es decir, sin intervención humana. Partiendo de unas reglas de inferencia, un motor de razonamiento puede usar los datos de las ontologías para inferir conclusiones de ellos. Por ejemplo, si establecemos estas reglas: "Todos los ríos desembocan en un mar, en un océano o en un lago" y "Si el curso de un río termina en una población, esa población está junto al mar, océano o lago donde desemboca", las máquinas pueden hacer deducciones como la mostrada en la siguiente figura.

Ejemplo de razonamiento automático

Una de las aplicaciones más importante del razonamiento automático es la validación de datos. Consideremos, por ejemplo, una base de conocimiento que almacene hechos sobre una consultora: "El proyecto Hospital Universitario comprende las tareas A1, A2 y A3", "Luis trabaja en la tarea A1", etc. Si los hechos se almacenaran mediante una ontología formal, se podrían imponer reglas (axiomas) como "Un empleado no puede trabajar en tareas de proyectos donde no participa" o "La suma semanal de horas trabajadas por un empleado no puede diferir de la suma semanal de horas empleada en cada tarea que tiene asignada"; reglas que servirían para verificar los hechos que se van almacenando y detectar incoherencias.
Otro ejemplo: suponga una pizzería que venda, entre otros tipos, pizzas vegetarianas. Si la pizzería usara una ontología que definiera qué ingredientes son vegetarianos –y cuáles no– y estableciera una regla como "Las pizzas vegetarianas no llevan ingredientes cárnicos", la aplicación de contabilidad podría detectar, en el momento del cobro, cualquier venta en la que, por error, se hubiera añadido pollo o jamón a una pizza vegetariana.

El razonamiento automático también se usa para establecer relaciones entre ontologías (por ejemplo, Producto en la ontología O1 es Materia Prima en la ontología O2), para descubrir relaciones ocultas o inesperadas entre los datos y para integrar esquemas de bases de datos. La integración de esquemas de bases de datos resulta imprescindible cuando se trabaja con bases de datos federadas, que son vistas unificadas de bases de datos independientes. Estas bases de datos aparentan ser una sola base de datos, pero se componen de información extraída de bases de datos independientes, que pueden estar alejadas miles de kilómetros. Una BD federada aparenta ser una BD normal y corriente, pero no tiene existencia física: es una vista lógica. Las bases de datos federadas son muy importantes en la Web, pues dan una vista común de los datos procedentes de fuentes muy distintas (agencias de noticias, portales, foros, periódicos y revistas electrónicos, etc.).

Descripción de una base de datos federada


En la ingeniería del software, las ontologías ayudan a la especificación de los sistemas de software. Como la falta de un entendimiento común conduce a dificultades en identificar los requisitos y especificaciones del sistema que se busca desarrollar, las ontologías facilitan el acuerdo entre desarrolladores y usuarios.

Spanish