Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web ⊶⊷ managementul datelor RDF
Jul 15, 2015
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
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
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
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
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
???
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
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
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