SlideShare una empresa de Scribd logo
1 de 152
Descargar para leer sin conexión
Dr. Sabin Buragawww.purl.org/net/busaco

Dezvoltarea aplicațiilor Web

managementul datelor RDF
Georges-Louis de Buffon

Dr. Sabin Buragawww.purl.org/net/busaco

“Trebuie să adunăm fapte
pentru a avea idei.”
Dr. Sabin Buragawww.purl.org/net/busaco

Ce modele de date sunt disponibile pe Web?
textuale
date nestructurate – eventual, multilingve

structurate
RDF – reprezintă “lucruri” (resurse) din lumea reală:
indivizi, servicii, aplicații,... – de dorit, modelate formal

hibride
date structurate “scufundate” în text
e.g., microdate HTML5, RDFa

Dr. Sabin Buragawww.purl.org/net/busaco

modele de date disponibile pe Web
date RDF
(reprezentare
în memorie)
date RDF
(documente de
sine-stătătoare)
date conforme modelului RDF
(“scufundate” în alte resurse)
conform (Bailer & Hausenblas, 2007)
date non-conforme modelului RDF
(de sine-stătătoare + incluse în fișiere)

conform (Bailer & Hausenblas, 2007)
Dr. Sabin Buragawww.purl.org/net/busaco

model
RDF
abstract
date RDF
(reprezentare
în memorie)
RDF/XML, N3, TriX,
N-Triple,… (serializări)

cod binar

date RDF
(documente de
sine-stătătoare)

date conforme modelului RDF
RDFa,
(“scufundate” în alte resurse)
Semantic MediaWiki
baze de date
conform (Bailer & Hausenblas, 2007)
relaționale, XML,
date non-conforme modelului RDF
HTML, microformate,
(de sine-stătătoare + incluse în fișiere)
microdate, JSON

conform (Bailer & Hausenblas, 2007)
Dr. Sabin Buragawww.purl.org/net/busaco

model
RDF
abstract
Dr. Sabin Buragawww.purl.org/net/busaco

Ce instrumente de procesare
a declarațiilor RDF putem folosi?
Procesor (parser) RDF
preluarea datelor disponibile în diverse formate
și reprezentarea lor ca triple RDF

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Dr. Sabin Buragawww.purl.org/net/busaco

