¿Que es RDF?

Nota de actualización 25/3/2018: sobre este artículo

Este artículo comenzó como una traducción y adaptación al Español del original en Inglés de la “Introducción a RDF” de Joshua Tauberer.

El artículo original de hace 4 años ha sido enriquecido con nuevos gráficos y puesto al día con ejemplos de uso procedentes de mi propio trabajo y nuevos desarrollos que van surgiendo alrededor de la Web Semántica.

Introducción rápida al RDF

Esta es una breve introducción al Resource Description Framework (RDF). También te puede interesar:

RDF es un método para expresar el conocimiento en un mundo descentralizado y es el fundamento de la Web Semántica, en el que las aplicaciones informáticas utilizan información estructurada distribuida por toda la Web. Sólo para aclarar de buen principio, RDF no es estrictamente un formato XML, no va sólo acerca de metadatos, tiene poco que ver con RSS y no es tan complicado como piensas.

RDF Web Semantica

A grandes rasgos

RDF es un método general para descomponer cualquier tipo de conocimiento en trozos pequeños, con algunas reglas acerca de la semántica o significado, de esas piezas.

El punto es tener un método tan simple que puede expresar cualquier hecho, y a la vez tan estructurada que las aplicaciones informáticas pueden hacer cosas útiles con él.

Aquí hay algo de RDF:

@prefix :  .
:john    a           :Person .
:john    :hasMother  :susan .
:john    :hasFather  :richard .
:richard :hasBrother :luke .

El significado es obvio (Nota de traducción: el ejemplo afirma que John es una persona con una madre llamada Susan, un padre llamado Richard y un hermano llamado Luke).

Vamos a llegar a los detalles más tarde.

Si conoces el XML, he aquí una breve comparación y como se relacionan RDF y XML

Al igual que RDF, el XML también está diseñado para ser simple y de propósito general.
XML se puede abstraer más allá de su notación entre corchetes y barras a algo más abstracto, un “DOM” para estructurar un árbol de datos.

Nota de adaptación: Joshua habla de “algo parecido a un DOM” (Document Object Model) que no explico en detalle por no perder foco; creo que para mayor claridad podemos decir a grandes rasgos que pretende explicar que el XML se encarga de estructurar y jerarquizar el contenido que se explica mediante RDF, como si XML fuera el cemento y RDF los ladrillos.

Esto se puede entender aún mejor si contemplamos otras ontologías (o vocabularios) como FOAF (Friend of a Friend) o DOAC (Description of a Career, basado en FOAF): las ontologías o vocabularios dan significado a hechos del mundo real (relaciones entre humanos y currículums, en los 2 casos mencionados) mientras que XML se ocupa de la estructura y modo de ordenar y relacionar los hechos.

Más o menos, XML es la gramática y RDF establece la relación semántica del vocabulario en uso.

Del mismo modo, la importancia de RDF no radica en cómo se escribe (su notación) sino de lo que representa, una información estructurada en red o grafo (gráfico).

Puedes escribir RDF en XML, mucha gente lo hace (nota personal: esto es lo que yo hago, estructuro contenido semántico mediante notación XML).
Esto es lo que podría ser:

 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:ns="http://www.example.org/#">
  <ns:Person rdf:about="http://www.example.org/#john">
    <ns:hasMother rdf:resource="http://www.example.org/#susan" ></ns:hasMother>
    <ns:hasFather>
      <rdf:Description rdf:about="http://www.example.org/#richard">
        <ns:hasBrother rdf:resource="http://www.example.org/#luke" ></ns:hasBrother>
      </rdf:Description>
    </ns:hasFather>
  </ns:Person>
