RDF en Cincuenta palabras o menos

Okay, esto capaz sea un poco más de cincuenta palabras, pero los puntos clave son bastante simples (y puestos en texto en negrita para esos tipos de personas que quieren ir al punto). El Resource Description Framework, o “RDF“, es realmente dos cosas.

En primer lugar, RDF es un modelo basado en gráficos para describir recursos de Internet (como páginas web y mensajes de correo electrónico) y cómo se relacionan estos recursos entre sí.

Pero, ¿qué significa eso realmente? Para un desarrollador, significa que el modelo de datos RDF (el “gráfico“) puede usarse como un mecanismo para integrar y organizar recursos de Internet.

Veamos un ejemplo: marcadores. En este momento, la mayoría de los navegadores web le permiten organizar sus marcadores jerárquicamente en carpetas. Cada marcador es un puntero a una página web llamado URI (Uniform Resource Identifier).

Pero una página web es sólo un tipo de recurso de Internet. Hay muchos otros, incluidos mensajes de correo electrónico, artículos de Reddit, canales RSS y resultados de búsqueda de su rastreador web favorito, solo por nombrar algunos. Y, fundamentalmente, no hay ninguna razón por la que no puedas tratarlos como “marcadores”. además, agruparlos en carpetas como desee, o tal vez incluso crear archivos “inteligentes”. carpetas que, cuando las abre, generan dinámicamente su contenido ejecutando una búsqueda común que usted defina.

Y un “marcador“ realmente podría tener propiedades arbitrarias asociadas: es posible que desee inventar su propio esquema de “clasificación“ para un marcador de codificación de colores “caliente“, “tibio“ y “fresco“ en la Macintosh. O puede querer relacionar un marcador a otro marcador, o mantenerlo en varias “carpetas“ a la vez.

El gráfico RDF proporciona un modelo de datos perfecto sobre el cual construir un servicio de marcado “universal“ como se describió anteriormente: el gráfico puede contener punteros a recursos arbitrarios y puede agruparlos de cualquier forma que pueda imaginar.

Pero espera hay más...

En segundo lugar, RDF es una sintaxis de serialización. Esta sintaxis permite que el modelo tipo gráfico se comunique entre “agentes“.

De acuerdo, ¿Pero qué cosa significa eso? Fundamentalmente, significa que partes del modelo de datos RDF pueden comunicarse a través de los límites de la red, y el contenido del gráfico puede cambiar dinámicamente a medida que llega la información de un servicio remoto.

Regresemos a nuestro ejemplo de marcador. Digamos que una de mis “carpetas“ de marcadores es realmente un puntero a mi bandeja de entrada de correo electrnóico: cuando abro esa carpeta, ¡voilá! Aparecen todos los mensajes que he recibido durante la noche.

¿Pero cómo sucede esto? La “carpeta“ de la bandeja de entrada era realmente solo un puntero a un recurso de Internet que contiene más RDF que extiende del gráfico. Ese “recurso de Internet“ era un URI que apuntaba a un script CGI (por ejemplo, <code>http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox</code>). El script CGI realmente genera RDF serializado, que básicamente es solo una forma de formatear un gráfico a XML:

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:sm="http://www.mozilla.org/smart-mail/schema#"
  xmlns:schema="https://schema.org/">
  <rdf:Description rdf:nodeID="n-101"
    about="http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox">
    <sm:message id="4025293">
      <sm:recipient>Chris Waterson "waterson@google.com"</sm:recipient>
      <sm:sender>Aunt Helga "helga@ancestry.net"</sm:sender>
      <sm:received-by>x-wing.mcom.com</sm:received-by>
      <sm:subject>Great recipe for Banana Bread</sm:subject>
      <sm:body>
        <rdf:Description rdf:nodeID="n-201">
          <schema:name>Aunt Helga's World Famous Banana Bread</schema:name>
          <schema:recipeInstructions>
              Preheat the oven to 350 degrees. Mix in the ingredients in a bowl.
              Add the flour last.
              Pour the mixture into a loaf pan and bake for one hour.
            </schema:recipeInstructions>
          <schema:recipeIngredient>3 or 4 ripe bananas, smashed.</schema:recipeIngredient>
          <schema:recipeIngredient>1 egg</schema:recipeIngredient>
          <schema:recipeIngredient>3/4 cup of sugar</schema:recipeIngredient>
          <schema:suitableForDiet>http://schema.org/LowFatDiet</schema:suitableForDiet>
          <schema:cookTime>PT1H</schema:cookTime>
          <schema:recipeYield>1 loaf</schema:recipeYield>
          <schema:prepTime>PT1H</schema:prepTime>
          <rdf:type rdf:resource="http://schema.org/Recipe"/>
          <schema:nutrition rdf:nodeID="n-202"/>
        </rdf:Description>
        <rdf:Description rdf:nodeID="n-301">
          <rdf:type rdf:resource="http://schema.org/NutritionInformation"/>
          <schema:fatContent>9 grams fat</schema:fatContent>
          <schema:calories>240 calories</schema:calories>
        </rdf:Description>
      </sm:body>
    </sm:message>
  </rdf:Description>
</rdf:RDF>

Al recibir la monstruosidad anterior, el motor RDF pliega el RDF en el gráfico en el lugar apropiado, y el control de árbol que realmente implementa la interfaz de usuario en los marcadores es notificado de que debe comenzar a dibujar algunos íconos para el último mensaje sobre pan de Banana de la Tía Helga.