co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate...

142
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web ⊶⊷ managementul datelor RDF

Transcript of co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate...

Page 1: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web

⊶⊷managementul datelor RDF

Page 2: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Georges-Louis de Buffon

Page 3: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Ce modele de date sunt disponibile pe Web?

Page 4: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

modele de date disponibile pe Web

textualedate nestructurate – eventual, multilingve

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

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

hibridedate structurate „scufundate” în text

e.g., microdate HTML5, RDFa

Page 5: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

conform (Bailer & Hausenblas, 2007)

model RDF

abstract

date RDF(reprezentareîn memorie)

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

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

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

con

form

(B

aile

r &

Hau

sen

bla

s, 2

00

7)

Page 6: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

conform (Bailer & Hausenblas, 2007)

model RDF

abstract

date RDF(reprezentareîn memorie)

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

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

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

con

form

(B

aile

r &

Hau

sen

bla

s, 2

00

7)

baze de date relaționale, XML,

HTML, microformate, microdate, JSON,…

RDFa, Semantic MediaWiki

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

cod binar

Page 7: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Ce instrumente de procesarea declarațiilor RDF putem folosi?

Page 8: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

Procesor (parser) RDF

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

Page 9: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

api-uri & biblioteci rdf – exemple

Apache Jena (Java)jena.apache.org

ARC2 (PHP)github.com/semsol/arc2

Commons RDF (Java)commons.apache.org/proper/commons-rdf/