</rdf:RDF> 
Pero no tienes porqué utilizar XML: yo mismo no lo hago. El primer formato visto anteriormente, llamado N3, es igual de bueno.
Nota de adaptación: si hablamos de N3 en seguida aparece el concepto de Turtle.
Si quieres aprender a manejar todo este tinglado, recomiendo consolidar estos conceptos en Wikipedia.
Lo que realmente diferencia RDF de XML y otras cosas es que RDF está diseñado para representar el conocimiento en un mundo distribuido.
Esto significa que RDF está especialmente enfocado al significado.
Absolutamente todo lo que se menciona en RDF significa algo, ya sea una referencia a algo concreto en el mundo, un concepto abstracto, o un hecho.
Los estándares construidos sobre RDF describen inferencias lógicas entre los hechos y la forma de buscar estos hechos en una gran base de datos de conocimiento RDF.
Lo que lo hace al RDF adecuado para conocimiento distribuido es que las aplicaciones RDF puede juntar archivos RDF escritos por diferentes personas en todo Internet y fácilmente aprender de ellos nuevas cosas que ningún documento único permitiría aprender.
Esto se hace de dos maneras, en primer lugar mediante la vinculación de documentos entre sí por los vocabularios comunes que utilizan, y en segundo lugar, al permitir a cualquier documento utilizar cualquier vocabulario. Esta flexibilidad es un rasgo único a favor de de RDF.
Nota de adaptación: la vinculación de datos para conformar grafos semánticos es lo que conocemos como Datos Enlazados o Linked-Data. Si te suena a griego, me refiero a la “LD” de JSON-LD.
Considera este segundo documento de RDF:
@prefix :  .
:richard :hasSister :rebecca
{ ?a :hasFather ?b . ?b :hasSister ?c . } => { ?a :hasAunt ?c } .

Este documento RDF define lo que significa ser tía, en términos de otras dos relaciones.

Se podría imaginar una aplicación que pusiera este documento junto con el primer documento RDF para determinar que :rebecca es la tía de :john.

Lo que hace este trabajo es que los nombres de entidades son globales.
Es decir, cuando :john y :hasFather se utilizan en un documento, las aplicaciones pueden asumir que tienen el mismo significado en cualquier otro documento RDF con el mismo @prefix.

Así que ¿por qué utilizar RDF?

Aquí hay casos de uso, según los describe Richard Cyganiak en la lista de correo de la Web Semántica del W3C:

  • Integrar datos de diferentes fuentes sin necesidad de programación personalizada.
  • Ofrecer tus datos para su reutilización por otras partes.
  • Descentralizar los datos de forma que ningún parte se haga dueña de todos los datos.
  • Hacer algo elegante con grandes cantidades de datos (navegación, consulta, emparejamiento, inserción, extracción, etc.), por lo que desarrollas (o reutilizas) una herramienta genérica que permite hacer esto como añadido al modelo de datos de RDF (que tiene la ventaja de no estar atado a una tecnología propietaria de almacenamiento o representación de datos, como sería el caso de un dialecto de base de datos).

RDF Definido

RDF se puede definir en tres sencillas reglas:

  1. Un hecho se expresa en una tripleta de la forma (Sujeto, Predicado, Objeto). Es como una pequeña oración en Español.
  2. Los sujetos, predicados y objetos son los nombres de entidades, ya sean concretas o abstractas, en el mundo real.
    Los nombres son o bien
    I) globales y se refieren a la misma entidad en cualquier documento RDF en el que aparecen, o
    II) locales y la entidad a la que se refieren no puede ser referida directamente hacia fuera del documento RDF.
  3. Los objetos también pueden ser valores de texto, llamados valores literales.

Ya has visto hechos. Cada línea de las siguientes era un hecho:

:john    a           :Person .
:john    :hasMother  :susan .
  ...

Los nombres globales, que tienen el mismo significado en todas partes, son siempre identificadores uniformes de recursos (URI).
Los URIs puede tener la misma sintaxis o formato que las direcciones de sitios web, por lo que verás archivos RDF que contienen URIs como http://www.w3.org/1999/02/22-rdf-syntax-ns#type, donde ese URI es el nombre global para alguna entidad.
El hecho de que se parezca a una dirección web es totalmente accidental. Puede o no puede haber un sitio web real en esa dirección, no importa.
Hay otros tipos de URI además de los de tipo http:.
Los URN son un subtipo de URI usado para cosas como la identificación de libros por su número de ISBN, por ejemplo, urn:ISBN: 0143034650.
Las etiquetas son un tipo de URI de uso general. Tienen este aspecto tag:govtrack.us,2005:congress/senators/frist.
Los URI se utilizan como nombres globales, ya que proporcionan una manera de descomponer el espacio de todos los nombres posibles en unidades que tienen dueños evidentes.
Los URI que comienzan con http://www.rdfabout.net/ son controlados implícitamente por mí (Nota: por el autor).

Este punto es importante y requiere insistir sobre él: cualquiera que sea su forma, los URI que ves en documentos RDF son meramente nombres detallados para entidades, nada más. Olvídate de que tengan algo que ver con la web.

