Sparql: Breve introducción

Introducción RDF

Conceptos Básicos RDF

  • Todo es un recurso: tanto las entidades como sus propiedades
  • Todo recurso es una URI.
  • Ternas: <sujeto> <predicado> <objeto> da el valor (objeto) de una propiedad al sujeto.
  • Cualquier Grafo es un conjunto de ternas.

Definiciones

Terna RDF
Formada de la forma <S,P,O> en donde:
  • S es una URI o un nodo blanco.
  • P es una URI
  • O es una URI, un nodo blanco o un literal.
Grafo RDF
Es un conjunto de ternas
Dataset
Es un conjunto de grafos en donde hay un grafo por defecto y un conjunto de Named Graphs.
Named Graph
Es un grafo RDF con una URI asociada.
Nodos en blanco
Recursos que por desconocimiento o utilidad no tienen un nombre (URI) asignado. Se les asigna pues un nombre temporal que no tiene sentido fuera del documento RDF actual.
Se suele utilizar la notación "_:nombre" para darles un nombre temporal.

Vocabulario

  • Es un conjunto de términos con un significado conocido que se utilizan para describir recursos.
  • Tiene un namespace público asociado.
  • Por ejemplo Foaf (Friend of a Friend) se utiliza para describir personas y/o organizaciones: http://www.w3.org/2000/01/rdf-schema#

Representación RDF

  • XML: Ampliamente usado, pero muy verboso y no es específico para definir grafos.
  • N-Triple: lista de ternas terminadas en ".", simple y claro pero muy repetitivo y no permite namespaces.
  • Turtle: Extiende N-Triple para no repetir y admite el uso de namespaces (@prefix). Será el usado en los ejemplos del presente documento.

Figura: Definición de un pequeño grafo en Turtle

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix somePrefix:<http://www.perceive.net/schemas/relationship/> .

<http://example.org/#green-goblin> foaf:name "Green Goblin" .
<http://example.org/#spiderman> foaf:name "Spiderman" .
<http://example.org/#green-goblin> somePrefix:enemyOf <http://example.org/#spiderman> .

Figura: Definición de un pequeño grafo en Turtle con nodos en blanco

@prefix foaf:  <http://xmlns.com/foaf/0.1/> .

<http://example.org/#green-goblin> foaf:name "Green Goblin" .
<http://example.org/#spiderman> foaf:name "Spiderman" .
_:a  foaf:name   "Alice" .
_:b  foaf:name   "Bob" .