dotNetRDF (C#)dotnetrdf.org

Page 10: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

api-uri & biblioteci rdf – exemple

EasyRDF (PHP)www.easyrdf.org

node-rdf, rdfQuery.js, rdfstore-js (JavaScript)www.w3.org/community/rdfjs/wiki/Comparison_of_RDFJS_libraries

RDF.rb (Ruby)github.com/ruby-rdf

rdf4h (Haskell)robstewart57.github.io/rdf4h/

Page 11: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

api-uri & biblioteci rdf – exemple

RDFLib (Python)github.com/RDFLib/rdflib

Redland (C; portări în Perl, PHP, Python, Ruby) librdf.org

Serd (C; oferă și un wrapper pentru Swift) drobilla.net/software/serd

github.com/kasei/swift-serd

...

altele la www.w3.org/2001/sw/wiki/Tools

Page 12: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

Serializator (serializer) RDF

exprimarea modelului intern RDFîn diverse formate

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

(de)compresie triple RDF în formatul binar HDT (Header, Dictionary, Triples)

Page 13: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

Convertor RDF

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

extragerea directă din documentele HTMLvia scrapers/harvesters

Page 14: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente

Extractoare/convertoare RDF – exemple:

Apache Any23, Babel, RDF123, RDFSlice (Java)EasyRDF (PHP) – www.easyrdf.org/converter

HDT-it! (C++, Java) – www.rdfhdt.org

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

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

Tarql (CSV to RDF using SPARQL) – tarql.github.io

URIBurner – serviciu Web: linkeddata.uriburner.com

Page 15: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente

Inițiativa Triplr

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

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

Page 16: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente

Inițiativa Triplr

exemple:

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

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

Page 17: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

Navigatoare RDF (hyperdata browsers)

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

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

Page 18: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

instrumente

Navigatoare RDF (hyperdata browsers)

exemple:brwsr – https://github.com/Data2Semantics/brwsr

OpenLink Data Explorer – http://ode.openlinksw.com/

Q&D RDF Browser – http://graphite.ecs.soton.ac.uk/browser/

Tabulator – http://www.w3.org/2005/ajar/tab

uzual, disponibile ca extensii pentru browser-ul Web

Page 19: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

Extragerea și procesarea datelor existente pe Web

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

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

sau OpenRefine – http://openrefine.org/

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

Page 20: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

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

a construcțiilor semantice încapsulateîn documentele Web

Page 21: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

grddl

Gleaning Resource Descriptions from Dialects of Languages

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

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

soluție: XSLT (Extensible Stylesheet Language Transformations)

www.w3.org/TR/grddl/

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

Page 22: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

necesități

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

date modelate cu RDF

asocieri directe – mappings (via schema bazei de date)

Page 23: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

www.w3.org/TR/r2rml/

Page 24: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

baze de date relaționale gestionate via SQL

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

) CREATE TABLE "Utiliz" (

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

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

Page 25: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

baze de date relaționale gestionate via SQL

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

) CREATE TABLE "Utiliz" (

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

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

date RDF

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

asocieri directe

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

www.w3.org/TR/

rdb-direct-mapping/

Page 26: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 27: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

Page 28: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

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

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

Page 29: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

baze de date (non-)relaționaleversus

structuri de date speciale – eventual, în memorie

inclusiv, la nivel de cloud

Page 30: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

dataset ≡ colecție de grafuri RDFtriple RDF + context desemnat de un URI

format standardizat: N-Quads (2014)www.w3.org/TR/n-quads/

Page 31: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

RDF/XML, Turtle, JSON(-LD)

Page 32: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

Aspecte de interes:

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

facilitățile privind interogarea datelor (inclusiv tranzacții)API-urile disponibile

fiabilitatea securitatea

efectuarea de raționamente automate

Page 33: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

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

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

BigData – http://bigdata.com/

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

RDF4J – http://rdf4j.org/

Stardog – http://stardog.com/

Page 34: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

folosind sisteme tradiționale de baze de date:IBM DB2 (Java), OpenLink Virtuoso (C, C#, Java, JS, PHP,

Perl, Ruby, XQuery,…), Ontotext Graph DB (Java), StrixDB (Lua)

www.w3.org/wiki/LargeTripleStores

www.dataversity.net/introduction-to-triplestores/

Page 35: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

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

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

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

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

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

Page 36: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

Suport pentru realizarea de inferențe (simple)

Jena – specificarea regulilor procesate de un rule engine+ API pentru realizarea raționamentelor (reasoners)

RDF4J – raționamente privitoare la RDF Schema

MarkLogic – raționamente vizând tipul resurselor și relațiile dintre ele

Stardog – raționamente automate prin expandarea interogărilor (query expansion)

Page 37: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

Suport pentru constrângeri impuse datelor

cadrul general: SHACL – Shapes Constraint Languagesuită de recomandări ale Consorțiului Web (iulie 2017)

validarea grafurilor RDF pe baza unor condiții (shapes)

www.topquadrant.com/2017/06/12/shacl-features-and-specifications/

Page 38: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf

@prefix schema: <http://schema.org/> .@prefix sh: <http://www.w3.org/ns/shacl#> .@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

schema:PersonShapea sh:NodeShape ;sh:targetClass schema:Person ;sh:property [

sh:path schema:givenName ;sh:datatype xsd:string ;sh:minLength "33"^^xsd:byte

] ;sh:property [

sh:path schema:birthDate ;sh:maxCount "1"^^xsd:byte ;sh:lessThan schema:deathDate

] ;sh:property [

sh:path schema:gender ;sh:in ( "female" "male" ) ;

] .

constrângeri impuse entităților din categoria

schema.org/Person

numele propriu e un șir de minim 33 caractere,

data nașterii trebuie să fie unică + să aibă

valoare mai mică decât cea a morții, iar genul trebuie să ia o valoare

dintr-o listă:Tuxy a schema:Person ;

schema:givenName true ;

schema:givenName "Tuxy" ;

schema:gender "n/a" ;

schema:birthDate "2017-12-31"^^xsd:date ;

schema:birthDate "1974-01-07"^^xsd:date ;

schema:deathDate "2017-12-30"^^xsd:date .

graful datelor de validat

Page 39: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

shacl

validateDatatype(true, xsd:string)1 violation

validateDatatype(Tuxy, xsd:string)

validateMinLength(true, 33)1 violation

validateMinLength(Tuxy, 33)1 violation

validateMaxCountProperty(s:Tuxy, schema:birthDate, 1)1 violation

validateLessThanProperty(s:Tuxy, schema:birthDate, schema:deathDate)1 violation

validateIn(n/a, Blank node _:n1525)1 violation

[

a sh:ValidationResult ;

sh:resultSeverity sh:Violation ;

sh:sourceConstraintComponent sh:InConstraintComponent ;

sh:sourceShape _:n1523 ;

sh:focusNode <http://www.infoiasi.ro/wade#Tuxy> ;

sh:value "n/a" ;

sh:resultPath schema:gender ;

sh:resultMessage "Value is not in Blank node _:n1525" ;

] .

de experimentat instrumentul WebSHACL Playground

http://shacl.org/playground/

raport disponibil în format RDF

Page 40: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sisteme de stocare rdf: utilizări

Ontotext Graph DB folosit de BBC, FactForge și LinkedLifeData;

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 Apache Jena TDB

Page 41: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Există un limbaj de interogarea seturilor de triple RDF?

Page 42: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql

SPARQL Protocol and RDF Query Language

limbaj descriptiv standardizatpentru realizarea de interogări pe baza potrivirilor

de șabloane referitoare la triple RDF

Page 43: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql

Oferă suport pentru manipularea construcțiilor RDF

Pune la dispoziție operații asupra grafurilor RDF

Independent de platforma software utilizată

limbaj de interogare + protocol de acces la triple RDF

Page 44: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Recomandări ale Consorțiului Web:

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

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

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

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

Page 45: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

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

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

Page 46: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Termeni RDF (RDF-T):

reuniunea mulțimilor IRI, noduri blanc, literali RDF

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

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

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

Page 47: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Convenții sintactice bazate pe Turtle/N3

triplele RDF sunt considerateca fiind tablouri de termeni RDF

termen RDF = IRI | nod blanc | literal

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

Page 48: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

situl Web al unei persoane: <http://profs.info.uaic.ro/~busaco/>

o proprietate definită de un vocabular: <http://xmlns.com/foaf/0.1/name>

<http://schema.org/servesCuisine>

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

<http://schema.org/Winery>

Page 49: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

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

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

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

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

PREFIX wd: <http://www.wikidata.org/entity/>

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

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

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

Page 50: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Nodurile blanc se specifică prin _:nume

sau sunt delimitate de [ și ]

dacă se folosesc o singură dată

Page 51: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

"Web"

"Web"@ro # se indică limba

"true"^^xsd:boolean # se specifică explicit

"true"^^xsd:string # tipul de date

Page 52: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Abrevierireferitoare la triple

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

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

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

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

Page 53: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Abrevieriprivitoare la nodurile blanc

:s :p [ :p' :o ]

echivalent cu

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

Page 54: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

în urma realizării interogării

?subiect ?predicat ?obiect .

Page 55: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Șablon: subiect ?predicat ?obiect .

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

subiect

obiect1

obiect2

obiectn

?predicat

?predicat

?predicat

?obiect

?obiect

?obiect

după (Corno & Farinetti, 2009)

.

.

.

Page 56: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Exemple:

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

?persoana foaf:knows ?altaPersoana .

perechi locații—coordonate geografice folosind proprietatea specificată de schema.org

?loc schema:geo ?coordGeo .

Page 57: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Exemplu

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

_:subiect ?predicat _:obiect .

Page 58: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

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

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

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

QF = formular de interogare (query form)

Page 59: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

SELECT ?contrib

WHERE {

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

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

?contrib .

}

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

selectarea entitățilorce au contribuit

la o resursă

Page 60: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

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

Page 61: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

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

„este adevărat că…?”

Page 62: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Rezultatul interogării poate fi:

un graf RDF creat via CONSTRUCT sau DESCRIBE

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

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

Page 63: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

Page 64: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

SELECT

rezultatul interogării reprezintă un tabel

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

Page 65: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Considerăm date modelate

în RDF privitoare la studenții FII

vezi exemplele asociate cursului

Page 66: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

determinarea resurselor de tip persoanăSELECT ?persoana

WHERE {

?persoana rdf:type foaf:Person

}

Page 67: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

SELECT

oferirea de valori distincte via DISTINCT

ordonarea rezultatelor prin ORDER BY

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

precizarea construcțiilor opționale prin OPTIONAL

Page 68: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Datele interogate pot fi filtrate via clauza FILTER

expresiile de filtrare includ:variabile

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

tipuri de date definite de XML Schema

Page 69: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Funcții predefinite

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

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

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

Page 70: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

FILTER (?anul != 2)

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

FILTER (?pop > 15000000 &&

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

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

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

Page 71: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

determinarea numelor tuturor resurselor de gen feminin

SELECT ?numeStudenta

WHERE {

?persoana foaf:gen ?gen ;

foaf:firstName ?numeStudenta .

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

}

Page 72: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

numele și, eventual, titulatura persoanelor mai tinere

SELECT DISTINCT ?studentSub22 ?titulatura

WHERE {

?persoana foaf:age ?ani ;

foaf:firstName ?studentSub22

OPTIONAL { ?persoana foaf:title ?titulatura . }

FILTER (?ani <= 22)

}

Page 73: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

Page 74: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

SELECT DISTINCT ?nume ?ani ?prof

WHERE {

[ ] foaf:knows ?persoana .

?persoana foaf:firstName ?nume ;

rel:knowsByReputation

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

foaf:age ?ani .

?prof s:examineaza ?persoana

}

s-a recurs la vocabularul relationship

Page 75: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Crearea unui graf RDF se poate realiza prin CONSTRUCT

CONSTRUCT (?s ?p ?o)

WHERE {

?prop rdf:subject ?s .

?prop rdf:predicate ?p .

?prop rdf:object ?o .

web:Wikipedia s:afirma ?prop .

}

determinarea tuturor declarațiilor reificateexprimate de Wikipedia

Page 76: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

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

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

CONSTRUCT {

?issue a g:Issue .

?issue g:hasPublicationDate ?date .

} WHERE {

?issue a g:Issue .

?issue g:hasPublicationDate ?date .

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

Page 77: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Operația ASK – exemplu (Lee Feigenbaum, 2009): aflarea răspunsului la întrebarea

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

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

ASK {

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

dbp:length ?lungAmazon .

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

FILTER (?lungAmazon > ?lungNil) .

}

Page 78: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Întrebare: „Fluviul Amazon este mai lung decât Nilul?”Răspuns: DA – true

Page 79: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

{ ?nod voc:hasName ?nume }

UNION

{ ?nod vcard:FN ?nume }

Page 80: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

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

SELECT ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

WHERE {

{ ?pers foaf:knows s:cristina ;

foaf:firstName ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

}

UNION

{ ?pers rel:siblingOf s:cristina ;

foaf:firstName ?cunoscutSauRudaCuCristinaExaminatDoarDeDL

}

s:dlucanu s:examineaza ?pers

}

Page 81: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Întrebare:am putea realiza interogări SPARQL

asupra mai multor grafuri RDF?

Page 82: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

O interogare poate fi aplicată:

grafului implicit (default graph)

unuia sau mai multor grafuri externe,identificate via URI (named graphs)

fuziunii dintre graful implicit și cele externe

Page 83: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: limbaj de interogare

Graful RDF de intrare poate fi specificat via URI

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

Page 84: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

coSELECT ?numePers ?predicat ?obiect

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

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

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

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

WHERE {

tbl:i foaf:knows ?persoana .

?persoana foaf:name ?numePers ;

rdfs:seeAlso ?iri .

?iri foaf:primaryTopic ?persoana2 .

?persoana2 foaf:name ?numePers2 ;

?predicat ?obiect .

FILTER (?numePers = ?numePers2) .

}

extragerea tuturor datelor despre persoanelecunoscute de Sir Tim Berners-Lee

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

Page 85: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

Pune la dispoziție o modalitate de realizare a interogărilor SPARQL prin

invocarea de servicii Web – SPARQL end-points

recomandări ale Consorțiului Web (2008, 2013)www.w3.org/TR/rdf-sparql-protocol/

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

Page 86: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

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

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

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

Page 87: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

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

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

exemple de puncte terminale: DBpedia – http://dbpedia.org/sparql/

Wikidata – https://query.wikidata.org/

Bathing Water Quality – http://environment.data.gov.uk/bwq/sparql.html

Page 88: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

exemplu: instrumentul YASGUI (Yet Another SPARQL GUI) – http://yasgui.org/ – pentru a accesa un serviciu SPARQL

aici, unul privitor la resurse cinematograficehttp://data.linkedmdb.org/

Page 89: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

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

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

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

Host: www.undeva.org

User-agent: sparql-client/1.0

Accept: application/turtle, application/rdf+xml

cerere HTTP

Page 90: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

Un posibil răspuns din partea serviciului:

HTTP/1.1 200 OK Date: Wed, 08 Nov 2017 11:33:00 GMT Server: ApacheConnection: closeContent-Type: application/turtle

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

mesaj de răspuns HTTP

Page 91: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: protocol

Maniera de serializare a rezultatelorinterogărilor SPARQL este standardizată

SPARQL Query Results JSON Format (2013)http://www.w3.org/TR/sparql11-results-json/

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

Page 92: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

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

ARQ (Java – oferit de Apache Jena)dotNetRDF (C#)

Rasqual (C, cu diverse portări – bazat pe Redland)RDF::Query (Perl)

sparql (Ruby)sparql-p (Python)

sparql-js, yasgui-yasr (Node.js)de consultat și http://www.w3.org/wiki/SparqlImplementations

Page 93: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

Implementări ale protocolului SPARQL – exemple

RDF2Go – abstractizează accesul la RDF storesgithub.com/semweb4j/semweb4j

SparqlGUI (C#) – www.dotnetrdf.org

Twinkle (Java)editoare de interogări SPARQL pentru desktop

SPARQL Playground, YASGUIaplicații Web de editare/testare direct în browser

Page 94: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

Twinkle – interogări asupra unui document RDF localwww.ldodds.com/projects/twinkle/

SELECT ?nume ?url ?limbaj WHERE {

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

g:Language ?limbaj ] .

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

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

} ORDER BY ?limbaj

Page 95: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

YASGUI – instrument Web de interogare SPARQL

SELECT DISTINCT ?abilitati

WHERE {

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

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

LIMIT 30

listarea abilitățilorpersonajelor fictive

Page 96: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

interogări SPARQL via instrumentul YASGUI

serviciu SPARQL al colinda.org

(Conference Linked Data)

Page 97: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

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

Resource) – sparql.uniprot.org/

Page 98: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

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

+ seturi de date deschise – exemplificări:

DBpediawiki.dbpedia.org/Downloads

bioinformatică – proiectul BIO2RDF (Linked Data for the Life Sciences)

download.bio2rdf.org/current/release.html

numismatică – inițiativa Nomismanomisma.org/datasets

Page 99: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: instrumente

Puncte terminale (end-points) SPARQL:

verificarea disponibilității:SPARQL Endpoints Status – http://sparqles.ai.wu.ac.at/

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

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

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

Page 100: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Câteva exemplificări din lumea reală?

Page 101: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Interogarea SPARQL asupra DBpedia:informații despre locul de naștere a lui A. I. Cuza

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

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

SELECT ?locNastere ?dataNastere WHERE {

?persoana rdfs:label "Alexandru Ioan Cuza"@en ;

dbo:birthPlace ?locNastere ;

dbo:birthDate ?dataNastere .

}

de observatdiferitele

granularități

Page 102: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SELECT ?nume ?ocupatie

WHERE {

?persoana foaf:name ?nume ;

dbp:occupation ?ocupatie .

FILTER regex (?nume, "terson$")

}

ORDER BY ?nume

LIMIT 7

clase de resurse

interogarea SPARQL asupra DBpedia:

ocupația persoanelorcu un anumit sufix

al numelui

Page 103: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

acces la DBpedia via interfața Web a serviciului SPARQLce recurge la sistemul Virtuoso

obținerea de informații despre Romania

Page 104: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

intern, interogarea SPARQL este convertită în SQL, apoi optimizată

Page 105: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

care au numele începând cu șirul „Ad”

SELECT DISTINCT ?personalitate ?nume ?dataMoarte

WHERE {

?personalitate a

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

OPTIONAL { ?personalitate a dbo:Monarch . }

?personalitate dbp:deathDate ?dataMoarte .

?personalitate rdfs:label ?nume .

FILTER ( lang (?nume)="en" && regex (?nume, "^Ad")) .

}

ORDER BY desc (?nume) ?dataMoarte

LIMIT 10

Page 106: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Page 107: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

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

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

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

SELECT ?film ?nume ?regizor ?dataNastere WHERE {

?film a dbo:Film ;

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

dbp:director ?regizor ;

dbp:writer ?scenarist ;

foaf:name ?nume .

?regizor dbp:dateOfBirth ?dataNastere .

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

}

ORDER BY ?nume

LIMIT 7

Page 108: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

graful asociat interogării

rezultatele obținute

Page 109: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Fie interogarea SPARQL asupra DBpediaprivind data de naștere a lui Mihai Eminescu

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

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

SELECT ?dataNastere WHERE {

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

dbo:birthDate ?dataNastere .

}

sparql: detectarea inconsistențelor

???

Page 110: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Detectarea resurselor DBpediacare prezintă adrese Web specificate eronat

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

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

SELECT ?subiect ?url

WHERE {

{ ?subiect foaf:page ?url . }

UNION

{ ?subiect dbp:siteweb ?url . }

FILTER (isLITERAL (?url))

}

LIMIT 7

Page 111: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

apare rdf:Literalîn loc de rdf:Resource

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

Page 112: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

SELECT DISTINCT ?titlu ?data ?editor WHERE {

[ ] foaf:focus ?lucrare .

?lucrare rdarelationships:expressionOfWork ?exp .

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

?manif rdarelationships:expressionManifested ?exp .

OPTIONAL { ?exp bnfroles:r680 ?trad ;

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

OPTIONAL { ?manif dcterms:date ?data }

OPTIONAL { ?manif dcterms:title ?titlu }

OPTIONAL { ?manif dcterms:publisher ?editor }

}

LIMIT 7

Bibliothèque Nationale de France – acces la date publicehttp://data.bnf.fr/semanticweb

date opționale

Page 113: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

a se remarca modelarea eronată a datelor temporale

Page 114: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 115: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

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

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

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

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

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

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

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

</result></results>

</sparql> formatul XML standardizat al răspunsului

Page 116: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

date publice ale Uniunii Europeneoferite de un serviciu SPARQL

(open government)data.europa.eu/euodp/en/linked-data

Page 117: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

{"head": { "vars": ["count"] },

"results": { "bindings": [

{"count": {"datatype":

"http://www.w3.org/2001/

XMLSchema#integer",

"type": "literal",

"value": "39211"} }

] } }răspuns JSON oferit

Page 118: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

github.com/openlink/html5pivotviewer

DESCRIBE ?s

WHERE {

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

foaf:depiction ?foto

} LIMIT 150

Page 119: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

biblioteca Sgvizler (JS) – mgskjaeveland.github.io/sgvizler/

SELECT ?node ?parent ?size ?color

WHERE {

{ … } UNION { … }

} ORDER BY ?size

Page 120: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql: recapitulare

O interogare SPARQL constă în:

declarații de prefixe – vocabulare desemnate de URL

specificări ale seturilor de date (grafuri RDF) interogate

clauză (result clause) identificând datele rezultate

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

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

Page 121: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

ProcesorSPARQL

HTML

bază

de daterelațională

RD

B↔

RD

F

bază

de date(e.g.,

NoSQL)

pu

nct

term

inal

SPA

RQ

L

triple store p

un

ctte

rmin

al S

PAR

QL

Aplicație

teh

nic

i NL

P

text nestructurat

XML/XHTML

graf RDF

SPARQL – privire de ansamblu (Ivan Herman, 2012)

Page 122: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

Recomandare W3C (2013)

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

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

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

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

Page 123: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql – viitor

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

Page 124: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

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

WHERE {

?prof a ac:Student_Adviser ;

s:examineaza ?stud

} GROUP BY ?prof

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

Page 125: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemplu concret:SALAMI (Structural Analysis of Large Amounts of Data)

http://ddmal.music.mcgill.ca/research/salami

SELECT (STR(?channel) AS ?channelStr) (COUNT(?channel) AS ?freqCount)

WHERE { ?signalID a mo:DigitalSignal ;

mo:channels ?channel .

}

GROUP BY ?channel?channel ?freqCount

"1"^^<http://www.w3.org/2001/XMLSchema#int> 680

"2"^^<http://www.w3.org/2001/XMLSchema#int> 73810

Page 126: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

caz concret: interogări SPARQL 1.1 vizând date arheologice oferite de LinkedARC

http://linkedarc.net/sparql

se recurge la funcțiile SUM și BIND

Page 127: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

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

SELECT (CONCAT(?prenume, ' ', ?nume) AS ?numeComplet)

WHERE {

?persoana foaf:firstName ?prenume ;

foaf:lastName ?nume ;

foaf:interest :Art ,

<https://www.wikidata.org/wiki/Q638> .

}

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

Music

Page 128: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Alte funcții utile:

operații logice: IF() – e.g., IF(?nota > 9, "super", "promovat")

prelucrarea șirurilor de caractere: STRLEN() SUBSTR()

LCASE() UCASE() STRSTARTS() STRENDS() CONTAINS()

STRBEFORE() STRAFTER() REPLACE()

privitoare la dată și timp: NOW() YEAR() MONTH() DAY()

HOURS() MINUTES() SECONDS() TIMEZONE() TZ()

de tip hash: MD5() SHA1() SHA256() etc.

crearea unui nod blanc: BNODE ()

Page 129: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

alte exemple sunt oferite de SPARQL Playground

http://sparql-playground.sib.swiss

Page 130: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SELECT *

WHERE {

?s ?p ?o .

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

}

MINUS exprimă negația

Page 131: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SELECT ?nume

WHERE {

?persoana foaf:firstName ?nume

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

}

utilizarea construcției NOT EXISTS

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

Page 132: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

Specificarea drumurilor privind proprietățile(property paths)

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

specificate sintactic via expresii similare XPath

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

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

Page 133: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

SELECT ?persoana

WHERE {

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

}

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

persoana

s:diana

s:cristina

Page 134: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemplu concret: o interogare asupra Wikidatahttps://www.wikidata.org/wiki/Wikidata:SPARQL_query_service

?city wdt:P31/wdt:P279* wd:Q515

P31 = instance of (echivalentă cu rdf:type)P279 = subclass of (≡ rdfs:subClassOf)

Q515 = city (≡ http://dbpedia.org/ontology/City)

Page 135: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

PREFIX s: <…>

SELECT …

FROM s:graph

WHERE {

… A …

SERVICE s:sw1 {

… B …

}

SERVICE s:sw2 {

… C …

}

}

s:graph

SPARQL endpoint

s:sw2

SPARQL endpoint

s:sw1

Local Graph Store

SD

SD = Service Description – descrierea unui serviciu (folosind RDF)

Web

Page 136: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

Un serviciu SPARQL poate avea atașată o descriere RDFSPARQL 1.1 Service Description (W3C, 2013)

www.w3.org/TR/sparql11-service-description/

@prefix sd: <http://www.w3.org/ns/sparql-service-description#> .

<#DBpediaSPARQL>

a sd:Service ;

sd:endpoint <http://dbpedia.org/sparql/> ;

sd:supportedLanguage sd:SPARQL11Query ;

sd:resultFormat <http://www.w3.org/ns/formats/SPARQL_Results_JSON> ,

<http://www.w3.org/ns/formats/Turtle> .

Page 137: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

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

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

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

Page 138: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

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

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

}

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

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

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

WHERE {

?persoana rdf:type foaf:Person .

?persoana foaf:knows :julieta .

}

fiecare operațiee considerată

atomică

Page 139: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql 1.1

determinarea suportului pentru diverse facilități oferite de SPARQL 1.1

se poate realiza via SPARQL Endpoint Status sparqles.ai.wu.ac.at/interoperability

Page 140: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

sparql – privire de ansamblu

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

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

realizarea de join-uri complexe

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

Page 141: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rezumat

⊶⊷obținerea, transformarea și interogarea

datelor modelate în RDF

Page 142: co .ro · PDF filega .ro / ~ co modele de date disponibile pe Web textuale date nestructurate –eventual, multilingve structurate RDF –reprezintă„lucruri” (resurse

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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