Sie sind auf Seite 1von 38

Asignatura Web Semntica y Linked Data.

Facultad de Informtica. UPM

Septiembre 2014

RDF, RDF Schema y SPARQL

Ral Garca-Castro, scar Corcho


Facultad de Informtica, Universidad Politcnica de Madrid
Campus de Montegancedo sn, 28660 Boadilla del Monte, Madrid
http://www.oeg-upm.net
{rgarcia,ocorcho}@fi.upm.es

License
This work is licensed under the Creative Commons
Attribution Non Commercial Share Alike License
You are free:
- to Share to copy, distribute and transmit the work
- to Remix to adapt the work

Under the following conditions


- Attribution You must attribute the work by inserting
[source http://www.oeg-upm.net/] at the footer of each
reused slide
a credits slide stating: These slides are partially based
on RDF, RDF Schema y SPARQL by R. Garca-Castro,
O. Corcho
- Non-commercial
- Share-Alike
2

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

ndice
Introduccin general
RDF
- Componentes de RDF
- Serializacin de RDF

RDF Schema
- Componentes de RDFS
- Serializacin de RDFS

RDF y RDF Schema


RDF: Resource Description Framework
Objetivo
- Describir la semntica de la informacin de manera
procesable por mquinas
Database

XML

Esquema

Datos

RDF(S)

RDF Schema

RDF

Recomendacin del W3C


- Modelo
- Sintaxis
- Semntica
4

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

RDF(S) en la Web Semntica

Source: http://w3.org/DesignIssues/diagrams/sweb-stack/2006a.png

ndice
Introduccin general
RDF
- Componentes de RDF
- Serializacin de RDF

RDF Schema
- Componentes de RDFS
- Serializacin de RDFS

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Componentes de RDF

Tambin conocido como triples (tripletas)

Ral es un miembro del Ontology Engineering Group

- [Sujeto, Predicado, Objeto]

- [Ral, is member of, Ontology Engineering Group]


Ral

Ontology Engineering Group

El nombre completo de Ral es Ral Garca Castro


- [Ral, has full name, Ral Garca Castro]
Ral

is member of

has full name

Ral Garca Castro

Ral naci el 26 de Diciembre de 1975


- [Ral, was born, 26 December 1975]
Ral

has birth date

26 December 1975

La pgina web del Ontology Engineering Group es http://www.oeg-upm.net/


- [Ontology Engineering Group, has web page, http://www.oeg-upm.net/]
Ontology Engineering Group

has web page

http://www.oeg-upm.net/
7

Grafos y Datasets RDF


Los grafos RDF son conjuntos de tripletas
has full name

Ral Garca Castro

has birth date

26 December 1975

Ral

is member of
has web page

Ontology Engineering Group

http://www.oeg-upm.net/

Y un conjunto de grafos conforma un RDF Dataset


(en RDF1.1)
- Hay un grafo for defecto (default graph)
- Y cero o ms grafos con nombre (named graph)
8

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Literales RDF
Los objetos de las tripletas pueden ser literales (cadenas de
caracteres)
- El sujeto y el predicado son siempre recursos

Los literales pueden estar tipados


- Normalmente usando XML Schema datatypes
- Y algunos extra (RDF1.1)
rdf:langString (por ejemplo, Spain@en)
rdf:HTML and rdf:XMLLiteral
has full name

Ral Garca Castro

has birth date

1975-12-26^^xsd:date

Ral

is member of
has web page

Ontology Engineering Group

http://www.oeg-upm.net/

Literales RDF. Tipos de datos comunes (I)

10

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Literales RDF. Tipos de datos comunes (II)

11

IRIs y URIs en RDF


Componentes de una URI (RFC3986) o IRI (RFC3987)
- http://www.oeg-upm.net:8080/Info/People?position=current#Raul
Scheme

Authority

Path

Query

Fragment

-URIs vs IRIs en RDF:


- Uniform vs Internationalized Resource Identifier
- Las IRIs pueden contener caracteres Unicode
http://www.oeg-upm.net/Properties#hasFullName

Ral Garca Castro

http://www.oeg-upm.net/People#Raul
http://www.oeg-upm.net/Properties#hasBirthDate 1975-12-26^^xsd:date
http://www.oeg-upm.net/Properties#isMemberOf
http://www.oeg-upm.net/Properties#hasWebPage

http://www.oeg-upm.net/Organization#OEG

http://www.oeg-upm.net/

12

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Espacios de nombres (namespaces) en RDF


Las IRIs bajo un namespace se llaman vocabularios
Prefijo

URI

people

http://www.oeg-upm.net/People#

organization

http://www.oeg-upm.net/Organization#

properties

http://www.oeg-upm.net/Properties#

rdf

http://www.w3.org/1999/02/22-rdf-syntax-ns#

rdfs

http://www.w3.org/2000/01/rdf-schema#

xsd

http://www.w3.org/2001/XMLSchema#

properties:hasFullName

Ral Garca Castro

people:Raul
1975-12-26^^xsd:date

properties:hasBirthDate

properties:isMemberOf

organization:OEG

properties:hasWebPage

http://www.oeg-upm.net/
13

Clasificando recursos
La propiedad rdf:type se usa para clasificar recursos
en categoras/clases
category:Person
rdf:type

people:Raul

Clases

category:Animal
rdf:type

people:Oscar

rdf:type

people:Missy

rdf:type

people:Fantasma

Instancias

La clase rdf:Property es la clase de todas las


propiedades
rdf:Property
rdf:type

properties:hasFullName

rdf:type

rdf:type

14

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Nodos en blanco
Valores de propiedades estructuradas
En ocasiones, se utilizan estructuras de datos ms
complejas que las tripletas (aunque todo se sigue
reduciendo a tripletas)
Esta URI intermedia
realmente no necesita
tener un nombre especfico
properties:hasFullName

people:Raul
properties:firstName

properties:lastName

Ral

Garca Castro

15

Contenedores RDF
Describen grupos de cosas
- Un libro fue creado por varios autores
- Una clase es impartida por varias personas
- etc.

RDF tiene varios tipos de contenedores


- rdf:Bag. Grupo de recursos o literales, incluyendo duplicados,
donde el orden no es significativo
- rdf:Seq. Grupo de recursos o literales, incluyendo duplicados,
donde el orden es significativo
- rdf:Alt. Grupo de recursos o literales que son alternativas
(normalmente para un valor simple de una propiedad)
properties:hasEmailAddress

rdf:type

people:Raul

rdf:Seq
rdf:_1

rgarcia@fi.upm.es

rdf:_2

r.garcia@upm.es
16

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Colecciones en RDF
Grupos de cosas representadas como una lista
estructurada
- A container with limits

Construido usando rdf:List, rdf:first, rdf:rest, y


rdf:List
rdf:nil
rdf:type
university:hasTeacher

rdf:first

university:Course1

people:Raul
rdf:next
rdf:first

people:Oscar
rdf:next

rdf:nil

17

Reificacin en RDF
Tripletas en RDF sobre otras tripletas en RDF
- Ral cree que la fecha de nacimiento de Oscar es el 2 de febrero de
1976 y que su direccin de correo electrnico es ocorcho@fi.upm.es

Expresado usando rdf:Statement, rdf:subject, rdf:predicate,


y rdf:object
people:Oscar
modal:believes

people:Raul

properties:hasEmailAddress

ocorcho@fi.upm.es

properties:hasBirthDate

1976-02-02^^xsd:date

Reificacin en RDF
- Permite expresar creencias (y otras modalidades)
- Permite expresar modelos de confianza, firmas digitales, etc.
- Permite expresar metadatos sobre metadatos

18

CC BY-NC-SA

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Valor principal de un valor estructurado


Algunas veces uno de los valores de un valor
estructurado es el principal
- El peso de un artculo es 2.4 kilogramos
- El valor principal es 2.4, lo que se expresa con rdf:value

Se usa muy poco

product:hasWeight

product:Item1
rdf:value

2.4^^xsd:float

units:hasWeightUnit

units:Kilogram

19

Resumen del vocabulario RDF


Clases

Propiedades

Individuos

Classification
rdf:Property

rdf:type

Containers
rdf:Bag

rdf:_1, rdf:_2, rdf:_3

rdf:Seq
rdf:Alt
Collections
rdf:List

rdf:first

rdf:nil

rdf:rest
Reification
rdf:Statement

rdf:subject
rdf:predicate
rdf:object

Values
rdf:XMLLiteral

rdf:value
20

CC BY-NC-SA

10

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Serializaciones en RDF

Varias serializaciones (muchas de ellas finalmente aprobadas en Feb2014)


-
-
-
-
-
-
-

RDF/XML (www.w3.org/TR/rdf-syntax-grammar/)
Turtle (http://www.w3.org/TR/turtle/)
N-Triples (http://www.w3.org/TR/n-triples/)
TriG (http://www.w3.org/TR/trig/)
RDFa (http://www.w3.org/TR/xhtml-rdfa-primer/)
JSON-LD (http://www.w3.org/TR/json-ld/)
N-Quads (http://www.w3.org/TR/n-quads/)

Importante: las serializaciones permiten diferentes variantes sintcticas.


- El orden en el que las tripletas RDF aparecen en un documento no es relevante

21

Serializaciones en RDF. RDF/XML


people:hasColleague

people:Oscar
people:hasName

scar Corcho Garca

people:hasColleague

people:Asun

people:Raul

people:hasHomePage

http://www.oeg-upm.net/

<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:person="http://www.ontologies.org/ontologies/people#"
xmlns="http://www.oeg-upm.net/ontologies/people#"
xml:base="http://www.oeg-upm.net/ontologies/people">
<rdf:Property rdf:about="http://www.ontologies.org/ontologies/people#hasHomePage"/>
<rdf:Property rdf:about="http://www.ontologies.org/ontologies/people#hasColleague"/>
<rdf:Property rdf:about="http://www.ontologies.org/ontologies/people#hasName"/>
<rdf:Description rdf:about="#Raul"/>
<rdf:Description rdf:about="#Asun">
<person:hasColleague rdf:resource="#Raul"/>
<person:hasHomePage>http://www.fi.upm.es</person:hasHomePage>
</rdf:Description>
<rdf:Description rdf:about="#Oscar">
<person:hasColleague rdf:resource="#Asun"/>
<person:hasName>Oscar Corcho Garca</person:hasName>
</rdf:Description>
</rdf:RDF>

22

CC BY-NC-SA

11

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Serializaciones en RDF. Turtle


people:hasColleague

people:Oscar
people:hasName

scar Corcho Garca

people:hasColleague

people:Asun

people:Raul

people:hasHomePage

http://www.oeg-upm.net/

@base <http://www.oeg-upm.net/ontologies/people/ >


@prefix vocab: <http://www.ontologies.org/ontologies/people#>
:Asun vocab:hasColleague :Raul ;
vocab:hasHomePage http://www.fi.upm.es/.
:Oscar vocab:hasColleague :Asun ;
vocab:hasName scar Corcho Garca.

23

RDF inference. Entailment rules

24

CC BY-NC-SA

12

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Exercise

Objective
Get used to the different syntaxes of RDF
Tasks
Take the text of an RDF file and create its corresponding graph
Take an RDF graph and create its corresponding RDF/XML and Turtle files
Note: you can use http://rdf.greggkellogg.net/distiller to check them

25

Exercise 1.a. Create a graph from a file

Open the file StickyNote_PureRDF.rdf


Create the corresponding graph from it
Compare your graph with those of your colleagues

26

CC BY-NC-SA

13

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Exercise 1.b. Create files from a graph


Transform the following graph into the RDF/XML
and Turtle syntaxes
hasMeasurement
includes

Measurement8401

Sensor029
hasTemperature

Class01
includes

29

atTime

2010-06-12T12:00:12

Computer101
hasOwner

User10A
hasName
Pedro

28

ndice
Introduccin general
RDF
- Componentes de RDF
- Serializacin de RDF

RDF Schema
- Componentes de RDFS
- Serializacin de RDFS

30

CC BY-NC-SA

14

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

RDF Schema
Ampla RDF
Permite la descripcin de clases de recursos y sus propiedades
Aade restricciones a los modelos
rdfs:member
rdfs:seeAlso
rdfs:isDefinedBy
rdf:value

rdfs:label
rdfs:comment

rdfs:Resource

rdf:first

rdf:subject
rdf:predicate
rdf:object

rdf:rest

rdf:type
rdfs:subclassOf

rdfs:subPropertyOf

rdf:List

rdf:Statement

rdfs:Container

rdf:Property

rdfs:Class

rdfs:Literal

rdfs:domain
rdfs:range

rdf:Bag

rdf:Seq

rdf:Alt

rdf:nil

rdfs:ContainerMembershipProperty

rdfs:Datatype

rdf:XMLLiteral

rdfs:member
rdf:_1

rdf:_2

rdf:_3
31

Descripcin de clases
RDF(S)
rdfs:Class
rdf:type

Vocabulario

person:Person
rdfs:subClassOf

person:Professor
rdfs:subClassOf

person:FullProfessor

person:AssociateProfessor
rdfs:subClassOf

person:InterimAssociateProfessor

Datos

person:hasColleague

data:Oscar
person:hasName

scar Corcho Garca

person:hasColleague

data:Asun

data:Raul

person:hasHomePage

http://www.oeg-upm.net/
32

CC BY-NC-SA

15

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Descripcin de individuos
RDF(S)
rdfs:Class
rdf:type

Vocabulario

person:Person
rdfs:subClassOf

person:Professor
rdfs:subClassOf

person:FullProfessor

person:AssociateProfessor
rdfs:subClassOf

person:InterimAssociateProfessor
rdf:type

Datos

rdf:type
person:hasColleague

data:Oscar

rdf:type

person:hasColleague

data:Asun
person:hasHomePage

person:hasName

scar Corcho Garca

data:Raul

http://www.oeg-upm.net/
33

Descripcin de propiedades
RDF(S)
rdf:Property

rdfs:Class
rdf:type

Vocabulario

rdfs:range

rdfs:Literal

rdf:type

rdfs:domain

person:Person

person:hasName

rdfs:subClassOf

rdfs:domain
rdfs:range

person:Professor

person:hasColleague

rdfs:subClassOf
rdfs:domain

person:FullProfessor

person:hasHomePage

person:AssociateProfessor
rdfs:subClassOf

person:InterimAssociateProfessor
rdf:type

Datos

rdf:type
person:hasColleague

data:Oscar
person:hasName

scar Corcho Garca

rdf:type

person:hasColleague

data:Asun

data:Raul

person:hasHomePage

http://www.oeg-upm.net/
34

CC BY-NC-SA

16

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Anotacin de recursos

rdfs:label

rdfs:label

data:Raul

rdfs:comment

Ral Garca

Ral

Resource for Ral Garca Castro

rdfs:seeAlso

http://delicias.dia.fi.upm.es/~rgarcia/
rdfs:isDefinedBy

http://delicias.dia.fi.upm.es/~rgarcia/foaf.rdf

35

Resumen del vocabulario RDFS


Clases

Propiedades

Individuos

Classification
rdfs:Resource

rdfs:subClassOf

rdfs:Class
Properties
rdfs:domain
rdfs:range
rdfs:subPropertyOf
Datatypes
rdfs:Literal
rdfs:Datatype
Containers
rdfs:Container

rdfs:member

rdfs:ContainerMembershipProperty
Annotation
rdfs:label
rdfs:comment
rdfs:seeAlso
rdfs:isDefinedBy
36

CC BY-NC-SA

17

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Serializacin en RDF/XML (1/2)


<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY person "http://www.oeg-upm.net/ontologies/person#" >
]>
<rdf:RDF xmlns="http://www.oeg-upm.net/ontologies/person#"
xml:base="http://www.oeg-upm.net/ontologies/person"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:person="http://www.oeg-upm.net/ontologies/person#">
<rdfs:Property rdf:about="&person;hasColleague">
<rdfs:range rdf:resource="#Person"/>
<rdfs:domain rdf:resource="#Person"/>
</rdfs:Property>
<rdfs:Property rdf:about="&person;hasHomePage">
<rdfs:domain rdf:resource="#FullProfessor"/>
</rdfs:Property>
<rdfs:Property rdf:about="&person;hasName">
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource="&rdfs;Literal"/>
</rdfs:Property>
...

37

Serializacin en RDF/XML (2/2)


...
<rdfs:Class rdf:about="#AssociateProfessor">
<rdfs:subClassOf rdf:resource="#Professor"/>
</rdfs:Class>
<rdfs:Class rdf:about="#FullProfessor">
<rdfs:subClassOf rdf:resource="#Professor"/>
</rdfs:Class>
<rdfs:Class rdf:about="#InterimAssociateProfessor">
<rdfs:subClassOf rdf:resource="#AssociateProfessor"/>
</rdfs:Class>
<rdfs:Class rdf:about="#Person"/>
<rdfs:Class rdf:about="#Professor">
<rdfs:subClassOf rdf:resource="#Person"/>
</rdfs:Class>
<FullProfessor rdf:about="#Asun">
<person:hasHomePage>http://www.fi.upm.es</person:hasHomePage>
<person:hasColleague rdf:resource="#Raul"/>
</FullProfessor>
<AssociateProfessor rdf:about="#Oscar">
<person:hasName>Oscar Corcho Garca</person:hasName>
<person:hasColleague rdf:resource="#Asun"/>
</AssociateProfessor>
<InterimAssociateProfessor rdf:about="#Raul"/>
</rdf:RDF>

38

CC BY-NC-SA

18

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Serializacin en Turtle (1/2)


@base <http://www.oeg-upm.net/ontologies/person> .
@prefix : <http://www.oeg-upm.net/ontologies/person#> .
@prefix person: <http://www.oeg-upm.net/ontologies/person#> .
:hasColleague a rdfs:Property .
rdfs:domain :Person .
rdfs:range :Person ;
:hasHomePage a rdfs:Property .
rdfs:domain :FullProfessor .
:hasName a rdfs:Property .
rdfs:domain :Person ;
rdfs:range rdfs:Literal .

a is equivalent to rdf:type
39

Serializacin en Turtle (2/2)

:Person a rdfs:Class .
:Professor a rdfs:Class ;
rdfs:subClassOf :Person .
:FullProfessor a rdfs:Class ;
rdfs:subClassOf :Professor .
:AssociateProfessor a rdfs:Class ;
rdfs:subClassOf :Professor .
:InterimAssociateProfessor a rdfs:Class ;
rdfs:subClassOf :AssociateProfessor .
:Asun a :FullProfessor ;
:hasHomePage "http://www.fi.upm.es" ;
:hasColleague :Raul .
:Oscar a :AssociateProfessor ;
:hasName "Oscar Corcho Garca" ;
:hasColleague :Asun .
:Raul a :InterimAssociateProfessor .

a is equivalent to rdf:type
40

CC BY-NC-SA

19

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

RDF(S) inference. Entailment rules

41

RDF(S) inference. Additional inferences

42

CC BY-NC-SA

20

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Y de representacin taxnomica Qu podemos usar?

Clases
Instancias
Podemos hacer instancias de instancias?
Subclase de
Propiedades de instancia
Propiedades de clase
Dominios y rangos (asociados a clases o generales)
Conocimiento disjunto
Conocimiento exhaustivo
Reificacin para relaciones n-arias
Negacin
43

RDF(S) limitations
RDFS too weak to describe resources in sufficient detail
- No localised range and domain constraints
Cant say that the range of hasChild is person when applied to
persons and elephant when applied to elephants

- No existence/cardinality constraints
Cant say that all instances of person have a mother that is also a
person, or that persons have exactly 2 parents

- No boolean operators
Cant say or, not, etc.

- No transitive, inverse or symmetrical properties


Cant say that isPartOf is a transitive property, that hasPart is the
inverse of isPartOf or that touches is symmetrical

Difficult to provide reasoning support


- No native reasoners for non-standard semantics
- May be possible to reason via FOL axiomatisation

44

CC BY-NC-SA

21

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Ejemplo de algunas RDF APIs


Libreras RDF para distintos lenguajes:
- Java, Python, C, C++, C#, .Net, Javascript, Tcl/Tk, PHP, Lisp,
Obj-C, Prolog, Perl, Ruby, Haskell
- Un listado disponible en http://www.w3.org/2001/sw/wiki/Tools

Multilenguaje:
- Redland RDF Libraries (C, Perl, PHP, Python and Ruby):
http://librdf.org

Java:

- Jena: http://jena.apache.org/
- Sesame: http://openrdf.callimachus.net/

PHP:

- RAP - RDF API for PHP:


http://wifo5-03.informatik.uni-mannheim.de/bizer/rdfapi/
index.html

Python:
- RDFLib: https://github.com/RDFLib
- Pyrple: http://infomesh.net/pyrple/
45

Ejercicio

Objetivo
Entender las caractersticas de RDF(S) para implementar
vocabularios y datos, incluyendo sus limitaciones
Tareas
A partir de una descripcin de dominio, crear el grafo RDF(S)
Primero incluir slo el vocabulario del dominio
Despus incluir referencias a RDF y a los vocabularios RDFS
46

CC BY-NC-SA

22

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Ejercicio 1. Descripcin del dominio


Cierta ubicacin puede ser un lugar de inters.
Los lugares de inters pueden ser lugares tursticos o
establecimientos, pero no ambos a la vez.
Los lugares tursticos pueden ser palacios, iglesias, capillas y
catedrales.
Los establecimientos pueden ser hoteles, hostales, o viviendas en
alquiler.
Un lugar est ubicado en una localidad, que puede ser una ciudad,
un pueblo o una ciudad cntrica.
Un lugar de inters tiene direccin postal, que incluye el nombre de
la calle y el nmero.
Las localidades tienen un cierto nmero de habitantes.
Las localidades pertenecen a una cierta provincia.
Covarrubias es un pueblo con 634 habitantes en la provincia de
Burgos.
El restaurante El Galo est ubicado en Covarrubias, en la calle
Mayor, nmero 5.
Una de las iglesias de Covarrubias est en la calle Santo Toms.
47

El Lenguaje de Consultas
SPARQL 1.1
Ral Garca-Castro, Oscar Corcho
Facultad de Informtica, Universidad Politcnica de Madrid
Campus de Montegancedo sn, 28660 Boadilla del Monte, Madrid
http://www.oeg-upm.net
ocorcho@fi.upm.es

CC BY-NC-SA

23

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Lenguajes de consulta sobre RDF(S)


Aplicacin

Aplicacin

Consultas en SQL

Consultas en SPARQL

Base de
datos
relacional

RDF(S)
OWL

Soportado por las APIs y triple stores ms relevantes


- Jena, Sesame, etc.
- Virtuoso, Stardog, 4store, Fuseki, etc.
-

50

Consultas sobre RDF. Ejemplos (I)


Ejemplo de grafo RDF
person:hasColleague

data:Oscar

person:hasColleague

data:Asun

person:hasName

data:Raul

person:hasHomePage

scar Corcho Garca

http://www.oeg-upm.net/

Consulta: Dime las personas que tienen a Ral


como colega
person:hasColleague

data:Raul

- Resultado: data:Asun

51

CC BY-NC-SA

24

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Consultas sobre RDF. Ejemplos (II)


Consulta: Dime qu relaciones existen entre Oscar y
Asun
?

data:Asun

data:Oscar

- Resultado: person:hasColleague

Consulta: Dime la pgina Web de los colegas de Oscar


person:hasColleague

data:Oscar
person:hasHomePage

- Resultado: http://www.oeg-upm.net/
52

SPARQL tambin es un protocolo

SPARQL es un lenguaje de consulta


Encuentra nombres y websites de colaboradores de PlanetRDF:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?website
FROM <http://planetrdf.com/bloggers.rdf>
WHERE {
?person foaf:weblog ?website .
?person foaf:name ?name .
?website a foaf:Document }

... Y un Protocolo

http://.../qps?query-lang=http://www.w3.org/TR/rdf-sparql-query/
&graph-id=http://planetrdf.com/bloggers.rdf&query=PREFIXfoaf:
<http://xmlns.com/foaf/0.1/...

Servicios ejecutando consultas SPARQL sobre un conjunto de grafos


Un protocolo de transporte para invocar al servicio
Descripcin del servicio con tecnologas de servicios Web

54

CC BY-NC-SA

25

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Conclusiones SPARQL
Servicios del protocolo SPARQL

- Permite a los usuarios (humanos u otros) hacer consultas usando SPARQL


- Los resultados son devueltos normalmente en uno o ms formatos
procesables por mquinas

Listado de puntos de acceso (endpoints) de SPARQL


- http://esw.w3.org/topic/SparqlEndpoints
- http://sparqles.okfn.org/

Acceso programtico usando libreras:

- ARC, RAP, Jena, Sesame, Javascript SPARQL, PySPARQL, etc.

Ejemplos:
Proyecto

Conclusin

DBpedia

http://dbpedia.org/sparql

AragoDBpedia

http://opendata.aragon.es/sparql

Biblioteca Nacional

http://datos.bne.es/

Bathing Water Quality UK

http://environment.data.gov.uk/lab/
sparql.html

Musicbrainz

http://dbtune.org/musicbrainz/snorql/
55

Ejemplo: consultando DBpedia


Gente nacida en Berln antes de 1900

56

CC BY-NC-SA

26

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Ejemplo: consultando DBpedia

57

Tambin consultas ms espaolas


Qu toreros han estado casados con cantantes de
copla? Aqu
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT ?torero ?cantante WHERE{
?torero rdf:type dbpedia-owl:BullFighter .
?torero dbpedia-owl:spouse ?cantante .
?cantante dcterms:subject <http://es.dbpedia.org/resource/
Categora:Cantantes_de_coplas>
}

58

CC BY-NC-SA

27

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Un consulta sencilla en SPARQL


Data:
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix : <http://example.org/book/> .
:book1 dc:title "SPARQL Tutorial" .
Query:
SELECT ?title
WHERE
{
<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title .
}

Query result:

title
"SPARQL Tutorial"

Un patrn de consulta se ajusta contra los datos en RDF


En todo caso un patrn puede ajustarse para proporcionar una solucin
La secuencia de soluciones se puede filtrar
Se aplica uno de los siguientes constructores: SELECT, CONSTRUCT,
DESCRIBE, ASK
59

Varios patrones de grafos: joins


@prefix foaf:
_:a
_:a
_:b
_:b
_:c

foaf:name
foaf:mbox
foaf:name
foaf:mbox
foaf:mbox

PREFIX
SELECT
WHERE
{ ?x
?x

<http://xmlns.com/foaf/0.1/> .
"Johnny Lee Outlaw" .
<mailto:jlow@example.com> .
"Peter Goodguy" .
<mailto:peter@example.org> .
<mailto:carol@example.org> .

foaf:
<http://xmlns.com/foaf/0.1/>
?name ?mbox
foaf:name ?name .
foaf:mbox ?mbox }

name

mbox

"Johnny Lee Outlaw"

<mailto:jlow@example.com>

"Peter Goodguy"

<mailto:peter@example.org>
60

CC BY-NC-SA

28

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Literales RDF
@prefix
@prefix
@prefix
@prefix
:x
:y
:z

dt:
ns:
:
xsd:

ns:p
ns:p
ns:p

<http://example.org/datatype#> .
<http://example.org/ns#> .
<http://example.org/ns#> .
<http://www.w3.org/2001/XMLSchema#> .
"cat"@en .
"42"^^xsd:integer .
"abc"^^dt:specialDatatype .

SELECT ?v WHERE { ?v ?p "cat" }

SELECT ?v WHERE { ?v ?p "cat"@en }

<http://example.org/ns#x>
v

SELECT ?v WHERE { ?v ?p 42 }

<http://example.org/ns#y>
SELECT ?v WHERE { ?v ?p "abc"^^<http://example.org/datatype#specialDatatype> }

v
<http://example.org/ns#z>
61

Nodos en blanco

@prefix foaf:
_:a
_:b

foaf:name
foaf:name

<http://xmlns.com/foaf/0.1/> .
"Alice" .
"Bob" .

PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
SELECT ?x ?name
WHERE { ?x foaf:name ?name }

name

_:c

"Alice"

_:d

"Bob"

name

_:r

"Alice"

_:s

"Bob"

62

CC BY-NC-SA

29

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Grupos de patrones
PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE { { ?x foaf:name ?name . }
{ ?x foaf:mbox ?mbox . }
}

SELECT ?x
WHERE {}

PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE { { ?x foaf:name ?name . }
{ ?x foaf:mbox ?mbox . FILTER regex(?name, "Smith")}
}

63

Patrones opcionales (left-outer-join)


@prefix foaf:
@prefix rdf:

<http://xmlns.com/foaf/0.1/> .
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

_:a
_:a
_:a
_:a

rdf:type
foaf:name
foaf:mbox
foaf:mbox

foaf:Person .
"Alice" .
<mailto:alice@example.com> .
<mailto:alice@work.example> .

_:b
_:b

rdf:type
foaf:name

foaf:Person .
"Bob" .

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


SELECT ?name ?mbox
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox }
}

name

mbox

"Alice"

<mailto:alice@example.com>

"Alice"

<mailto:alice@work.example>

Bob"

64

CC BY-NC-SA

30

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Patrones opcionales mltiples


@prefix foaf:

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

_:a
_:a

foaf:name
foaf:homepage

"Alice" .
<http://work.example.org/alice/> .

_:b
_:b

foaf:name
foaf:mbox

"Bob" .
<mailto:bob@work.example> .

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


SELECT ?name ?mbox ?hpage
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox } .
OPTIONAL { ?x foaf:homepage ?hpage }
}

name

mbox

hpage

"Alice"

<http://work.example.org/alice/>

Bob"

<mailto:bob@work.example>

65

Patrones de alternativas
@prefix dc10:
@prefix dc11:
_:a
_:a
_:b
_:b
_:c
_:c
PREFIX
PREFIX
SELECT
WHERE

<http://purl.org/dc/elements/1.0/> .
<http://purl.org/dc/elements/1.1/> .

dc10:title
dc10:creator
dc11:title
dc11:creator
dc10:title
dc11:title

"SPARQL Query Language Tutorial" .


"Alice" .
"SPARQL Protocol Tutorial" .
"Bob" .
"SPARQL" .
"SPARQL (updated)" .

dc10: <http://purl.org/dc/elements/1.0/>
dc11: <http://purl.org/dc/elements/1.1/>
?title
{ { ?book dc10:title ?title } UNION
{ ?book dc11:title ?title } }

title
"SPARQL Protocol Tutorial"
"SPARQL"
"SPARQL (updated)"
"SPARQL Query Language Tutorial"

SELECT ?x ?y
WHERE { { ?book dc10:title ?x } UNION
{ ?book dc11:title ?y } }

y
"SPARQL (updated)"
"SPARQL Protocol Tutorial"

"SPARQL"
"SPARQL Query Language Tutorial"

SELECT ?title ?author


WHERE
author
{ { ?book dc10:title ?title . ?book dc10:creator ?author }
"Alice"
UNION
{ ?book dc11:title ?title . ?book dc11:creator ?author }} Bob

title
"SPARQL Protocol Tutorial"
"SPARQL Query Language Tutorial"

66

CC BY-NC-SA

31

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Grafos con nombre


# Named
@prefix
@prefix
@prefix

graph: http://example.org/foaf/aliceFoaf
foaf:<http://.../foaf/0.1/> .
rdf:<http://.../1999/02/22-rdf-syntax-ns#> .
rdfs:<http://.../2000/01/rdf-schema#> .

_:a
_:a
_:a

foaf:name
foaf:mbox
foaf:knows

"Alice" .
<mailto:alice@work.example> .
_:b .

_:b
_:b
_:b
_:b

foaf:name
foaf:mbox
foaf:nick
rdfs:seeAlso

"Bob" .
<mailto:bob@work.example> .
"Bobby" .
<http://example.org/foaf/bobFoaf> .

<http://example.org/foaf/bobFoaf>
rdf:type
foaf:PersonalProfileDocument .
# Named
@prefix
@prefix
@prefix
_:z
_:z
_:z

graph: http://example.org/foaf/bobFoaf
foaf:<http://.../foaf/0.1/> .
rdf:<http://.../1999/02/22-rdf-syntax-ns#> .
rdfs:<http://.../2000/01/rdf-schema#> .

foaf:mbox
rdfs:seeAlso
foaf:nick

<mailto:bob@work.example> .
<http://example.org/foaf/bobFoaf> .
"Robert" .

<http://example.org/foaf/bobFoaf>
rdf:type
foaf:PersonalProfileDocument .

67

Grafos con nombre


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?src ?bobNick
FROM NAMED <http://example.org/foaf/aliceFoaf>
FROM NAMED <http://example.org/foaf/bobFoaf>
WHERE
{
GRAPH ?src
{ ?x foaf:mbox <mailto:bob@work.example> .
?x foaf:nick ?bobNick
}
}

src

bobNick

<http://example.org/foaf/aliceFoaf>

"Bobby"

<http://example.org/foaf/bobFoaf>

"Robert"

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


PREFIX data: <http://example.org/foaf/>
SELECT ?nick
FROM NAMED <http://example.org/foaf/aliceFoaf>
FROM NAMED <http://example.org/foaf/bobFoaf>
WHERE
{
GRAPH data:bobFoaf {
?x foaf:mbox <mailto:bob@work.example> .
?x foaf:nick ?nick }
}

nick
"Robert"

68

CC BY-NC-SA

32

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Filtros y restricciones
@prefix dc:
@prefix :
@prefix ns:

<http://purl.org/dc/elements/1.1/> .
<http://example.org/book/> .
<http://example.org/ns#> .

:book1
:book1
:book2
:book2

dc:title
ns:price
dc:title
ns:price

"SPARQL Tutorial" .
42 .
"The Semantic Web" .
23 .

PREFIX
SELECT
WHERE

dc: <http://purl.org/dc/elements/1.1/>
?title
{ ?x dc:title ?title
FILTER regex(?title, "^SPARQL")
}

PREFIX
SELECT
WHERE

dc: <http://purl.org/dc/elements/1.1/>
?title
{ ?x dc:title ?title
FILTER regex(?title, "web", "i" )
}

PREFIX
PREFIX
SELECT
WHERE

dc: <http://purl.org/dc/elements/1.1/>
ns: <http://example.org/ns#>
?title ?price
{ ?x ns:price ?price .
FILTER (?price < 30.5)
?x dc:title ?title . }

title
"SPARQL Tutorial"

title
"The Semantic Web"

title

price

"The Semantic Web"

23

69

Tests de valores
Basado en funciones y operadores XQuery 1.0 y
XPath 2.0
XSD boolean, string, integer, decimal, float, double,
dateTime
Anotaciones <, >, =, <=, >= y != para comparacin de
valores
Aplicable a cualquier tipo
BOUND, isURI, isBLANK, isLITERAL
REGEX, LANG, DATATYPE, STR ()
Cualquier funcin extendida

70

CC BY-NC-SA

33

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Modificadores

Modificador de orden: pone las


soluciones en un cierto orden

SELECT ?name
WHERE { ?x foaf:name ?name ; :empId ?emp }
ORDER BY ?name DESC(?emp)

Modificador de proyeccin:
selecciona ciertas variables

SELECT ?name
WHERE
{ ?x foaf:name ?name }

Modificador DISTINCT: asegura


que las soluciones son nicas

SELECT DISTINCT ?name


WHERE { ?x foaf:name ?name }

Modificador reductor: permite la


eliminacin de algunas soluciones
que no son nicas

SELECT REDUCED ?name


WHERE { ?x foaf:name ?name }

Modificador de lmite: restringe el


nmero de soluciones

SELECT ?name
WHERE { ?x foaf:name ?name }
LIMIT 20

Modificador Offset: controla dnde


comienzan las soluciones en la
secuencia global de soluciones

SELECT ?name WHERE { ?x foaf:name ?name }


ORDER BY ?name
LIMIT
5
OFFSET 10

71

Ejercicio 2

Objetivo
Comprender cmo trabajar con consultas SPARQL
Tareas
Crear un conjunto de consultas SPARQL sobre un vocabulario de ejemplo
http://sandbox.linkeddata.es/sparql
En el grafo: http://sandbox.linkeddata.es/Grado_20122013

76

CC BY-NC-SA

34

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Ejemplo de vocabulario

SpatialThing
hasInhabitantNumber
rdfs:Literal
hasNumber

hasStreet

Location

isPlacedIn

rdfs:Literal

Locality

inProvince
PostalAddress

hasAddress

LocationOfInterest

Village

TouristicLocation

Palace

Church

Chapel

Town

City

Establishment

Cathedral

Hotel

Hostel

GuestHouse

77

Queries en este modelo


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

Obtener todas las clases


Obtener las subclases de la clase Establishment
Obtener las instancias de la clase City
Obtener el nmero de habitantes de Santiago de Compostela
Obtener el nmero de habitantes de Santiago de Compostela y de Arzua
Obtener distintos lugares con nmero de habitantes, ordenar los
resultados por el nombre del lugar (ascendente)
Obtener todas las instancias de Locality con su nmero de habitantes (si
existe)
Obtener todos los lugares con ms de 200.000 habitantes
Obtener los datos postales de Pazo_Breogan (calle, nmero, localidad,
provincia)
Obtener las subclases de la clase Location
Obtener las instancias de la clase Locality
Describir el recurso con rdfs:label "Madrid
Construir el grafo RDF(S) que relaciona directamente todos los lugares
tursticos con sus respectivas provincias, usando una nueva propiedad
llamada isIn
Preguntar si hay alguna instancia de Town

78

CC BY-NC-SA

35

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

El vocabulario real final


Literal
hasLatitude
hasAltitude
hasLongitude
isLocatedAPoint

PhysicalPoint

TransportMedium

Train

hasStop
hasDestination
hasOrigin

SpacialThing

City

isPlacedIn

Locality
inProvince

isCon

Location

hasStreet
hasNumber

Ca
r

Bus

Bycicle
isSupportedBy

through
hasPostalCode

TransportInfrastructure
PostalAddress

Village

hasStretch

Literal
LocationOf
International

Literal

hasBegining
hasEnd

hasSurface

hasInhabitantNumber

OnFoot

Stage

nected

By

Town

Route

Railway

Path

hasAddress

Road

Stretch
Establistioment
Hostel

Touristic
Location

Trach

hasDistance

GuestHouse

Literal

hasDenomination

Literal

Hotel
Service

isProvidedBy

Chapel

Palace

Restauration
Service

providesService

BankService
PostalService
Cathedral

Church

HealthService
SecurityService

84

Ejercicio 2

Objetivo
Comprender cmo trabajar con consultas SPARQL algo ms complejas
Tareas
Crear un conjunto de consultas SPARQL sobre Dbpedia
http://dbpedia.org/sparql
En el grafo por defecto

85

CC BY-NC-SA

36

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Consultas a realizar
1. Dame todas las propiedades aplicables a las instancias de la clase Politician
(<http://dbpedia.org/ontology/Politician>)
2. Dame todas las propiedades, exceptuando rdf:type, aplicables a las instancias
de la clase Politician
3. Cuntos valores distintos se pueden encontrar para las propiedades,
exceptuando rdf:type, de las instancias de la clase Politician)?
4. Para cada una de las propiedades, exceptuando rdf:type, aplicables a las
instancias de la clase Politician, dime cuntos valores distintos toman en dichas
instancias.
5. Para cada una de las propiedades, exceptuando rdf:type, aplicables a las
instancias de la clase Politician, dime la media de valores distintos que toman
en dichas instancias.
6. Para cada una de las propiedades, exceptuando rdf:type, aplicables a las
instancias de la clase Politician, dime el mximo nmero de valores distintos
que toman entre todas sus instancias, ordenado de mayor a menor
<<Dicho de otro modo, dime qu propiedades son las ms comunes entre las
instancias de la clase Politician>>

86

Ejercicio 3

Objetivo
Aprender a realizar consultas SPARQL complejas
Tareas
Crear un conjunto de consultas SPARQL sobre un vocabulario real
http://es.dbpedia.org/sparql

90

CC BY-NC-SA

37

Asignatura Web Semntica y Linked Data.


Facultad de Informtica. UPM

Septiembre 2014

Queries avanzadas
1.

Dame todas las propiedades aplicables a las instancias de la clase


Politician (<http://dbpedia.org/ontology/Politician>)

2.

Dame todas las propiedades, exceptuando rdf:type, aplicables a las


instancias de la clase Politician (<http://dbpedia.org/ontology/Politician>)

3.

Cuntos valores distintos se pueden encontrar para las propiedades,


exceptuando rdf:type, de las instancias de la clase Politician (<http://
dbpedia.org/ontology/Politician>)?

4.

Para cada una de las propiedades, exceptuando rdf:type, aplicables a las


instancias de la clase Politician (<http://dbpedia.org/ontology/Politician>),
dime cuntos valores distintos toman en dichas instancias.

5.

Para cada una de las propiedades, exceptuando rdf:type, aplicables a las


instancias de la clase Politician (<http://dbpedia.org/ontology/Politician>),
dime la media de valores distintos que toman en dichas instancias.

6.

Para cada una de las propiedades, exceptuando rdf:type, aplicables a las


instancias de la clase Politician (<http://dbpedia.org/ontology/
Politician>),dime el mximo nmero de valores distintos que toman entre
todas sus instancias, ordenado de mayor a menor
91

Main References
SPARQL 1.1 Overview
http://www.w3.org/TR/sparql11-overview/

SPARQL validator:
http://www.sparql.org/query-validator.html
http://yasgui.laurensrietveld.nl/
SPARQL implementations:
http://esw.w3.org/topic/SparqlImplementations
92

CC BY-NC-SA

38

Das könnte Ihnen auch gefallen