There is only XUL (VII)

Vamos a hacer un inciso para hablar sobre RDF. RDF es un estándar de la W3C cuyo nombre deriva de las siglas de ‘Resource Description Framework’ y que es un subconjunto de XML, al igual que XUL, que nos sirve para expresar hechos (cosas que son ciertas, la información en forma de predicados que tenemos sobre el mundo real). Sería algo parecido a los predicados de Prolog. Por ejemplo, un predicado del tipo ‘A Linus le gustan los pingüinos’ en RDF podría expresarse como

<Description about=”Linus”>
<le-gustan>pingüinos</le-gustan>
</Description>

La etiqueta Description sirve para representar uno o mas hechos, con un atributo about para indicar sobre quien es ese hecho, es decir, el sujeto del hecho. Description puede contener una o varias etiquetas hijas siendo cada una de ellas un predicado.

<Description about=”Linus”>
<le-gustan>pingüinos</le-gustan>
<informatico>true</informatico>
<linuxero>true</linuxero>
<nacionalidad>finlandesa</nacionalidad>
</Description>

En este ejemplo definimos una serie de predicados sobre Linus, con una etiqueta definida por nosotros mismos para describir ese predicado y con el valor entre las etiquetas.

Ahora, ¿como expresaríamos el hecho de que a Linus le gustan además de los pingüinos los sombreros o los camaleones?. Podríamos usar varios predicados le-gustan pero RDF nos proporciona un método mejor. En RDF se definen tres etiquetas que sirven como contenedoras: <Bag>, que define un conjunto de items; <Seq>, que define un conjunto de items ordenados y <Alt>, que define un conjunto de elementos que son alternativos, es decir, que se consideran equivalentes. Los elementos de un contenedor se encierra entre <li> y </li> (li de list, lista, al igual que la etiqueta de HTML). Veamos un ejemplo:

<Description about=”Linus”>
<Bag ID=”Gustos”>
<li>pingüinos</li>
<li>sombreros</li>
<li>camaleones</li>
</Bag>
<informatico>true</informatico>
<linuxero>true</linuxero>
<nacionalidad>finlandesa</nacionalidad>
</Description>

Ahora tenemos una lista de los gustos de Linus usando un Bag que sería equivalente a un predicado con varios valores. Para identificar el predicado que define este Bag usamos el atributo ID. Seq y Alt serían similares, tan solo cambia su significado.

Para finalizar esta pequeña introducción a RDF vamos a ver un ejemplo completo para explicar un par de cosas que quedan en el tintero.

<RDF:RDF xmlns:RDF=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:BEBIDAS=”http://www.caffeine.com/rdf#”>

<RDF:Bag about=”http://www.caffeine.com/tipos-de-bebida”>
<RDF:li>
<RDF:Description about=”http://www.caffeine.com/infusiones/te”>
<BEBIDAS:nombre>Te</BEBIDAS:nombre>
<BEBIDAS:precio>1,12</BEBIDAS:precio>
</RDF:Description>
</RDF:li>
<RDF:li>
<RDF:Description about=”http://www.caffeine.com/infusiones/tila”>
<BEBIDAS:nombre>Tila</BEBIDAS:nombre>
<BEBIDAS:precio>0,9</BEBIDAS:precio>
</RDF:Description>
</RDF:li>
<RDF:li>
<RDF:Description about=”http://www.caffeine.com/cafes/solo”>
<BEBIDAS:nombre>Cafe solo</BEBIDAS:nombre>
<BEBIDAS:precio>1,2</BEBIDAS:precio>
</RDF:Description>
</RDF:li>
</RDF:Bag>
</RDF:RDF>

Lo primero que tenemos que comentar es la línea con la que comienza el RDF. Esta es similar al window de XUL en el que definimos que espacio de nombres vamos a utilizar. Usaremos RDF que esta definida en tal URL y BEBIDAS que esta definido en tal otra. Relacionado con esto, el RDF: que aparece antes de las palabras clave de RDF o el BEBIDAS: que aparece antes de los nombres de los predicados indica el espacio de nombres que estamos utilizando, es decir, RDF:li por ejemplo significa que nos estamos refiriendo a la etiqueta li que está definida dentro de RDF.

Comentarios
  1. ¿En lugar de

    true
    finlandesa

    no sería

    true
    finlandesa>

    :idea:?

    Responder

  2. la etiqueta de inicio tiene que ser igual que la etiqueta de cierre, evidentemente. y lo que hay dentro es su valor

    Responder

  3. priscill

    la etiqueta de inicio del ejemplo de bebidas no concuerda con la etiqueta de fin. nombre-> name.
    Esos detalles matan

    Responder

  4. javier

    “Usaremos RDF que esta definida en tal URL y BEBIDAS que esta definido en tal otra.” De que forma está definida con un fichero? de que tipo? dtd? que contiene?
    Por otro lado el fichero RDF debemos guardarlo con algún nombre especial

    Responder

  5. chrisl

    <linuxero>true</true>
    <nacionalidad>finlandesa</finlandesa>

    seria

    <linuxero>true</linuxero>
    <nacionalidad>finlandesa</nacionalidad>

    Responder

Deja un comentario