Representacion del Conocimiento-Web Semantica

Anuncio
Representación del Conocimiento. Web Semántica
Raúl Castro Fernández
NIA:100061617
Universidad Carlos III de Madrid
100061617@alumnos.uc3m.es
RESUMEN
En este documento se trata la relación de la web semántica con la
representación del conocimiento, y se muestra una
implementación a modo de ejemplo.
Categorías y Descriptores
I.
[Knowledge Representation Formalisms and Methods]:
Relation Systems [4], Representation Languages [5],
Semantic Networks [7].
Términos Generales
Documentación, Experimentación, Factores Humanos, Lenguajes,
Teoría.
Palabras Clave
Representación del conocimiento, ontologías, taxonomías, web
semántica, redes semánticas, grafos semánticos, RDF, RDFa,
RDFS, OWL, SPARQL.
1.INTRODUCCIÓN
La ingeniería del conocimiento es una disciplina perteneciente a la
rama de la inteligencia artificial que busca el desarrollo de
sistemas expertos, para lo cual se apoya en la representación del
conocimiento de un determinado campo, bajo un sistema
artificial.
La web semántica se concibe con la idea de añadir a la web
tradicional unos metadatos que describan la información
contenida en la página. Estos metadatos se suponen entendibles
por parte de las máquinas. La idea inicial es conseguir que
mediante estos metadatos se amplíe la interoperabilidad entre las
máquinas sin que el humano intervenga de una forma activa.
Los metadatos semánticos que conforman la web semántica son
una forma de representación del conocimiento, que deben ser
cuidadosamente elegidos e introducidos en la práctica para
alcanzar el fin último del concepto, el cual sería desde un punto
de vista optimista, que la web en general conformase un sistema
experto, y que éste sistema experto no se centrase en un dominio
concreto, sino que aprovechase la universalidad de la web para
alcanzar el máximo número de dominios.
Aunque se conciba como utópico lo expuesto en el apartado
anterior, sí es mucho más viable representar el conocimiento
asociado a un determinado dominio, para la web semántica esto
supone crear un vocabulario, que forme una red semántica, la cual
a la vez sea capaz de representar todo el conocimiento asociado a
un campo concreto.
2.ACERCAMIENTO A LA WEB
SEMÁNTICA
La web semántica por tanto, es el hecho de añadir metadatos
semánticos al contenido de la página, del mismo modo que se
añade el estilo con una hoja CSS, por ejemplo.
Cuando observamos una web, entendemos lo que nos dice porque
leemos el texto y sabemos en qué contexto esta esa web. Lo cual
no supone ningún problema, puesto que conseguimos de la web lo
que buscamos. Como ejemplo, cuando queremos buscar algo en
concreto, y para ello usamos un buscador para acceder a la
información que nos interesa, debemos indicar las palabras clave
de esa información, puesto que, a grosso modo, el buscador
explorará su base de datos buscando coincidencias de esas
palabras para devolver un resultado. De esta manera, si
escribimos: "universidad telecomunicaciones", el sistema nos
devolverá aquellas páginas donde aparezcan tanto temas
relacionados con universidad, como temas relacionados con
telecomunicaciones, lo cual es un resultado lógico.
El problema surge cuando nos interesa algo como por ejemplo,
"las universidades donde exista carrera de telecomunicaciones",
en este caso nos gustaría esta información en concreto y no toda la
que devolvería el sistema al introducir: "universidad,
telecomunicaciones", que sería la correspondiente a los términos
'universidad' y 'telecomunicaciones' por separado.
Los metadatos, o más concretamente, la red semántica que
conforma la base de la web semántica provee de una solución para
este problema. Si dotamos a una página de una universidad de
información semántica relevante, que asocie la carrera de
telecomunicaciones a esa universidad, cuando introduzcamos algo
como: "universidad que imparta telecomunicaciones", será mucho
más sencillo para las máquinas ofrecer unos resultados mucho
más acotados, de hecho, sólo nos ofrecerían las páginas de
universidades donde se ofrezca la carrera de telecomunicaciones.
Este sencillo ejemplo no es concluyente, puesto que con la
potencia actual de los buscadores, entre los resultados que nos
ofrecería el servidor, con seguridad, se encontraría alguno que
respondiese a nuestras necesidades, pero si imaginamos un
ejemplo más preciso como pueda ser: "aquellos pisos de 2
habitaciones en Punta Cana, con aire acondicionado, fachada de
color rojo y cuyo precio se encuentre entre 700€ y 800€" deja de
ser trivial encontrar información válida usando un buscador
actual, en cambio, sería igual de fácil que en el caso anterior para
la máquina encontrar la información correcta si nos apoyásemos
en la web semántica, puesto que ésta clasificará esa información
sobre una base de conocimiento, que será una red semántica.
3.REPRESENTACIÓN DEL
CONOCIMIENTO
En el grafo anterior estamos agrupando un conocimiento
taxonómico, como son las relaciones entre los distintos seres del
reino animal, así como varias propiedades que los caracterizan.
Para llegar a la solución anterior, debemos, antes de nada, definir
el conocimiento asociado a una web, los elementos que la
conforman, así como las relaciones que asocian estos elementos
entre sí. Para esto hacemos uso de metadatos, como se ha
comentado más arriba. Estos metadatos los conforman triplas
OAV (Objeto-Atributo-Valor). Por ejemplo si queremos expresar:
"Coche de color rojo", la tripla asociada podría ser: "coche(O)tiene_color(A)_rojo(V)".
Vemos que en el grafo, cada nodo corresponde a una entidad, ya
sea gato(un ser), mamífero(una característica de algunos seres), o
agua(refiriéndose al lugar donde vive, lo cual también termina por
ser una característica). Para conformar el grafo estos nodos se
unen mediante líneas etiquetadas con el nombre de ciertos
atributos que relacionan un nodo con otro. Como podemos
apreciar las líneas son dirigidas, indicando en qué sentido existe,
o se cumple el atributo etiquetado en la propia línea. Si
extrajésemos el conocimiento que el grafo representa, deberíamos
ir a un nodo, que sería el objeto (O), seguir la línea que lo
relacione con otro nodo, siendo la etiqueta de esta línea, el
atributo (A), y finalmente llegaríamos al nodo destino, que sería el
valor (V) para el que se cumple la relación.
Para definir una red semántica que trate sobre un dominio
concreto deberemos en primera instancia conocer los elementos
que lo conforman y las relaciones entre ellos. Una vez conocemos
esto, debemos crear
los metadatos que describan ese
conocimiento. Para esto creamos un esquema conceptual lo más
fiel posible al conocimiento que hemos extraído. Este esquema
conceptual recibe el nombre de ontología, y es una estructura
fácilmente explorable por los sistemas, de modo que se facilita
muchísimo la labor de búsqueda o clasificación de la información.
Una ontología es por tanto una forma de representación del
conocimiento. A continuación se muestra una red semántica, en el
formato más habitual en el que lo podemos encontrar, que es
representarlo como si de un grafo se tratara. De esta forma queda
muy claro para un humano las relaciones entre los elementos que
conforman la red semántica (nodos) y las relaciones entre ellos
(las uniones entre nodos).
De este modo extraemos las triplas OAV de una representación
del conocimiento en forma de grafo. En este punto, si juntásemos
todas las triplas OAV que hemos extraído del grafo,
conformaríamos una ontología que trataría sobre las relaciones del
reino animal, es decir, sobre la representación del conocimiento
que buscamos.
Con lo que tenemos hasta ahora, no obstante, no proveemos de
una solución, una tecnología, con la que podamos representar este
conocimiento en un formato más amigable para las máquinas, (un
formato procesable por las máquinas) que al final en el caso de la
web semántica, serán las que tengan que tratar los datos. En el
siguiente apartado se verá las principales tecnologías que nos
permitirán hacer esto y empezaremos algunos de los ejemplos
implementados.
4. ACERCAMIENTO A LOS FORMATOS
DE LA WEB SEMÁNTICA.
Para conseguir que, tras haber recopilado el conocimiento que
queremos representar, podamos expresarlo de tal forma que las
máquinas sean capaces de procesarlo, el W3 lleva años trabajando
en varios lenguajes, basados en su mayoría en la sintaxis XML
que están definidos para tener la capacidad de representar las
ontologías y vocabularios que veamos necesario a través de ir
programando las triplas, y con algunas construcciones un poco
más complejas.
Estos lenguajes son RDFa, RDF, RDFS (una extensión de RDF),
y OWL. Haré una pequeña presentación de cada uno de ellos para
centrarnos luego en RDF para los siguientes ejemplos.
En general, todos estos lenguajes, que en su forma normal se
basan en una sintaxis XML, definen su sintaxis mediante espacios
de nombres XML (XML namespaces). Además, en la cabecera de
un archivo con algún lenguaje de este tipo, también podemos
encontrar espacios de nombres XML definidos e implementados
por terceros, que se pueden incluir en cualquier otro fichero para
ayudar a formar una ontología. Por ejemplo, si queremos hacer
una ontología sobre marcas de motos, modelos y motor, quizá
exista alguien que previamente haya definido y escrito una
ontología sobre las piezas de la moto, de su motor, y en ese caso
podríamos incluir el vocabulario a la hora de definir nuestra
propia ontología.
A continuación se presentan finalmente algunas características de
los principales formatos/lenguajes, así como algún pequeño
ejemplo.
4.1 RDFa
RDFa, el más sencillo y directo de los formatos, provee de
algunas etiquetas xhtml que podemos incluir directamente en el
código xhtml sin hacer que el documento pierda su consistencia,
es decir, que con el DOCTYPE adecuado, el documento sigue
validando las pruebas del W3. Es una solución muy rápida para
proveer, por ejemplo, de la semántica que dice que la etiqueta
<title/> (donde se acostumbra a escribir el título de la página) de
nuestra página, es el título de una página concreta, o para decir
quién es el autor, o indicar su e-mail o su teléfono. RDFa soporta
algunos lenguajes ya definidos por terceros, como son DC
(Dublin Core), que diseño un lenguaje que proporciona una pila
de características base, capaces de describir cualquier recurso, sin
importar el formato de origen, ni el dominio a donde va dirigido.
</div>
4.2 RDF
RDF (Resource Description Framework), es el formato base de la
web semántica, sobre el cual se basan los demás formatos o sobre
el que se apoyan.
Definido por el W3, con la intención precisamente de crear un
lenguaje de descripción de metadatos. Su función es, como se
viene diciendo, tomar el conocimiento de cierto dominio y
representarlo en un formato amigable para una máquina. El
conocimiento va traduciéndose al lenguaje RDF mediante las
triplas OAV.
Desde el punto de vista técnico es un espacio de nombres de
XML, es decir, si queremos escribir un documento con formato
RDF, declaramos en el documento la versión de XML, y después
introducimos como espacio de nombres el de la definición de
RDF, que es:
De esta forma, un simple tag de xhtml como pueda ser:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<h1> Tu Tienda Semántica </h1>
Se puede escribir RDF en varias notaciones, las más importantes
son RDF/XML, la cuál sigue un formato estrictamente del tipo de
XML, y Notation3, o N3, que supone un formato mucho más
sencillo y rápido a la hora de escribir. Para los ejemplos que
tratamos usaremos el formato RDF/XML.
donde nosotros vemos el texto con un determinado formato, una
máquina sólo ve un texto encerrado entre dos tags, que le dicen
cómo tiene que presentar aquello que haya dentro de esos tags.
Para que la máquina comprenda que se trata de un título, podemos
usar RDFa de la siguiente forma:
<div
xmlns:dc="http://dublincore.org/2008/01/14/dcelements.rdf#">
<h1 property="dc:title">Tu Tienda Semántica</h1>
<div>
Estamos definiendo un nombre canónico (para no tener que
escribir la ruta entera cada vez que queramos referirnos a algún
elemento de ese lenguaje) para el vocabulario de Dublin Core que
se
encuentra
en
el
recurso:
http://dublincore.org/2008/01/14/dcelements.rdf#.
Después
ponemos el atributo property a la etiqueta <h1/>, y como valor de
propiedad referenciamos 'title' del vocabulario que hemos
importado, “dc:title”, con esto estamos accediendo a la semántica
que otorga el valor 'title', dentro del vocabulario. Dicho de otra
forma, una máquina que lea el tag <h1/>, tendrá que acceder al
vocabulario de Dublin Core para saber como describir la
propiedad del atributo que se le está aplicando.
Por la rapidez con la que podemos dotar de significado semántico
a algunos de los tags de una web, es por lo que RDFa es un
formato muy usado para describir el autor, datos personales o
datos de una página web, como puedan ser el título (como hemos
visto en el ejemplo), o la licencia (con el vocabulario CC de
Creative Commons).
<div
typeof="foaf:Person"xmlns:foaf="http://xmlns.com/foaf/0.1”>
Las características de RDF, como son la fácil representación de
triplas, hacen de este formato una forma rápida y simple forma de
representación de datos, que ha llevado a usarse en aplicaciones
que poco tienen que ver con la web semántica.
En relación con la representación del conocimiento, RDF supone
un modelo de datos, como pueda ser un modelo relacional. Una
pila de código RDF supone en sí misma una base de datos, que
además es explorable por máquinas mediante lenguajes de
consulta, como puedan ser SPARQL, o RQL. De esta forma los
servidores web se pueden dotar de herramientas que exploren la
semántica de las páginas, de modo que se cumpla el objetivo de
que sean las máquinas las que conlleven el trabajo duro y sea para
los humanos mucho más sencillo hacer peticiones en un lenguaje
más simple y directo.
Además de la forma anteriormente descrita, quedaría de forma
independiente la presentación de las páginas (lo que ven los
humanos) de la semántica de éstas (lo que procesan las máquinas).
Con RDF por tanto, podemos representar conocimiento, pero a
veces necesitamos extender ese conocimiento, para crear nosotros
nuestros propios vocabularios, completamente personalizados
para un determinado uso. No hay problema en ese caso, puesto
que RDF sirve como base para dos lenguajes que extienden su
utilidad, como son RDFS y OWL, los cuáles veremos un poco
más adelante.
<p>Página creada por: </p>
Para poner un ejemplo, imaginemos cómo dotaríamos de
semántica a un artículo de la wikipedia que trate sobre John
Lennon por ejemplo:
<p property="foaf:name">Raúl Castro Fernández </p>
<rdf:RDF
<p>Contacto: </p>
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:rdf=”http://purl.org/dc/elements/1,1/”
<p
property="foaf:mbox">{100061617@alumnos.uc3m.es</p>
<rdf:Description
rdf:about=”http://en.wikipedia.org/wiki/John_Lenon”>
<dc:title> John Lennon </dc:title>
<dc:publisher> Wikipedia </dc:publisher>
Para ilustrar un poco las posibilidades que ofrecer RDFS, se va a
presentar un ejemplo como en los casos anteriores.
</rdf:Description>
<rdfs:Class
</rdf:RDF>
rdf:ID="Person"
En el ejemplo anterior, importamos al inicio los dos espacios de
nombres que vamos a utilizar, el que define la sintaxis de RDF,
para poder usar este lenguaje, y el vocabulario de Dublin Core,
que usamos en el ejemplo de RDFa. Después usamos una etiqueta
'Description', propia del lenguaje RDF, y que nos sirve para hacer
la descripción de un recurso. Con 'rdf:about' indicamos sobre qué
recurso vamos a hacer esa descripción. Dentro de la descripción
propia, usamos las etiquetas 'title' y 'publisher', ambas
pertenecientes al vocabulario de Dublin Core, y que usamos en
este caso para indicar el título del recurso y quién lo publica.
De esta sencilla manera hemos dotado de semántica a una entrada
de la wikipedia, hemos expresado un conocimiento que podríamos
representar en un par de triplas como:
wikipedia/JohnLennon – tiene_titulo – John Lennon.
wikipedia/JohnLennon – publicado por – wikipedia.
Objeto
- Atributo
rdfs:label="Person"
rdfs:comment="A person">
</rdfs:Class>
<rdf:Property
rdf:about="http://xmlns.com/foaf/0.1/knows"
rdfs:label="knows"
rdfs:comment="A person known by this person.">
<rdfs:domain
rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<rdfs:range
rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdf:Property>
- Valor
Como comenté anteriormente, es posible que en ciertas ocasiones
necesitemos extender las posibilidades de RDF, por ejemplo, si
necesitamos definir un vocabulario concreto para una aplicación
que estemos desarrollando, y no encontramos nadie que haya
implementado ya uno que satisfaga los requisitos que queremos.
Para estos casos existen dos lenguajes que extienden la utilidad de
RDF, estos dos lenguajes son RDFS y OWL. Ambos se
construyen sobre una base en RDF, y, si bien RDFS aumenta
significativamente las posibilidades de RDF, con OWL se
incluyen todas las mejoras que introduce RDFS además de
muchas otras, lo que lo convierten en el lenguaje que dota de
mayor expresividad a un documento.
4.3 RDFS
La principal característica que añade RDFS (RDF Schema) es la
posibilidad de declarar clases, subclases y propiedades de
recursos. La jerarquía de clases y los tipos de propiedades de
RDFS se pueden comparar al significado que obtienen de los
lenguajes orientados a objetos, o dicho de otro modo, el sistema
de tipos que se consigue con RDFS es comparable con el de la
orientación a objetos.
En este punto conviene observar cómo se implementa la
representación del conocimiento mediante RDFS. Una vez
tenemos las triplas que resumen el conocimiento a representar,
clasificamos los recursos (los objetos y valores de esas triplas) en
clases, consiguiendo con esto una taxonomía, es decir, una forma
de datos jerarquizada y dividida en clases. Si a esto le unimos las
propiedades de las clases (que podemos proveer gracias a una
etiqueta incluida en el lenguaje RDFS), el dominio al cual se
pueden aplicar esas propiedades (es decir, las clases a las que se
les pueden aplicar propiedades), así como los valores que se
pueden adjudicar a cada propiedad (el rango), conseguimos una
ontología.
En el ejemplo anterior vemos como se describen dos recursos, una
clase y una propiedad. La clase tiene un identificador,
ID=“Person”, con lo que damos el nombre a la clase. Además le
ponemos una etiqueta, con “rdfs:label”, que, como es de esperar
es un atributo que estará definido en la implementación estándar
de RDFS que ofrece el W3. Así mismo indicamos un comentario
con 'comment'.
Más abajo definimos una propiedad, para ello nos referimos a un
recurso ya existente en el lenguaje FOAF (que es un lenguaje
previamente definido como pude ser el de Dublin Core). Para
referirnos al recurso 'knows' del lenguaje FOAF, utilizamos la
etiqueta “rdf:about”, como en otras ocasiones. A esta propiedad le
otorgamos de una etiqueta y un comentario, del mismo modo que
lo hacíamos con la clase. Adicionalmente debemos declarar el
dominio al que pertenece y el rango de sus valores.
La propiedad 'knows' del lenguaje FOAF sirve para definir una
relación entre dos personas, por ejemplo la tripla: “A conoce a B”,
el atributo de esa tripla se puede representar con la propiedad
'knows del lenguaje FOAF'. Ahora que sabemos cuál es el
significado de 'knows', es fácil ver que el dominio al que se aplica
la propiedad 'knows' que estamos definiendo en el ejemplo, debe
aplicar a una persona, es decir, el dominio de la propiedad
'FOAF:knows' debe ser el de una persona. En el propio lenguaje
FOAF se define un recurso 'Person', que sirve precisamente para
referirse a una persona. Del mismo modo que con el caso del
dominio, sabemos que la propiedad 'knows', que estamos
definiendo, debe aplicarse a una persona, por tanto podemos
indicar finalmente que el rango al que aplica la propiedad es
igualmente a un recurso “FOAF:Person”.
De esta forma, ayudándonos de la declaración de las clases que
veamos necesarias para dotarnos de una taxonomía ajustada a lo
que queremos presentar, así como de la definición de una serie de
propiedades aplicadas correctamente a los términos necesarios,
llegamos a la definición de un vocabulario propio.
4.4 OWL
Una vez visto cómo podemos aumentar las posibilidades del
lenguaje RDF, gracias a la extensión RDFS, nos queda ver en qué
consiste OWL, el que es sin duda el lenguaje que mayor
significado semántico nos permitirá añadir, así como el que mayor
libertad otorga a la hora de implementar una ontología.
Del mismo modo que en el caso de RDFS, OWL (Web Ontology
Language), se construye sobre una base en RDF, además, el
propio lenguaje OWL posee las estructuras que añadía RDFS.
Se escribe usando una sintaxis XML como en los casos anteriores,
pero en este caso hay tres variantes del lenguaje, Lite, DL, y Full,
cada una de las cuáles posee unas características propias. A rasgos
generales la versión Lite es más fácilmente procesable por las
máquinas pero ofrece menos posibilidades, en cambio la versión
DL ofrece características de lógica descriptiva lo que lo
convierten en una forma del lenguaje mucho más potente que la
versión Lite. Por último la versión Full se compone de una mezcla
de las anteriores versiones a la vez que procura ser compatible con
RDFS, para que, como hemos comentado, se pueda ampliar una
ontología que esté haciendo uso de RDFS, o bien podamos
implementar una nueva ayudándonos de alguna que estuviera
implementada previamente en RDFS.
Desde un punto de vista técnico, lo que hace OWL es proveer de
una serie de axiomas que dotan de ciertas restricciones a unas
clases que hemos definido (es parecido al concepto del domino de
RDFS) y las relaciones permitidas entre estos elementos. Además
OWL es capaz de usar lógica descriptiva. Esto es, en los
problemas de representación del conocimiento, es habitual que
cuando se escribe una ontología muy grande no se consiga una
claridad total en las definiciones que se hagan de ciertos recursos.
Este problema se puede solucionar casi totalmente aplicando una
lógica a los datos que estamos implementando, pero no es algo
trivial cuando, como decimos, nos encontramos ante una
ontología muy extensa. Es aquí donde entra la capacidad del
lenguaje OWL (en sus formas DL y Full) de aplicar cierta lógica
descriptiva a la ontología.
Conviene por tanto ver qué es exactamente la lógica descriptiva,
para entender como ayuda a la representación del conocimiento, y
en concreto, a las ontologías, y de este modo entender realmente
una de las principales ventajas que ofrece OWL con respecto a los
otros formatos vistos.
4.4.1 Lógica de Descripción
La lógica de descripción puede entenderse como una metodología
a la hora de representar el conocimiento, como puedan ser los
grafos semánticos, pero en este caso, este método, implementado
en la sintaxis de varios lenguajes (entre los cuales se encuentra
OWL), provee de ciertas ventajas que se presentan a continuación.
−
La principal ventaja que ofrecen con respecto a otras formas
de representación del conocimiento es que permiten plasmar
ese conocimiento de un modo formal, lo que le dota de
mayor comprensión, y sobre todo de una forma estructurada.
El hecho de que permita representar el conocimiento de una forma
estructurada, es precisamente lo que ayuda a preservar el orden
cuando estamos implementando una ontología muy larga, puesto
que las restricciones estructurales y formales de las que dota a la
implementación hacen más fácil mantener la forma y la estructura,
así como no perjudicar el contenido semántico de la ontología en
cuestión.
Los elementos a destacar de la lógica de descripción son:
−
Formalismo descriptivo: Ofrece conceptos, individuos, roles
y constructores para definir los recursos que queremos
representar.
−
Formalismo terminológico: Para definir las propiedades de la
terminología descriptiva, es decir, conceptos, individuos,
roles y constructores.
−
Formalismo asertivo: Introduce propiedades específicas de
individuos.
−
La última característica a destacar y una de las mas
importantes es que son capaces de inferir conocimiento a
partir de un conocimiento dado, mediante algoritmos de
razonamiento.
A la hora de representar el conocimiento con una lógica de
descripción, desde un punto de vista teórico, se usan dos
construcciones, llamados, Tbox (Teminological Box) y Abox
(Assertion Box).
Se usan las Tbox para describir conceptos que tienen una
estructura jerarquizada. Además, son precisamente éstas
estructuras las que contienen todo el vocabulario de un dominio.
Las Abox se usan para describir las relaciones entre los individuos
y conceptos que tengamos. Contienen aserciones (descripción de
propiedades) de individuos (recursos de la ontología en
definitiva).
Una base de conocimiento conformada por Tboxes y Aboxes es
precisamente la estructura desde la cual se puede inferir
conocimiento nuevo a partir del conocimiento ya declarado o
representado.
Tras ver un atisbo de lo que la lógica de descripción nos puede
facilitar las cosas y dotar a la vez de más potencia a las ontologías
que se implementen con OWL, vamos a ver un ejemplo de OWL
para ver las diferencias que introduce con respecto a los otros
formatos vistos anteriormente.
<owl:Ontology
rdf:about="http://ebiquity.umbc.edu/ontology/person.owl#person
">
<owl:versionInfo>0.1</owl:versionInfo>
<rdfs:label>eBiquity Person Ontology</rdfs:label>
<cc:License
rdf:resource="http://creativecommons.org/licenses/by/2
.0/"/>
</owl:Ontology>
<owl:Class rdf:ID="Person">
<rdfs:label>Person</rdfs:label>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#name"/>
<owl:maxCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativ
eInteger">1</owl:maxCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
En el ejemplo anterior, se comienza declarando una ontología,
con un atributo propio de OWL (OWL:Ontology), y vemos
después que la ontología va a tratar sobre “Person”, esto está
descrito con el atributo “about”. Dentro también vemos como se
indica la versión de la ontología (owl:versionInfo), y un
comentario sobre la misma , para lo cual se usa la etiqueta “label”
de RDFS (aquí observamos el primer ejemplo de la extensión que
puede suponer OWL de RDFS, valiéndose de las etiquetas que ya
aportaba RDFS y de las nuevas que introduce OWL) .
Tras cerrar la declaración de la ontología, el ejemplo continua con
la declaración de una clase “Person” (sobre lo que trata la
ontología), por medio de la etiqueta “owl:Class”.
Dentro de esta clase, se usa RDFS (segundo ejemplo de la
reutilización de las etiquetas propias de RDFS en OWL), para
definir una etiqueta para la clase, y una subclase.
Para finalizar el ejemplo, encontramos un caso claro de la
semántica adicional que proporciona OWL con respecto a RDFS,
y es la variedad de restricciones que se pueden definir con OWL a
las propiedades, clases, subclases, que definamos. En RDFS esto
no era tan trivial, podíamos definir un dominio al que sería
perteneciente una propiedad, y también podríamos definir un
rango al que sería aplicable la misma. Con OWL podemos definir
un número mucho mayor de restricciones, y esto lo vemos en el
ejemplo mediante el uso de la etiqueta, “owl:Restriction”.
Vemos con la etiqueta “owl:onProperty”, que hace referencia a la
propiedad #name, (que deducimos será el nombre de la persona),
que ajusta una restricción, con la siguiente etiqueta
(“owl:maxCardinality”), tras la que restringe el número de
nombres de la persona a uno.
Con este sencillo ejemplo se ha ilustrado como OWL es capaz de
reutilizar aquellas etiquetas de RDFS que dotan de tanto
significado a la ontología, y como es capaz de potenciarlas
mediante la aplicación de restricciones mucho más fuertes que las
que podemos aplicar con el uso de RDFS.
Para ejemplificar la aplicación de la lógica de descripción del
lenguaje OWL, nos haría falta un ejemplo mucho más elaborado
que no merece la pena.
5 UNA IMPLEMENTACIÓN BÁSICA DE
SEMÁNTICA EN UNA WEB.
Para ilustrar un poco todo lo que se ha comentado en el trabajo, se
va a describir un pequeño ejemplo de web que incluye contenido
semántico, haciendo uso tanto de RDFa, como RDF, como RDFS,
como OWL. El sitio web es muy sencillo, representa una tienda,
donde se ofrecen los siguientes servicios:
−
Venta de Tecnología: Es una sección, cuya semántica esta
implementada con RDF, y extendida con RDFS.
−
Servicio de Compra de Vehículos: Sección, cuya semántica
esta implementada con OWL, apoyándose en muchos casos
en atributos propios de RDFS. La implementación se basa en
la reutilización de una ontología extraída de SWOOGLE.
−
Servicio de Alquiler de Vehículos: Sección en la cual se
encuentra implementada la semántica por medio de RDF y
RDFS para establecer una base taxonómica de las relaciones
entre el recurso vehículo y los tipos de vehículos en sí.
Adicionalmente, se encuentra un enlace a un documento escrito
en RDF con una estructura básica y con un uso del lenguaje
FOAF. Este documento, comúnmente denominado como perfil
FOAF, es una descripción de una persona, y se usa normalmente
asociado a blogs, o páginas web personales, con la intención de
crear una red social semántica. De hecho el nombre del
vocabulario utilizado, FOAF, proviene de Friend Of A Friend.
También se encuentra en la página inicial (el índice de la web),
contenido semántico escrito en RDFa, por lo cual es posible
visualizarlo con simplemente observar el código fuente de la
página, ya que como se explicó arriba, RDFa provee precisamente
de una serie de etiquetas que pueden integrarse con el código
(X)HTML.
La implementación es muy sencilla, sin embargo, con ayuda del
validador de RDF que ofrece el W3, se puede observar la
complejidad que se extrae de la sección implementada en OWL
(Sección de Compra de Vehículos). Esta semántica como se
comento arriba está implementada sobre una base extraída del
buscador de ontologías SWOOGLE. Todos los términos que
aparecen están enlazados con el lugar desde el cual han sido
definidos, lo cual hacen de esta la ontología más completa, y a la
vez más compleja.
Un pequeño ejemplo (no visible), del grafo semántico que genera
es el que se muestra en la siguiente página.
En ese grafo se puede apreciar la cantidad de nodos, y de líneas
dirigidas entre nodos que se ocupan de indicar que propiedades
aplican a que nodo desde que otro nodo.
Es, en definitiva una representación del conocimiento, la más
simple de entender para los humanos.
</foaf:knows>
</foaf:Person>
</rdf:RDF>
El Grafo:
Un ejemplo mucho más visible de grafo semántico es el que
genera por ejemplo el perfil FOAF.
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<foaf:PersonalProfileDocument rdf:about="">
<foaf:maker rdf:resource="#me"/>
<foaf:primaryTopic rdf:resource="#me"/>
</foaf:PersonalProfileDocument>
<foaf:Person rdf:ID="me">
<foaf:name>Raul</foaf:name>
<foaf:title>Student</foaf:title>
<foaf:givenname>Raul</foaf:givenname>
<foaf:nick>Ra</foaf:nick>
<foaf:homepage rdf:resource="index.html"/>
<foaf:workplaceHomepage
rdf:resource="http://www.it.uc3m.es/"/>
<foaf:knows>
<foaf:Person>
<foaf:name>Julio Villena</foaf:name>
<rdfs:seeAlso
rdf:resource="http://www.it.uc3m.es/jvillena/"/>
</foaf:Person>
6 CONCLUSIONES
La web semántica es a día de hoy aún un proyecto, cada vez más
palpable, en el que todos podemos colaborar si queremos. Desde
el punto de vista de muchas empresas no es rentable
económicamente pasar de la web 2.0 (la actual), a la web 3.0 (la
web semántica), y esto por supuesto es un inconveniente a la hora
de propulsar la tecnología.
No obstante, como viene siendo habitual, la necesidad irá
marcando el paso, y a la velocidad que avanzan las redes de datos
actualmente, llegará el momento en el que se verá necesario ese
cambio, el cambio de la información, al conocimiento.
Para cuando ese momento llegue, la inteligencia artificial en el
campo de la representación del conocimiento será una disciplina
mucho más experimentada y mucho más óptima. El hecho de que
actualmente se creen ontologías para describir ciertos dominios
del conocimiento, y que esto se haga empleando distintas
tecnologías, fomenta precisamente el desarrollo y la evolución de
estos métodos de representación del conocimiento. Y esto último
por supuesto, desemboca en una mejora de la web semántica.
[3]W3C Semantic Web Activity
http://www.w3.org/2001/sw/
[4]The Friend of a Friend (FOAF) Project
http://www.foaf-project.org/
[5]Dublin Core Metadata Iniciative
http://www.dublincore.org/
[6]RDFa, RDF, OWL, RDFS, SPARQL
http://en.wikipedia.org/wiki/
[7]Faculty of Computer Science, Free University of BozenBolzano, Italy . Description Logics
http://www.inf.unibz.it/~franconi/dl/course/
7 REFERENCIAS
[1] ACM Inc. ACM SIG Proceedings Templates
[8]Apuntes de IRC, Universidad Carlos III, Julio Villena.
http://www.acm.org/sigs/pubs/proceed/template.html
http://www.it.uc3m.es/jvillena/irc/indice.html
[2] ACM Inc. ACM Computing Classification System [V.1998]
http://www.acm.org/class/1998/
Descargar