api-uri & biblioteci rdf – exemple
ARC2 (PHP)
dotNetRDF (C#)
Graphite (PHP)
Jena Semantic Web Toolkit (Java)
PerlRDF (Perl)
RDFLib (Python)
rdfQuery.js, rdfstore-js (JavaScript)
Redland (C; portări în alte limbaje: C#, Objective-C, PHP)
Sesame (Java)
...
detalii la http://www.w3.org/2001/sw/wiki/Tools
Serializator (serializer) RDF
exprimarea modelului intern RDF
în diverse formate

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

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Convertor RDF
preluarea datelor din alte modele
și transformarea lor in RDF
extragerea directă din documentele HTML
via scrapers/harvesters

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Extractoare/convertoare RDF – exemple:
Any23 (Java)
Babel (Java)
Greengrass (C#)
LinqToRDF (C#)
Raptor (C)
RDF123 (Java)
RDFSlice (Java)
Semantic Radar (JavaScript – extensie Firefox)
URIBurner – serviciu Web: http://linkeddata.uriburner.com/

Dr. Sabin Buragawww.purl.org/net/busaco

instrumente
Inițiativa Triplr
serviciu Web REST de conversie a datelor (d)in RDF
bazat pe biblioteca Redland

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

Dr. Sabin Buragawww.purl.org/net/busaco

instrumente
Inițiativa Triplr
exemple:
din HTML în RDF/XML via GRDDL
http://triplr.org/rdf/www.w3.org/People/Connolly/

Dr. Sabin Buragawww.purl.org/net/busaco

instrumente

conversie în format Turtle a unui fișier FOAF (RDF/XML)
http://triplr.org/turtle/profs.info.uaic.ro/~busaco/busaco.foaf.xml
Navigatoare RDF (hyperdata browsers)
redau utilizatorului (uman) o reprezentare
“frumoasă” a triplelor RDF, permitând
interacțiunea cu datele: vizualizare, filtrare,...

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Navigatoare RDF (hyperdata browsers)
exemple:
Disco
Marbles
OpenLink Data Explorer
Q&D RDF Browser
Tabulator
uzual, disponibile ca extensii pentru browser-ul Web

Dr. Sabin Buragawww.purl.org/net/busaco

instrumente
Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Extragerea și procesarea datelor existente pe Web
o soluție „clasică”: information extraction
(eventual, pe baza procesării limbajului natural – NLP)
în cazul nostru, dorim să recurgem la
tehnologiile Web-ului semantic
O modalitate standardizată de “convertire”
în triple RDF
a construcțiilor semantice încapsulate
în documentele Web

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
GRDDL – Gleaning Resource Descriptions
from Dialects of Languages

Dr. Sabin Buragawww.purl.org/net/busaco

grddl

glean
verb [ trans. ]
extract (information) from various sources:
the information is gleaned from press clippings.
• collect gradually and bit by bit:
objects gleaned from local markets.
• historical gather (leftover grain or other produce) after a harvest:
[as n. ] (gleaning)
the conditions of farm workers in the ‘30s made gleaning essential.
Dr. Sabin Buragawww.purl.org/net/busaco

grddl
Permite asocierea de transformări
din formate structurate – e.g., microformate, RDFa, XML –
în declarații RDF, fără pierderea semanticii (meaning)

www.w3.org/TR/grddl/

www.w3.org/TR/grddl-primer/
Există o multitudine de documente modelate pe baza
unor dialecte XML – e.g., ODF, RSS/Atom, XHTML etc. –,
încapsulând date care ar putea fi exprimate via RDF
se dorește o asociere faithful – se păstrează înțelesul

Dr. Sabin Buragawww.purl.org/net/busaco

grddl
Există o multitudine de documente modelate pe baza
unor dialecte XML – e.g., ODF, RSS/Atom, XHTML etc. –,
încapsulând date care ar putea fi exprimate via RDF
se dorește o asociere faithful – se păstrează înțelesul
se va specifica o transformare GRDDL
uzual, se folosesc transformări XSLT

Dr. Sabin Buragawww.purl.org/net/busaco

grddl
Dr. Sabin Buragawww.purl.org/net/busaco

grddl

Berners-Lee, 2007: www.w3.org/2007/Talks/1211-whit-tbl/
Un document XHTML ce include microformatul hCard:
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2003/g/data-view">
<link rel="transformation" href="mHTML2RDF.xsl" />
<title>...</title></head>
transformare
<body>
GRDDL
<div class="vcard">
<p class="fn n">
<span class="given-name">Sabin</span>
<span class="family-name">Buraga</span></p>
</div>
...
</body>
</html>

Dr. Sabin Buragawww.purl.org/net/busaco

grddl: exemplu
În urma transformării XSLT, ar putea rezulta:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:v="http://www.w3.org/2006/vcard/ns#">
<rdf:Description rdf:nodeID="EsAVHkUx6">
<rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#VCard"/>
<v:fn>Sabin Buraga</v:fn>
</rdf:Description>
<rdf:Description rdf:nodeID="EsAVHkUx8">
<rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Name"/>
<v:given-name>Sabin</v:given-name>
<v:family-name>Buraga</v:family-name>
</rdf:Description>
</rdf:RDF>

Dr. Sabin Buragawww.purl.org/net/busaco

grddl: exemplu
Efectuarea diverselor conversii via GRDDL:
microformatul hCardRDF
http://www.w3.org/2006/vcard/hcard2rdf.xsl
microformatul hCalendarRDF
http://www.w3.org/2002/12/cal/glean-hcal.xsl
RDFaRDF
http://www.w3.org/2001/sw/grddl-wg/td/RDFa2RDFXML.xsl
detalii în R. Akerkar, Semantic Markup Report,
NCE Tourism Fjord Norway, 2012

Dr. Sabin Buragawww.purl.org/net/busaco

grddl: exemplu
Date stocate în sisteme de baze de date relaționale

date modelate cu RDF

asocieri directe – mappings (via schema bazei de date)

Dr. Sabin Buragawww.purl.org/net/busaco

necesități
Dr. Sabin Buragawww.purl.org/net/busaco

realizarea diferitelor asocieri exprimate via
R2RML (RDB to RDF Mapping Language)
recomandare a Consorțiului Web – 2012
www.w3.org/TR/r2rml/
CREATE TABLE "Software" (
"ID" INT, PRIMARY KEY("ID"), "nume" CHAR(50), "desc" CHAR(300)
)
CREATE TABLE "Utiliz" (
"ID" INT, PRIMARY KEY("ID"), "identit" CHAR(100),
"soft" INT, FOREIGN KEY("soft") REFERENCES "Software"("ID")
)
INSERT INTO "Software" ("ID", "nume", "desc") VALUES (13, 'Mageia', 'Sistem Linux')
INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (7, 'Dan', 13)
INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (8, 'Cristina', NULL)

date RDF
<Utiliz/ID=7> rdf:type
<Utiliz> .
<Utiliz/ID=7> <Utiliz#ID>
7.
<Utiliz/ID=7> <Utiliz#identit> "Dan" .
<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> "Mageia" .
<Software/ID=13> <Software#desc> "Sistem Linux" .

asocieri directe

Dr. Sabin Buragawww.purl.org/net/busaco

baze de date relaționale gestionate via SQL

recomandare W3C
(M. Arenas et al., 2012)
www.w3.org/TR/
rdb-direct-mapping/
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. Sabin Buragawww.purl.org/net/busaco

necesități
Dr. Sabin Buragawww.purl.org/net/busaco

detalii despre Sindice API la
http://sindice.com/developers/api
Dr. Sabin Buragawww.purl.org/net/busaco

Nu există posibilitatea de a utiliza un sistem
de stocare/interogare a triplelor RDF?
Datele RDF sunt menținute persistent
în cadrul unui RDF store

Dr. Sabin Buragawww.purl.org/net/busaco

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 resursele
având același URI sunt considerate echivalente

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf
Intern, un RDF store poate stoca triplele
într-o varietate de formate
baze de date relaționale
versus
structuri de date speciale
inclusiv, la nivel de cloud

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf
Asigurarea interoperabilității este facilitată de
formatele de serializare standardizate
RDF/XML, Turtle, JSON(-LD)

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf
Aspecte de interes:
performanța – e.g., scalabilitatea, timpul de răspuns,...
capacitatea de stocare
facilitățile privind interogarea datelor
API-urile disponibile
fiabilitatea
securitatea

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf
Exemple de implementări curente
(unele disponibile în regim open source)
stocare în structuri de date native:
AllegroGraph (Common Lisp &
multe alte limbaje de programare), BigData (Java),
Jena TBD (Java), Sesame (Java), Stardog (Java, Groovy)
www.w3.org/wiki/LargeTripleStores

Dr. Sabin Buragawww.purl.org/net/busaco

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)
http://semanticweb.com/introduction-to-triplestores_b34996

Dr. Sabin Buragawww.purl.org/net/busaco

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)

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf
Utilizări notabile

Dr. Sabin Buragawww.purl.org/net/busaco

sisteme de stocare rdf

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. Sabin Buragawww.purl.org/net/busaco

Există un limbaj de interogare
a seturilor de triple RDF?
SPARQL Protocol and RDF Query Language

Dr. Sabin Buragawww.purl.org/net/busaco

sparql

limbaj descriptiv standardizat
pentru realizarea de interogări pe baza potrivirilor
de șabloane referitoare la triple RDF
inspirat din RDQL – oferit de Jena, RAP, Redland etc.
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. Sabin Buragawww.purl.org/net/busaco

sparql
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. Sabin Buragawww.purl.org/net/busaco

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

Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Convenții sintactice bazate pe Turtle/N3
triplele RDF sunt considerate
ca fiind tablouri de termeni RDF

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Convenții sintactice bazate pe Turtle/N3
triplele RDF sunt considerate
ca fiind tablouri de termeni RDF
termen RDF = IRI | nod blanc | literal
pattern de triple = tablou de termeni RDF
sau nume de variabile (termeni liberi)

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
URI – sau, mai general, IRI – delimitați de “<” si “>”

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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Pentru a referi spații de nume ale vocabularelor utilizate
se 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/>

lista prefixelor comune: http://prefix.cc/

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Nodurile blanc se specifică prin _:nume
sau sunt delimitate de [ și ]
dacă se folosesc o singură dată

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Literali RDF
(șiruri de caractere cu atribute opționale)
"Web"
"Web"@ro
"true"^^xsd:boolean
"true"^^xsd:string

# se indica limba
# se specifică tipul de date

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Abrevieri
referitoare la triple
:s
:s

:p
:p1
:p2

:o1 ,
:o2 .
:o1 ;
:o2 .

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare

echivalent cu

:s
:s

:p
:p

:o1 .
:o2 .

echivalent cu

:s
:s

:p1
:p2

:o1 .
:o2 .
Abrevieri
privitoare la nodurile blanc
:s :p [ :p' :o ]
echivalent cu
:s :p _:x .

_:x :p' :o .

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Un șablon (pattern) permite specificarea
de variabile indicând date ce vor fi returnate
în urma realizării interogării
?subiect ?predicat ?obiect .

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Șablon: subiect ?predicat ?obiect .
?predicat și ?obiect reprezintă necunoscutele (unbounded)
?obiect
?predicat

subiect

?predicat

obiect1

?obiect
obiect2

?predicat

?obiect
obiectn

după (Corno & Farinetti, 2009)
Exemplu
lista persoanelor inter-conectate
via predicatul (proprietatea) foaf:knows
?persoana foaf:knows ?altaPersoana .

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Exemplu
descoperirea proprietătilor/relațiilor
dintre subiect și obiect
_:subiect ?predicat _:obiect .

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Șabloanele pot fi combinate pentru a forma
șabloane mai complexe
șablon de tip graf (BGP – basic graph pattern)

Dr. Sabin Buragawww.purl.org/net/busaco

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 SPARQL
exprimate formal – algebric – prin tuplul (E, DS, QF)

E = expresie SPARQL
DS = set de date RDF (data set) local/disponibil pe Web
QF = formular de interogare (query form)

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
SELECT ?contrib
WHERE {
<http://en.wikipedia.org/>
<http://purl.org/dc/elements/1.1/contributor>
?contrib .
selectarea resurselor
}
ce au contribuit
la o resursă

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

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Rezultatul interogării poate fi:
un tabel de valori corespunzătoare variabilelor
utilizate, rezultat precizat prin SELECT

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Rezultatul interogării poate fi:
o valoare booleană întoarsă de construcția ASK

“este adevărat că…?”

Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare

anatomia unei interogări SPARQL 1.0 (Beckett, 2011)
SELECT
rezultatul interogării reprezintă un tabel

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

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
vezi exemplele
asociate cursului

Dr. Sabin Buragawww.purl.org/net/busaco

Considerăm
date modelate
în RDF
privitoare la
studenții FII
SELECT ?persoana
WHERE {
?persoana rdf:type foaf:Person
}

Dr. Sabin Buragawww.purl.org/net/busaco

determinarea resurselor de tip persoană
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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Datele interogate pot fi filtrate via clauza FILTER
expresiile de filtrare includ:
variabile
operatori aritmetici/logici
funcții (predefinite sau specificate de utilizator)
tipuri de date definite de XML Schema

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Funcții predefinite
de testare: bound ( ), isBlank ( ), isLiteral ( ), isURI ( )
de conversie: str ( ), lang ( ), datatype ( )
altele: sameTerm ( ), langMatches ( ), regex ( )

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
FILTER (?anul = 2)
FILTER (?dataComanda < "2013-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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
determinarea numelor tuturor resurselor de gen feminin

Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?numeStudenta
WHERE {
?persoana foaf:gen ?gen ;
foaf:firstName ?numeStudenta .
FILTER regex (?gen, "^female", "i") .
}
SELECT DISTINCT ?studentSub22 ?titulatura
WHERE {
?persoana foaf:age ?ani ;
foaf:firstName ?studentSub22
OPTIONAL { ?persoana foaf:title ?titulatura . }
FILTER (?ani <= 22)
}

numele și, eventual, titulatura persoanelor mai tinere

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Nodurile blanc într-o interogare
joacă rol de variabile anonime

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
SELECT DISTINCT ?nume ?ani ?prof
s-a recurs la
WHERE {
vocabularul
[ ] foaf:knows ?persoana .
relationship
?persoana foaf:firstName ?nume ;
rel:knowsByReputation
<http://www.w3.org/People/Berners-Lee/card#i> ;
foaf:age ?ani .
?prof s:examineaza ?persoana
}

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

Dr. Sabin Buragawww.purl.org/net/busaco

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 reificate
exprimate de Wikipedia

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Construirea modelului RDF al edițiilor London Gazette
conform 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 > "2011-01-01"^^xsd:date ) . }

Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Obținerea de șabloane de graf alternative
se realizează via clauza UNION

{ ?nod voc:hasName ?nume }
UNION
{ ?nod vcard:FN ?nume }

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare

resursele cunoscute sau rude cu o persoană
și examinate doar de un anumit profesor
Întrebare:
am putea realiza interogări SPARQL
asupra mai multor grafuri RDF?

Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
Graful RDF de intrare poate fi specificat via URI
FROM <http://planetrdf.com/bloggers.rdf>

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: limbaj de interogare
SELECT ?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) .
}
adaptare după (J. Hebeler et al., 2009)

