wade 2017-2018 (5/12) data modeling in rdf (resource description framework)
TRANSCRIPT
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Dezvoltarea aplicațiilor Web
⊷Resource Description Framework
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
„Lucrurile au și ele viață.Totul este să le trezești sufletul.”
Gabriel García Márquez
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
caracteristici ale datelor: varietate, volum, dinamicitateadaptare după http://blog.sqlauthority.com
data variety
data velocity
data volume
real-time (stream)
interval (continuous)
batch (atomic)
sparse(discrete)
unstructured
RDBMSsemi-struc-turedXML
multi-media
JSONCSV
bi-nary
KB
MBGBTBEB
PBZB
YB
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Am putea (re)considera Web-ulca fiind o bază de date distribuită?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
necesități
O manieră de a atașa date privitoare la date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
necesități
O manieră de a atașa date privitoare la date
crearea unor vocabulare de termenidescriind „ceva”
(proprietăți, domenii, web-uri,...) – i.e. resurse Web
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
necesități
Un mod de a specifica relații între resurse
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
necesități
Un mod de a specifica relații între resurse
structuri de organizare a datelorîn cadrul unui sau mai multor web-uri
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
necesități
Un mod de a specifica relații între resurse
structuri de organizare a datelorîn cadrul unui sau mai multor web-uri
scop mai larg: modelarea cunoștințelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
realități
Uzual, datele sunt reprezentate în formă tabelară(conform modelului relațional)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
realități
Uzual, datele sunt reprezentate în formă tabelară(conform modelului relațional)
un rând descrie un „obiect” (item) specific
o coloană reprezintă o proprietate a tuturor item-ilor
o celulă desemnează o valoare particularăa unei proprietăți asociate obiectului de interes
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
exemplu
ID Nume Producător Statut
1 Office Microsoft Commercial
2 Visual Studio Code Microsoft Open-source
3 Photoshop Adobe Commercial
4 IrfanView Irfan Freeware
5 iTunes Apple Freeware
6 Thunderbird Mozilla Open-source
7 Firefox Mozilla Open-source
8 Sublime Text Sublime HQ Pty Freeware
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
fragmente de informații vor fi disponibile (liber)pe calculatoare diferite,
accesate via tehnologiile Web actuale
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
soluția 1:
fiecare calculator stochează informațiiledespre mai multe rânduri complete dintr-un tabel
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
exemplu
Distribuirea datelor pe Web
Care-i schema
comună?
Jena Apache Open-source
Zeppelin Apache Open-source
F# Tools Microsoft Open-source
Office Microsoft Commercial
Firefox Mozilla Open-source
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
soluția 1:
fiecare calculator stochează informațiiledespre mai multe rânduri complete dintr-un tabel
necesitatea unui mecanism de coordonare între serveree.g., partajarea schemei comune folosite
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
soluția 2:
fiecare calculator este responsabilcu una/mai multe coloane complete
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
exemplu
Distribuirea datelor pe Web
Cine referăpe cine?
Eclipse
Hadoop
IrfanView
iTunes
Nutch
Firefox
VS Code
Microsoft
IBM
Apple
Mozilla
Apache
Open-source
Freeware
Shareware
Commercial
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
solutia 2:
fiecare calculator este responsabilcu una/mai multe coloane complete
necesitatea cunoașterii identității datelor modelatee.g., fiecare resursă are asociat un identificator global
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
soluția 3:
fiecare gazdă realizează managementulunui număr de celule dintr-un tabel
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Nume
Rând 3 Office
Nume
Rând 9 Node.js
Statut
Rând 3 Comercial
Statut
Rând 5 Open-source
Producător
Rând 3 Microsoft
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Nume
Rând 3 Office
Nume
Rând 9 Node.js
Statut
Rând 3 Comercial
Statut
Rând 5 Open-source
Producător
Rând 3 Microsoft
web-ul specific unei corporații
responsabil cu software-ul
privitor la termenii de utilizare
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
soluția 3:
fiecare gazdă realizează managementulunui număr de celule dintr-un tabel
combină avantajele abordărilor precedente
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
fiecare celulă trebuie referită de 3 valori unice:o referință globală ce desemnează un rând +o referință globală care specifică o coloană +
o referință globală reprezentând valoarea celulei
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
motivație
Distribuirea datelor pe Web
fiecare celulă trebuie referită de 3 valori unice:o referință globală ce desemnează un rând +o referință globală care specifică o coloană +
o referință globală reprezentând valoarea celulei
Ca referințe globale nu putem utiliza URI-uri?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
Resource Description Framework
cadru (abstract) pentru descrierea resurselorla nivelul calculatorului
fundație a Web-ului semantic
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
Recomandare W3C
RDF Model & Syntax Specification (1999)RDF/XML Syntax Specification – Revised (2004)
RDF 1.1 – suită de specificații (2014)
www.w3.org/RDF/
www.w3.org/standards/techs/rdf#w3c_all
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
O soluție pentru modelarea Web-ului – sau web-urilor –ca o bază de date distribuită
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
O soluție pentru modelarea Web-ului – sau web-urilor –ca o bază de date distribuită
deși ar fi de doritsă putem realiza mai mult…
intenție:
o bază de cunoștințe
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
Scop:“to allow anyone to say anything about anything”
Ian Davis, 2005
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
Oferă un model de specificare a triplelor(rând, coloană, valoare de celulă)
via identificatori uniformi de resurse – URI
proprietate (predicat)
resursă (subiect)
valoare(obiect)
URI
URIURI
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Resursă – desemnată de un URIProprietate – aspect, caracteristică, atribut sau relațieDeclarație – triplu de forma { subiect, predicat, obiect }
subiect obiectpredicat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Subiect = rând: resursa despre care se afirmă cevaPredicat = coloană: o proprietate a subiectului
Obiect = celulă: valoare particulară a proprietății
subiect obiectpredicat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
SubiectResursa – specificată de un URI – care este descrisăvia predicat și obiect
PredicatRelație – desemnată de un URI – stabilităîntre subiect și obiectPoate fi considerat și drept atribut (proprietate)
ObiectDesemnează – printr-un URI – resursa referităde un predicat sau specifică o valoare – via un literal
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Subiect Predicat Obiect
Apache produce HadoopMozilla produce FirefoxFirefox areStatut Deschis
Windows areStatut FreewareAmazon este Companie
Jena este SoftwareJena este OrașJava este Limbaj
Sabin localizatÎn RomâniaSabin localizatÎn IașiSabin utilizează FirefoxAdria cunoaștePe Sabin
un vocabular de termeni folosit în triplele RDF
Anyone can sayAnything aboutAny topic (AAA)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
SubiectMozilla
Predicateste
ObiectOrganizație
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
SubiectSabin
Predicatutilizează
ObiectFirefox
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Mai multe triple pot referi aceeași resursăle putem reprezenta sub forma de grafuri
triplu ≡ muchie între subiect și obiect
predicat ≡ eticheta asociată muchiei digrafului
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
Firebug Firefoxextinde
Mozilla
produsDeproduce
Deschis
areStatut
areStatut
Hadoop
Organizație
este Apacheproduce
este
Sabinutilizează
Persoană
este
graful unui model conceptual referitor la un web:
Jena
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
de consultat și http://webofthings.org/category/research/
un alt exemplu: graful acțiunilor HTTP în contextul modelului Web of Things
Dominique Guinard, Vlad Trifa, Using the Web to Build the IoT (2016)
www.manning.com/books/using-the-web-to-build-the-iot
http://webofthings.org/book/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Predicatele specifică natura relațiilorce pot fi stabilite între subiect și obiect
se pot exprima folosind vocabulare publicate pe Web,disponibile liber și referite de URI
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Modelul RDF poate fi folosit, printre altele,la asocierea de meta-date resurselor Webși la specificarea relațiilor dintre resurse
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
Autorul resursei desemnate de URI-ulhttp://www.infoiasi.ro/~web/ este Sabin Buraga
<rdf:RDF>
<rdf:Description rdf:about="http://www.infoiasi.ro/~web/">
<s:Autor>Sabin Buraga</s:Autor>
</rdf:Description>
</rdf:RDF>
fapte exprimate via formatul RDF/XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
Alternative sintactice:autor ("http://www.infoiasi.ro/~web/", "Sabin Buraga")
forma generală: predicat (subiect, obiect)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
Termenul englezesc “book” este un substantivși are drept sinonime “volume” și “tome”
isA ("#book", "#noun")
hasSynonym ("#book", "#volume")
hasSynonym ("#book", "#tome")
conform WordNet – http://wordnetweb.princeton.edu/perl/webwn
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
Alternative sintactice:
<#ana> <utilizează> <#firefox>
<#ana> <utilizează> <https://github.com/>
<https://github.com/> <referă> <http://nodejs.org/>
<#java> <este> <#Limbaj>
<#ana> <este> <#Persoana>
isA sau a
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un nod al grafului RDF e referit unic via un URI
doar etichetând resursele cu nume– e.g., „Companie”, „produce”, „Java”,… –
nu se garantează că specificămacelași concept (aceeași resursă)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un nod al grafului RDF e referit unic via un URI
pot exista alte entități care referă aceleași convenții sintactice cu alte semantici – interpretări
Java (insulă) vs. Java (limbaj)vs. Java (sortiment de cafea) vs. Java (bicicletă)
de revăzutcursul anterior
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un nod al grafului RDF e referit unic via un URI
dacă doi agenți doresc să refere aceeași resursă,trebuie ales un URI menit a desemna în mod unic
această resursă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un nod al grafului RDF e referit unic via un URI
pentru a desemna concepte diferite,trebuie utilizate URI-uri diferite
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un URI oferă o identificare globală a unei resurse
putem stabili – via URI * – semnificația unui termen
http://geo.locations.info#java
http://programming-languages.org/java
http://coffee-wiki.org/wiki/java
* mai general, se recurge la IRI (Internationalized Resource Identifier)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Un URI oferă o identificare globală a unei resurse
în cazul grafurilor,un nod fuzionează cu altul dacă e referit de același IRI
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
folosind URI-uri, putem fuziona (merge) grafurireferitoare la concepte identice
adaptare după (Toby Segaran, Colin Evans & Jamie Taylor, 2009)
B
A
C
D
E
A
F E
B
C
A
F E
B
C
D
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
folosind URI-uri, putem fuziona (merge) grafurireferitoare la concepte identice
exemplu concret: specificarea grafurilor de „prieteni” (A ≡ Ana,…, F ≡ Florin) în cadrul unor rețele sociale diferite
determinarea relațiilor în context mai larg – e.g., mash-up Web
B
A
C
D
E
A
F E
B
C
A
F E
B
C
D
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Observație (Ian Davis, 2005)
adăugând alte triple– i.e. îmbogățind modelul conceptual –nu vom schimba înțelesul grafului RDF
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Observație (Ian Davis, 2005)
triplele deja existente nu pot fi „uitate”concluziile anterioare nu vor fi invalidate
modelul RDF este monoton
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Observație (Ian Davis, 2005)
faptele modelate nu trebuie să fie complet specificate
“missing is not broken”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Observație (Ian Davis, 2005)
faptele modelate nu trebuie să fie complet specificate
„înțelegerea” datelor de către softwarepoate fi realizată progresiv (partial understanding)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Observație (Ian Davis, 2005)
faptele modelate nu trebuie să fie complet specificate
„înțelegerea” datelor de către softwarepoate fi realizată progresiv (partial understanding)
cunoștințele pot fi modelate și accesate în mod dinamic,
conform necesităților
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Putem exprima URI-urile via nume calificate(qualified names – qnames)
spațiu de nume:termen
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Putem exprima URI-urile via nume calificate(qualified names – qnames)
spațiu de nume:termen
e.g., construcție XML(nume de element)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Deoarece numele calificate sunt restrictivela nivel sintactic, se recurge la CURIE
spațiu de nume:termen
A syntax for expressing Compact URIswww.w3.org/TR/curie
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Via nume calificate desemnăm vocabulare de termeni
coffee:java coffee:molokai
color:azure color:orange color:salmon color:tan
geo:france geo:java geo:romania geo:uk
lang:csharp lang:java lang:javascript lang:python lang:r
s:areStatut s:este s:produce
soft:apache-any23 soft:firefox soft:nodejs soft:protégé
web:azure web:slideshare web:wikipedia
xsd:boolean xsd:integer xsd:string
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Subiect Predicat Obiect
org:Apache s:produce soft:Jenaorg:Apache s:produce soft:Hadooporg:Mozilla s:produce soft:Firefoxsoft:Firefox s:areStatut lic:Deschis
soft:Windows s:areStatut lic:Freewarecom:Amazon s:este schema:Corporation
soft:Jena s:este s:Softwaregeo:Jena s:este geo:Townlang:Java s:este s:Limbaj
pers:Sabin s:localizatÎn geo:Româniapers:Sabin s:utilizează soft:Firefoxpers:Adria pers:cunoaștePe pers:Sabin
termeni calificați – recurgând la vocabulare multiple
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Spațiile de nume implicite (default) pot fi omise
util dacă se folosește vocabularul local
:Server
:areStatut
:localizatÎn
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Meta-datele pot fi asociate unor resurse deja definite:
<rdf:Description rdf:ID="busaco">
<s:rol>profesor la FII</s:rol>
</rdf:Description>
...
<rdf:Description rdf:about="#busaco">
<s:adresa>http://profs.info.uaic.ro/~busaco</s:adresa>
</rdf:Description>
vocabulararbitrar
de termeni
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Specificarea tipurilor de date într-un model RDFse realizează via proprietatea predefinită rdf:type
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exempluSubiect Predicat Obiect
com:amazon rdf:type schema:Corporationcom:microsoft rdf:type schema:Corporation
lang:java rdf:type s:Limbajgeo:romania rdf:type geo:State
geo:jena rdf:type geo:Townpers:m.eliade rdf:type s:Autor
s:Autor rdf:type schema:Personschema:Person rdf:type schema:Thing
s:utilizează rdf:type rdf:Propertyfoaf:knows rdf:type rdf:Property
schema:gender rdf:type rdf:Property
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Stabilirea modului de procesare a declarațiilorse realizează folosind parseType
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
parseType="Resource" se foloseștepentru a semnala faptul că e vorba de o resursă
și nu de o valoare
desemnată de un URI/IRI
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Se pot exprima și relații non-binare, apelându-se la o resursă intermediară
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:un="http://www.schemas.org/Units/">
<rdf:Description rdf:about="urn:ISBN:0-201-00023-7">
<un:price rdf:parseType="Resource">
<rdf:value>33.74</rdf:value>
<un:units rdf:resource="http://www.schemas.org/Units/USdollar"/>
</un:price>
</rdf:Description>
</rdf:RDF>
costul cărții referite de ISBN-ul ei este de 33.74 $
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Construcția parseType="Literal" poate fi utilizatăpentru ca procesorul RDF să nu prelucreze
conținutul unui anumit element
<dc:title rdf:parseType="Literal">
M. Eliade: <html:strong>Maitreyi</html:strong> (1933)
</dc:title>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Pentru a specifica o colecție de resurse, se recurge la parseType="Collection"
<rdf:Description rdf:about="http://angry-profs.info/">
<s:jucatDe rdf:parseType="Collection">
<rdf:Description rdf:about="https://students.info.uaic.ro/~ana" />
<rdf:Description rdf:about="https://failpuke.com/Bogdan" />
<rdf:Description rdf:about="http://www.undeva.org/Cristina" />
</s:jucatDe>
</rdf:Description>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Reificare: declarații despre declarații
faptul 1: Sabin-Corneliu Buraga este autorul resurseidesemnate de URI-ul http://profs.info.uaic.ro/~busaco/
faptul 2: Dan Cristea afirmă că Sabin-Corneliu Buragaeste autorul resursei desemnate de URI-ul
http://profs.info.uaic.ro/~busaco/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Reificare: declarații despre declarații
faptul 1: Sabin-Corneliu Buraga este autorul resurseidesemnate de URI-ul http://profs.info.uaic.ro/~busaco/
faptul 2: Dan Cristea afirmă că Sabin-Corneliu Buragaeste autorul resursei desemnate de URI-ul
http://profs.info.uaic.ro/~busaco/
astfel, pot fi modelate meta-date privitoare la meta-date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model
Pentru a specifica explicit o aserțiune privitoare
la o altă aserțiune, RDF oferă trei resurse speciale:
rdf:subject
rdf:predicate
rdf:object
explicit reification
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
„Wikipedia afirmă faptul că Mozilla produce Firefox.”
p:prop rdf:subject org:Mozilla ;rdf:predicate s:produce ;rdf:object soft:Firefox .
web:Wikipedia s:afirmă p:prop .
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: model – exemplu
„Wikipedia afirmă faptul că Mozilla produce Firefox.”
p:prop rdf:subject org:Mozilla ;rdf:predicate s:produce ;rdf:object soft:Firefox .
web:Wikipedia s:afirmă p:prop .
a nu se confunda cu declarația:
org:Mozilla s:produce soft:Firefox .
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare
Modelul RDF nu este „legat” de o anumită sintaxă
sintaxele „standard” utilizate sunt:digrafuri (reprezentări grafice)
N-TriplesTurtle – Terse RDF Triple Language
N3 – notation 3RDF/XMLJSON-LD
http://blog.iandavis.com/2005/09/the-sixteen-faces-of-eve/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare – N-triples
Resursele sunt specificate de URI-uri absolute scriseîntre „<” și „>”, în ordinea subiect–predicat–obiect,
urmate de „.”
<http://www.philo.info/MirceaEliade>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://schema.org/Person> .
recomandare W3C (2014)www.w3.org/TR/n-triples/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare – turtle
Terse RDF Triple Language (recomandare W3C, 2014)recurge la nume calificate – qnames
valorile obiectelor pot avea specificate tipuri
@prefix s: <http://www.infoiasi.ro/voc/wade#>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
s:Sabin rdf:type s:Autor .
uzual, specificat prin a
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare – turtle
faptul „Diana este o persoană și-i simpatizează peAna, Bogdan și Cristina” se poate specifica prin:
@prefix s: <http://www.infoiasi.ro/voc/wade#>
@prefix schema: <http://schema.org/>
s:diana a schema:Person ;
s:simpatizează ( s:ana s:bogdan s:cristina ) .
( … ) indică o colecție – listă având asociate proprietățile rdf:first, rdf:rest, rdf:nil
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare – RDF/XML
„Formatul cărții referite printr-un ISBN este disponibilca HTML, text obișnuit sau Postscript.”
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="urn:ISBN:0-201-00023-7"><dc:format>
<rdf:Alt><rdf:li>text/html</rdf:li><rdf:li>text/plain</rdf:li><rdf:li>application/postscript</rdf:li>
</rdf:Alt></dc:format>
</rdf:Description></rdf:RDF>
alternativăde formate
via tipuri MIME
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: serializare – grafuri
„Formatul cărții referite printr-un ISBN este disponibilca text obișnuit, HTML sau Postscript.”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf – noduri vide
Cum reprezentăm o resursăce nu are identitate pe Web?
în unele situații, cunoaștem anumite aspecteprivitoare la „ceva”, fără a-i ști identitatea
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf – noduri vide
Exemplu: o organizație lucrează la un produsa cărui identitate rămâne necunoscută
soft:ProdusX rdf:type soft:Aplicatie ;
s:areStatut lic:Deschis .
org:Apache s:produce soft:ProdusX .
Cum modelăm dacă nu-i știm
identitatea?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf – noduri vide
Recurgem la specificarea unui nod vid(blanc node – bnode)
„Există o aplicație (software) produs(ă) de Apache.”
[ rdf:type soft:Aplicatie ;
s:areStatut lic:Deschis ]
un nod blanc nu are asociat un URI
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf – noduri vide
Recurgem la specificarea unui nod vid(blanc node – bnode)
„Există o aplicație (software) produs(ă) de Apache.”
org:Apache s:produce
[ rdf:type soft:Aplicatie ;
s:areStatut lic:Deschis ] .
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Specificarea tipurilor de date în RDF(adaptare după David Robillard, 2012)
<http://example.org/CSymbol>
a rdfs:Datatype ;
rdfs:comment "A symbol in the C programming language" ;
owl:onDatatype xsd:string ;
owl:withRestrictions (
[ xsd:pattern "[_a-zA-Z][_a-zA-Z0-9]*" ]
[ xsd:maxLength 255 ]
) .expresie regulată
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Specificarea tipurilor de date în RDF(adaptare după David Robillard, 2012)
<http://example.org/CSymbol>
a rdfs:Datatype ;
rdfs:comment "A symbol in the C programming language" ;
owl:onDatatype xsd:string ;
owl:withRestrictions (
[ xsd:pattern "[_a-zA-Z][_a-zA-Z0-9]*" ]
[ xsd:maxLength 255 ]
) .
folosirea vocabularelor XML Schema, RDF Schema și OWL pentru a specifica tipuri + restricții asupra datelor
nod vid
se pot utiliza restricțiileXML Schema (facets)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf
Recapitulând, într-un triplu RDF:
subiectul poate fi specificat de un IRI sau un nod blanc
predicatul (proprietatea) este desemnat(ă) de un IRI
obiectul poate fi un IRI, un nod blanc sau un literal
eventual, avândspecificat un tip de dată
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
În ce context ar putea fi utilizat practic modelul RDF?
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări
Uzual, aserțiunile RDF specifică meta-dateprivitoare la aspecte ce privesc caracteristicile
„externe” ale unei resurse
de exemplu:autor, copyright, tag-uri asociate, data publicării, format,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări
RDF poate fi util pentru:descrierea resurselor „opace”
(cu reprezentări în formate binare)
e.g., arhive, executabile, multimedia – fișiere audio, video,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări
RDF poate fi folosit pentru a descrieresurse intangibile, abstracte
e.g., persoane, organizații, evenimente,artefacte umane: opere de artă, software, specificații etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
atașarea de meta-date unei colecții de date (dataset)detalii în http://www.lsv.ens-cachan.fr/Publis/PAPERS/PDF/RG-bda15.pdf
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări
Asocierea de vocabulare de meta-date privind resursele:DCMI (Dublin Core Metadata Initiative)
FOAF (Friend Of A Friend)DOAC (Description Of A Carrier)DOAP (Description Of A Project)
RDFaSIOC (Semantically-Interlinked Online Communities)
…
a se parcurge și http://vocab.org/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – dcmi
Vocabulare de meta-dateDCMI – Dublin Core Metadata Initiative
proprietăți pentru descrierea resurselor:dc:Title, dc:Description, dc:Contributor,
dc:Publisher, dc:Date, dc:Type, dc:Subject,…
www.dublincore.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – dcmi
Vocabulare de meta-dateDCMI – Dublin Core Metadata Initiative
exemplu – preluat din DBLP Bibliography Database:
<http://dblp.l3s.de/d2r/resource/authors/Sabin_C._Buraga>
dc:creator
<http://dblp.l3s.de/d2r/resource/publications/conf/iceis/LucaB08>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
vocabular RDF ce descrie persoane/organizații:identități, interese, afilieri, rețele sociale etc.
www.foaf-project.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
meta-date (proprietăți) vizând o persoană foaf:Person
foaf:name, foaf:gender, foaf:title, foaf:mbox, foaf:homepage,foaf:weblog, foaf:Image, foaf:depiction,...
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
relația knows
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
relația knows
nu se specifică relații mai rafinatee.g., friendOf, collaboratorOf
specializări: http://vocab.org/relationship
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
foaf:Person
Sabin Buraga
foaf:knows
foaf:namemale
foaf:gender
adaptare după Hebeler et al., 2009
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
exemplu:„Eu sunt o persoană.”
<http://profs.info.uaic.ro/~busaco#me>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://xmlns.com/foaf/0.1/Person> .
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – foaf
Relații între persoaneFOAF – Friend Of A Friend
exemplu:„Sabin îl cunoaște pe Cristi.”
@prefix foaf: <http://xmlns.com/foaf/0.1>
<#sabin> <foaf:knows> <#cristi> .
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – vocabulare multiple
@prefix id: <http://www.info.uaic.ro/~busaco/foaf.xml#>
@prefix rel: <http://purl.org/vocab/relationship/>
@prefix foaf: <http://xmlns.com/foaf/0.1>
id:me rel:childOf id:mama , id:tata ;
rel:acquaintanceOf id:acip , id:adria , id:emi-onica , id:otto ;
foaf:title "Dr" ;
foaf:workplaceHomepage <https://www.info.uaic.ro/> ;
foaf:holdsAccount id:pocket-account ,
id:slideshare-account ;
foaf:interest <http://www.w3.org/XML/> ,
<http://schema.org/VisualArtwork>,
:Literature ,
<https://www.wikidata.org/wiki/Q638> .URL desemnând conceptul Music
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
modelarea în RDF a programului de desfășurarea unui eveniment – utilizează DCMI, FOAF, RDF Schema
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
dbpedia:Vangelis rdfs:label "Vangelis"@en ;
foaf:name "Vangelis"@en ;
foaf:givenName "Evangelos Odysseas Papathanassiou"@en ;
foaf:depiction <http://upload.wikimedia.org/.../commons/...jpg> ;
rdfs:comment "Vangelis is een Grieks muzikant…"@nl ;
dbpedia-owl:hometown dbpedia:Volos ;
dbpedia-owl:wikiPageExternalLink <http://www.NemoStudios.co.uk> ,
<http://www.elsew.com> ;
dbpedia-owl:birthDate "1943-03-29"^^xsd:date ;
dbpedia-owl:genre dbpedia:Electronic_music ,
dbpedia:Progressive_rock ;
dbpprop:associatedActs dbpedia:Jon_and_Vangelis ;
dcterms:subject
category:Best_Original_Music_Score_Academy_Award_winners ,
<http://dbpedia.org/resource/Category:1943_births> ,
category:Living_people ,
category:Chevaliers_of_the_Ordre_des_Arts_et_des_Lettres .
<http://dbpedia.org/resource/Aphrodite\u0027s_Child>
dbpedia-owl:formerBandMember dbpedia:Vangelis .
date RDF despre Vangelis oferite de DBpediahttp://dbpedia.org/resource/Vangelis
precizareexplicită a
tipului de date
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
dbpedia:Vangelis rdfs:label "Vangelis"@en ;
foaf:name "Vangelis"@en ;
foaf:givenName "Evangelos Odysseas Papathanassiou"@en ;
foaf:depiction <http://upload.wikimedia.org/.../commons/...jpg> ;
rdfs:comment "Vangelis is een Grieks muzikant…"@nl ;
dbpedia-owl:hometown dbpedia:Volos ;
dbpedia-owl:wikiPageExternalLink <http://www.NemoStudios.co.uk> ,
<http://www.elsew.com> ;
dbpedia-owl:birthDate "1943-03-29"^^xsd:date ;
dbpedia-owl:genre dbpedia:Electronic_music ,
dbpedia:Progressive_rock ;
dbpprop:associatedActs dbpedia:Jon_and_Vangelis ;
dcterms:subject
category:Best_Original_Music_Score_Academy_Award_winners ,
<http://dbpedia.org/resource/Category:1943_births> ,
category:Living_people ,
category:Chevaliers_of_the_Ordre_des_Arts_et_des_Lettres .
<http://dbpedia.org/resource/Aphrodite\u0027s_Child>
dbpedia-owl:formerBandMember dbpedia:Vangelis .
pe baza acestora, se pot realiza deducții simplerecomandarea unor resurse – e.g., seevl.fm
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – sioc
Relații între comunități virtualeSIOC – Semantically-Interlinked Online Communities
model conceptual menit a interconectasituri de comunități (blog, calendar, aggregator,…) și
liste de discuții: mailing list, newsgroup, canale IRC etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – sioc
Relații între comunități virtualeSIOC – Semantically-Interlinked Online Communities
recurge la RDF + alte vocabulare – e.g., DCMI
sioc-project.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
@prefix sioc: <http://rdfs.org/sioc/ns#>
<irc://freenode/%23swig> rdf:type sioc:Forum .
<irc://freenode/%23swig> sioc:container_of <http://iki.fi/2013-06-11#02:50:56> .
<http://iki.fi/2013-06-11#02:50:56> dc:created "2013-06-11T02:50:56Z" .
<http://iki.fi/2013-06-11#02:50:56> sioc:has_creator <irc://freenode/tux,isuser>.
<http://iki.fi/2013-06-11#02:50:56> rdf:type sioc:Post .
<http://iki.fi/2013-06-11#02:50:56> rdfs:content "Hello!".
<http://iki.fi/2013-06-11#02:50:56> rdfs:label "<tux> Hello!".
<irc://freenode/tux,isuser> rdfs:label "tux" .
<irc://freenode/tux,isuser> rdf:type sioc:User .
fragment dintr-o conversație pe IRCmodelată via SIOC și alte vocabulare
conversațiapropriu-zisă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – doap
Descrierea unui proiect (software)DOAP – Description Of A Project
proprietăți privitoare la un proiect doap:Project
doap:name, doap:homepage, doap:description, doap:wiki,doap:maintainer, doap:programming-language,…
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – doap
Descrierea unui proiect (software)DOAP – Description Of A Project
se bazează pe RDF și FOAF
https://github.com/edumbill/doap/wiki
modelare RDF efectivă: http://usefulinc.com/ns/doap
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizari
de studiat exemplele din arhiva aferentă prelegerii
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – rdfa
Specificarea construcțiilor RDF direct în HTML
RDFa
reprezintă un alt format de serializare a modelului RDF
recomandare a Consorțiului Web (2015)www.w3.org/TR/rdfa-core/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – rdfa
Specificarea construcțiilor RDF direct în HTML
RDFa
generalizare a specificării unor modele de date exprimatevia microformate sau microdate HTML5
rdfa.info
vezi suplimentulasociat acestui curs
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – JSON-LD
Utilizarea formatului JSON (JavaScript Object Notation)
în contextul datelor RDF interconectateconform inițiativei Linked Data
recomandare W3C (2014)www.w3.org/TR/json-ld/
json-ld.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – JSON-LD
Fie documentul JSON oferind date despre o persoană(eventual, obținut prin invocarea unui serviciu Web)
{"id": "busaco","name": "Sabin Buraga","title: { "en": "PhD", "ro": "Doctor" },"workHomepage": "https://www.info.uaic.ro/","knows": [
{ "id": "adria", "name": "Lenuța Alboaie" },{ "id": "acip", "name": "Ciprian Amariei" }
]}
adaptare după Markus Lanthaler (2012)
de dorit: adnotări semantice
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – JSON-LD
Asocierea de adnotări semantice pe baza construcțiilor@id @value @type @set @list @language @context @graph
{"@id": "busaco","name": "Sabin Buraga","title: [ { "@language": "en", "@value": "PhD" },
{ "@language": "ro", "@value": "Doctor" } ], "workHomepage": "https://www.info.uaic.ro/","knows": [
{ "@id": "adria", "name": "Lenuța Alboaie" },{ "@id": "acip", "name": "Ciprian Amariei" }
]}
adaptare după Markus Lanthaler (2012)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rdf: utilizări – JSON-LD
Contextul (vocabularul de termeni) este referitîn cadrul documentului sau via un URL extern
{"@context": {
"foaf": "http://xmlns.com/foaf/0.1/","name" : "foaf:name", "title" : "foaf:title", "workHomepage": {
"@id" : "foaf:workplaceHomepage" , "@type" : "@id"
},"knows": "foaf:knows"
}} adaptare după Markus Lanthaler (2012)
asocieri (mappings) de termeni
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
un model RDF exprimat în JSON-LD al unei rețeteexemplul complet e disponibil la json-ld.org/playground/
{
"@context": { … },
"@graph": [
{ "@id": "_:b0",
"ingredient": [ "12 fresh mint leaves", "1/2 lime, juiced with pulp",
"1 tablespoons white sugar", "1 cup ice cubes",
"2 fluid ounces white rum", "1/2 cup club soda" ],
"instructions": [ { "@id": "_:b1" }, { "@id": "_:b2" },
{ "@id": "_:b3" }, { "@id": "_:b4" }, { "@id": "_:b5" } ],
"name": "Mojito",
"yield": "1 cocktail"
},
{ "@id": "_:b1", "description": "Crush lime juice, mint & sugar together...", "step": 1 },
{ "@id": "_:b2", "description": "Fill glass to top with ice cubes.", "step": 2 },
{ "@id": "_:b3", "description": "Pour white rum over ice.", "step": 3 },
{ "@id": "_:b4", "description": "Fill the rest of glass with club soda, stir.", "step": 4 },
{ "@id": "_:b5", "description": "Garnish with a lime wedge.", "step": 5 }
]
}
aserțiuni despre graful RDF rezultat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
declarații JSON-LD „scufundate” în documentele HTMLbuiltvisible.com/micro-data-schema-org-guide-generating-rich-snippets/
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"name": "Jucărie de pluș",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "33",
"highPrice": "54",
"priceCurrency": "RON"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.74",
"reviewCount": "9617"
}
}
</script>
modele specificate de schema.org
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "MobileApplication",
"image": "http://angry-profs.info/icon",
"name": "Angry Profs 2017",
"author": {
"@type": "Person",
"url": "http://penguin.info/",
"name": "Tuxy Pinguinnesscool"
},
"datePublished": "2017-11-01",
"operatingSystem": "iOS",
"description" : "…",
"accessibilityControl" : "fullTouchControl",
"applicationCategory" : "Game"
}
</script>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
concluzii
Modelul RDF permite formularea de aserțiuniexplicite privitoare la resursele Web
se folosesc triple (subiect, predicat, obiect)referite prin IRI-uri
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
s:Jucători a rdf:Bag ;
rdf:_1 pers:Ana ;
rdf:_2 pers:Ștefan .
gm:Niveluri a rdf:Seq ;
rdf:_1 gm:NivelAn1Sem1 ;
rdf:_2 gm:NivelAn1Sem2 ;
rdf:_3 gm:NivelAn2Sem1 .
soft:AngryProfs s:jucatDe s:Jucători .
soft:AngryProfs s:areNiveluri gm:Niveluri .
pers:Ana gm:joacă soft:AngryProfs .
pers:Ana rel:friendOf pers:Bogdan .
pers:Ștefan e:attendeeAt <http://potop.info/> .
pers:Ștefan foaf:title "Bachelor of Science" .
AAA
datele nu trebuie să fie specificate complet
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
concluzii
RDF “helps you to create Web-like relationships between data, which is not easily done
in a typical relational database.”
Microsoft Developer Network, 2006
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
concluzii
RDF oferă premisa modelării interconexiunilorweb-urilor diferite existente pe Web
inițiativa Linked Data
http://linkeddata.org/guides-and-tutorials
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
recurgând la RDF, pot fi definite și (re)utilizate diverse modele conceptuale
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rezumat
⊷baza Web-ului semantic: modelul de date RDF
mulțumiri: @bblfish, @danja, @gridinoc, @iand, @kidehen, @lucaa, @mfhepp