Tema 4. Web Semántica y Web de Datos

Transcripción

Tema 4. Web Semántica y Web de Datos
II. Razonamiento con conocimiento preciso
Tema 4
Web Semántica y Web de Datos (Linked Data)
Sistemas Basados en el Conocimiento
Grado en Ingeniería Informática
–1–
Razonamiento con conocimiento preciso
Tema 2. Sistemas Basados en Reglas
Tema 3. Repaso de Lógica
Tema 4. Web Semántica y Web de Datos
–2–
Referencias
•  W3C Semantic Web Activity (http://www.w3.org/
2001/sw/)
•  Foundations of Semantic Web Technologies.
P. Hitzler, M. Krötzsch, S. Rudolph. CRC Press.
2009.
•  A Semantic Web Primer.
Grigoris Antoniou y Frank van Harmelen. The MIT
Press
•  Semantic Web: Concepts, Technologies and
Applications.
K. Breitman, M. A. Casanova, W. Truszkowski.
Springer. 2007
–3–
Índice
• 
• 
• 
• 
• 
Introducción a la Web Semántica
Lenguajes de Ontologías
Consulta de información en la Web Semántica
Herramientas y Aplicaciones
La Web de Datos (Linked Data)
–4–
Índice
•  La Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
–5–
La Web Semántica
•  Visión:
“the idea of having data on the Web defined and linked in a
way that it can be used by machines not just for display
purposes, but for automation, integration and reuse of data
across various applications”
[W3C Semantic Web Activity (http://www.w3.org/2001/sw/)]
•  Para ello
–  Lenguajes para representar conocimiento (ontologías)
•  RDF, RDF(S), OWL
–  Lenguajes de consulta
•  SPARQL
–  Herramientas
–6–
Índice
•  La Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
–7–
RDF
•  Resource Description Framework
•  Recomendación del W3C
–  http://www.w3.org/RDF/
–  http://www.w3.org/TR/rdf11-primer/
•  Expresar información sobre recursos en la Web
–  documentos, personas, objetos físicos y abstractos, etc.
–  se identifican con IRIs ("International Resource Identifier”)
• 
• 
• 
• 
http://www.urjc.es/
http://dbpedia.org/resource/King_Juan_Carlos_University
http://sws.geonames.org/2510769/
http://example.org/bob#me
•  Modelo de datos equivalente a una red semántica
–8–
RDF: Ejemplo
–9–
RDF
•  Un grafo RDF es un conjunto de Sentencias (arcos)
•  Sentencia = tripla (Sujeto, Predicado, Objeto)
–  Sujeto: recurso (URI) o “blank node”
–  Predicado/Propiedad: relación binaria (IRI)
–  Objeto: IRI, literal o “blank node”
Predicado
Sujeto
Objeto
– 10 –
RDF: Ejemplo
– 11 –
RDF: Serialización
•  Varios formatos de representación (serialización)
– 
– 
– 
– 
– 
– 
– 
N-Triples
Turtle
TriG
N-Quads
JSON-LD
RDFa (para incluir en HTML)
RDF/XML
– 12 –
RDF: Serialización. Turtle
<http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/staffid/85740> .
<http://www.example.org/index.html> <http://www.example.org/terms/creation-date> "August 16, 1999" .
<http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/language> "en" .
O más compacto:
@prefix ex: <http://www.example.org/>.
@prefix exstaff: <http://www.example.org/staffid/>.
@prefix exterms: <http://www.example.org/terms/>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.
ex:index.html dc:creator exstaff:85740 .
ex:index.html exterms:creation-date "August 16, 1999" .
ex:index.html dc:language "en" .
O
ex:index.html dc:creator exstaff:85740 ;
exterms:creation-date "August 16, 1999" ;
dc:language "en" .
Abreviaciones
– 
– 
– 
– 
– 
– 
@prefix
; (compartir sujeto)
, (compartir sujeto-pred)
a (rdf:type)
[] (blank nodes)
() (listas)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
– 13 –
RDF: Sintaxis XML. Ejemplo
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:exterms="http://www.example.org/terms/">
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:language>en</dc:language>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:creator rdf:resource="http://www.example.org/staffid/85740"/>
</rdf:Description>
</rdf:RDF>
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
<dc:language>en</dc:language>
<dc:creator rdf:resource="http://www.example.org/staffid/85740"/>
</rdf:Description>
– 14 –
RDF: Nodos Anónimos (Blank Nodes)
• 
• 
Nodos sin URI (no es necesaria)
Son independientes entre sí
exstaff:85740
_:johnaddress
_:johnaddress
_:johnaddress
_:johnaddress
Otra forma:
exterms:address
exterms:street
exterms:city
exterms:state
exterms:postalCode
_:johnaddress .
"1501 Grant Avenue" .
"Bedford" .
"Massachusetts" .
"01730" .
exstaff:85740
exterms:address [
exterms:street
"1501 Grant Avenue" ;
exterms:city
"Bedford";
exterms:state
"Massachusetts";
exterms:postalCode "01730" ].
– 15 –
RDF: Literales
•  Tipos de datos
–  Se puede asociar un tipo a los literales: “valor”^^<tipo>
–  Se recomienda usar XML Schema datatypes
(xsd=http://www.w3.org/2001/XMLSchema#):
•  xsd:string, xsd:integer, xsd:date,…
–  Se pueden etiquetar strings indicando el idioma
•  Ejemplo
ex:index.html exterms:creation-date "1999-08-16"^^xsd:date .
exstaff:85740 exterms:postalCode "01730"^^xsd:integer .
exstaff:85740 exterms:birthPlaceName "Boston"@en .
– 16 –
RDF: Contenedores y Colecciones
•  Contenedores
– 
– 
– 
– 
– 
rdf:Bag: el orden no importa. Puede contener duplicados.
rdf:Seq: el orden es importante
rdf:Alt: alternativas
propiedades rdf:_1, rdf:_2, rdf:_3, …
Observación: los contenedores son “abiertos”
•  Colecciones
–  Permiten representar colecciones “cerradas”
–  rdf:List, rdf:first ,rdf:rest, rdf:nil
– 17 –
RDF: Reificación
•  Mecanismo para convertir una sentencia en un
recurso
•  Vocabulario
–  Sentencia: rdf:Statement
–  rdf:subject, rdf:predicate, rdf:object
•  Ejemplo: (ex:index.html dc:creator exstaff:85740 .)
ex:triple1
ex:triple1
ex:triple1
ex:triple1
rdf:type
rdf:subject
rdf:predicate
rdf:object
rdf:Statement .
ex:index.html .
dc:creator .
exstaff:85740 .
ex:triple1
rdf:type
rdf:subject
rdf:predicate
rdf:object
rdf:Statement ;
ex:index.html ;
dc:creator ;
exstaff:85740 .
– 18 –
Índice
•  La Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
– 19 –
RDF Schema (RDFS)
•  En RDF hablamos de objetos individuales (recursos)
•  Nos gustaría razonar sobre clases que definen tipos
de objetos
–  Por ejemplo, para evitar sentencias como (válidas en RDF):
•  SBC es impartida por SBC (restricción de rango)
ex:SBC ex:impartida_por ex:SBC.
•  Casa es impartida por Juan (restricción de domino)
ex:Casa ex:impartida_por ex:Juan.
•  Solución
–  Clases, relaciones, restricciones de dominio y rango, …
–  Ejemplo:
•  Las asignaturas deben ser impartidas por miembros del
personal académico
– 20 –
RDF Schema (RDFS)
•  Recomendación del W3C
–  http://www.w3.org/TR/rdf-schema/
•  RDFS extiende RDF con nuevas primitivas
•  Define a un lenguaje básico para describir ontologías
– 
– 
– 
– 
Fija la semántica de “subclase de”
Jerarquías de clases y propiedades
Herencia
Restricciones de dominio y rango
– 21 –
RDF Schema (RDFS)
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
rdfs:Class
•  Clases (rdfs:Class) e Instancias (rdf:type)
Definición de Clases
rdf:type
ex:Asignatura rdf:type rdfs:Class.
ex:Asignatura
Instancias
ex:IC rdf:type ex:Asignatura.
•  Jerarquías de clases (rdfs:subClassOf)
rdf:type
ex:IC
ex:Catedratico rdfs:subClassOf ex:PersonalDocente.
ex:Catedrático
rdfs:subClassOf
ex:PersonalDocente
– 22 –
RDF Schema (RDFS)
•  Propiedades (rdf:Property)
ex:impartida_por rdf:type rdf:Property .
•  Restricciones propiedades (rdfs:domain, rdfs:range)
ex:impartida_por rdfs:domain ex:Asignatura;
rdfs:range ex:PersonalDocente.
•  Jerarquías de propiedades (rdfs:subPropertyOf)
ex:impartida_por rdfs:domain ex:Asignatura;
rdfs:range ex:PersonalDocente;
rdfs:subPropertyOf ex:involucra.
– 23 –
RDF Schema (RDFS)
Clase
rdfs:domain
propiedad
ex:Asignatura
ex:involucra
rdfs:range
ex:Personal
rdfs:subPropertyOf
rdfs:range ex:Personal rdfs:subClassOf
rdfs:domain
ex:impartida_por
Docente
rdfs:subClassOf
rdfs:subClassOf
rdf:type
ex:Contratado
Doctor
ex:Profesor
Titular
RDF Schema
RDF
ex:IC
ex:Profesor
Funcionario
rdfs:subClassOf
rdfs:subClassOf
ex:Catedrático
rdf:type
ex:impartida_por
ex:Alberto
Fdez
– 24 –
– 24 –
RDF Schema (RDFS)
•  Primitivas
–  Clases
•  rdfs:Resource, rdfs:Literal, rdf:XMLLiteral, rdfs:Class, rdf:Property,
rdfs:Datatype
–  Propiedades
•  rdf:type, rdfs:subClassOf, rdf:subPropertyOf, rdfs:domain,
rdfs:range, rdfs:label, rdfs:comment
–  Contenedores
•  rdfs:Container, rdf:Bag, rdf:Seq, rdf:Alt,
rdfs:ContainerMembershipProperty, rdfs:member
–  Colecciones
•  rdf:List, rdf:first, rdf:rest, rdf:nil
–  Reificación
•  rdf:Statement, rdf:predicate, rdf:subject, rdf:object
–  Otros
•  rdfs:seeAlso, rdfs:isDefinedBy, rdf:value
– 25 –
RDF Schema (RDFS)
ex:posee
rdfs:domain
rdfs:range
ex:Persona
ex:Pez
rdf:type
ex:Wendy
rdf:type
ex:posee
rdf:type
ex:Wanda
Violación de la restricción: El rango de posee es Pez.
O No hay inconsistencia: Wanda es un pez!
– 26 –
Sirena?
RDF Schema (RDFS)
•  Algunas otras propiedades
–  rdfs:comment: descripción legible (por humanos) del recurso
–  rdfs:label: versión legible del nombre del recurso
–  rdfs:seeAlso: para indicar un recurso con información
adicional
dbpedia:Spain rdfs:comment "España es un país...";
rdfs:label "España";
rdfs:seeAlso <http://www.spain.info/>
– 27 –
RDF Schema (RDFS)
•  Algunas limitaciones de RDFS
–  Básicamente permite la organización de vocabularios en
jerarquías
–  Ámbito local de las propiedades
•  Las restricciones de rango no se pueden aplicar a algunas
clases solamente (ej: las vacas sólo comen hierba)
–  No permite expresar:
•  Clases disjuntas
–  Ejemplo: masculino y femenino
•  Combinación booleana de clases
–  Ejemplo: Persona = Hombre ∪ Mujer
•  Restricciones de cardinalidad
•  Características especiales de las propiedades
–  Transitiva, simétrica, inversa de, …
– 28 –
Índice
•  Introducción a la Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
– 29 –
OWL
•  Web Ontology Language
•  Recomendación del W3C
–  http://www.w3.org/OWL/
–  http://www.w3.org/TR/2012/REC-owl2-primer-20121211/
•  Es un lenguaje para describir ontologías
•  Se construye sobre RDFS, añadiendo primitivas
(IRIs) para aumentar la expresividad
@prefix owl: <http://www.w3.org/2002/07/owl#>
– 30 –
OWL
•  Cabecera
– 
– 
– 
– 
– 
– 
– 
– 
owl:Ontology
owl:imports: URI ontología
owl:versionInfo
owl:priorVersion: URI ontología
owl:backwardCompatibleWith
owl:incompatibleWith: no es compatible hacia atrás
owl:DeprecatedClass
owl:DeprecatedProperty
<owl:Ontology rdf:about="">
<owl:versionInfo>v 1.1</owl:versionInfo>
<rdfs:comment>An example ontology</rdfs:comment>
<owl:imports rdf:resource="http://www.example.org/foo"/>
<owl:backwardCompatibleWith
rdf:resource="http://www.example.org/vehicle-1.0"/>
<owl:priorVersion rdf:resource="http://www.example.org/veh-1.0"/>
</owl:Ontology>
– 31 –
OWL
•  Clases
–  owl:Class
•  owl:Class es subclase de rdfs:Class
ex:Asignatura rdf:type owl:Class .
–  rdfs:subClassOf (v)
–  owl:Thing: > (superclase de todas las clases)
–  owl:Nothing: ? (subclase de todas las clases)
– 32 –
OWL
•  Propiedades
–  owl:ObjectProperty: relaciona instancias de dos clases
–  owl:DatatypeProperty: relaciona instancias con Literales y
tipos de datos XML Schema
–  rdfs:subPropertyOf (r1 v r2 en H)
–  rdfs:domain (9r.> v C o > v 8r –.C)
–  rdfs:range (> v 8r .C)
– 33 –
OWL
•  Características de propiedades
–  owl:TransitiveProperty: (r+)
•  p(x,y) ∧ p(y,z) → p(x,z) (ej: “antepasado de”)
–  owl:SymmetricProperty: (r ≡ r –)
•  p(x,y) ↔ p(y,x)
(ej: “familiar de”)
–  owl:FunctionalProperty: (> v ≤ 1 r)
•  p(x,y) ∧ p(x,z) → y = z (ej: “año nacimiento”)
–  owl:inverseOf: (r –)
•  p1(x,y) ↔ p2(y,x)
(ej: p1=“profesor de”, p2=“alumno de”)
–  owl:InverseFunctionalProperty: (> v ≤ 1 r -)
•  p(y,x) ∧ p(z,x) → y = z (ej: “nº móvil”)
– 34 –
OWL
•  Restricciones de propiedades
–  owl:Restriction
–  owl:onProperty
–  owl:allValuesFrom: (8r.C)
ex:Vaca rdf:type owl:Class;
rdfs:subClassOf ex:Animal;
rdfs:subClassOf [rdf:type owl:Restriction;
owl:onProperty ex:come;
owl:allValuesFrom ex:Hierba].
– 
– 
– 
– 
– 
owl:someValuesFrom: (9r.C)
owl:cardinality
owl:maxCardinality (≤ n r)
owl:minCardinality (≥ n r)
owl:hasValue (9r.{a})
– 35 –
OWL
•  Clases complejas
– 
– 
– 
– 
– 
owl:intersectionOf: (C u D)
owl:unionOf: (C t D)
owl:complementOf: (¬C)
owl:disjointWith: (C v ¬D) clases disjuntas
owl:oneOf: ({a,b,c} en O) enumera los individuos que pertenecen a
una clase. Ej: {Rojo, Ambar, Verde}.
ex:ColorSemaforo rdf:type owl:Class;
owl:oneOf (ex:Rojo ex:Ambar ex:Verde).
– 36 –
OWL
•  Ontology mapping
–  owl:equivalentClass (≡)
ex:Pais owl:equivalentClass <http://schema.org/Country>.
–  owl:equivalentProperty (≡ en H)
–  owl:sameAs: ({x} ≡ {x}) dos URIs representan el mismo individuo
ex:Spain owl:sameAs <http://sws.geonames.org/2510769/>.
–  owl:differentFrom: ({x} ≡ ¬{x}) dos URIs no representan el mismo
individuo
–  owl:AllDifferent
–  owl:distinctMembers
[rdf:type owl:AllDifferent;
owl:distinctMembers (ex:Rojo ex:Ambar ex:Verde)].
– 37 –
OWL
•  Anotaciones
– 
– 
– 
– 
– 
– 
rdfs:label
rdfs:comment
rdfs:seeAlso
rdfs:isDefinedBy
owl:AnnotationProperty
owl:OntologyProperty
– 38 –
OWL: ejemplos de inferencias
•  Ejemplo disjointWith
Profesor owl:subClassOf PersonalDocente .
Libro owl:subClassOf Publicación .
PersonalDocente owl:disjointWith Publicación .
Se infiere: Profesor y Libro son disjuntos
•  Ejemplo owl:equivalentClass
Hombre owl:subClassOf Persona
Persona owl:equivalentClass Humano
Se infiere: Hombre es subclase de Humano
•  Ejemplo instancias
“A Semantic Web Primer” rdf:type Libro
Libro owl:subClassOf Publicación
Se infiere: “A Semantic Web Primer” es una Publicación
– 39 –
OWL y LD: Resumen
LD
>
?
CuD
CtD
¬C
8r.C
9r.C
CvD
C´D
r-
≥nr
≤nr
OWL
LD
C v ¬D
{a} ´ {b}
{a} v ¬{b}
r1 v r2
{a,b,c}
9r.{a}
r+
Thing
Nothing
intersectionOf
unionOf
complementOf
allValuesFrom
someValuesFrom
subclassOf
equivalentClass
inverseOf
minCardinality
maxCardinality
r´s
>v≤1r
> v ≤ 1 rr ´ r-
– 40 –
OWL
disjointWith
sameAs
differentFrom
subpropertyOf
oneOf
hasValue
TransitiveProperty
equivalentProperty
FunctionalProperty
InverseFunctionalProperty
SymmetricProperty
Índice
•  La Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
– 41 –
SPARQL
•  Query Language for RDF
•  Recomendación del W3C
–  http://www.w3.org/TR/sparql11-query/
•  Lenguaje de consulta de contenidos RDF
•  Sintaxis estilo SQL
– 42 –
SPARQL
Estructura de una consulta:
[
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
...
]
SELECT ...
[FROM ...]
WHERE
{
...
}
[Modificadores]
– 43 –
SPARQL
•  Patrones básicos
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX : <http://www.example.org/>
SELECT ?nom ?ape
WHERE {
?x :nombre
?nom.
?x :apellido ?ape.
?x rdf:type :Empleado.
}
•  Observaciones
–  SELECT * selecciona todas las variables
•  En el ejemplo: SELECT * = SELECT ?nom ?ape ?x
–  También:
{ ?x :nombre
?nom ;
:apellido ?ape ;
a :Empleado.
}
– 44 –
SPARQL
•  Literales
–  Etiquetas de idioma
•  “Madrid”, “Madrid”@es y “Madrid”@en son valores distintos
–  Tipos numéricos
•  “123"^^<http://www.w3.org/2001/XMLSchema#integer> es lo
mismo que 123 (y que "123"^^xsd:integer) con:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
–  Tipos arbitrarios
•  "abc"^^ex:TipoT
SELECT ?s
WHERE
{
?s ?p "abc"^^ex:TipoT.
}
– 45 –
SPARQL
•  Crear valores con expresiones
–  En SELECT
SELECT (CONCAT(?nom, " ", ?ape) AS ?nombre)
WHERE {
?x :nombre
?nom.
?x :apellido ?ape.
}
–  Con BIND
SELECT ?nombre
WHERE {
?x :nombre
?nom.
?x :apellido ?ape.
BIND(CONCAT(?nom, " ", ?ape) AS ?nombre)
}
– 46 –
SPARQL
•  Restricciones (FILTER)
–  Numéricas
Algunos Operadores
SELECT ?nom ?ape
Lógicos: !, &&, ||
WHERE
Aritméticos: +, -, *, /
{ ?x :nombre
?nom.
Comparación: =, !=, >, <,>=,<= ...
?x :apellido ?ape.
?x :nacido_en ?pais.
?pais :poblacion ?hab.
FILTER (?hab >= 200000).}
–  Strings
•  FILTER (regex(?nom, “Alberto", "i"))
•  FILTER (regex(str(?nom), “^Al"))
•  regex como en XQuery 1.0 y XPath 2.0
–  Otros
•  FILTER ( ?fecha > "1980-05-1"^^xsd:date &&
?fecha < "1980-06-30"^^xsd:date )
– 47 –
SPARQL
•  Grupos de patrones
SELECT ?nom ?ape
WHERE
{
{ ?x :nombre
?nom.
?x :apellido ?ape.
?x :nacido_en ?pais.
?pais :poblacion ?hab.
FILTER (?hab >= 200000).
}
{ ?x rdf:type :Empleado.}
}
– 48 –
SPARQL
•  Patrones opcionales (OPTIONAL)
SELECT ?nom ?ape ?nac ?email
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
?x rdf:type :Empleado.
OPTIONAL {?x :año_nac ?nac.
?x :email ?email.}
}
•  Ojo! es distinto a:
SELECT ?nom ?ape ?nac ?email
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
?x rdf:type :Empleado.
OPTIONAL {?x :año_nac ?nac.}
OPTIONAL {?x :email ?email.}
}
– 49 –
SPARQL
•  Patrones alternativos (UNION)
SELECT ?nom ?a
WHERE
{
{?x :nombre ?nom.
?x rdf:type :Empleado.}
UNION
{?x :name ?nom.
?x rdf:type :Employee.}
?x :año_nac ?a.
}
– 50 –
SPARQL
•  Negación
–  Comprobando ausencia
SELECT ?nom ?ape
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
FILTER NOT EXISTS {?x rdf:type :Empleado}
}
–  Eliminando posibles soluciones
SELECT ?nom ?ape
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
MINUS {?x rdf:type :Empleado}
}
– 51 –
SPARQL
•  Agregados
–  COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT,
SAMPLE
SELECT (SUM(?sueldo) AS ?totalSueldos)
WHERE {
?x rdf:type :Futbolista .
?x :equipo ?equi.
?x :salario ?sueldo .
}
GROUP BY ?equi
HAVING (SUM(?sueldo) > 20)
– 52 –
SPARQL
•  RDF Datasets
–  Un RDF dataset representa una colección de grafos RDF
•  Grafo por defecto (default graph)
•  Cero o más grafos nombrados (named graphs)
PREFIX ex: <http://example.org/>
default graph
SELECT ?nom ?ape
FROM <http://example.org/datos1>
FROM NAMED <http://example.org/datos2>
FROM NAMED <http://example.org/datos3>
WHERE
{
GRAPH ex:datos2 {
?x :nombre
?nom.
?x :apellido ?ape.
}
}
– 53 –
SPARQL
•  Consultas Federadas
SELECT ?nom ?ape
WHERE {
?x rdf:type :Empleado.
SERVICE <http://datos.personas.com/sparql> {
?x :nombre
?nom.
?x :apellido ?ape.
}
}
– 54 –
SPARQL
•  Otras
–  Subqueries
–  Asignaciones
•  BIND (?precio*(1+?iva) AS ?total)
–  Property Paths
•  Ej: { ?x rdf:type/rdfs:subClassOf* ?type }
–  Modificar los grafos del dataset (UPDATE)
•  http://www.w3.org/TR/sparql11-update/
–  …
– 55 –
SPARQL
•  Modificadores de resultados
–  ORDER BY
SELECT ?nom ?ape
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
}
ORDER BY ?ape DESC(?nom)
–  DISTINCT: evita soluciones duplicadas
SELECT DISTINCT ?nom ?ape
–  OFFSET / LIMIT
SELECT ?nom ?ape
WHERE
{ ?x :nombre ?nom.
?x :apellido ?ape.}
ORDER BY ?ape
LIMIT 5
OFFSET 3
– 56 –
SPARQL
•  Formas de consulta
–  SELECT
–  ASK
•  devuelve si existe o no alguna solución
–  DESCRIBE
•  Grafo RDF con datos de los objetos indicados
•  depende del servidor
DESCRIBE ?pais
WHERE
{ ?x :nombre
?nom.
?x :nacido_en ?pais.
?pais :poblacion ?hab.
FILTER (?hab >= 200000).}
–  CONSTRUCT
•  genera un grafo RDF
– 57 –
SPARQL
•  CONSTRUCT
CONSTRUCT {?x :tieneTio ?her.
?her :tieneSobrino ?x.}
WHERE
{ ?x :tienePadre ?padre.
?padre :tieneHermano ?her.
}
CONSTRUCT {?x o2:hasParent ?padre.
?padre o2:hasBrother ?her.}
WHERE
{ ?x o1:tienePadre ?padre.
?padre o1:tieneHermano ?her.
}
– 58 –
SPARQL Endpoints
•  Aceptan consultas SPARQL y devuelven los
resultados por HTTP
•  Formatos de resultados
–  KML, JSON, RDF (RDF/XML, N-Triples, Turtle, etc.), HTML,
…
•  Tipos
–  Genéricos
• 
• 
• 
• 
http://www.openlinksw.com/sparql
http://sparql.org/sparql.html
http://librdf.org/query/
…
–  Específicos
– 59 –
Índice
•  Introducción a la Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
– 60 –
Herramientas
•  Validadores
–  RDF: http://www.w3.org/RDF/Validator/
–  OWL: http://owl.cs.manchester.ac.uk/validator/
•  Jena – A Semantic Web Framework for Java
–  Entorno de programación para RDF, RDFS, OWL, SPARQL
–  http://jena.sourceforge.net/
•  SESAME
–  Entorno de programación para RDF y RDFS
–  http://rdf4j.org/
•  Protégé: editor de ontologías
–  RDF, RDFS, OWL
–  http://protege.stanford.edu/
– 61 –
Aplicaciones
• 
• 
• 
• 
Anotación de datos no estructurados
Integración de datos
Web de Datos (Linked Data)
…
– 62 –
Anotación de datos no estructurados
•  Ejemplo:
–  Anotación de páginas Web:
<div>
<h2>The trouble with Bob</h2>
<h3>Alice</h3>
...
</div>
RDFa (http://www.w3.org/TR/xhtml-rdfa-primer/)
<div xmlns:dc="http://purl.org/dc/elements/1.1/">
<h2 property="dc:title">The trouble with Bob</h2>
<h3 property="dc:creator">Alice</h3>
...
</div>
– 63 –
Integración de datos
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
– 64 –
Integración de datos
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
– 65 –
Índice
•  Introducción a la Web Semántica
•  Lenguajes de Ontologías
–  RDF
–  RDF Schema
–  OWL
•  Consulta de información en la Web Semántica
–  SPARQL
•  Herramientas y Aplicaciones
•  La Web de Datos (Linked Data)
– 66 –
Web de Datos (Linked Data)
•  Queremos consultar información del tipo:
Porteros de fútbol, que han jugado en algún equipo con un estadio de
más de 40.000 localidades y que han nacido en un país de más de 10
millones de habitantes
•  Pasar de la Web de Documentos a la Web de los Datos
•  Linked Data
–  http://linkeddata.org/
–  http://www.w3.org/DesignIssues/LinkedData.html
–  http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html
(vídeo 16 min)
•  Linking Open Data (LOD)
–  Web de Datos “Abiertos”
–  http://datahub.io/group/lodcloud
– 67 –
Web de Datos (Linked Data)
• 
Principios de Linked Data
1.  Usar URIs para identificar cosas
2.  Usar el protocolo HTTP para esas URIs
3.  Proporcionar información útil en esas direcciones, usando
estándares (RDF, SPARQL)
4.  Incluir enlaces a otras URIs
– 68 –
Web de Datos (Linked Data)
Mayo 2007
12 datasets
“Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/”
– 69 –
Web de Datos (Linked Data)
Septiembre 2008
45 datasets
“Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/”
– 70 –
Web de Datos (Linked Data)
Julio 2009
95 datasets
“Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/”
– 71 –
Web de Datos (Linked Data)
Sept. 2011
295 datasets
– 72 –
“Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/”
Web de Datos (Linked Data)
Agos. 2014
570 datasets
– 73 –
"Linking Open Data cloud diagram 2014, by Max Schmachtenberg, Christian Bizer, Anja Jentzsch and Richard Cyganiak. http://lod-cloud.net/”
Linked Data
•  Generación de Datos
–  A partir de repositorios existentes, p.e. BD Relacionales,
XML, CSV y hojas de cálculo, etc. a Linked Data
–  Transformación de información
• 
• 
• 
• 
• 
R2O and ODEMapster
OBDI
NOR2O
Jena
geometry2rdf
–  Generación dinámica
•  D2RQ Platform
•  Triplify
•  Ultrawrap
– 74 –
Linked Data
•  Publicación de datos
– 
– 
– 
– 
– 
– 
Virtuoso Open Source Edition
D2R Server
AllegroGraph RDFStore
Joseki
Sesame
…
– 75 –
Linked Data
•  Visualización de datos
–  Pubby
–  SNORQL
–  Disco – Hyperdata Browser
– 76 –
Linked Data: integración de datos
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
– 77 –
Web de Datos (Linked Data)
• 
Algunas fuentes de datos
– 
– 
– 
– 
– 
– 
Dbpedia: http://dbpedia.org
UK Government: http://data.gov.uk
New York Times: http://data.nytimes.com
Linked Movie Data Base: http://data.linkedmdb.org
Musicbrainz: http://dbtune.org/musicbrainz
...
•  Información
–  http://datahub.io/group/lodcloud
–  http://datahub.io/dataset?tags=lod
–  http://linkeddata.org/data-sets
– 78 –
Ejemplo: DBPedia
•  http://dbpedia.org
•  Pone disponible a información existente en la
Wikipedia
•  Generación de datos
–  A partir de información estructurada de la Wikipedia
•  Publicación de datos
–  OpenLink Virtuoso
–  SPARQL endpoint público:
•  http://dbpedia.org/sparql
– 79 –
Ejemplo: DBPedia
•  Visualización de datos
•  Leipzig query builder
–  http://querybuilder.dbpedia.org
•  OpenLink Interactive SPARQL Query Builder (iSPARQL)
–  http://dbpedia.org/isparql
•  SNORQL query explorer
–  http://dbpedia.org/snorql
•  Cualquier otro cliente SPARQL
•  Ejemplo de recurso:
–  http://wikipedia.org/wiki/Berlin à http://dbpedia.org/resource/Berlin
– 80 –
Ejemplo: DBPedia
– 81 –

Documentos relacionados