Ejemplos de vocabularios útiles

Los vocabularios se utilizan para estandarizar las referencias a ciertos elementos. Así, si por ejemplo todo el mundo referencia dentro de un HTML el nombre de una persona de la misma forma con una palabra clave, los buscadores y motores podrán programarse para clasificar ese nombre como el de una persona. Proporcionando así semántica a los datos. En este capítulo veremos algunos de los vocabularios más utilizados referenciados por schema.org y la W3C.

schema.org

Schema.org proporciona una colección de "esquemas" (o vocabularios) que los creadores de contenido web pueden usar en las marcas HTML y que van a ser reconocidos por la mayoría de los buscadores (por ejemplo Bing, Google, Yahoo! y Yandex que utilizan los vocabularios de este sitio).

El sitio web es muy simple. En la pestaña de "Documentation" tenemos una introducción que nos explica cómo usar esos esquemas y en la pestaña "Schemas" podemos encontrarlos todos. Vamos a ver como ejemplo los esquemas "Person" (para personas físicas), "Movie" (para películas) y "Restaurant" (para restaurantes).

Person

Como podemos ver en la imagen, Person deriva de Thing (cosa). Se utiliza para personas vivas, fallecidas o personajes de ficción. Tenemos una tabla con tres columnas. En la primera, "Property", tenemos el nombre de la propiedad (el que debemos poner en la marca HTML). En la segunda, "Expected Type", nos indica el tipo de dato que debemos asignar a esa propiedad (ya sea un texto, una fecha, un lugar...). Por último, en la columna "Description" nos muestra una corta descripción sobre a qué se refiere la propiedad.

Las propiedades están ordenadas por orden alfabético. Podemos ver en la captura por ejemplo como están "address" (para la dirección física de la persona), "birthDate" (para la fecha de nacimiento) o "children" (que se relaciona con otras personas e indica que son hijos o hijas de ésta).

Más abajo, en la misma tabla, podemos ver las propiedades que hereda o comparte con "Thing". Así, "name" (nombre) o "url" son propiedades que tienen el mismo nombre para todas las cosas.

Una vez acabada esta tabla, tenemos otra distinta. Ésta no indica las propiedades de "Person", sino las propiedades de otros esquemas que tienen como tipo de datos la referencia a una persona. Así, tenemos el nombre de la propiedad, en qué esquema aparece y una descripción. Por ejemplo, podemos ver "author" (autor) que aparece en "CreativeWork" (trabajo creativo).

Por último, si nos vamos al final de la página, veremos varios ejemplos de aplicación. Podremos ver cada ejemplo únicamente en HTML, etiquetado con microdatos, en RDFa y en formato JSON-LD. Lo cual resulta extremadamente útil, porque se puede comprobar de un vistazo cómo se aplica este esquema en la práctica.

Por ejemplo en la imagen de arriba tenemos en HTML la ficha de datos de una profesora, con su correo electrónico, su web y dos estudiantes suyos graduados. En la siguiente imagen veremos cómo se podría conseguir aplicar el esquema "Person" a estos datos para que puedan ser analizados semánticamente por un buscador.

La aplicación del esquema es bastante sencilla. Únicamente tenemos que definir al principio con "itemscope itemtype" el esquema al que nos estamos refiriendo. Luego, solamente tenemos que poner "itemprop=Nombre_Propiedad" en la etiqueta donde está contenido el dato que queremos identificar como propiedad. Tenemos más información en la documentación de schema.org.

Movie

Este esquema se utiliza para las películas. Vemos que hereda las propiedades de "CreativeWork", que a la vez comparte las de "Thing". Tiene muy pocas propiedades exclusivas de su tipo, ya que la mayoría son compartidas. Tenemos "actor", "director" y "musicby" para señalar a las personas que han participado en la película. "productionCompany", que indica la compañía que la ha producido. También tenemos "trailer" que como vemos es de tipo "VideoObject", es decir, enlazará a un objeto tipo vídeo que contendrá el tráiler de la película. Por último, vamos a señalar "duration", que indica la duración de la película. La peculiaridad de esta propiedad es que nos indica que debe expresarse en formato "ISO 8601 date format". Éste es un estándar internacional para fechas y tiempos. Si pulsamos en el enlace nos lleva a una página en Wikipedia donde nos enseña a usarlo.

