Anda di halaman 1dari 20

Consumo de datos RDF a

través de SPARQL

Prof. Janneth Chicaiza


Sistemas Basados en el Conocimiento!
jachicaiza@utpl.edu.ec!
!
Data Sources Access

SPARQL Protocol
Triple SPARQL !
Store Endpoint

SPARQL !
Client

Triple SPARQL !
Store Libraries

• Protocolo y lenguaje de consulta recomendado por el W3C.


Permite recuperar datos RDF a través de la Web.

• Soporta cuatro formas de consulta, las cuales se basan en la
coincidencia de patrones para formar conjuntos de resultados o
grafos RDF: SELECT, CONSTRUCT, ASK, y DESCRIBE.

• La versión 1.1 soporta operaciones de inserción, actualización y
borrado de tripletas.
Consulta Básica

¿Cuál es el título de data:book1?

<data:library1>)
PREFIX  dc:  <h-p://purl.org/dc/elements/1.1/>

has) SELECT  ?Btulo  
FROM  <h-p://example.org/>  
data:book1)
WHERE    
dc:5tle) dc:author) {    
       data:book1
  dc:title ?titulo
}  
“Ingeniería)Web”) <data:author1>)

Resultado
?titulo

“Ingeniería Web”
data:book1 ?metadata ?valor
Diferentes patrones
?metadata ?valor
dc:title “Ingeniería Web”
<data:library1>)
dc:author data:author1
has)

?libro dc:title ?titulo


data:book1)
?libro ?titulo
dc:5tle) dc:author) data:book1 “Ingeniería Web”

“Ingeniería)Web”) <data:author1>) ?s ?p ?o

?s ?p ?o
data:library1 :has data:book1
data:book1 dc:title ?titulo “Ingeniería
data:book1 dc:title
Web”
?titulo data:book1 dc:author data:author1
“Ingeniería Web”
Sujeto' Predicado' Objeto'
<h#p://example.org/book/book1>4 rdf:type4 <h#p://example.org/onto/Book>4
<h#p://example.org/book/book1>4 dc:<tle4 “Ingeniería4Web”4
<h#p://example.org/book/book1>4 dc:author4 <h#p://example.org/person/author1>4
<h#p://example.org/person/author1>4 foaf:name4 “Luis4Castro”4
<h#p://example.org/person/author1>4 rdf:type4 <h#p://example.org/onto/Author>4
<h#p://example.org/book/book2>4 dc:<tle4 “Sistemas4Basados4en4Conocimiento”4

¿Cuáles son los libros que existen en el grafo?


PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT DISTINCT *
FROM <http://example.org/>
WHERE
{
?libro rdf:type <http://example.org/onto/Book> .
}
Resultado ?libro
<h-p://example.org/book/book1>
Sujeto' Predicado' Objeto'
<h#p://example.org/book/book1>4 rdf:type4 <h#p://example.org/onto/Book>4
<h#p://example.org/book/book1>4 dc:<tle4 “Ingeniería4Web”4
<h#p://example.org/book/book1>4 dc:author4 <h#p://example.org/person/author1>4
<h#p://example.org/person/author1>4 foaf:name4 “Luis4Castro”4
<h#p://example.org/person/author1>4 rdf:type4 <h#p://example.org/onto/Author>4
<h#p://example.org/book/book2>4 dc:<tle4 “Sistemas4Basados4en4Conocimiento”4
<h#p://example.org/book/book2>4 rdf:type4 <h#p://example.org/onto/Book>4
<h#p://example.org/book/book2>4 dc:author4 <h#p://example.org/person/author2>4

¿Cuál es el título de cada libro y el nombre de cada autor?


PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?titulo ?nombreAutor
FROM <http://example.org/>
WHERE
{
?libro rdf:type <http://example.org/onto/Book> .
?libro dc:title ?titulo .
?libro dc:author ?autor . Resultado
OPTIONAL{ ?titulo ?nombreAutor
?autor foaf:name ?nombreAutor . “Ingeniería Web” “Luís Castro”
} “Sistemas Basados
} en Conocimiento”
Consultando la DBPedia
¿Cuál es el nombre de los ecuatorianos que
están en DBPedia?
1. buscar recurso de 3. Armar la consulta en base a los patrones de
referencia tripletas
http://dbpedia.org/resource/
Jaime_Roldós_Aguilera
PREFIX schema: <http://schema.org/>
SELECT DISTINCT * WHERE
{
?persona rdf:type schema:Person ;
dbo:birthPlace dbr:Ecuador .
?persona foaf:name ?name .
} ORDER BY ?name

4. Evaluar resultados

2. seleccionar recursos /
propiedades / clases
¿Cuál es el nombre de los ecuatorianos,
vinculados a temas de arte que están en
DBPedia?

