Práctica de introducción a SPARQL con Protégé OWL 4.2 beta para la asignatura Diseño de ontologías, en el master de gestión de la información de la UPV
3. SPARQL
SPARQL Protocol And RDF Query Language
3 especificaciones separadas:
Lenguaje de queries.
Formato XML de resultados de queries.
Protocolo de acceso a los datos.
4. SPARQL: Patrones
Se basa en casar patrones de tripletas con
tripletas RDF.
sujeto predicado objeto .
Patrón básico:
Secuencia de patrones de tripletas unido por un punto.
Conjunción de sus patrones de tripletas.
Ej.: ?x foaf:name ?name . ?x foaf:mbox ?mbox
Patrón para instancias: predicado a (Ej.: ?s a ?o )
5. SPARQL: Queries
Declaraciones de prefijos:
abreviar URIs.
#declaración prefijo
PREFIX foo: <http://example.com/resources/>
Definición de datasets: indicar ...
grafos RDF a interrogar. #definición del dataset
FROM ...
#cláusula resultado
Cláusula resultado, indicar qué SELECT ...
debe devolver la query. #patrón del query
WHERE {
...
Patrón de query, especificar lo }
que se pide del dataset. #modificadores del query
ORDER BY ...
Modificadores de query, partir,
ordenar y reunir resultados.
6. SPARQL: Protégé
Vars. empiezan con un ?
y pueden ser cualquier
nodo (recurso o literal)
en el RDF dataset.
Cualquier parte de una
tripleta RDF puede ser
reemplazada con una var.
Resultado del SELECT:
tabla de vars. y valores
que satisfacen la query.
7. SPARQL: Formas
SELECT * devuelve enlaces a todas
las vars. mencionadas en la query.
CONSTRUCT devuelve un grafo RDF.
ASK devuelve si un patrón de grafo
tiene o no solución.
8. SPARQL:
Restricciones en vars.
DISTINCT : elimina resultados duplicados.
FILTER:
Sólo los results. que la exp. se evalúa a cierto.
PREFIX dc: <http://purl.org/dc/elements/1.1/>
Expresiones Booleanas. PREFIX ns: <http://example.org/ns#>
SELECT DISTINCT ?title ?price
regex:
WHERE { ?x ns:price ?price .
leng. de expres. regs. def. en XQuery 1.0 FILTER (?price < 30.5)
and XPath 2.0 ?x dc:title ?title . }
Logicas (!, &&, ||), Matemáticas (+, -, *, /), PREFIX dc: <http://purl.org/dc/elements/1.1/>
Comparación ( =, !=, >, <)
SELECT ?title
Tests: isURI, isBlank, isLiteral, bound WHERE { ?x dc:title ?title
FILTER regex(?title, "^SPARQL") }
str, lang, datatype
Params. deben ser string.
Tercer parám. opcional: indistinto a
mayúsc./minúsc. “i”
9. SPARQL:
Patrones Opcionales
A veces no se puede
asumir que se dispondrá
de toda la información en
todos los grafos RDF.
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
Patrones Opcionales: WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox }
permiten añadir }
información tan sólo si
está disponible.
OPTIONAL
10. SPARQL:
Patrones Alternativos
Disyunción. PREFIX dc10: <http://purl.org/dc/elements/1.0/>
PREFIX dc11: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE { { ?book dc10:title ?title }
UNION UNION
{ ?book dc11:title ?title }}
11. Ejercicios
Crear una ontología en Protégé
formada por 4 ficheros de noticias
de los almacenados por los grupos
de clase en el blog.
Combinar toda la información
guardándola en local, por medio de
la opción de menú Refactor/
Merge ontologies...
12. SPARQL: Ejercicios
Extraer de manera incremental:
1. Todas las instancias de tu ontología, sin repetición.
2. Las cabeceras de todos los artículos almacenados.
3. El cuerpo de todos los artículos almacenados.
4. El creador o el editor de la noticia.
5. Modificar la opción anterior para que sólo sea si
existe el creador o el editor. Si no, que no aparezca
dicha información, pero sí la noticia.
6. Quedaros sólo con aquellas noticias de “El País”.
7. Reducir a aquellas que hacen referencia a Estados
Unidos.