Abajo de la página del esquema volvemos a encontrar algunos ejemplos de aplicación.

Restaurant

El esquema "Restaurant" tiene una característica que no habíamos visto antes, y es que no tiene ninguna propiedad propia. Hereda las propiedades de "FoodEstablishment" (Establecimiento de comida), que a su vez hereda de "LocalBusiness" (Comercio local), "Place" (Lugar) y "Thing" (Cosa). Simplemente si todas las propiedades pensadas para un restaurante se pueden aplicar también a cualquier establecimiento de comida, no hay necesidad de repetirlas. Se crea el esquema para tener una referencia específica para los restaurantes, pero sin propiedades inherentes. Queda abierta la posibilidad de que en el futuro se agregue alguna.

También podemos observar como la propiedad "acceptsReservations" (acepta reservas) puede indicarse como texto, booleano o URL. Si se pone como texto, se pueden indicar las peculiaridades de la reserva. Un booleano es un dato con dos valores, en este caso, sí o no. Por último, podemos indicar directamente la URL donde se realizan las reservas.

El resto de información que nos muestra, es similar al visto en los dos ejemplos anteriores.

W3C

El W3C (World Wide Web Consortium) es una comunidad internacional en la que se trabaja para marcar los estándares de la Web. Tienen una página donde recomiendan lo que llaman "Buenas Ontologías", ya que están bien documentadas y son muy utilizadas. En este apartado analizaremos tres de ellas: Dublin Core, FOAF y SIOC.

Dublin Core (DC)

Dublin Core es un vocabulario RDFS sencillo para describir metadatos genéricos. Suele utilizar los prefijos "dc:" y "dcterm:". Está dividido en dos vocabularios, elementos DC y términos DC.

Elementos DC

Los elementos DC contienen 15 propiedades. Las propiedades son contributor, coverage, creator, date, description, format, identifier, language, publisher, relation, rights, source, subject, title y type. En esta página se puede ver una descripción de cada una de ellas.

En la imagen podemos ver la ficha de la propiedad "creator". Podemos ver en la definición que esta propiedad se refiere a la entidad primaria responsable de la creación de un recurso. Por ejemplo, el autor de un libro podríamos etiquetarlo como "dc:creator".

Términos DC

Los términos DC tienen 22 clases y 55 propiedades. En esta página podemos encontrar la descripción de cada una de las propiedades.

En la imagen podemos ver la ficha de la propiedad "language". Como su definición nos explica, indica el idioma en el que se encuentra el recurso. Si, por ejemplo, el idioma de un recurso fuera el castellano, podríamos ponerlo en HTML así:

<span dcterm:language>Castellano</span>

Friend Of A Friend (FOAF)

Friend Of A Friend es una ontología utilizada para describir personas y relaciones sociales en la Web. Está enfocada básicamente en la presencia de las personas en el mundo virtual, con muchas propiedades relaciones con su identidad y actividad online. No tiene nada sobre relaciones familiares o direcciones físicas. Utiliza el prefijo "foaf:".

Podemos utilizar la herramienta FOAF-a-Matic para crear un archivo que use esta ontología simplemente rellenando un formulario con los datos. La herramienta generará la información estructurada y etiquetada semánticamente de forma automática.

FOAF utiliza 19 clases, 44 propiedades de objetos y 27 propiedades de tipos de datos. Podemos ver una descripción de todo esto en su especificación. En la siguiente tabla tenemos la relación de clases y propiedades.

En esta imagen vemos la ficha de la clase "foaf:Person". Nos muestra las propiedades que tiene, la relación con la que se usa, de qué es subclase y con qué clases es incompatible ("Disjoint" quiere decir por ejemplo que un mismo individuo no puede ser "Person" y "Project" al mismo tiempo). Además, nos muestra una descripción sobre a qué se refiere con esta clase. Podemos leer que representa a las personas, lo mismo si están vivas, fallecidas, son reales o imaginarias.

