Hoy vamos a ver algunas técnicas de
razonamiento en RDF Schema o RDFS.
Considere el siguiente grafo RDF que hemos escrito como un archivo; primero tenemos la definición de un prefijo, que nos ayudará a simplificar la notación que utilizamos en los URIs, y después tenemos 2 triples. El primer triple especifica que jugador de fútbol es de tipo clase, decimos que jugador de fútbol es una clase; en el segundo triple, decimos que Carlos es de tipo jugador de fútbol, decimos Carlos es un jugador de fútbol.
Una pregunta, en este caso, es si Carlos debería ser considerado como una persona. Si pensamos en el dominio de las personas y de los jugadores de fútbol, la respuesta debería ser SÍ, ya que él es un jugador de fútbol. Pero, no podemos obtener esto desde el grafo RDF, no podemos obtenerlo de manera automática, el computador no puede saber en este caso que Carlos es de tipo persona. La pregunta entonces es, ¿cómo podríamos solucionar este problema?
Una alternativa sería decir explícitamente que Carlos es de tipo persona, incluir en el archivo anterior, el grafo RDF anterior el siguiente triple, que nos dice Carlos es de tipo persona. Pero esta solución tiene un problema; si hay un grafo RDF para guardar información sobre jugadores de fútbol, por ejemplo de toda la liga española, para decir que cada uno de ellos es una persona vamos a tener que repetir este proceso muchas veces; por cada jugador de fútbol tendremos que agregar un triple que nos indique que ese jugador de fútbol es de tipo persona.
Consideramos como una alternativa mejor definir una regla general que nos diga que cada jugador de fútbol es de tipo persona, y a partir de esa regla inferir de manera automática que Carlos es de tipo persona. Al decir que cada jugador de fútbol es una persona lo que estamos diciendo es que jugador de fútbol es una subclase de la clase persona. Si vemos esto en la transparencia lo vamos a representar como el siguiente ideagrama, diciendo que jugador de fútbol está contenido en persona y es por tanto una subclase de la clase persona; llamamos a esto una jerarquía de clases.
RDFS es un vocabulario RDF que permite especificar ciertas reglas generales, decir cosas sobre el dominio que estamos describiendo, y podemos declarar jerarquías de clase en RDFS; para esto utilizamos el URI rdfs:subclassOf. Recuerde que RDFS es un vocabulario RDF, y cada componente de este vocabulario está especificado por un URI, y en este caso particular tenemos además un prefijo que es el prefijo rdfs.
Entonces, en nuestro ejemplo anterior, podemos decir que la clase jugador de fútbol es una subclase de la clase persona, utilizando el siguiente triple.
Nótese que, en la primera línea, estamos diciendo cuál es el prefijo que estamos utilizando, que es rdfs, y en la tercera línea decimos que jugador de fútbol es una subclase de persona. Eso lo decimos con :jugador_de_fútbol rdfs:subclassOf :persona. Ahora lo que queremos hacer a partir de estos triples es razonar de manera automática.
Volvamos con el ejemplo anterior. En este caso, tenemos 2 triples, uno que nos dice que Carlos es de tipo jugador de fútbol, y además tenemos un triple que nos dice que jugador de fútbol es una subclase de persona. Lo que queremos hacer en este caso es obtener de manera automática que Carlos es de tipo persona, nos gustaría que una aplicación computacional pudiera inferir que Carlos es de tipo persona a partir de estos dos triples.
El mecanismo de razonamiento RDFS nos permite inferir nuevos triples a partir de los existentes, como mostrábamos en el ejemplo anterior. Tenemos un conjunto de triples, y utilizando el significado de este vocabulario definimos nuevos triples. Y estos triples
son considerados como parte del grafo RDF; si nosotros nos preguntamos en el ejemplo anterior si Carlos era de tipo persona, la respuesta que vamos a obtener es SÍ, ya que este triple se puede inferir de manera automática a partir de los otros triples.
Este mecanismo de razonamiento de RDFS utiliza el significado de los distintos componentes del vocabulario RDFS que hemos visto anteriormente. Por ejemplo, con rdfs:class decimos que algo es una clase, rdfs:type, rdf:property, rdfs:domain, rdf:range y rdf:subclassOf...
Este mecanismo de inferencia de RDFS se traduce en una serie de reglas de inferencia. ¿Cómo se ven estas reglas de inferencia?
Siempre se ven de la misma forma, dicen algo como, a partir de este conjunto de triples se infiere el siguiente triple, y estas declaraciones son generales. Por ejemplo, con el razonamiento que hicimos en las transparencias anteriores, lo que decimos es lo siguiente: a partir de los triples A es de tipo C y C es subclase de D se infiere el triple A es de tipo D. Nuevamente es importante recalcar que lo que estamos diciendo es, si sabemos que A es de tipo C y sabemos que C es una subclase de D, entonces, podemos inferir, y vamos a hacer esto de manera automática, que A es de tipo D.
Gráficamente esto se puede mostrar de la siguiente forma; estamos diciendo que C es una clase que está contenida en la clase D. Entonces, si A era un elemento de C o A era de tipo C, podemos inferir que A también era de tipo D, o sea, que A está contenido en D. El mecanismo de inferencia de RDFS incluye otras reglas como esta.
Como resumen, hemos visto que RDFS tiene un componente que permite indicar que una clase es una subclase de otra, y esto es lo que llamamos jerarquía de clases. Podemos decir que jugador de fútbol es una subclase de persona. RDFS tiene un mecanismo de razonamiento que permite inferir nuevos triples a partir de los existentes; tenemos un conjunto de triples, utilizamos el significado ya estandarizado de los componentes de RDFS, e inferimos nuevos triples. Y este mecanismo utiliza el significado del vocabulario RDFS y se traduce en una serie de reglas de inferencias para RDFS. Por ejemplo, una regla de inferencia que nos dice que si sabemos que A era de tipo C y C subclase de D, entonces podemos inferir que A es de tipo D.
No hay comentarios:
Publicar un comentario