Dr. Sabin Buragawww.purl.org/net/busaco

extragerea tuturor datelor despre persoanele
cunoscute de Sir Tim Berners-Lee
Pune la dispoziție un mecanism de realizare
de 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. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Serviciile SPARQL pot fi descrise și invocate
via tehnologiile serviciilor Web clasice – i.e., prin REST
un punct terminal SPARQL – generic sau particular –
acceptă cereri și întoarce rezultate via HTTP(S)

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Serviciile SPARQL pot fi descrise și invocate
via 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. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Serviciile SPARQL pot fi descrise și invocate
via 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. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Un posibil răspuns din partea serviciului:
HTTP/1.1 200 OK
Date: Fri, 1 Nov 2013 19:33:00 GMT
Server: Apache/2.4.6 (Unix)
Connection: close
Content-Type: application/turtle

mesaj de
răspuns HTTP

@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> .
…

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Maniera de serializare XML a rezultatelor
interogărilor SPARQL este standardizată

SPARQL Query Results XML Format (2013)
www.w3.org/TR/rdf-sparql-XMLres/

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: protocol
Procesoare SPARQL – exemplificări:
AllegroGraph (Java)
ARC (PHP)
ARQ (Java – bazat pe Jena)
dotNetRDF (C#)
EasyRDF (PHP)
Rasqual (C, cu portări în alte limbaje)
RDF::Query (Perl)
sparql-p (Python)
de consultat și http://semanticweb.org/wiki/Tools

Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: instrumente
Dr. Sabin Buragawww.purl.org/net/busaco

sparql: instrumente
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

Twinkle – interogări asupra unui document RDF local
Dr. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql: instrumente

interogări SPARQL via o interfață Web
aici, proiectul UniProt (Universal Protein Resource)
Puncte terminale (end-points) SPARQL:
http://www.w3.org/wiki/SparqlEndpoints
+
seturi de date deschise – exemplificări:
DBpedia
http://wiki.dbpedia.org/Downloads
oferite de inițiativa Linked Open Data
http://datahub.io/group/lod
bioinformatică – proiectul BIO2RDF
http://download.bio2rdf.org/release/2/release.html

Dr. Sabin Buragawww.purl.org/net/busaco

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 2013
http://sw.deri.org/~aidanh/docs/epmonitorISWC.pdf
https://www.youtube.com/watch?v=k8AJ4evqbCc

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: instrumente
SPARQL Endpoints Status pe baza serviciilor
SPARQL înregistrate la datahub.io
Dr. Sabin Buragawww.purl.org/net/busaco

sparql: instrumente
Dr. Sabin Buragawww.purl.org/net/busaco

Câteva exemplificări din lumea reală?
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. Sabin Buragawww.purl.org/net/busaco

Interogarea SPARQL asupra DBpedia:
informații despre locul de naștere a lui Eminescu
de observat diferitele
granularități

Dr. Sabin Buragawww.purl.org/net/busaco

utilizarea instrumentului Twinkle
pentru a avea acces la DBpedia
interogarea SPARQL asupra DBpedia:
ocupația persoanelor cu un anumit sufix al numelui

clase de
resurse

Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?nume ?ocupatie
WHERE {
?persoana foaf:name
?nume ;
dbp:occupation ?ocupatie .
FILTER regex (?nume, "escu$")
}
ORDER BY ?nume
LIMIT 7
Dr. Sabin Buragawww.purl.org/net/busaco

acces la DBpedia via interfața Web a serviciului SPARQL:
obținerea de informații despre Romania
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. Sabin Buragawww.purl.org/net/busaco

Interogarea serviciului specific SPARQL al DBpedia
http://dbpedia.org/sparql
pentru a obține date privitoare la anumite state ale lumii
(Lee Feigenbaum & Eric Prud’hommeaux, 2011)
numeStat
Afghanistan
Afganistán

pop
31889923
31889923

Afghanistan
…
Uzbequistão

31889923
…
27372000

Узбекистан
Uzbekistan
乌兹别克斯坦

27372000
27372000
27372000

Dr. Sabin Buragawww.purl.org/net/busaco

Interogarea serviciului specific SPARQL al DBpedia
http://dbpedia.org/sparql
pentru a obține date privitoare la anumite state ale lumii
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. Sabin Buragawww.purl.org/net/busaco

Obținerea datelor privind personalitățile
(persoane cu o anumită ocupație, eventual monarhi)
care au numele începând cu litera A
Dr. Sabin Buragawww.purl.org/net/busaco
PREFIX dbo:
PREFIX dbprop:
PREFIX foaf:

<http://dbpedia.org/ontology/>
<http://dbpedia.org/property/>
<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. Sabin Buragawww.purl.org/net/busaco

Lista filmelor vorbite în limba japoneză, regizate și
– totodată – scrise de persoane născute după anul 1960
Dr. Sabin Buragawww.purl.org/net/busaco

graful asociat interogării

rezultatele obținute
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

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: detectarea inconsistențelor
Dr. Sabin Buragawww.purl.org/net/busaco

iSparql
editare vizuală
a interogărilor
???

rezultatul obținut

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: detectarea inconsistențelor
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. Sabin Buragawww.purl.org/net/busaco

Detectarea resurselor DBpedia
care prezintă adrese Web specificate eronat
Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?subiect ?url
WHERE {
?subiect dbpedia2:siteweb ?url .
FILTER (isLITERAL (?url))
} ORDER BY DESC (?url)
LIMIT 7
apare rdf:Literal
în loc de rdf:Resource

Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?subiect ?url
WHERE {
?subiect dbpedia2:siteweb ?url .
FILTER (isLITERAL (?url))
} ORDER BY DESC (?url)
LIMIT 7
apare rdf:Literal
în loc de rdf:Resource

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

Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?subiect ?url
WHERE {
?subiect dbpedia2:siteweb ?url .
FILTER (isLITERAL (?url))
} ORDER BY DESC (?url)
LIMIT 7
Dr. Sabin Buragawww.purl.org/net/busaco

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

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

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 .
}
Dr. Sabin Buragawww.purl.org/net/busaco

