wade 2014—2015 (06/12): semantic web—managementul datelor rdf. interogarea datelor rdf cu sparql

145
Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web ⊶⊷ managementul datelor RDF

Upload: sabin-buraga

Post on 15-Jul-2015

168 views

Category:

Technology


2 download

TRANSCRIPT

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Dezvoltarea aplicațiilor Web

⊶⊷managementul datelor RDF

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

“Trebuie să adunăm fapte pentru a avea idei.”

Georges-Louis de Buffon

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Ce modele de date sunt disponibile pe Web?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

modele de date disponibile pe Web

textualedate nestructurate – eventual, multilingve

structurateRDF – reprezintă „lucruri” (resurse) din lumea reală:

indivizi, servicii, aplicații,... – de dorit, modelate formal

hibridedate structurate „scufundate” în text

e.g., microdate HTML5, RDFa

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

conform (Bailer & Hausenblas, 2007)

model RDF

abstract

date RDF(reprezentareîn memorie)

date RDF (documente desine-stătătoare)

date conforme modelului RDF („scufundate” în alte resurse)

date non-conforme modelului RDF (de sine-stătătoare + incluse în fișiere)

con

form

(B

aile

r &

Hau

sen

bla

s, 2

00

7)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

conform (Bailer & Hausenblas, 2007)

model RDF

abstract

date RDF(reprezentareîn memorie)

date RDF (documente desine-stătătoare)

date conforme modelului RDF („scufundate” în alte resurse)

date non-conforme modelului RDF (de sine-stătătoare + incluse în fișiere)

con

form

(B

aile

r &

Hau

sen

bla

s, 2

00

7)

baze de date relaționale, XML,

HTML, microformate, microdate, JSON,…

RDFa, Semantic MediaWiki

RDF/XML, N3, Turtle, JSON-LD,… (serializări)

cod binar

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Ce instrumente de procesarea declarațiilor RDF putem folosi?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Procesor (parser) RDF

preluarea datelor disponibile în diverse formate și reprezentarea lor ca triple RDF

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

api-uri & biblioteci rdf – exemple

Apache Jena (Java)Commons RDF (Java): http://commons-rdf.github.io/