PREFIX schema: <http://schema.org/>


SELECT DISTINCT * WHERE
{
VALUES ?tipo {dbo:Writer dbr:Novelist dbr:Poet dbr:Actor}
?persona rdf:type|dbo:occupation ?tipo;
dbo:birthPlace dbr:Ecuador .
?persona foaf:name ?name .
} ORDER BY ?name
¿Lugares que tengan en su nombre la palabra Ecuador?
Ontología DBPedia SELECT DISTINCT ?lugar ?nombre
dbo:Country WHERE
{
dbo:Place
VALUES ?keyword {"Ecuador"} .
?lugar rdf:type dbo:Place .
Propiedades clave ?lugar rdfs:label|foaf:name ?nombre .
rdfs:label FILTER CONTAINS(?nombre, ?keyword)
rdf:type
}

FILTER (LANG(?nombre) = 'es')


¿Cuáles son las provincias del Ecuador y cuál es el
nombre de su máxima autoridad?
http://dbpedia.org/resource/
Azuay_Province
SELECT DISTINCT * WHERE {
?lugar dbo:country dbr:Ecuador .
}

SELECT DISTINCT * WHERE {


Refinamiento para filtrar solo ?lugar dbo:country dbr:Ecuador .
provincias ?lugar dct:subject dbc:Provinces_of_Ecuador.
}
¿Cuáles son las provincias del Ecuador y cuál es el
nombre de su máxima autoridad?
http://dbpedia.org/resource/ SELECT DISTINCT * WHERE {
Azuay_Province ?lugar dbo:country dbr:Ecuador .
?lugar dct:subject dbc:Provinces_of_Ecuador.
?lugar rdfs:label ?nombre_provincia .
FILTER (LANG(?nombre_provincia) = "es" ) .
OPTIONAL {
?lugar dbp:leaderName ?lider
}
Propiedades DBPedia }
dbo:country
dbp:leaderName

Propiedades Dublin
Core
dct:subject
Utilizando rutas de propiedades (1)

• Recurso a consultar: https://www.w3.org/TR/


sparql11-property-paths/

prefix skos: <http://www.w3.org/2004/02/skos/core#>


prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct *
from <http://dbpedia.org>
where {
VALUES ?root_name { "Ecuador"@en }
?root rdfs:label ?root_name .
?root rdf:type skos:Concept .
?child skos:broader{2} ?root .
}
Utilizando rutas de propiedades (2)
• Revistas de Ciencias de la Computación,
ordenadas por su factor de impacto
select distinct ?res ?nombre ?impacto
where{
VALUES ?skosC {dbc:Computer_science_journals}
?res dct:subject ?skosC ; rdfs:label ?nombre;
dbo:impactFactor|dbp:impact ?impacto.
FILTER (lang(?nombre) = 'en')
} ORDER BY DESC(?impacto)
• Revistas de Ciencias de la Computación
relacionadas a Inteligencia Artificial, ordenadas por
su factor de impacto

select distinct ?res ?nombre ?impacto


where{
VALUES ?skosC {dbc:Computer_science_journals}
?res dct:subject ?skosC ; rdfs:label ?nombre;
dbo:impactFactor|dbp:impact ?impacto.
?res dbo:publisher dbr:Elsevier .
?res rdfs:comment|rdfs:label|dbo:academicDiscipline/rdfs:label ?texto
FILTER CONTAINS(UCASE(?texto), "ARTIFICIAL INTELLIGENCE")
} ORDER BY DESC(?impacto)
Consultando desde Jena
Consultas Federadas
Accediendo a varios datasets a través de una sola consulta

Fererated  queries:  
h-p://www.w3.org/TR/2013/REC-­‐sparql11-­‐federated-­‐query-­‐20130321/  
Pre-­‐requisitos:  
h-ps://jena.apache.org/documentaBon/serving_data  
Fuseki'

My
dataset!

DBPedia!
LATAM! DBPedia!
en!

SPARQL'EndPoint:' SPARQL'EndPoint:'
h0p://es5la.dbpedia.org/sparql' h0p://dbpedia.org/sparql'
' '
Graph:' Graph:'
h0p://es5la.dbpedia.org/graph/data' h0p://dbpedia.org/'
' '

Desde el endpoint de es-la.dbpedia


SELECT  ?enBty    
WHERE  {    
SERVICE  <h-p://dbpedia.org/sparql>    
       {  
               ?enBty  ?predicate2  "Ecuador"@es  .    
       }    
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?entityLa ?entityEn
WHERE {
?entityLa rdfs:label "Ecuador"@es .
OPTIONAL{
SERVICE <http://dbpedia.org/sparql>
{
?entityEn rdfs:label "Ecuador"@es .
}
}
}

Anda mungkin juga menyukai