Fragment din răspunsul oferit de serviciul voiD
http://void.rkbexplorer.com/sparql/
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. Sabin Buragawww.purl.org/net/busaco

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
Dr. Sabin Buragawww.purl.org/net/busaco

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)
"Nicholas Gibbins"
"Nicola Fanizzi"
"Nicola Henze"

exemplu inspirat de (Corno & Farinetti, 2009)

"Norman Heino"

Dr. Sabin Buragawww.purl.org/net/busaco

# 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") ) .
nume
}
"Neil Ireson"
LIMIT 7
"Nenad Stojanovic"
Dr. Sabin Buragawww.purl.org/net/busaco

organizații participante
la ambele evenimente
Dr. Sabin Buragawww.purl.org/net/busaco

aflarea entităților cu anumite review-uri
(comentarii, punctaj) disponibile la Revyu.com
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. Sabin Buragawww.purl.org/net/busaco

<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
Dr. Sabin Buragawww.purl.org/net/busaco

date publice
guvernamentale
oferite de data.gov.uk
pe baza unui
serviciu 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. Sabin Buragawww.purl.org/net/busaco

British Museum: acces la date via
http://collection.britishmuseum.org/sparql
Dr. Sabin Buragawww.purl.org/net/busaco

DESCRIBE ?s
WHERE {
?s a <http://purl.org/ontology/wo/Species> ;
foaf:depiction ?foto
} LIMIT 150

vizualizarea structurată a datelor (aici, animale sălbatice)
preluate de la BBC via OpenLink HTML5 Pivot Viewer
Dr. Sabin Buragawww.purl.org/net/busaco

SELECT *
WHERE {
[ ] w:hasCountryCode ?ID ; w:hasGNP ?GNP ;
…
}

generarea de chart-uri pe baza datelor obținute cu SPARQL
biblioteca Sgvizler (JavaScript)
https://code.google.com/p/sgvizler/
?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
…

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

Dr. Sabin Buragawww.purl.org/net/busaco

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 .
}
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

Dr. Sabin Buragawww.purl.org/net/busaco

sparql: recapitulare

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


HTML



RDB↔RDF





Dr. Sabin Buragawww.purl.org/net/busaco

punct terminal SPARQL

Procesor
SPARQL

tehnici NLP

triple
store

punct terminal SPARQL



Aplicație

bază
de date
(e.g.,
NoSQL)



bază
de date
relațională

text nestructurat XML/XHTML

SPARQL – privire de ansamblu (Ivan Herman, 2012)
Dr. Sabin Buragawww.purl.org/net/busaco

arhitectura
serverului
Virtuoso
Propunere de extindere a SPARQL
SPARQL 1.0SPARQL 1.1SPARQL 2.0

a se studia și prezentarea lui Lee Feigenbaum (2010)
www.slideshare.net/LeeFeigenbaum/sparql2-status

Dr. Sabin Buragawww.purl.org/net/busaco

sparql – viitor
Oferă mijloace pentru exprimarea:
actualizărilor de date (updates)
negațiilor (negation)
agregărilor (aggregates)
proiecțiilor (projected expressions)
sub-interogărilor (subqueries)
…

conform (Bob DuCharme, 2013)

Dr. Sabin Buragawww.purl.org/net/busaco

sparql 1.1
Dr. Sabin Buragawww.purl.org/net/busaco

sparql – viitor

anatomia unei interogări SPARQL 1.1
conform David Backett (2011)
SELECT ?prof (COUNT (DISTINCT ?stud) AS ?studenti)
WHERE {
?prof a ac:Student_Adviser ;
s:examineaza ?stud
} GROUP BY ?prof

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

Dr. Sabin Buragawww.purl.org/net/busaco

funcțiile de agregare (AVG, COUNT, MIN, MAX, SUM,…)
sunt deja implementate de anumite sisteme SPARQL
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 persoanelor
interesate de artă și muzică

Dr. Sabin Buragawww.purl.org/net/busaco