Ya que los URI puede ser bastante largos, en varias notaciones RDF están generalmente abreviados utilizando el concepto de espacios de nombres de XML. Eso es lo que los “:” (dos puntos) están haciendo en :john, :hasMother, y las demás entidades en el ejemplo.

Los dos puntos indican que el nombre es una forma abreviada.
En estos casos, los nombres eran http://www.example.org/#john, http://www.example.org/#hasMother, etc.

Cuando se escriben, en general los URI se encierran entre corchetes para distinguirlos de los nombres abreviados mediante espacios de nombres.

Los valores literales permiten incluir texto en RDF. Esto se usa mucho cuando el RDF se utiliza para los metadatos:

 a :Website .
 dc:title "rdf:about" .
 dc:description "A website about
    Resource Description Framework." .

Nota de adaptación: dc es el prefijo de un nada popular pero extendido Namespace. Acabas de ver un ejemplo de la ontología (vocabulario) de la iniciativa Dublin Core; de los más añejo de la WWW expresada mediante RDF.

Y eso es básicamente RDF.

RDF como gráfico

Existen dos formas complementarias de observar la información RDF. El primero es como un conjunto de declaraciones, como la de arriba. Cada declaración representa un hecho. La segunda manera es como un gráfico.

Un gráfico es básicamente una red. Los gráficos consisten en nodos interconectados por bordes. En Internet, por ejemplo, los nodos son los ordenadores, y los bordes son los cables Ethernet que los interconectan. En RDF, los nodos son nombres (no entidades reales) y los bordes son declaraciones. He aquí un ejemplo:

Representación gráfica de los triples (o tripletas) RDF

representacion gráfica RDF
Cada flecha o borde es una declaración RDF.
El nombre en el inicio de la flecha es el sujeto de la declaración, el nombre al final de la flecha es el objeto de la declaración, y el nombre que etiqueta la flecha es el predicado.
El gráfico RDF expresa exactamente la misma información que RDF escrito como tripletas, pero la forma gráfica hace que sea más fácil para nosotros los humanos ver la estructura de los datos.

El punto es tener un método tan simple que puede expresar cualquier hecho, y a la vez tan estructurado que las aplicaciones informáticas pueden hacer cosas útiles con él

Nota de actualización 16/10/2019: sobre las aplicaciones prácticas del RDF

El siguiente párrafo ejemplifica un posible uso práctico para el RDF.
Llámese casualidad o perspectiva a largo plazo, pero ya hay un caso que apunta en esta dirección, aunque no se limita a un sector o tipo de productos específico, sino que pretende ser (a mi criterio) una futura enciclopedia universal de productos.

Ejemplo práctico sobre usos comerciales-logísticos

Nota de adaptación: el título original del párrafo es “Un ejemplo rápido”.

Entonces ¿cómo puede ser útil RDF? Es la tecnología a utilizar cuando se quiere combinar y/o reorganizar información distribuida.

He aquí un escenario en el que la información distribuida cobra mucho sentido: una base de datos de productos de múltiples proveedores y revisiones de estos productos por múltiples colaboradores.

Ningún proveedor de estos productos va a querer ser el responsable de mantener una base de datos centralizada para este proyecto, sobre todo porque contendrá información sobre productos de la competencia y críticas negativas.

Del mismo modo, ningún colaborador-revisor tendrá recursos para mantener dicha base de datos actualizada.

RDF es especialmente adecuado para este proyecto.

Cada vendedor y colaborador-revisor publicarán un archivo en RDF en sus propios sitios web.

Los vendedores elegirán URIs para sus productos y los revisores usarán dichos URIs a la hora de redactar sus revisiones.

Los vendedores no tienen que ponerse de acuerdo en un esquema de denominación común para los productos y los revisores no están atados a un formato de datos controlado por el proveedor.

RDF permite que los vendedores y los revisores estén de acuerdo sobre lo que necesiten acordar, sin obligar a nadie a usar un vocabulario en particular.

Aquí están los archivos RDF que publican en el ejemplo:

**Vendor 1:**
vendor1:productX    dc:title    "Cool-O-Matic" .
vendor1:productX    retail:price    "$50.75" .
vendor1:productX    vendor1:partno  "TTK583" .
vendor1:productY    dc:title    "Fluffertron" .
vendor1:productY    retail:price    "$26.50" .
vendor1:productY    vendor1:partno  "AAL132" .