En la siguiente imagen podemos ver la ficha de una de las propiedades de "foaf:Person", que es "foaf:workplaceHomepage". Esta propiedad se refiere a la página web del lugar de trabajo de la persona en cuestión. Nos aparece el dominio y el rango. El dominio se refiere desde dónde tiene que partir una propiedad (en este caso, de una persona). Por el contrario, el rango se refiere a dónde tiene que apuntar una propiedad (en este caso, a un documento). Incluso nos remarca un ejemplo de uso donde podemos comprobar como se aplica esta propiedad a una persona de forma práctica.

Socially Interconnected Online Communities (SIOC)

Socially Interconnected Online Communities es una ontología utilizada para describir comunidades online como foros, blogs, listas de correo, wikis, etc. Complementa a FOAF haciendo hincapié en la descripción de los productos de esas comunidades (posts, respuestras, hilos y demás). Utiliza el prefijo "sioc:".

Wordpress y Drupal tienen un módulo que soporta esta ontología. Puedes ver un listado completo de herramientas que la utilizan aquí.

SIOC utiliza 17 clases, 61 propiedades de objetos y 25 propiedades de tipos de datos. Podemos ver una descripción de todo esto en su especificación. En la siguiente tabla tenemos la relación de clases y propiedades.

A continuación en la siguiente imagen podemos ver la descripción de la clase "Forum". Es la clase propia de los foros. Nos indica que es subclase de "sioc:Container" (Contenedor), en qué rangos y dominios está incluido (explicados en el apartado anterior). Además incluye una extensa descripción sobre cómo son tratados los foros.

También vamos a ver un ejemplo de cómo se describe una propiedad en la especificación. En este caso, "sioc:administrator_of" (administrador de). La propiedad especifica que la cuenta de usuario es administradora de un sitio concreto. Por eso el dominio es "sioc:UserAccount" y el rango es "sioc:Site". Además nos indica que tiene una propiedad inversa, "sioc:has_administrator".

Por último os proponemos revisar el ejemplo expuesto en su especificación. En este caso, se describe la entrada de un blog.

<sioc:Post rdf:about="http://johnbreslin.com/blog/2006/09/07/creating-connections-between-discussion-clouds-with-sioc/">
    <dcterms:title>Creating connections between discussion clouds with SIOC</dcterms:title>
    <dcterms:created>2006-09-07T09:33:30Z</dcterms:created>
    <sioc:has_container rdf:resource="http://johnbreslin.com/blog/index.php?sioc_type=site#weblog"/>
    <sioc:has_creator>
        <sioc:UserAccount rdf:about="http://johnbreslin.com/blog/author/cloud/" rdfs:label="Cloud">
            <rdfs:seeAlso rdf:resource="http://johnbreslin.com/blog/index.php?sioc_type=user&amp;sioc_id=1"/>
        </sioc:UserAccount>
    </sioc:has_creator>
    <sioc:content>SIOC provides a unified vocabulary for content and interaction description: a semantic layer that can co-exist with existing discussion platforms.</sioc:content>
    <sioc:topic rdfs:label="Semantic Web" rdf:resource="http://johnbreslin.com/blog/category/semantic-web/"/>
    <sioc:topic rdfs:label="Blogs" rdf:resource="http://johnbreslin.com/blog/category/blogs/"/>
    <sioc:has_reply>
        <sioc:Post rdf:about="http://johnbreslin.com/blog/2006/09/07/creating-connections-between-discussion-clouds-with-sioc/#comment-123928">
            <rdfs:seeAlso rdf:resource="http://johnbreslin.com/blog/index.php?sioc_type=comment&amp;sioc_id=123928"/>
        </sioc:Post>
    </sioc:has_reply>
</sioc:Post>

results matching ""

    No results matching ""