• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea datelor RDF cu SPARQL
 

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

on

  • 205 views

Dezvoltarea aplicațiilor Web (6/12) — detalii la http://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html

Dezvoltarea aplicațiilor Web (6/12) — detalii la http://profs.info.uaic.ro/~busaco/teach/courses/wade/web-film.html

Statistics

Views

Total Views
205
Views on SlideShare
205
Embed Views
0

Actions

Likes
0
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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