sparql 1.1
SELECT *
WHERE {
?s ?p ?o .
MINUS { ?s <http://xmlns.com/foaf/0.1/maker> ?o . }
}

Dr. Sabin Buragawww.purl.org/net/busaco

MINUS exprimă negația
numele persoanelor care nu cunosc după reputație
pe cineva important

Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?nume
WHERE {
?persoana foaf:firstName ?nume
FILTER ( NOT EXISTS { ?persoana rel:knowsByReputation [ ] } )
}
Specificarea drumurilor privind proprietățile
(property paths)
potrivirile de triple iau în considerație
drumurile 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. Sabin Buragawww.purl.org/net/busaco

sparql 1.1
Dr. Sabin Buragawww.purl.org/net/busaco

SELECT ?persoana
WHERE {
s:dlucanu s:examineaza/(rel:closeFriendOf|rel:siblingOf) ?persoana
}
persoana
s:diana
s:cristina

determinarea persoanelor care sunt prieteni apropiați
sau rude cu un student examinat de un anumit profesor
Local Graph Store

s:graph

SPARQL endpoint

SD

s:sw1

Web

SPARQL endpoint

s:sw2

PREFIX s: <…>
SELECT …
FROM s:graph
WHERE {
…A…
SERVICE s:sw1 {
…B…
}
SERVICE s:sw2 {
…C…
}
}

SD = Service Description (folosind RDF)

Dr. Sabin Buragawww.purl.org/net/busaco

Recurgerea la puncte terminale SPARQL multiple
(federated query) – adaptare după Lee Feigenbaum (2010)
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. Sabin Buragawww.purl.org/net/busaco

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. Sabin Buragawww.purl.org/net/busaco

sparql 1.1
INSERT DATA { # inserăm unele date despre noua eroină :-)
:desdemona foaf:title "Dr." ; foaf:name "Dés de Möna" .
}

Dr. Sabin Buragawww.purl.org/net/busaco

sparql 1.1

MODIFY <http://castel.info/eveniment/bal-mascat/participanti>
DELETE { ?persoana foaf:knows :julieta } # substituim :julieta
INSERT { ?persoana foaf:knows :desdemona } # cu noua venită
WHERE {
fiecare operație
?persoana rdf:type
foaf:Person .
e considerată
?persoana foaf:knows :julieta .
atomică
}
Pentru mai multe detalii, a se consulta:

Dr. Sabin Buragawww.purl.org/net/busaco

sparql

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
SPARQL permite:

Dr. Sabin Buragawww.purl.org/net/busaco

sparql – privire de ansamblu
extragerea de valori de interes din date (semi)structurate
explorarea datelor via interogări asupra
posibilelor 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
obținerea, transformarea și interogarea
datelor modelate în RDF

Dr. Sabin Buragawww.purl.org/net/busaco

rezumat
Dr. Sabin Buragawww.purl.org/net/busaco

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

Más contenido relacionado

La actualidad más candente

Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...
Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...
Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...Sabin Buraga
 
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Sabin Buraga
 
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeSabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Căutarea resurselor Web
Căutarea resurselor WebCăutarea resurselor Web
Căutarea resurselor WebSabin Buraga
 
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & VisionWADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & VisionSabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...Sabin Buraga
 

La actualidad más candente (17)

Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...
Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...
Dezvoltarea aplicațiilor Web (5/12): Modelul RDF (Resource Description Framew...
 
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...
WADe 2017-2018 (10/12) Specifying Ontologies via OWL 2. Description Logics. R...
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
 
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...
WADe 2017-2018 (8/12) Modeling Vocabularies, Taxonomies, and Thesauri with RD...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Căutarea resurselor Web
Căutarea resurselor WebCăutarea resurselor Web
Căutarea resurselor Web
 
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & VisionWADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 

Similar a Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea datelor RDF cu SPARQL

Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Sabin Buraga
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Sabin Buraga
 
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...Sabin Buraga
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Sabin Buraga
 
Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 
Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 
De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?Sabin Buraga
 
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPStudiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPaledi
 
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneWADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneSabin Buraga
 
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Sabin Buraga
 
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 MicrodataWADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 MicrodataSabin Buraga
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...Sabin Buraga
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...Sabin Buraga
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
 
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTDezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTSabin Buraga
 

Similar a Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea datelor RDF cu SPARQL (20)

Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...
 
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...
WADe 2017-2018 (7/12) Architecture of RDF-based Applications. Linked Open Dat...
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?
 
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPStudiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneWADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
 
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
 
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 MicrodataWADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
WADe 2017-2018 Tutorial (2/3): Data Modeling in HTML: Schema.org HTML5 Microdata
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
diSparql
diSparqldiSparql
diSparql
 
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTDezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
 

Más de Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)Sabin Buraga
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...Sabin Buraga
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesSabin Buraga
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignSabin Buraga
 

Más de Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
 

Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea datelor RDF cu SPARQL

  • 1. Dr. Sabin Buragawww.purl.org/net/busaco Dezvoltarea aplicațiilor Web managementul datelor RDF
  • 2. Georges-Louis de Buffon Dr. Sabin Buragawww.purl.org/net/busaco “Trebuie să adunăm fapte pentru a avea idei.”
  • 3. Dr. Sabin Buragawww.purl.org/net/busaco Ce modele de date sunt disponibile pe Web?
  • 4. textuale date nestructurate – eventual, multilingve structurate RDF – reprezintă “lucruri” (resurse) din lumea reală: indivizi, servicii, aplicații,... – de dorit, modelate formal hibride date structurate “scufundate” în text e.g., microdate HTML5, RDFa Dr. Sabin Buragawww.purl.org/net/busaco modele de date disponibile pe Web
  • 5. date RDF (reprezentare în memorie) date RDF (documente de sine-stătătoare) date conforme modelului RDF (“scufundate” în alte resurse) conform (Bailer & Hausenblas, 2007) date non-conforme modelului RDF (de sine-stătătoare + incluse în fișiere) conform (Bailer & Hausenblas, 2007) Dr. Sabin Buragawww.purl.org/net/busaco model RDF abstract
  • 6. date RDF (reprezentare în memorie) RDF/XML, N3, TriX, N-Triple,… (serializări) cod binar date RDF (documente de sine-stătătoare) date conforme modelului RDF RDFa, (“scufundate” în alte resurse) Semantic MediaWiki baze de date conform (Bailer & Hausenblas, 2007) relaționale, XML, date non-conforme modelului RDF HTML, microformate, (de sine-stătătoare + incluse în fișiere) microdate, JSON conform (Bailer & Hausenblas, 2007) Dr. Sabin Buragawww.purl.org/net/busaco model RDF abstract
  • 7. Dr. Sabin Buragawww.purl.org/net/busaco Ce instrumente de procesare a declarațiilor RDF putem folosi?
  • 8. Procesor (parser) RDF preluarea datelor disponibile în diverse formate și reprezentarea lor ca triple RDF Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 9. Dr. Sabin Buragawww.purl.org/net/busaco api-uri & biblioteci rdf – exemple ARC2 (PHP) dotNetRDF (C#) Graphite (PHP) Jena Semantic Web Toolkit (Java) PerlRDF (Perl) RDFLib (Python) rdfQuery.js, rdfstore-js (JavaScript) Redland (C; portări în alte limbaje: C#, Objective-C, PHP) Sesame (Java) ... detalii la http://www.w3.org/2001/sw/wiki/Tools
  • 10. Serializator (serializer) RDF exprimarea modelului intern RDF în diverse formate N-Triples, RDF/XML, Turtle (N3), TriX, RDFa, JSON-LD,... Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 11. Convertor RDF preluarea datelor din alte modele și transformarea lor in RDF extragerea directă din documentele HTML via scrapers/harvesters Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 12. Extractoare/convertoare RDF – exemple: Any23 (Java) Babel (Java) Greengrass (C#) LinqToRDF (C#) Raptor (C) RDF123 (Java) RDFSlice (Java) Semantic Radar (JavaScript – extensie Firefox) URIBurner – serviciu Web: http://linkeddata.uriburner.com/ Dr. Sabin Buragawww.purl.org/net/busaco instrumente
  • 13. Inițiativa Triplr serviciu Web REST de conversie a datelor (d)in RDF bazat pe biblioteca Redland http://triplr.org/format-de-ieșire/uri-sursă Dr. Sabin Buragawww.purl.org/net/busaco instrumente
  • 14. Inițiativa Triplr exemple: din HTML în RDF/XML via GRDDL http://triplr.org/rdf/www.w3.org/People/Connolly/ Dr. Sabin Buragawww.purl.org/net/busaco instrumente conversie în format Turtle a unui fișier FOAF (RDF/XML) http://triplr.org/turtle/profs.info.uaic.ro/~busaco/busaco.foaf.xml
  • 15. Navigatoare RDF (hyperdata browsers) redau utilizatorului (uman) o reprezentare “frumoasă” a triplelor RDF, permitând interacțiunea cu datele: vizualizare, filtrare,... Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 16. Navigatoare RDF (hyperdata browsers) exemple: Disco Marbles OpenLink Data Explorer Q&D RDF Browser Tabulator uzual, disponibile ca extensii pentru browser-ul Web Dr. Sabin Buragawww.purl.org/net/busaco instrumente
  • 17. Dr. Sabin Buragawww.purl.org/net/busaco necesități Extragerea și procesarea datelor existente pe Web o soluție „clasică”: information extraction (eventual, pe baza procesării limbajului natural – NLP) în cazul nostru, dorim să recurgem la tehnologiile Web-ului semantic
  • 18. O modalitate standardizată de “convertire” în triple RDF a construcțiilor semantice încapsulate în documentele Web Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 19. GRDDL – Gleaning Resource Descriptions from Dialects of Languages Dr. Sabin Buragawww.purl.org/net/busaco grddl glean verb [ trans. ] extract (information) from various sources: the information is gleaned from press clippings. • collect gradually and bit by bit: objects gleaned from local markets. • historical gather (leftover grain or other produce) after a harvest: [as n. ] (gleaning) the conditions of farm workers in the ‘30s made gleaning essential.
  • 20. Dr. Sabin Buragawww.purl.org/net/busaco grddl Permite asocierea de transformări din formate structurate – e.g., microformate, RDFa, XML – în declarații RDF, fără pierderea semanticii (meaning) www.w3.org/TR/grddl/ www.w3.org/TR/grddl-primer/
  • 21. Există o multitudine de documente modelate pe baza unor dialecte XML – e.g., ODF, RSS/Atom, XHTML etc. –, încapsulând date care ar putea fi exprimate via RDF se dorește o asociere faithful – se păstrează înțelesul Dr. Sabin Buragawww.purl.org/net/busaco grddl
  • 22. Există o multitudine de documente modelate pe baza unor dialecte XML – e.g., ODF, RSS/Atom, XHTML etc. –, încapsulând date care ar putea fi exprimate via RDF se dorește o asociere faithful – se păstrează înțelesul se va specifica o transformare GRDDL uzual, se folosesc transformări XSLT Dr. Sabin Buragawww.purl.org/net/busaco grddl
  • 23. Dr. Sabin Buragawww.purl.org/net/busaco grddl Berners-Lee, 2007: www.w3.org/2007/Talks/1211-whit-tbl/
  • 24. Un document XHTML ce include microformatul hCard: <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://www.w3.org/2003/g/data-view"> <link rel="transformation" href="mHTML2RDF.xsl" /> <title>...</title></head> transformare <body> GRDDL <div class="vcard"> <p class="fn n"> <span class="given-name">Sabin</span> <span class="family-name">Buraga</span></p> </div> ... </body> </html> Dr. Sabin Buragawww.purl.org/net/busaco grddl: exemplu
  • 25. În urma transformării XSLT, ar putea rezulta: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#"> <rdf:Description rdf:nodeID="EsAVHkUx6"> <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#VCard"/> <v:fn>Sabin Buraga</v:fn> </rdf:Description> <rdf:Description rdf:nodeID="EsAVHkUx8"> <rdf:type rdf:resource="http://www.w3.org/2006/vcard/ns#Name"/> <v:given-name>Sabin</v:given-name> <v:family-name>Buraga</v:family-name> </rdf:Description> </rdf:RDF> Dr. Sabin Buragawww.purl.org/net/busaco grddl: exemplu
  • 26. Efectuarea diverselor conversii via GRDDL: microformatul hCardRDF http://www.w3.org/2006/vcard/hcard2rdf.xsl microformatul hCalendarRDF http://www.w3.org/2002/12/cal/glean-hcal.xsl RDFaRDF http://www.w3.org/2001/sw/grddl-wg/td/RDFa2RDFXML.xsl detalii în R. Akerkar, Semantic Markup Report, NCE Tourism Fjord Norway, 2012 Dr. Sabin Buragawww.purl.org/net/busaco grddl: exemplu
  • 27. Date stocate în sisteme de baze de date relaționale  date modelate cu RDF asocieri directe – mappings (via schema bazei de date) Dr. Sabin Buragawww.purl.org/net/busaco necesități
  • 28. Dr. Sabin Buragawww.purl.org/net/busaco realizarea diferitelor asocieri exprimate via R2RML (RDB to RDF Mapping Language) recomandare a Consorțiului Web – 2012 www.w3.org/TR/r2rml/
  • 29. CREATE TABLE "Software" ( "ID" INT, PRIMARY KEY("ID"), "nume" CHAR(50), "desc" CHAR(300) ) CREATE TABLE "Utiliz" ( "ID" INT, PRIMARY KEY("ID"), "identit" CHAR(100), "soft" INT, FOREIGN KEY("soft") REFERENCES "Software"("ID") ) INSERT INTO "Software" ("ID", "nume", "desc") VALUES (13, 'Mageia', 'Sistem Linux') INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (7, 'Dan', 13) INSERT INTO "Utiliz" ("ID", "identit", "soft") VALUES (8, 'Cristina', NULL) date RDF <Utiliz/ID=7> rdf:type <Utiliz> . <Utiliz/ID=7> <Utiliz#ID> 7. <Utiliz/ID=7> <Utiliz#identit> "Dan" . <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> "Mageia" . <Software/ID=13> <Software#desc> "Sistem Linux" . asocieri directe Dr. Sabin Buragawww.purl.org/net/busaco baze de date relaționale gestionate via SQL recomandare W3C (M. Arenas et al., 2012) www.w3.org/TR/ rdb-direct-mapping/
  • 30. 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. Sabin Buragawww.purl.org/net/busaco necesități
  • 31. Dr. Sabin Buragawww.purl.org/net/busaco detalii despre Sindice API la http://sindice.com/developers/api
  • 32. Dr. Sabin Buragawww.purl.org/net/busaco Nu există posibilitatea de a utiliza un sistem de stocare/interogare a triplelor RDF?
  • 33. Datele RDF sunt menținute persistent în cadrul unui RDF store Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 34. 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 resursele având același URI sunt considerate echivalente Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 35. Intern, un RDF store poate stoca triplele într-o varietate de formate baze de date relaționale versus structuri de date speciale inclusiv, la nivel de cloud Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 36. Asigurarea interoperabilității este facilitată de formatele de serializare standardizate RDF/XML, Turtle, JSON(-LD) Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 37. Aspecte de interes: performanța – e.g., scalabilitatea, timpul de răspuns,... capacitatea de stocare facilitățile privind interogarea datelor API-urile disponibile fiabilitatea securitatea Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 38. Exemple de implementări curente (unele disponibile în regim open source) stocare în structuri de date native: AllegroGraph (Common Lisp & multe alte limbaje de programare), BigData (Java), Jena TBD (Java), Sesame (Java), Stardog (Java, Groovy) www.w3.org/wiki/LargeTripleStores Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 39. 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) http://semanticweb.com/introduction-to-triplestores_b34996 Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 40. 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) Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf
  • 41. Utilizări notabile Dr. Sabin Buragawww.purl.org/net/busaco sisteme de stocare rdf 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
  • 42. Dr. Sabin Buragawww.purl.org/net/busaco Există un limbaj de interogare a seturilor de triple RDF?
  • 43. SPARQL Protocol and RDF Query Language Dr. Sabin Buragawww.purl.org/net/busaco sparql limbaj descriptiv standardizat pentru realizarea de interogări pe baza potrivirilor de șabloane referitoare la triple RDF inspirat din RDQL – oferit de Jena, RAP, Redland etc.
  • 44. 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. Sabin Buragawww.purl.org/net/busaco sparql
  • 45. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 46. Modelul de interogare e fundamentat de șabloane de grafuri RDF – graph patterns Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 47. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 48. Convenții sintactice bazate pe Turtle/N3 triplele RDF sunt considerate ca fiind tablouri de termeni RDF Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 49. Convenții sintactice bazate pe Turtle/N3 triplele RDF sunt considerate ca fiind tablouri de termeni RDF termen RDF = IRI | nod blanc | literal pattern de triple = tablou de termeni RDF sau nume de variabile (termeni liberi) Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 50. URI – sau, mai general, IRI – delimitați de “<” si “>” 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 51. Pentru a referi spații de nume ale vocabularelor utilizate se 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/> lista prefixelor comune: http://prefix.cc/ Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 52. Nodurile blanc se specifică prin _:nume sau sunt delimitate de [ și ] dacă se folosesc o singură dată Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 53. Literali RDF (șiruri de caractere cu atribute opționale) "Web" "Web"@ro "true"^^xsd:boolean "true"^^xsd:string # se indica limba # se specifică tipul de date Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 54. Abrevieri referitoare la triple :s :s :p :p1 :p2 :o1 , :o2 . :o1 ; :o2 . Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare echivalent cu :s :s :p :p :o1 . :o2 . echivalent cu :s :s :p1 :p2 :o1 . :o2 .
  • 55. Abrevieri privitoare la nodurile blanc :s :p [ :p' :o ] echivalent cu :s :p _:x . _:x :p' :o . Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 56. Un șablon (pattern) permite specificarea de variabile indicând date ce vor fi returnate în urma realizării interogării ?subiect ?predicat ?obiect . Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 57. Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare Șablon: subiect ?predicat ?obiect . ?predicat și ?obiect reprezintă necunoscutele (unbounded) ?obiect ?predicat subiect ?predicat obiect1 ?obiect obiect2 ?predicat ?obiect obiectn după (Corno & Farinetti, 2009)
  • 58. Exemplu lista persoanelor inter-conectate via predicatul (proprietatea) foaf:knows ?persoana foaf:knows ?altaPersoana . Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 59. Exemplu descoperirea proprietătilor/relațiilor dintre subiect și obiect _:subiect ?predicat _:obiect . Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 60. Șabloanele pot fi combinate pentru a forma șabloane mai complexe șablon de tip graf (BGP – basic graph pattern) Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 61. Șabloanele pot fi combinate pentru a forma șabloane mai complexe șablon de tip graf (BGP – basic graph pattern) componente ale unei interogări SPARQL exprimate formal – algebric – prin tuplul (E, DS, QF) E = expresie SPARQL DS = set de date RDF (data set) local/disponibil pe Web QF = formular de interogare (query form) Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 62. SELECT ?contrib WHERE { <http://en.wikipedia.org/> <http://purl.org/dc/elements/1.1/contributor> ?contrib . selectarea resurselor } ce au contribuit la o resursă { … } desemnează un graph pattern în acest exemplu, se utilizează vocabularul DCMI Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 63. Rezultatul interogării poate fi: un tabel de valori corespunzătoare variabilelor utilizate, rezultat precizat prin SELECT Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 64. Rezultatul interogării poate fi: o valoare booleană întoarsă de construcția ASK “este adevărat că…?” Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 65. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 66. Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare anatomia unei interogări SPARQL 1.0 (Beckett, 2011)
  • 67. SELECT rezultatul interogării reprezintă un tabel secvență de rânduri compuse din valorile variabilelor (variable bindings) Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 68. vezi exemplele asociate cursului Dr. Sabin Buragawww.purl.org/net/busaco Considerăm date modelate în RDF privitoare la studenții FII
  • 69. SELECT ?persoana WHERE { ?persoana rdf:type foaf:Person } Dr. Sabin Buragawww.purl.org/net/busaco determinarea resurselor de tip persoană
  • 70. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 71. Datele interogate pot fi filtrate via clauza FILTER expresiile de filtrare includ: variabile operatori aritmetici/logici funcții (predefinite sau specificate de utilizator) tipuri de date definite de XML Schema Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 72. Funcții predefinite de testare: bound ( ), isBlank ( ), isLiteral ( ), isURI ( ) de conversie: str ( ), lang ( ), datatype ( ) altele: sameTerm ( ), langMatches ( ), regex ( ) Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 73. FILTER (?anul = 2) FILTER (?dataComanda < "2013-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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 74. determinarea numelor tuturor resurselor de gen feminin Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?numeStudenta WHERE { ?persoana foaf:gen ?gen ; foaf:firstName ?numeStudenta . FILTER regex (?gen, "^female", "i") . }
  • 75. SELECT DISTINCT ?studentSub22 ?titulatura WHERE { ?persoana foaf:age ?ani ; foaf:firstName ?studentSub22 OPTIONAL { ?persoana foaf:title ?titulatura . } FILTER (?ani <= 22) } numele și, eventual, titulatura persoanelor mai tinere Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 76. Nodurile blanc într-o interogare joacă rol de variabile anonime Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 77. SELECT DISTINCT ?nume ?ani ?prof s-a recurs la WHERE { vocabularul [ ] foaf:knows ?persoana . relationship ?persoana foaf:firstName ?nume ; rel:knowsByReputation <http://www.w3.org/People/Berners-Lee/card#i> ; foaf:age ?ani . ?prof s:examineaza ?persoana } numele și vârsta cunoscuților care-l „știu” pe Sir Tim Berners-Lee după reputație și sunt examinați de profesori Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 78. 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 reificate exprimate de Wikipedia Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 79. Construirea modelului RDF al edițiilor London Gazette conform 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 > "2011-01-01"^^xsd:date ) . } Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 80. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 81. Obținerea de șabloane de graf alternative se realizează via clauza UNION { ?nod voc:hasName ?nume } UNION { ?nod vcard:FN ?nume } Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 82. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare resursele cunoscute sau rude cu o persoană și examinate doar de un anumit profesor
  • 83. Întrebare: am putea realiza interogări SPARQL asupra mai multor grafuri RDF? Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 84. 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. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 85. Graful RDF de intrare poate fi specificat via URI FROM <http://planetrdf.com/bloggers.rdf> Dr. Sabin Buragawww.purl.org/net/busaco sparql: limbaj de interogare
  • 86. SELECT ?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) . } adaptare după (J. Hebeler et al., 2009) Dr. Sabin Buragawww.purl.org/net/busaco extragerea tuturor datelor despre persoanele cunoscute de Sir Tim Berners-Lee
  • 87. Pune la dispoziție un mecanism de realizare de 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. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 88. Serviciile SPARQL pot fi descrise și invocate via tehnologiile serviciilor Web clasice – i.e., prin REST un punct terminal SPARQL – generic sau particular – acceptă cereri și întoarce rezultate via HTTP(S) Dr. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 89. Serviciile SPARQL pot fi descrise și invocate via 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. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 90. Serviciile SPARQL pot fi descrise și invocate via 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. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 91. 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. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 92. Un posibil răspuns din partea serviciului: HTTP/1.1 200 OK Date: Fri, 1 Nov 2013 19:33:00 GMT Server: Apache/2.4.6 (Unix) Connection: close Content-Type: application/turtle mesaj de răspuns HTTP @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> . … Dr. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 93. Maniera de serializare XML a rezultatelor interogărilor SPARQL este standardizată SPARQL Query Results XML Format (2013) www.w3.org/TR/rdf-sparql-XMLres/ Dr. Sabin Buragawww.purl.org/net/busaco sparql: protocol
  • 94. Procesoare SPARQL – exemplificări: AllegroGraph (Java) ARC (PHP) ARQ (Java – bazat pe Jena) dotNetRDF (C#) EasyRDF (PHP) Rasqual (C, cu portări în alte limbaje) RDF::Query (Perl) sparql-p (Python) de consultat și http://semanticweb.org/wiki/Tools Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente
  • 95. 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. Sabin Buragawww.purl.org/net/busaco sparql: instrumente
  • 96. Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente 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 Twinkle – interogări asupra unui document RDF local
  • 97. Dr. Sabin Buragawww.purl.org/net/busaco 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
  • 98. Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente interogări SPARQL via o interfață Web aici, proiectul UniProt (Universal Protein Resource)
  • 99. Puncte terminale (end-points) SPARQL: http://www.w3.org/wiki/SparqlEndpoints + seturi de date deschise – exemplificări: DBpedia http://wiki.dbpedia.org/Downloads oferite de inițiativa Linked Open Data http://datahub.io/group/lod bioinformatică – proiectul BIO2RDF http://download.bio2rdf.org/release/2/release.html Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente
  • 100. 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 2013 http://sw.deri.org/~aidanh/docs/epmonitorISWC.pdf https://www.youtube.com/watch?v=k8AJ4evqbCc Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente
  • 101. SPARQL Endpoints Status pe baza serviciilor SPARQL înregistrate la datahub.io Dr. Sabin Buragawww.purl.org/net/busaco sparql: instrumente
  • 102. Dr. Sabin Buragawww.purl.org/net/busaco Câteva exemplificări din lumea reală?
  • 103. 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. Sabin Buragawww.purl.org/net/busaco Interogarea SPARQL asupra DBpedia: informații despre locul de naștere a lui Eminescu
  • 104. de observat diferitele granularități Dr. Sabin Buragawww.purl.org/net/busaco utilizarea instrumentului Twinkle pentru a avea acces la DBpedia
  • 105. interogarea SPARQL asupra DBpedia: ocupația persoanelor cu un anumit sufix al numelui clase de resurse Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?nume ?ocupatie WHERE { ?persoana foaf:name ?nume ; dbp:occupation ?ocupatie . FILTER regex (?nume, "escu$") } ORDER BY ?nume LIMIT 7
  • 106. Dr. Sabin Buragawww.purl.org/net/busaco acces la DBpedia via interfața Web a serviciului SPARQL: obținerea de informații despre Romania
  • 107. 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. Sabin Buragawww.purl.org/net/busaco Interogarea serviciului specific SPARQL al DBpedia http://dbpedia.org/sparql pentru a obține date privitoare la anumite state ale lumii (Lee Feigenbaum & Eric Prud’hommeaux, 2011)
  • 109. 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. Sabin Buragawww.purl.org/net/busaco Obținerea datelor privind personalitățile (persoane cu o anumită ocupație, eventual monarhi) care au numele începând cu litera A
  • 111. PREFIX dbo: PREFIX dbprop: PREFIX foaf: <http://dbpedia.org/ontology/> <http://dbpedia.org/property/> <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. Sabin Buragawww.purl.org/net/busaco Lista filmelor vorbite în limba japoneză, regizate și – totodată – scrise de persoane născute după anul 1960
  • 112. Dr. Sabin Buragawww.purl.org/net/busaco graful asociat interogării rezultatele obținute
  • 113. 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 Dr. Sabin Buragawww.purl.org/net/busaco sparql: detectarea inconsistențelor
  • 115. ??? rezultatul obținut Dr. Sabin Buragawww.purl.org/net/busaco sparql: detectarea inconsistențelor
  • 116. 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. Sabin Buragawww.purl.org/net/busaco Detectarea resurselor DBpedia care prezintă adrese Web specificate eronat
  • 117. Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?subiect ?url WHERE { ?subiect dbpedia2:siteweb ?url . FILTER (isLITERAL (?url)) } ORDER BY DESC (?url) LIMIT 7
  • 118. apare rdf:Literal în loc de rdf:Resource Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?subiect ?url WHERE { ?subiect dbpedia2:siteweb ?url . FILTER (isLITERAL (?url)) } ORDER BY DESC (?url) LIMIT 7
  • 119. apare rdf:Literal în loc de rdf:Resource SPARQL oferă premisele verificării corectitudinii datelor (context mai larg: knowledge quality) Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?subiect ?url WHERE { ?subiect dbpedia2:siteweb ?url . FILTER (isLITERAL (?url)) } ORDER BY DESC (?url) LIMIT 7
  • 120. Dr. Sabin Buragawww.purl.org/net/busaco Folosind punctul terminal SPARQL oferit de inițiativa voiD, avem informații privind seturi de date utilizând DBpedia vezi http://www.w3.org/TR/void/ 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 . }
  • 121. Dr. Sabin Buragawww.purl.org/net/busaco Fragment din răspunsul oferit de serviciul voiD http://void.rkbexplorer.com/sparql/
  • 122. 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. Sabin Buragawww.purl.org/net/busaco 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
  • 123. Dr. Sabin Buragawww.purl.org/net/busaco 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)
  • 124. "Nicholas Gibbins" "Nicola Fanizzi" "Nicola Henze" exemplu inspirat de (Corno & Farinetti, 2009) "Norman Heino" Dr. Sabin Buragawww.purl.org/net/busaco # 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") ) . nume } "Neil Ireson" LIMIT 7 "Nenad Stojanovic"
  • 125. Dr. Sabin Buragawww.purl.org/net/busaco organizații participante la ambele evenimente
  • 126. Dr. Sabin Buragawww.purl.org/net/busaco aflarea entităților cu anumite review-uri (comentarii, punctaj) disponibile la Revyu.com
  • 127. 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. Sabin Buragawww.purl.org/net/busaco <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
  • 128. Dr. Sabin Buragawww.purl.org/net/busaco date publice guvernamentale oferite de data.gov.uk pe baza unui serviciu 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
  • 129. Dr. Sabin Buragawww.purl.org/net/busaco British Museum: acces la date via http://collection.britishmuseum.org/sparql
  • 130. Dr. Sabin Buragawww.purl.org/net/busaco DESCRIBE ?s WHERE { ?s a <http://purl.org/ontology/wo/Species> ; foaf:depiction ?foto } LIMIT 150 vizualizarea structurată a datelor (aici, animale sălbatice) preluate de la BBC via OpenLink HTML5 Pivot Viewer
  • 131. Dr. Sabin Buragawww.purl.org/net/busaco SELECT * WHERE { [ ] w:hasCountryCode ?ID ; w:hasGNP ?GNP ; … } generarea de chart-uri pe baza datelor obținute cu SPARQL biblioteca Sgvizler (JavaScript) https://code.google.com/p/sgvizler/
  • 132. ?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 … sparql.us – enumerarea conceptelor (clase de resurse) definite de schema.org – scheme de date folosite via microdate HTML5 Dr. Sabin Buragawww.purl.org/net/busaco 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 . }
  • 133. 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 Dr. Sabin Buragawww.purl.org/net/busaco sparql: recapitulare modificatori (query modifiers) ce oferă posibilități de fragmentare, sortare, rearanjare a rezultatelor interogării
  • 134. graf RDF  HTML  RDB↔RDF   Dr. Sabin Buragawww.purl.org/net/busaco punct terminal SPARQL Procesor SPARQL tehnici NLP triple store punct terminal SPARQL  Aplicație bază de date (e.g., NoSQL)  bază de date relațională text nestructurat XML/XHTML SPARQL – privire de ansamblu (Ivan Herman, 2012)
  • 136. Propunere de extindere a SPARQL SPARQL 1.0SPARQL 1.1SPARQL 2.0 a se studia și prezentarea lui Lee Feigenbaum (2010) www.slideshare.net/LeeFeigenbaum/sparql2-status Dr. Sabin Buragawww.purl.org/net/busaco sparql – viitor
  • 137. Oferă mijloace pentru exprimarea: actualizărilor de date (updates) negațiilor (negation) agregărilor (aggregates) proiecțiilor (projected expressions) sub-interogărilor (subqueries) … conform (Bob DuCharme, 2013) Dr. Sabin Buragawww.purl.org/net/busaco sparql 1.1
  • 138. Dr. Sabin Buragawww.purl.org/net/busaco sparql – viitor anatomia unei interogări SPARQL 1.1 conform David Backett (2011)
  • 139. SELECT ?prof (COUNT (DISTINCT ?stud) AS ?studenti) WHERE { ?prof a ac:Student_Adviser ; s:examineaza ?stud } GROUP BY ?prof obținerea datelor privind profesorii îndrumători și numărul studenților examinați de fiecare Dr. Sabin Buragawww.purl.org/net/busaco funcțiile de agregare (AVG, COUNT, MIN, MAX, SUM,…) sunt deja implementate de anumite sisteme SPARQL
  • 140. 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 persoanelor interesate de artă și muzică Dr. Sabin Buragawww.purl.org/net/busaco sparql 1.1
  • 141. SELECT * WHERE { ?s ?p ?o . MINUS { ?s <http://xmlns.com/foaf/0.1/maker> ?o . } } Dr. Sabin Buragawww.purl.org/net/busaco MINUS exprimă negația
  • 142. numele persoanelor care nu cunosc după reputație pe cineva important Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?nume WHERE { ?persoana foaf:firstName ?nume FILTER ( NOT EXISTS { ?persoana rel:knowsByReputation [ ] } ) }
  • 143. Specificarea drumurilor privind proprietățile (property paths) potrivirile de triple iau în considerație drumurile 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. Sabin Buragawww.purl.org/net/busaco sparql 1.1
  • 144. Dr. Sabin Buragawww.purl.org/net/busaco SELECT ?persoana WHERE { s:dlucanu s:examineaza/(rel:closeFriendOf|rel:siblingOf) ?persoana } persoana s:diana s:cristina determinarea persoanelor care sunt prieteni apropiați sau rude cu un student examinat de un anumit profesor
  • 145. Local Graph Store s:graph SPARQL endpoint SD s:sw1 Web SPARQL endpoint s:sw2 PREFIX s: <…> SELECT … FROM s:graph WHERE { …A… SERVICE s:sw1 { …B… } SERVICE s:sw2 { …C… } } SD = Service Description (folosind RDF) Dr. Sabin Buragawww.purl.org/net/busaco Recurgerea la puncte terminale SPARQL multiple (federated query) – adaptare după Lee Feigenbaum (2010)
  • 146. 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. Sabin Buragawww.purl.org/net/busaco sparql 1.1
  • 147. 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. Sabin Buragawww.purl.org/net/busaco sparql 1.1
  • 148. INSERT DATA { # inserăm unele date despre noua eroină :-) :desdemona foaf:title "Dr." ; foaf:name "Dés de Möna" . } Dr. Sabin Buragawww.purl.org/net/busaco sparql 1.1 MODIFY <http://castel.info/eveniment/bal-mascat/participanti> DELETE { ?persoana foaf:knows :julieta } # substituim :julieta INSERT { ?persoana foaf:knows :desdemona } # cu noua venită WHERE { fiecare operație ?persoana rdf:type foaf:Person . e considerată ?persoana foaf:knows :julieta . atomică }
  • 149. Pentru mai multe detalii, a se consulta: Dr. Sabin Buragawww.purl.org/net/busaco sparql 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
  • 150. SPARQL permite: Dr. Sabin Buragawww.purl.org/net/busaco sparql – privire de ansamblu extragerea de valori de interes din date (semi)structurate explorarea datelor via interogări asupra posibilelor 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
  • 151. obținerea, transformarea și interogarea datelor modelate în RDF Dr. Sabin Buragawww.purl.org/net/busaco rezumat
  • 152. Dr. Sabin Buragawww.purl.org/net/busaco episodul viitor: aplicații Web bazate pe RDF. Linked Data