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" .