**Vendor 2:**
vendor2:product1    dc:title    "Can Closer" .
vendor2:product2    dc:title    "Dust Unbuster" .

**Reviewer 1:**
vendor1:productX    dc:description  "This product is good buy!" .

**Reviewer 2:**
vendor2:product2  dc:description  "Who needs something to unbust dust? 
                                  A dust buster would be a better idea,
                                  and I wish they posted the price." .
vendor2:product2  review:rating   review:Excellent .

Esto nos deja una pregunta abierta: ¿cómo una aplicación va a recuperar estos archivos? Pero voy a dejarla de lado.

Una vez que una aplicación tiene estos archivos, tiene suficiente información para poder relacionar productos con revisiones y precios, e incluso puede relacionarlos a la información específica del proveedor como vendor1:partno.

Con lo que deberías quedarte de este ejemplo es la flexibilidad y los pocos limites que impone el RDF, al tiempo que permite que las aplicaciones sean inmediatamente capaces de relacionar la información entre sí.

Los vendedores y los revisores no tienen que acordar gran cosa para que esto suceda.

Tendrían que acordar utilizar RDF, pero no tendrían que estar de acuerdo en ningún formato de datos específico, o incluso en las URIs específicas.

Fundamentalmente, ellos no tendrían que enumerar todo lo que un proveedor querría incluir acerca de sus productos, y el proveedor no podría bloquear la publicación de críticas por parte de los colaboradores-revisores.

Otra forma de ver esto desde el punto de vista de la interoperabilidad.

El formato del “proveedor 1” es completamente interoperable con el formato de cualquiera, incluso si este “proveedor 1” no ha acordado un formato común con nadie.

Cuando alguien aparece en escena y quiere operar con la información del “proveedor 1”, no se necesita un nuevo formato, sólo se tienen que elegir los sujetos, predicados y objetos adecuados.

Ejemplos reales de aplicación de RDF

Este gráfico muestra las relaciones que se describen en el fichero RDF, el del ejemplo es mi propio descriptor.

Me identifica unívocamente ante los consumidores de datos estructurados (Datos Enlazados más propiamente) y muestra la relación que se forma entre “yo” como entidad y otras entidades, como pueden ser mi lugar de trabajo, mis compañeros o más detalles propios, como mi ubicación.

Mi propia descripción junto con algunos detalles accesorios, como la representación de esta web o la de eData

Descripción del equipo fundador de ZeClinics (biotech CRO en Barcelona) mediante ficheros RDF interconectados (Linked-Data).

Cada persona tiene su propio fichero descriptor que a su vez se relaciona con los descriptores de otros compañeros, fomentando el encadenamiento de datos (Datos Enlazados) y su propio potencial de autodescubrimiento y consumo.

Es decir, rastreabilidad e indexabilidad: aquí podrás ver claramente un punto de contacto directo con la literatura SEO más tópica.

Descripción del equipo fundador de ZeClinics mediante ficheros RDF interconectados (Linked-Data)

Conclusión

Si pensabas RDF era muy complicado, espero que ahora veas que no tiene porqué serlo.
RDF es fácil de escribir, flexible y nada limitante.

Esto facilita la tarea de modelar el conocimiento y agregar fuentes de conocimiento distribuido.

RDF es un método para expresar el conocimiento en un mundo descentralizado y es el fundamento de la Web Semántica

RDF es un método general para descomponer cualquier tipo de conocimiento en trozos pequeños

RDF es la tecnología a utilizar cuando se quiere combinar y/o reorganizar información distribuida

Implementación de Datos Estructurados

Enriquece tu proyecto web con información estructurada.

Una correcta implementación de Datos Estructurados es ideal para hacer comprender a los principales buscadores el concepto de tu oferta.
Qué ofreces, cómo se categoriza lo que ofreces, sus características (visibles y no visibles), función y decenas de parámetros que ayudan a convertir a tus visitantes en clientes.

Mis formatos habituales y aconsejados son JSON-LD y RDFa, aunque puedo tratar sin problemas con Microdatos.

Algunos proyectos con Datos Estructurados: La Sagrada Família Western Digital (WD) Ribes&Casals Advocate Abroad ya se está beneficiando de mi implementación Schema.