ARC2, EasyRDF (PHP)dotNetRDF (C#)

node-rdf, rdfQuery.js, rdfstore-js (JavaScript)PerlRDF (Perl)RDF.rb (Ruby)

RDFLib (Python)Redland (C; portări în C#, Objective-C, Perl, PHP, Ruby)

...

detalii la http://www.w3.org/2001/sw/wiki/Tools

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Serializator (serializer) RDF

exprimarea modelului intern RDFîn diverse formate

N-Triples, RDF/XML, Turtle (N3), TriX, RDFa, JSON-LD,...

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Convertor RDF

preluarea datelor din alte modeleși transformarea lor în RDF

extragerea directă din documentele HTMLvia scrapers/harvesters

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

instrumente

Extractoare/convertoare RDF – exemple:Any23, Babel, RDF123, RDFSlice (Java)

Greengrass, LinqToRDF (C#)Raptor (C) – http://librdf.org/raptor/

RDF Translator (Python) – http://rdf-translator.appspot.com

Semantic Radar (JavaScript – extensie Firefox)URIBurner – serviciu Web: http://linkeddata.uriburner.com

de experimentat și instrumentul OpenRefinehttp://openrefine.org/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

instrumente

Inițiativa Triplr

serviciu Web REST de conversie a datelor (d)in RDFbazat pe biblioteca Redland

http://triplr.org/format-de-ieșire/uri-sursă

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

instrumente

Inițiativa Triplr

exemple:

din HTML în RDF/XML via GRDDL http://triplr.org/rdf/www.w3.org/People/Connolly/

conversie în format Turtle a unui fișier FOAF (RDF/XML) http://triplr.org/turtle/profs.info.uaic.ro/~busaco/busaco.foaf.xml

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Navigatoare RDF (hyperdata browsers)

redau utilizatorului (uman) o reprezentare „frumoasă” a triplelor RDF, permitând

interacțiunea cu datele: vizualizare, filtrare,...

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

instrumente

Navigatoare RDF (hyperdata browsers)

exemple:Disco

MarblesOpenLink Data Explorer

Q&D RDF BrowserTabulator

uzual, disponibile ca extensii pentru browser-ul Web

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Extragerea și procesarea datelor existente pe Web

o soluție „clasică”: information extraction(eventual, pe baza procesării limbajului natural – NLP)

e.g., a se experimenta Data Enrichment Servicehttp://openup.tso.co.uk/developer/des

în cazul nostru, dorim să recurgem latehnologiile Web-ului semantic

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

O modalitate standardizată de „convertire”în triple RDF

a construcțiilor semantice încapsulateîn documentele Web

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

grddl

Gleaning Resource Descriptions from Dialects of Languages

permite asocierea de transformăridin formate structurate – e.g., microformate, RDFa, XML –

în declarații RDF, fără pierderea semanticii (meaning)

soluție: XSLT (Extensible Stylesheet Language Transformations)

www.w3.org/TR/grddl/

www.w3.org/TR/grddl-primer/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

grddl: exemplu

Efectuarea diverselor conversii via GRDDL:

microformatul hCardRDFhttp://www.w3.org/2006/vcard/hcard2rdf.xsl

microformatul hCalendarRDFhttp://www.w3.org/2002/12/cal/glean-hcal.xsl

RDFaRDFhttp://www.w3.org/2001/sw/grddl-wg/td/RDFa2RDFXML.xsl

detalii în R. Akerkar, Semantic Markup Report, NCE Tourism Fjord Norway, 2012

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Date stocate în sisteme de baze de date relaționale

date modelate cu RDF

asocieri directe – mappings (via schema bazei de date)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

realizarea diferitelor asocieri exprimate via R2RML (RDB to RDF Mapping Language)recomandare a Consorțiului Web – 2012

www.w3.org/TR/r2rml/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

baze de date relaționale gestionate via SQL

CREATE TABLE "Software" ( "ID" INT, PRIMARY KEY("ID"), "nume" CHAR(69), "desc" CHAR(256)

) CREATE TABLE "Utiliz" (

"ID" INT, PRIMARY KEY("ID"), "identit" CHAR(101), "soft" INT, FOREIGN KEY("soft") REFERENCES "Software"("ID")

) INSERT INTO "Software" ("ID", "nume", "desc") VALUES (13, 'Marmotta', '…') INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (7, 'Andrei', 13) INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (8, 'Mara', NULL)

date RDF

<Utiliz/ID=7> rdf:type <Utiliz> . <Utiliz/ID=7> <Utiliz#ID> 7 . <Utiliz/ID=7> <Utiliz#identit> "Andrei" . <Utiliz/ID=7> <Utiliz#soft> 13 . <Utiliz/ID=7> <Utiliz#ref-software> <Software/ID=13> . …<Software/ID=13> rdf:type <Software> . <Software/ID=13> <Software#ID> 13 . <Software/ID=13> <Software#nume> "Marmotta" . <Software/ID=13> <Software#desc> "An Open Platform for Linked Data – by Apache" .

asocieri directe

recomandare W3C (M. Arenas et al., 2012)

www.w3.org/TR/

rdb-direct-mapping/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

necesități

Motoare de căutare

căutarea de documente RDF, eventual cu extragerea de cunoștințe – e.g., meta-date – din alte resurse Web(HTML, RSS/Atom, microformate, microdate, RDFa,...)

câteva exemple: Knoodle, SameAs, Sig.ma, Sindice, Swoogle

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Nu există posibilitatea de a utiliza un sistem de stocare/interogare a triplelor RDF?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Datele RDF sunt menținute persistentîn cadrul unui RDF store

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Oferă posibilitatea fuzionării (merging)seturilor de date RDF

date 2 seturi de triple RDF, în urma fuzionării va rezulta un set de triple RDF ce include toate triplele

din ambele seturi de intrare în care resurseleavând același URI sunt considerate echivalente

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Intern, un RDF store poate stoca tripleleîntr-o varietate de formate

baze de date relaționaleversus

structuri de date speciale

inclusiv, la nivel de cloud

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Asigurarea interoperabilității este facilitată deformatele de serializare standardizate

RDF/XML, Turtle, JSON(-LD)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Aspecte de interes:

performanța – e.g., scalabilitatea, timpul de răspuns,...capacitatea de stocare

facilitățile privind interogarea datelorAPI-urile disponibile

fiabilitatea securitatea

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Exemple de implementări curente(unele disponibile în regim open source)

stocare în structuri de date native: AllegroGraph – http://franz.com/agraph/allegrograph/

Apache Jena TBD – http://jena.apache.org/

BigData – http://bigdata.com/

Oracle Spatial & Graph – http://tinyurl.com/oracle-rdf

Sesame – http://rdf4j.org/

Stardog – http://stardog.com/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Exemple de implementări curente(unele disponibile în regim open source)

folosind sisteme tradiționale de baze de date:IBM DB2 (Java), Jena SDB (Java), OpenLink Virtuoso

(C, PHP, Perl, Ruby, JS,…), OWLIM (Java), StrixDB (Lua)

www.w3.org/wiki/LargeTripleStores

http://semanticweb.com/introduction-to-triplestores_b34996

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Exemple de implementări curente(unele disponibile în regim open source ori freeware)

bazate pe sisteme NoSQL:BrightstarDB (C#), CumulusRDF (utilizează Cassandra),

RDF Graph for Oracle NoSQL DB, SparkleDB (C++)

recurgând la baze de date native XML: MarkLogic 7(interogări XQuery, SQL, SPARQL + API-uri diverse)

http://developer.marklogic.com/learn/semantics-exercises

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sisteme de stocare rdf

Utilizări notabile

OWLIM folosit de BBC, FactForge și LinkedLifeData și inclus în GATE (General Architecture for Text Engineering)

Best Buy, inQuest și NASA recurg la Stardog

OpenLink Virtuoso utilizat de DBpedia și Linked Open Data Cloud

data.gov.uk se bazează pe Jena TDB

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Există un limbaj de interogarea seturilor de triple RDF?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql

SPARQL Protocol and RDF Query Language

limbaj descriptiv standardizatpentru realizarea de interogări pe baza potrivirilor

de șabloane referitoare la triple RDF

inspirat din RDQL – oferit de Jena, RAP, Redland etc.

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql

Oferă suport pentru manipularea construcțiilor RDF

Pune la dispoziție operații asupra grafurilor RDF

Independent de platforma software utilizată

limbaj de interogare + protocol de acces la triple RDF

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Recomandări ale Consorțiului Web:

SPARQL 1.0 (2008)permite doar acces la date (interogări read-only)

www.w3.org/TR/rdf-sparql-query/

SPARQL 1.1 (2013) oferă și posibilități de actualizare a datelor

www.w3.org/TR/sparql11-overview/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Modelul de interogare e fundamentat deșabloane de grafuri RDF – graph patterns

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Termeni RDF (RDF-T):

reuniunea mulțimilor IRI, noduri blanc, literali RDF

Variabile de interogare (V): simboluri prefixate de „?” sau de „$”

Șablon (triple pattern): membru al mulțimii(RDF-T V) (IRI V) (RDF-T V)

Șabloane de tip graf: mulțimi de șabloane

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Convenții sintactice bazate pe Turtle/N3

triplele RDF sunt considerateca fiind tablouri de termeni RDF

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Convenții sintactice bazate pe Turtle/N3

triplele RDF sunt considerateca fiind tablouri de termeni RDF

termen RDF = IRI | nod blanc | literal

pattern de triple = tablou de termeni RDFsau nume de variabile (termeni liberi)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

URI – sau, mai general, IRI – delimitați de „<” și „>”

situl Web al unei persoane: <http://www.purl.org/net/busaco>

o proprietate definită de specificația FOAF: <http://xmlns.com/foaf/0.1/name>

o clasă de resurse:<http://dbpedia.org/ontology/Film>

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Pentru a referi spații de nume ale vocabularelor utilizatese folosește construcția PREFIX

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

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

PREFIX dbpedia: <http://dbpedia.org/ontology/>

PREFIX dbp: <http://dbpedia.org/property/>

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>

PREFIX core: <http://www.bbc.co.uk/ontologies/coreconcepts/>

lista prefixelor uzual folosite: http://prefix.cc/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Nodurile blanc se specifică prin _:nume

sau sunt delimitate de [ și ]

dacă se folosesc o singură dată

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Literali RDF(șiruri de caractere cu atribute opționale)

"Web"

"Web"@ro # se indică limba

"true"^^xsd:boolean # se specifică tipul de date

"true"^^xsd:string

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Abrevierireferitoare la triple

:s :p :o1 , :s :p :o1 .

:o2 . echivalent cu :s :p :o2 .

:s :p1 :o1 ; :s :p1 :o1 .

:p2 :o2 . echivalent cu :s :p2 :o2 .

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Abrevieriprivitoare la nodurile blanc

:s :p [ :p' :o ]

echivalent cu

:s :p _:x . _:x :p' :o .

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Un șablon (pattern) permite specificareade variabile indicând date ce vor fi returnate

în urma realizării interogării

?subiect ?predicat ?obiect .

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Șablon: subiect ?predicat ?obiect .

?predicat și ?obiect reprezintă necunoscutele (unbounded)

subiect

obiect1

obiect2

obiectn

?predicat

?predicat

?predicat

?obiect

?obiect

?obiect

după (Corno & Farinetti, 2009)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Exemplu

lista persoanelor inter-conectatevia predicatul (proprietatea) foaf:knows

?persoana foaf:knows ?altaPersoana .

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Exemplu

descoperirea proprietătilor/relațiilordintre subiect și obiect

_:subiect ?predicat _:obiect .

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Șabloanele pot fi combinate pentru a forma șabloane mai complexe

șablon de tip graf (BGP – basic graph pattern)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Șabloanele pot fi combinate pentru a forma șabloane mai complexe

șablon de tip graf (BGP – basic graph pattern)

componente ale unei interogări SPARQLexprimate formal – algebric – prin tuplul (E, DS, QF)

E = expresie SPARQLDS = set de date RDF (data set) local/disponibil pe Web

QF = formular de interogare (query form)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

SELECT ?contrib

WHERE {

<http://en.wikipedia.org/>

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

?contrib .

}

{ … } desemnează un graph patternîn acest exemplu, se utilizează vocabularul DCMI

selectarea resurselorce au contribuit

la o resursă

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

un tabel de valori corespunzătoare variabilelorutilizate, rezultat precizat prin SELECT

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

o valoare booleană întoarsă de construcția ASK

„este adevărat că…?”

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

un graf RDF creat via CONSTRUCT sau DESCRIBE

CONSTRUCT oferă un graf în care variabilele sunt înlocuite cu valorile găsite

DESCRIBE întoarce un graf care descrie resursele găsite(structura datelor e determinată de procesorul RDF)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

anatomia unei interogări SPARQL 1.0 (Beckett, 2011)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

SELECT

rezultatul interogării reprezintă un tabel

secvență de rânduri compusedin valorile variabilelor (variable bindings)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Considerăm date modelate

în RDF privitoare la studenții FII

vezi exemplele asociate cursului

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

determinarea resurselor de tip persoanăSELECT ?persoana

WHERE {

?persoana rdf:type foaf:Person

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

SELECT

oferirea de valori distincte via DISTINCT

ordonarea rezultatelor prin ORDER BY

returnarea de sub-secvențe cu LIMIT și OFFSET

precizarea construcțiilor opționale prin OPTIONAL

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Datele interogate pot fi filtrate via clauza FILTER

expresiile de filtrare includ:variabile

operatori aritmetici/logicifuncții (predefinite sau specificate de utilizator)

tipuri de date definite de XML Schema

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Funcții predefinite

de testare: bound ( ), isBlank ( ), isLiteral ( ), isURI ( )

de conversie: str ( ), lang ( ), datatype ( )

altele: sameTerm ( ), langMatches ( ), regex ( )

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

FILTER (?anul = 2)

FILTER (?dataComanda < "2014-11-31T22:00:00Z"^^xsd:date)

FILTER (?pop > 15000000 &&

langMatches (lang (?numeStat), "EN"))

FILTER (?foss = 'Yes' && ?categ = 'Database/Datastore' &&

(?limbaj = 'PHP' || regex (?limbaj, "^C")))

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

determinarea numelor tuturor resurselor de gen feminin

SELECT ?numeStudenta

WHERE {

?persoana foaf:gen ?gen ;

foaf:firstName ?numeStudenta .

FILTER regex (?gen, "^female", "i") .

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

numele și, eventual, titulatura persoanelor mai tinere

SELECT DISTINCT ?studentSub22 ?titulatura

WHERE {

?persoana foaf:age ?ani ;

foaf:firstName ?studentSub22

OPTIONAL { ?persoana foaf:title ?titulatura . }

FILTER (?ani <= 22)

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Nodurile blanc într-o interogarejoacă rol de variabile anonime

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

numele și vârsta cunoscuților care-l „știu” pe Sir Tim Berners-Lee după reputație și sunt examinați de profesori

SELECT DISTINCT ?nume ?ani ?prof

WHERE {

[ ] foaf:knows ?persoana .

?persoana foaf:firstName ?nume ;

rel:knowsByReputation

<http://www.w3.org/People/Berners-Lee/card#i> ;

foaf:age ?ani .

?prof s:examineaza ?persoana

}

s-a recurs la vocabularul relationship

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Crearea unui graf RDF se poate realiza prin CONSTRUCT

CONSTRUCT (?s ?p ?o)

WHERE {

?prop rdf:subject ?s .

?prop rdf:predicate ?p .

?prop rdf:object ?o .

web:Wikipedia s:afirma ?prop .

}

determinarea tuturor declarațiilor reificateexprimate de Wikipedia

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Construirea modelului RDF al edițiilor London Gazetteconform Jeni Tennison (2009)

PREFIX g: <http://www.gazettes-online.co.uk/ontology#>

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

CONSTRUCT {

?issue a g:Issue .

?issue g:hasPublicationDate ?date .

} WHERE {

?issue a g:Issue .

?issue g:hasPublicationDate ?date .

FILTER ( ?date > "2013-01-01"^^xsd:date ) . }

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Exemplu de recurgere la ASK (Lee Feigenbaum, 2009): aflarea răspunsului la întrebarea

„Fluviul Amazon este mai lung decât Nilul?”

PREFIX prop: <http://dbpedia.org/property/>

ASK {

<http://dbpedia.org/resource/Amazon_River>

prop:length ?lungAmazon .

<http://dbpedia.org/resource/Nile> prop:length ?lungNil .

FILTER (?lungAmazon > ?lungNil) .

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Obținerea de șabloane de graf alternativese realizează via clauza UNION

{ ?nod voc:hasName ?nume }

UNION

{ ?nod vcard:FN ?nume }

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

resursele cunoscute sau rude cu o persoană și examinate doar de un anumit profesor

SELECT ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

WHERE {

{ ?pers foaf:knows s:cristina ;

foaf:firstName ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

}

UNION

{ ?pers rel:siblingOf s:cristina ;

foaf:firstName ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

}

s:dlucanu s:examineaza ?pers

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Întrebare:am putea realiza interogări SPARQL

asupra mai multor grafuri RDF?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

O interogare poate fi aplicată:

grafului implicit (default graph)

unuia sau mai multor grafuri externe (named graphs)

fuziunii dintre graful implicit și cele externe

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: limbaj de interogare

Graful RDF de intrare poate fi specificat via URI

FROM <http://planetrdf.com/bloggers.rdf>

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

coSELECT ?numePers ?predicat ?obiect

FROM <http://www.w3.org/People/Berners-Lee/card>

FROM <http://www.dajobe.org/foaf.rdf>

FROM <http://www.ivan-herman.net/foaf.rdf>

FROM <http://www.lassila.org/ora.rdf>

WHERE {

tbl:i foaf:knows ?persoana .

?persoana foaf:name ?numePers ;

rdfs:seeAlso ?iri .

?iri foaf:primaryTopic ?persoana2 .

?persoana2 foaf:name ?numePers2 ;

?predicat ?obiect .

FILTER (?numePers = ?numePers2) .

}

extragerea tuturor datelor despre persoanelecunoscute de Sir Tim Berners-Lee

adaptare după (J. Hebeler et al., 2009)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Pune la dispoziție un mecanism de realizarede interogări SPARQL prin invocarea de

servicii Web – SPARQL end-points

recomandare a Consorțiului Web (2008, 2013)www.w3.org/TR/rdf-sparql-protocol/

www.w3.org/TR/sparql11-protocol/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Serviciile SPARQL pot fi descrise și invocatevia tehnologiile serviciilor Web clasice – i.e., prin REST

un punct terminal SPARQL – generic sau particular –acceptă cereri și întoarce rezultate via HTTP(S)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Serviciile SPARQL pot fi descrise și invocatevia tehnologiile serviciilor Web clasice – i.e., prin REST

un punct terminal SPARQL – generic sau particular –acceptă cereri și întoarce rezultate via HTTP(S)

rezultatul poate fi serializat într-o suită de formate:HTML, JSON, RDF (N3, Turtle), XML etc.

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Serviciile SPARQL pot fi descrise și invocatevia tehnologiile serviciilor Web clasice – i.e., prin REST

un punct terminal SPARQL – generic sau particular –acceptă cereri și întoarce rezultate via HTTP(S)

rezultatul poate fi serializat într-o suită de formate:HTML, JSON, RDF (N3, Turtle), XML etc.

exemplu de punct terminal: http://dbpedia.org/sparql/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Invocarea unui end-point SPARQL (serviciu REST)recepționând ca date de intrare o interogare:

GET /sparql/?query=interogare&graph-uri=

http://www.retea-sociala.info/document-foaf.rdf HTTP/1.1

Host: www.undeva.org

User-agent: sparql-client/1.0

Accept: application/turtle, application/rdf+xml

cerere HTTP

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Un posibil răspuns din partea serviciului:

HTTP/1.1 200 OK Date: Fri, 10 Nov 2014 19:33:00 GMT Server: Apache/2.4.10 (Unix) Connection: closeContent-Type: application/turtle

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. <http://sit.ro/Ana> foaf:knows <http://sit.ro/Bogdan> .…

mesaj de răspuns HTTP

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: protocol

Maniera de serializare XML a rezultatelorinterogărilor SPARQL este standardizată

SPARQL Query Results XML Format (2013)

www.w3.org/TR/rdf-sparql-XMLres/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

Procesoare SPARQL – exemplificări:AllegroGraph (Java)ARC, EasyRDF (PHP)

ARQ (Java) – http://jena.apache.org/documentation/query/

dotNetRDF (C#) – http://dotnetrdf.org/

Rasqual (C, cu diverse portări) – http://librdf.org/rasqal/

RDF::Query (Perl)sparql-p (Python)

sparql-js, yasgui-yasr (Node.js)

de consultat și http://www.w3.org/wiki/SparqlImplementations

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

Implementări ale protocolului SPARQL

http://www.w3.org/wiki/SparqlImplementations

exemplificări:RDF2Go – abstractizează accesul la RDF stores

SparqlGUI (C#), Twinkle (Java)editoare de interogări SPARQL pentru desktop

Sparqling (JavaScript) – aplicație Web pentru Chrome

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

Twinkle – interogări asupra unui document RDF localhttp://www.ldodds.com/projects/twinkle/

SELECT ?nume ?url ?limbaj WHERE {

[ g:label ?nume ; g:URL ?url ; g:FOSS ?foss ; g:Category ?categ ;

g:Language ?limbaj ] .

FILTER (?foss = 'Yes' && ?categ = 'Database/Datastore' &&

(?limbaj = 'PHP' || regex (?limbaj, "^C"))) .

} ORDER BY ?limbaj

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

SELECT DISTINCT ?abilitati

WHERE {

[ a <http://dbpedia.org/ontology/FictionalCharacter> ;

<http://dbpedia.org/property/abilities> ?abilitati ] . }

LIMIT 30

interogări asupra DBpedia via instrumentul Twinkle:listarea abilităților personajelor fictive

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

interogări SPARQL via o interfață Webaici, proiectul UniProt (Universal Protein Resource)

http://beta.sparql.uniprot.org/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

Puncte terminale (end-points) SPARQL:http://www.w3.org/wiki/SparqlEndpoints

+ seturi de date deschise – exemplificări:

DBpediahttp://wiki.dbpedia.org/Downloads

oferite de inițiativa Linked Open Datahttp://datahub.io/group/lod

bioinformatică – proiectul BIO2RDFhttp://download.bio2rdf.org/release/2/release.html

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: instrumente

Puncte terminale (end-points) SPARQL:

verificarea disponibilității:SPARQL Endpoints Status – http://sparqles.okfn.org/

detalii privind descoperirea de servicii SPARQL în C. Buil-Aranda et al., SPARQL Web-Querying Infrastructure:

Ready for Action?, ISWC 2013http://sw.deri.org/~aidanh/docs/epmonitorISWC.pdf

https://www.youtube.com/watch?v=k8AJ4evqbCc

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Câteva exemplificări din lumea reală?

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interogarea SPARQL asupra DBpedia:informații despre locul de naștere a lui Eminescu

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

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

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX dbp: <http://dbpedia.org/property/>

SELECT ?locNastere ?dataNastere ?foto ?desc WHERE {

?persoana rdfs:label "Mihai Eminescu"@en ;

dbp:birthPlace ?locNastere ;

dbp:dateOfBirth ?dataNastere ;

foaf:img ?foto .

OPTIONAL { ?persoana dc:description ?desc } .

}

ORDER BY DESC (?locNastere)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

de observat diferitelegranularități

utilizarea instrumentului Twinklepentru a avea acces la DBpedia

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

clase de resurse

interogarea SPARQL asupra DBpedia:ocupația persoanelor cu un anumit sufix al numelui

SELECT ?nume ?ocupatie

WHERE {

?persoana foaf:name ?nume ;

dbp:occupation ?ocupatie .

FILTER regex (?nume, "escu$")

}

ORDER BY ?nume

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

acces la DBpedia via interfața Web a serviciului SPARQL:obținerea de informații despre Romania

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interogarea serviciului specific SPARQL al DBpediahttp://dbpedia.org/sparql

pentru a obține date privitoare la anumite state ale lumii(Lee Feigenbaum & Eric Prud’hommeaux, 2011)

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX type: <http://dbpedia.org/class/yago/>

PREFIX prop: <http://dbpedia.org/property/>

SELECT ?numeStat ?pop WHERE {

?stat a type:LandlockedCountries ;

rdfs:label ?numeStat ;

prop:populationEstimate ?pop .

FILTER (?pop > 15000000) .

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Interogarea serviciului specific SPARQL al DBpediahttp://dbpedia.org/sparql

pentru a obține date privitoare la anumite state ale lumii

numeStat pop

Afghanistan 31889923

Afganistán 31889923

Afghanistan 31889923

… …

Uzbequistão 27372000

Узбекистан 27372000

Uzbekistan 27372000

乌兹别克斯坦 27372000

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Obținerea datelor privind personalitățile(persoane cu o anumită ocupație, eventual monarhi)

care au numele începând cu litera A

SELECT DISTINCT ?personalitate ?nume ?dataMoarte

WHERE {

?personalitate rdf:type

<http://umbel.org/umbel/rc/PersonWithOccupation> .

OPTIONAL { ?personalitate rdf:type d:Monarch . }

?personalitate d:deathDate ?dataMoarte .

?personalitate rdfs:label ?nume .

FILTER (lang (?nume) = "en" AND regex (?nume, "^A"))

}

ORDER BY ?dataMoarte

LIMIT 10

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Lista filmelor vorbite în limba japoneză, regizate și– totodată – scrise de persoane născute după anul 1960

PREFIX dbo: <http://dbpedia.org/ontology/>

PREFIX dbprop: <http://dbpedia.org/property/>

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

SELECT ?film ?nume ?regizor ?dataNastere WHERE {

?film a dbo:Film ;

dbo:language <http://dbpedia.org/resource/Japanese_language> ;

dbprop:director ?regizor ;

dbprop:writer ?scenarist ;

foaf:name ?nume .

?regizor dbprop:dateOfBirth ?dataNastere .

FILTER ((?dataNastere >= 1960) && ?regizor = ?scenarist) .

}

ORDER BY ?nume

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

graful asociat interogării

rezultatele obținute

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Fie interogarea SPARQL asupra DBpedia:numele papilor născuți în Roma

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT * WHERE {

?papa a <http://dbpedia.org/ontology/Pope> ;

<http://dbpedia.org/property/birthPlace>

<http://dbpedia.org/resource/Rome> ;

rdfs:label ?nume .

}

LIMIT 3

sparql: detectarea inconsistențelor

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

iSparqleditare vizualăa interogărilor

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

???

rezultatul obținut

sparql: detectarea inconsistențelor

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Detectarea resurselor DBpediacare prezintă adrese Web specificate eronat

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

PREFIX dbpedia2: <http://dbpedia.org/property/>

SELECT ?subiect ?url

WHERE {

{ ?subiect foaf:page ?url . }

UNION

{ ?subiect dbpedia2:siteweb ?url . }

FILTER (isLITERAL (?url))

}

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

SELECT ?subiect ?url

WHERE {

?subiect dbpedia2:siteweb ?url .

FILTER (isLITERAL (?url))

} ORDER BY DESC (?url)

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

apare rdf:Literalîn loc de rdf:Resource

SELECT ?subiect ?url

WHERE {

?subiect dbpedia2:siteweb ?url .

FILTER (isLITERAL (?url))

} ORDER BY DESC (?url)

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

SPARQL oferă premisele verificării corectitudinii datelor(context mai larg: knowledge quality)

apare rdf:Literalîn loc de rdf:Resource

SELECT ?subiect ?url

WHERE {

?subiect dbpedia2:siteweb ?url .

FILTER (isLITERAL (?url))

} ORDER BY DESC (?url)

LIMIT 7

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Folosind punctul terminal SPARQL oferit de inițiativa voiD, avem informații privind seturi de date utilizând DBpedia

SELECT DISTINCT ?dataset ?url ?voc

WHERE {

?dataset a void:Dataset .

?dataset void:subset ?set .

?set void:objectsTarget

<http://dbpedia.org/void.ttl#DBpedia> .

?dataset void:sparqlEndpoint ?url .

?dataset void:vocabulary ?voc .

}vezi http://www.w3.org/TR/void/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Fragment din răspunsul oferit de serviciul voiDhttp://void.rkbexplorer.com/sparql/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Acces la HCLS (Health Care and Life Science) http://hcls.deri.org/sparql – pentru a obține date

biomedicale disponibile sub licența Science Commons

PREFIX go: <http://purl.org/obo/owl/GO#>

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

PREFIX obo: <http://www.obofoundry.org/ro/ro.owl#>

SELECT DISTINCT ?label ?process WHERE {

{ ?process obo:part_of go:GO_0007165 } # integral to

UNION

{ ?process rdfs:subClassOf go:GO_0007165 } # refinement of

?process rdfs:label ?label

}

“Find me the cellular processes that are either integral to or a refinement of signal transduction.” – Feigenbaum, 2009

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Titlul lucrărilor în franceză ce au fost traduse în română

SELECT DISTINCT ?titlu ?data ?editor ?nume WHERE {

[ ] foaf:focus ?lucrare .

?lucrare rdarelationships:expressionOfWork ?exp .

?lucrare dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre> .

?manif rdarelationships:expressionManifested ?exp .

OPTIONAL { ?exp bnfroles:r680 ?trad ;

dcterms:language <http://id.loc.gov/vocabulary/iso639-2/rum> .

?trad foaf:name ?nume }

OPTIONAL { ?manif dcterms:date ?data }

OPTIONAL { ?manif dcterms:title ?titlu }

OPTIONAL { ?manif dcterms:publisher ?editor }

} ORDER BY ?nume LIMIT 10

Bibliothèque Nationale de France – acces la date publice(Emmanuelle Bermes, 2014): http://data.bnf.fr/semanticweb

date opționale

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

rezultatele – în format HTML – oferite de serviciul SPARQLhttp://data.bnf.fr/sparql

(a se remarca modelarea eronată a datelor temporale)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: exemplificare

Obținerea de date privind entități referitoare la evenimentele ISWC (International Semantic Web

Conference) și ESWC (European Semantic Web Conference) http://data.semanticweb.org/

datele despre fiecare conferință sunt stocateîntr-un graf separat (named graph)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

# Participanții comuni la ISWC2010 și ESWC2011

# al căror nume începe cu litera N

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

SELECT DISTINCT ?nume

FROM NAMED

<http://data.semanticweb.org/conference/eswc/2011/complete>

FROM NAMED

<http://data.semanticweb.org/conference/iswc/2010/complete>

WHERE {

GRAPH ?g1 { ?pers a foaf:Person ; foaf:name ?nume }

GRAPH ?g2 { ?pers a foaf:Person ; foaf:name ?nume }

FILTER ( ?g1 != ?g2 && regex (?nume, "^N") ) .

}

LIMIT 7

exemplu inspirat de (Corno & Farinetti, 2009)

nume

"Neil Ireson"

"Nenad Stojanovic"

"Nicholas Gibbins"

"Nicola Fanizzi"

"Nicola Henze"

"Norman Heino"

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

organizații participantela ambele evenimente

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

aflarea entităților cu anumite review-uri(comentarii, punctaj) disponibile la Revyu.com

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

<sparql xmlns="http://www.w3.org/2005/sparql-results#"><head><variable name="?eticheta"/><variable name="?comentariu"/>

<variable name="?punctaj"/></head> <results ordered="false" distinct="false">

<result> <binding name="?eticheta">

<literal>Borat: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan</literal>

</binding> <binding name="?comentariu">

<literal>I found the Borat film quite a disappointment. Being a long-time fan

of Sacha Baron Cohen in all his different guises, I was left with the feeling that he hadn't done the character, or himself, justice. […]

</literal></binding> <binding name="?punctaj"><literal>3</literal></binding>

</result></results>

</sparql> formatul XML standardizat al răspunsului

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

date publiceguvernamentale

oferite de data.gov.uk

pe baza unuiserviciu SPARQL

(open government)

PREFIX ed: <http://education.data.gov.uk/def/school/>

SELECT DISTINCT ?denumire ?capacitate

WHERE {

?scoala a ed:TypeOfEstablishment_Other_Independent_School ;

ed:establishmentName ?denumire ;

ed:establishmentNumber ?capacitate

}

ORDER BY DESC(?capacitate)

LIMIT 10

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

British Museum: acces la date via http://collection.britishmuseum.org/sparql

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

vizualizarea structurată a datelor (aici, animale sălbatice) preluate de la BBC via OpenLink HTML5 Pivot Viewer

DESCRIBE ?s

WHERE {

?s a <http://purl.org/ontology/wo/Species> ;

foaf:depiction ?foto

} LIMIT 150

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

generarea de chart-uri pe baza datelor obținute cu SPARQL biblioteca Sgvizler (JavaScript)

http://dev.data2000.no/sgvizler/

SELECT *

WHERE {

[ ] w:hasCountryCode ?ID ; w:hasGNP ?GNP ;

}

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql.us – enumerarea conceptelor (clase de resurse) definite de schema.org – scheme de date folosite via microdate HTML5

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>SELECT *WHERE {

?concept rdf:type rdfs:Class .}

?concept = http://schema.org/Thing

?concept = http://schema.org/CreativeWork

?concept = http://schema.org/Article

?concept = http://schema.org/BlogPosting

?concept = http://schema.org/NewsArticle

?concept = http://schema.org/ScholarlyArticle

?concept = http://schema.org/MedicalScholarlyArticle

?concept = http://schema.org/Blog

?concept = http://schema.org/Book

?concept = http://schema.org/Comment

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql: recapitulare

O interogare SPARQL constă în:

declarații de prefixe – vocabulare desemnate de URL

definiții ale seturilor de date (grafuri RDF) interogate

clauză (result clause) identificând datele rezultate

un șablon (query pattern) specificând termeni liberi

modificatori (query modifiers) ce oferă posibilități de fragmentare, sortare, rearanjare a rezultatelor interogării

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

ProcesorSPARQL

HTML

bază

de daterelațională

RD

B↔

RD

F

bază

de date(e.g.,

NoSQL)

pu

nct

term

inal

SPA

RQ

L

triple store p

un

ctte

rmin

al S

PAR

QL

Aplicație

teh

nic

i NL

P

text nestructurat

XML/XHTML

graf RDF

SPARQL – privire de ansamblu (Ivan Herman, 2012)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

arhitectura serverului Virtuoso

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

Recomandare W3C (2013)

oferă mijloace pentru exprimarea:actualizărilor de date (updates)

negațiilor (negation)agregărilor (aggregates)

proiecțiilor (projected expressions)sub-interogărilor (subqueries)

http://www.w3.org/TR/sparql11-query/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql – viitor

anatomia unei interogări SPARQL 1.1conform David Backett (2011)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

obținerea datelor privind profesorii îndrumători și numărul studenților examinați de fiecare

SELECT ?prof (COUNT (DISTINCT ?stud) AS ?studenti)

WHERE {

?prof a ac:Student_Adviser ;

s:examineaza ?stud

} GROUP BY ?prof

funcțiile de agregare (AVG, COUNT, MIN, MAX, SUM,…) sunt implementate de anumite sisteme SPARQL

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

Posibilitatea utilizării funcțiilor de proiecție:

SELECT (fn:concat (?prenume, ' ', ?nume) AS ?numeComplet)

WHERE {

?persoana foaf:firstName ?prenume ;

foaf:lastName ?nume ;

foaf:interest :Art , :Music .

}

obținerea numelui complet al persoanelorinteresate de artă și muzică

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

SELECT *

WHERE {

?s ?p ?o .

MINUS { ?s <http://xmlns.com/foaf/0.1/maker> ?o . }

}

MINUS exprimă negația

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

SELECT ?nume

WHERE {

?persoana foaf:firstName ?nume

FILTER ( NOT EXISTS { ?persoana rel:knowsByReputation [ ] } )

}

numele persoanelor care nu cunosc după reputație pe cineva important

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

Specificarea drumurilor privind proprietățile(property paths)

potrivirile de triple iau în considerațiedrumurile prin graful RDF

specificate sintactic via expresii similare XPath

a/b ^a a|b a* a+ a? a{m,n} a{n} a{m,} a{,n}

unde a și b sunt URI-uri ce semnifică predicate

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

SELECT ?persoana

WHERE {

s:dlucanu s:examineaza/(rel:closeFriendOf|rel:siblingOf) ?persoana

}

determinarea persoanelor care sunt prieteni apropiațisau rude cu un student examinat de un anumit profesor

persoana

s:diana

s:cristina

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

Recurgerea la puncte terminale SPARQL multiple(federated query) – adaptare după Lee Feigenbaum (2010)

PREFIX s: <…>

SELECT …

FROM s:graph

WHERE {

… A …

SERVICE s:sw1 {

… B …

}

SERVICE s:sw2 {

… C …

}

}

s:graph

Web

SPARQL endpoint

s:sw2

SPARQL endpoint

s:sw1

Local Graph Store

SD

SD = Service Description (folosind RDF)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

un serviciu SPARQL poate avea atașată o descriere RDF conform www.w3.org/TR/sparql11-service-description/

exemplu: serviciul http://gov.tso.co.uk/legislation/sparql (legislație)

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

Posibilități de actualizare a grafurilor RDF:INSERT DATA, DELETE DATA, MODIFY, LOAD, CLEAR

Managementul unui graf RDF:CREATE, DROP, COPY, MOVE, ADD

www.w3.org/TR/sparql11-update/

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql 1.1

INSERT DATA { # inserăm unele date despre noua eroină :-)

:desdemona foaf:title "Dr." ; foaf:name "Dés de Möna" .

}

MODIFY <http://castel.info/eveniment/bal-mascat/participanti>

DELETE { ?persoana foaf:knows :julieta } # substituim :julieta

INSERT { ?persoana foaf:knows :desdemona } # cu noua venită

WHERE {

?persoana rdf:type foaf:Person .

?persoana foaf:knows :julieta .

}

fiecare operațiee considerată

atomică

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql

Pentru mai multe detalii, a se consulta:

Bob DuCharme, Learning SPARQL. Querying and Updating with SPARQL 1.1 (Second Edition), O’Reilly, 2013

Lee Feigenbaum & Eric Prud’hommeaux,SPARQL By Example, 2013

www.cambridgesemantics.com/semantic-university/sparql-by-example

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

sparql – privire de ansamblu

SPARQL permite:extragerea de valori de interes din date (semi)structurate

explorarea datelor via interogări asupraposibilelor relații ce pot fi stabilite între aceste date

realizarea de join-uri complexe

transformarea datelor RDF dintr-un vocabular în altul,inclusiv cu posibilitatea actualizării

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

rezumat

⊶⊷obținerea, transformarea și interogarea

datelor modelate în RDF

Dr.

Sab

in B

ura

ga

www.purl.org/net/busa

co

episodul viitor: aplicații Web bazate pe RDF. Linked Data