Sunteți pe pagina 1din 355

Utilizarea Internetului în Afaceri

(cu accent pe Web 3.0)


Conf. Dr. Robert Buchmann
robert.buchmann@econ.ubbcluj.ro
A u ţ i porta t:
Program nou de Master î E gleză
Business Modeling and Distributed Computing
Structură examen
• 30% = 3 teste scrise în timpul cursurilor * 10%
• 30% = test grilă în sesiune
• 30% = proiect practic (în echipe de câte 2)
• 10% = punctul din oficiu

Componentele proiectului practic:


• O ază de u oşti ţe des hisă
• Un modul client care foloseşte i for aţia di aza de u oşti ţe
eri ţe ai spe ifi e or fi o u i ate ulterior, după e larifi ă
o eptele de ază

Condiţie pro o are:


• Media finală să iasă 5.
Web 3.0 = Semantic Web
Tehnologii Semantic Web Obiectiv Semantic Web

Interoperabilitatea si ta ti ă şi se a ti ă în
Web
• Si ta ti ă: Gara ţia ă structura i for aţiei pe care o
pri eşte un destinatar este a eeaşi cu cea pe care şi-a
propus-o expeditorul
• Altfel spus: gara ţia ă două apli aţii Web,
indiferent de limbajul în care au fost scrise, pot
schimba între ele date complexe şi le pot accesa
în a elaşi mod
• Se a ti ă: Gara ţia ă se ifi aţia i for aţiei pe
care o pri eşte un destinatar este a eeaşi cu
se ifi aţia pe care i-a atribuit-o expeditorul
• Altfel spus: gara ţia ă două apli aţii Web,
indiferent de limbajul în care au fost scrise, îşi
pot "da seama" da ă deţi i for aţii despre
a elaşi lucru şi, în caz afirmativ, îşi pot î ogăţi
reciproc " u oaşterea" despre acel lucru sau pot
lua decizii pe baza acelei u oaşteri
I teropera ilitatea si ta ti ă
Secretariat Profesor
Solicit lista notelor din această sesiu e! Răspu s serializat*:
S110DS10 2DS1 10DS1 3510
Nu î ţeleg i i ! Răspu s: Codurile stude ţilor î ep u S,
Codurile disciplinelor încep cu DS, restul sunt notele!
Aha! Deci studentul S1 a luat nota 10 la disciplina
Răspu s: Nu! E vorba de studentul S110! Nota apare după dis ipli ă!
DS10!
Daţi- i oie să retri it datele u o deli itare lară:
Ok! Deci studentul S110 a luat nota 2 la disciplina S110 DS10 2 DS1 10 DS1 3 5 1 0
DS10!
Răspu s: Nu! Studentul S110 a luat 5 la disciplina DS10_2.
Notele apar chiar la sfârşit, î a eeaşi ordi e u dis ipli ele!
Aha! Deci a luat un 5 la DS10_2 şi u la DS _10.
Răspu s: Nu! A luat 1 la disciplina DS1_ şi a fost a se t la DS1_3,
De aceea am pus 0 în dreptul acesteia.
Vă rog să i di aţi lar are su t dis ipli ele şi are otele
Răspu s:
S=110; DS=10_2,1_10,1_3; N=5,1,absent
Acum se î ţelege! Tri iteţi şi otele elorlalţi stude ţi!
Răspu s:
S=110,123,124; DS=10_2,1_10,1_3; N=5,1,absent,4,4,10,10
Nu lipses işte ote?
Răspu s:
Nu, ultimii 2 studenţi su t î s rişi doar la di dis ipli e!
Nu puteţi tri ite otele astea astfel î ât să se î ţeleagă fără să Puteţi erifi a asta î ataloage!
o sultă şi alte surse? Ne-ar ajuta să lu ră ai efi ie t!

*serializare: â d o ţi utul u ui fişier sau date di e oria al ulatorului o ie te, ta ele et .


sunt convertite într-u şir de ara tere î ederea i tra sferării pri reţea sau ii a editării u u editor de texte.
Exe plu. Opţiu ea Save As .csv î Excel.
*deserializare, parsing: â d u şir de ara tere este o ertit î tr-o stru tură de date pe tru a fi pro esată de al ulator.
Exemplu: conversia codului HTML (scris cu Notepad) într-un arbore DOM (pentru a fi manipulat cu JavaScript)
I teropera ilitatea si ta ti ă
Secretariat Profesor
Răspu s:
S=110,DS=10_2,N=5;S=110,DS=1_10,N=1;S=110,DS=1_3,N=absent;
Acum e clar! Dar nu puteţi e ita repetarea odului stude ţilor, pe tru
S=123,DS=10_2,N=4;S=123,DS=1_10,N=4;
a fa e fişierul ai i ?
S=124,DS=10_2,N=10; S=124,DS=1_10,N=10
Şi să i di aţi u a ă su t otele date de d s., a să u e uită de
fie are dată de la i e le-am primit. Răspu s:
<Prof Nume="Buchmann">
Acum e perfect! Vă rog să o u i aţi tuturor olegilor de atedră <S ID="110"> <D ID="10_2 1_10 1_3" N="5 1 absent"/> </S>
să foloseas ă a elaşi od de deli itare a să e fie lar i e e otă <S ID="123"> <D ID="10_2 1_10" N="4 4"/> </S>
a luat şi la e dis ipli ă! <S ID="124"> <D ID="10_2 1_10" N="10 10"/> </S>
</Prof>
=================================== Au apărut regulile de u ă for are ! =============================================

Răspu s:
Ok, ai a işte ote de la doi olegi! Să- i o fir aţi că e lar
ci e e otă a luat:
Mesaj1:
Am primit un program care extrage automat notele şi ge erează <Prof Nume="Tomai">
cataloage, pe baza structurii pe care ne-aţi propus-o! <D ID="1_1"> <S N="110" Note="5"/> </D>
<D ID="1_2"> <S N="110 124" Note="8 8"/> </D>
A e î să pro le e u otele olegilor: </Prof>
• Î azul dlui To ai, î atri utul N găsi u ere atri ole, u ote! Mesaj2:
• Î azul dlui Silaghi, u găseşte delo atri utul N! Şi i i atri utul ID <Prof Nume="Silaghi">
Vă rugă să folosiţi î totdeau a atri utul N pe tru a i di a otele şi <D Cod="2_1">
î totdeau a atri utul ID pe tru oduri de stude t şi de dis ipli ă! <S Cod="110">4</S>
<S Cod="123">6</S>
</D>
<D Cod="2_2"><S Cod="110">5</S></D>
</Prof>
I teropera ilitatea si ta ti ă
Secretariat Profesor
Răspu s:
A o u i at eri ţa olegilor şi au folosit a eleaşi atri ute şi
a eiaşi ar atori! :
Mesaj1:
<Prof Nume="Tomai">
<S ID="110"> <D ID="1_1 1_2" N="5 8"/> </S>
<S ID="124"> <D ID="1_2" N="8"/> </S>
</Prof>
Mesaj2:
<Prof Nume="Silaghi">
<D ID="2_1"> <S ID="110 123" N="4 6"/> </D>
Acum e clar care sunt notele şi are su t odurile de ide tifi are! Mai
<D ID="2_2"> <S ID="110" N="5"> </D>
a e totuşi o pro le ă:
</Prof>
• La dl Tomai otele su t ataşate dis ipli elor şi dis ipli ele su t
i luse î stude ţi;
• La dl Silaghi otele su t ataşate stude ţilor şi stude ţii i luşi î
discipline. Varia ta de Răspu s:
Programul nostru nu poate să extragă note decât da ă sunt ataşate
A i pus tuturor olegilor să foloseas ă a eeaşi stru tură!
disciplinelor, aşa cum ni le-aţi trimis prima dată. Trebuie să plăti
S-a reat hiar u progra are să alideze stru tura pe tru a gara ta
furnizorul de software da ă soli ită modificarea programului. Vă rog
ă pri iţi de la toată lu ea otele î stru tura adoptată!
să o u i aţi colegilor ca toată lumea să foloseas ă a elaşi mod de
Astfel apare un vocabular XML!
încadrare a datelor. Varia ta de Răspu s:
Am comunicat eri ţa, î să dl Silaghi foloseşte la râ dul său u
soft are are exportă otele şi u are se poate odifi a!
Veţi fi e oiţi să soli itaţi odifi area progra ului d s., î să
pro ite ă pe iitor u or apare alte ex epţii: otele or fi
î totdeau a tri ise î u a di ele două aria te!
Din nou se impune un vocabular, dar unul mai flexibil, care permite
două oduri de structurare a aceloraşi date!
=================================== Au apărut o a ularele ! =============================================
Concluzie

INTEROPERABILITATEA SINTACTICĂ
se o ţi e â d u există a iguitate î si taxa şi stru tura datelor,
fără a e esita i terve ţie u a ă expli aţii supli e tare
Mecanismele
interoperabilităţii si ta ti e
• UNICODE = setul u i ersal de ara tere exti s faţă de ASCII e per ite
i ter aţio alizarea şirurilor de ara tere =serializare î ori e li ă
• XML* = model de date standardizat prin care se pot reprezenta în calculator orice
stru turi i for aţio ale: aze de date, do u e te, progra e et .
• Regulile de u ă for are XML = reguli sintactice minimale, standardizate, ce
gara tează ă toată lu ea deli itează î a elaşi fel datele
• Parsere XML = progra e e erifi ă / gara tează u a for are, oferind acces la
elementele XML
• DOM, XPath etc. = metode standardizate prin care programatorii pot accesa orice
i for aţie di tr-u do u e t i e for at, i difere t de li ajul î are lu rează
• Vocabulare XML = seturi de reguli prin care mai multe organizaţii se pu de a ord
asupra structurii documentelor XML pe care le vor schimba între ele în viitor
• Validare XML = operaţia pri are se testează da ă u do u e t XML re epţio at de
la u parte er respe tă regulile a terior sta ilite pri tr-un vocabular
• HTTP = proto olul pri are orga izaţiile pot s hi a date şi o a ulare

*Alternative la XML: JSON, YAML, CSV


(nu suportă o a ulare, eea e fa e alidarea pro le ati ă!
I teropera ilitatea se a ti ă: auto atizarea
o pletă a pro esului de ai jos
Serviciu Web Serviciu Web Serviciu Web Serviciu Web
Software
cu ază de cunoşti ţe Compania A Compania B Evide ţa populaţiei
ANAF
ANAF (din România) (din Austria) Austria
Solicită e iturile lui Pop Care Pop Ioan? Avem 10
Ioan pe 2015 angajaţi u a est u e!

Care e CNP-ul lui Pop Ioan?


CNP=12345
Soli ită e iturile pe Venitul solicitat:
pentru CNP=12345 100 RON
Nu î ţelege e
Soli ită e iturile pe î sea ă CNP
pentru CNP=12345

Ce se foloseşte î lo de
Social Security Number CNP în Austria?
SSN=10001
Care este SSN pentru
persoana cu CNP=12345?

Soli ită e iturile pe


Venitul solicitat:
pentru SSN=10001
500 EU

De aici încolo, identificatorul


universal al acestei persoane va
fi http://anaf.ro#PopIoan1, cu
următoarele proprietăţi:
• CNP în Ro=12345
• SSN în Au=10001
• Venit 2015 în Ro=100 RON
Da ă doriţi să a esaţi • Venit 2015 în Au=500 EUR
i for aţii despre a eastă Ok, a e orat ă Ok, a e orat ă Ok, a e orat ă
persoa ă, a esaţi la ser i iul http://anaf.ro#PopIoan1 http://anaf.ro#PopIoan1 http://anaf.ro#PopIoan1
nostru adresa este persoana pe care noi o este persoana pe care noi o este persoana pe care noi o
http://anaf.ro#PopIoan1 ide tifi ă u CNP= ide tifi ă u SSN= ide tifi ă u SSN=
Concluzie

INTEROPERABILITATEA SEMANTICĂ
se o ţi e â d u există a iguitate î
Ide titatea "lu rurilor" şi Ter i ologia folosită î des rierea a estora,
Iar î depărtarea a iguităţii u e esită i terve ţie u a ă
Mecanismele interoperabilităţii
semantice
• URI = sistem standardizat prin care se pot atribui identificatori universali ("chei")
ori ărui lu ru/concept
• RDF = model de date standardizat prin care se poate descrie semnificaţia pe are o
dă u ui lu ru/concept
• Regulile de u ă for are RDF = reguli sintactice standardizate, ce garantează ă toate
apli aţiile pot pro esa î a elaşi od des rieri de lu ruri/concepte
• Parsere RDF = progra e e erifi ă / gara tează u a for are, oferind acces
standardizat la elementele unei descrieri
• SPARQL = metode standardizate prin care programatorii pot accesa orice i for aţie
dintr-o descrierea unui lucru/concept (ceea ce este Xpath pentru XML!)
• Ontologii/vocabulare RDF = seturi de reguli prin care mai multe organizaţii se pu de
acord asupra terminologiei folosite în descrieri
• Raţio are i fere ţe = operaţia pri are se î ogăţeşte des rierea existe tă a u or
lucruri/concepte sau pri are se dete tează o tradi ţii î tre des rieri diferite ale
a eluiaşi lu ru/concept
• HTTP = proto olul pri are orga izaţiile pot s hi a î tre ele des rieri de
lucruri/concepte
The Semantic Web is what we will get if we
perform the same globalization process to
Knowledge Representation that the Web
initially did to Hypertext. We remove the
centralized concepts of absolute truth, total
knowledge, and total provability, and see what
we can do with limited knowledge.
[Tim Berners-Lee, What the Semantic Web can represent, 1998]

13
CAPITOLUL 1.
INTEROPERABILITATEA SINTACTICĂ:
XML ŞI VOCABULARE XML
Care din u ătoa ele documente sunt
XML?
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?
<StudentiiMei>
<Student Nume="Ienciu" Nota="5" />
<Student Nume="Turdasan" Nota="10" />
<Student Nume="Lung" Nota="8" />
<Student Nume="Cinpoeru" Nota="1" />
</StudentiiMei>
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?

<!ELEMENT Curs EMPTY>


<!ATTRLIST Curs
CodCurs ID #REQUIRED
Descriere CDATA
TipCurs (A|B|C) #REQUIRED>
Care din u ătoa ele do u e te XML
sunt corecte?
Este acesta un limbaj standardizat?
Este acesta un limbaj standardizat?
Este acesta un limbaj standardizat?
<StudentiiMei>
<Student Nume="Ienciu" Nota="5" />
<Student Nume="Turdasan" Nota="10" />
<Student Nume="Lung" Nota="8" />
<Student Nume="Cinpoeru" Nota="1" />
</StudentiiMei>
Este acesta un limbaj standardizat?
Care din următoa ele e e ple este
corect?
Care din următoa ele e e ple este
corect?
Care din următoa ele e e ple este
corect?
Care din următoa ele e e ple este
corect?
Corectitudinea XML
• Două i ele de o e titudi e:

1. Buna formare
= espe tă doar egulile de u ă fo a e
= cine verifică u a fo a e? un parser
= câ d se e ifi ă? î totdeau a, altfel XPath şi fu ţiile DOM u
fu ţio ează!

2. Validitatea
= espe tă egulile u ui o a ula
= cine verifică aliditatea? un validator
= â d se e ifi ă? când primim cod XML dintr-o su să e te ă şi
do i să e asigu ă ă are structura de marcatori/atribute aşteptată

Orice document valid e bine format


Nu orice document bine format e valid
Corectitudinea XML
Rolul parserului: să e ifi e da ă u do u e t XML e i e fo at şi să îl o e teas ă
într-o st u tu ă de date di a e se pot e t age uşo i fo aţiile do ite
• Exemple de reguli de bine formare:
– o i e ele e t să fie îşi i ludă o plet des e de ţii
– o i e at i ut să ai ă o aloa e fie şi idă deli itată î t e ghili ele
(î ge e al egulile de u ă fo a e au de a fa e u odul de deli ita e şi u u e s ie î
marcatori sau atribute)
• Exemple de parsere: DOM, SimpleXMLElement, SAX

Rolul validatorului: să e ifi e da ă u do u e t XML o espu de u ui o a ula


• Exemple de reguli de vocabular:
– ele e tul P ofeso să u poată apa e î i te io ul ele e tului Stude ti
– ele e tul Stude t să ai ă o ligato iu at i utul Nu e şi opţio al at i utul Nota
î ge e al egulile u ui o a ula au de a fa e u o i aţiile de a ato i-atribute pe care
do i să le pe ite , p e u şi tipu ile de date pe a e le i pu e asup a alo ilo a esta
• Exemple de validatoare: XML Schema, DTD, Schematron

Atât pa se ele ât şi alidatoa ele su t dispo i ile î ajo itatea li ajelo de


p og a a e i te ope a ilitatea si ta ti ă => documentele XML au fost concepute
pentru a fi transferate î t e o i e apli aţii, i dife e t de li ajul î a e au fost s ise
Rostul regulilor de bună fo a e?
Să pe ită ge e a ea u ui a o e DOM:
document

<Catalog>
<Produs ID="P1" Pret="300"> Catalog
Ipod
</Produs>
<Produs ID="P2" Pret="100"> Produs[2]
Produs[1]
Frigider
</Produs>
</Catalog> ID:P2
ID:P1
Pret:300 Ipod Pret:100 Frigider
Ce este un vocabular?
• Vocabular = Limbaj = Tip de document = un set de Reguli care impun:
– ce marcatori se pot folosi într-un document XML
– e at i ute pot să ai ă a ei marcatori
– e tipu i de date pot a ea alo ile at i utelo şi o ţi utu ile te tuale ale
marcatorilor
– cum se pot îmbina marcatorii între ei a e poate o ţi e pe a e, de âte o i,
în ce ordine...)
=> vocabularele impun o anumită stru tură
• Re i der: A estea su t reguli SUPLIMENTARE faţă de ele de u ă
formare, care impun:
– ca ori e atri ut să ai ă o aloare î tre ghili ele
– a atri utele să apară doar î des hiderea u ui ar ator, u şi î î hidere
– a atri utele să fie separate de ar ator şi atri utele alăturate pri spaţii
– a ori e ele e t să fie o ţi ut î tr-u si gur alt ele e t, u ex epţia u ui
element-rădă i ă are să fie u i
– a ori e ele e t des his să se şi î hidă
– ca ar atorii şi atri utele să u o ţi ă a u ite ara tere precum >
=> u a for are i pu e o si taxă are să per ită for area
arborelui DOM
Exemple de reguli ale
vocabularului (X)HTML
• IMG să ai ă a at i ut o ligato iu SRC şi a at i ute opţio ale ALT, HEIGHT
etc.
• Valo ile at i utelo HEIGHT, WIDTH să fie u e i e
• TD să apa ă o ligato iu î i te io ul lui TR, şi a esta î i te io ul lui TABLE
• HTML să o ţi ă HEAD şi BODY, e a t î a eastă ordine

Rolul vocabularului XHTML: Ca B o se ele să se poată pu e de a o d asup a


odului de î i a e a a ato ilo şi at i utelo => să le poată p o esa î
a elaşi fel
Ca e e dife e ţa î t e XHTML şi HTML?
• HTML a apă ut î ai te de XML şi i iţial u espe ta î totalitate egulile de
u ă fo a e
• Ulte io XHTML a fost o eput a o a ia tă a li ajului HTML a e să
o espu dă egulilo de u ă fo a e, de e i g astfel u o a ula XML!
S-a păst at totuşi şi e siu ea e he, tole ată de o se e pe t u site-urile
vechi
– de aceea browserul u dă e oa e da ă u pu e ghili ele la at i ute sau
da ă uită să î hide marcatori (dar poatea avea comportament
imprevizibil – mai ales la getElementByID!)
E istă şi alte o a ula e popula e
• Pe t u fişie e Offi e:
– WordML
– ExcelML
– PowerpointML
• Pe t u fişie e u uzi ă: Musi XML
• Pentru formule matematice: MathML
• Pentru imagini vectoriale: SVG

Pe tru o listă exti să o sultaţi


https://en.wikipedia.org/wiki/List_of_markup_languages
Exemplu MusicXML
<score-partwise version="3.0">
<part-list><score-part id="P1"><part-name>Music</part-name></score-part></part-list>
<part id="P1"> <measure number="1">
<attributes>
<divisions>1</divisions> <key> <fifths>0</fifths> </key>
<time> <beats>4</beats> <beat-type>4</beat-type> </time>
<clef> <sign>G</sign> <line>2</line> </clef>
</attributes>
<note>
<pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration>
<type>whole</type>
</note>
</measure>
</part>
</score-partwise>
Exemplu MathML
Exemplu SVG
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;"/>
</svg>
Ci lul de iaţă al o a ula elo XML
1. U o a ula se eează atu i â d i e a defi eşte un set de reguli pentru vocabular.
Acestea se pot crea prin mai multe metode: DTD, XML Schema, Schematron etc.
2. Vocabularul este publicat on-li e, ia ei a e îl o o side a util o î epe să eeze
documente valide în raport cu acel vocabular. Toată lu ea a e adoptă o a ula ul
respectiv
 va şti la e să se aştepte â d p i eşte u astfel de document
 va a ea posi ilitatea de a testa alida da ă do u e te p i ite de la alt i e a su t alide sau u
3. Da ă vocabularul devine suficient de popular, se vor crea progra e apa ile să
proceseze acel tip de documente, în diverse scopuri: formatare, prelucrare date etc.
– Adesea utilizatorii unor astfel de programe nici nu ajung în contact cu marcatorii XML!
• Utilizatorii MS Offi e rareori i tră î o ta t u odul WordML. Utilizatorii u ui ro ser rareori su t i teresaţi să
adă odul sursă al u ei pagi i HTML.
– Uneori o a ula ul e eat de a eiaşi auto i a e eează şi p og a ele u a e se p o esează
documentele vocabularului.
• De exe plu Mi rosoft a reat atât o a ularul WordML .DOCX ât şi progra ul Word are poate des hide
fişiere de a el tip. Utilizatorii Word su t ei are reează do u e tele!
– Alteori, eato ii o a ula ului, ai do u e telo şi ai p og a elo su t dife iţi!
• Pentru HTML, o a ularul a fost reat de Co sorţiul We W3C , do u e tele pagi ile We su t reate de
desig erii We , iar progra ele e pot i terpreta a ele do u e te ro serele su t reate de produ ătorii de
browsere.
– Alteori, eato ii o a ula ului, ai do u e telo şi ai p og a elo su t a eiaşi!
• Adesea într-un parteneriat ce include mai multe companii, acestea se pun de acord asupra unui vocabular, apoi
reează progra e i ter e apa ile să prelu reze do u e te de a el tip (de ex. facturi, rapoarte), apoi î ep să
schimbe între ele documente de acel tip cu posibilitatea de a automatiza verificarea lor. Numeroase sisteme ERP
foloses o a ulare XML pe tru a putea tra sfera do u e te e o o i e e.g., fa turi î tre di erşi parte eri e
foloses a elaşi siste .
Be efi iile alidă ii
• Verifi are de stru tură
– Verificarea modului de încadrare a marcatorilor
• Verifi are de o ţi ut
– Ve ifi a ea tipu ilo de date şi alo ilo pe ise di at i ute şi odu i te t
• Bază o tra tuală
– Vo a ula ul e p i ă u a o d î t e pă ţile a e o s hi a î t e ele
documente de un anumit tip
• Metodă de i sta țiere
– Vocabularele permit generarea unor schelete de documente semi-completate
• Suport pentru documentare
– Vo a ula ele pot o ţi e o e ta ii a e să ofe e u ghid help pe t u
î ţelege ea do u e telo
• Suport pentru procesare
– Se pot ge e a auto at i te feţe g afi e fo ula e u â pu i p egătite să
p eia at i utele p e ăzute de u o a ula i lusi alida ea lo la tasta e
• Suport pentru interogare
– Se pot ealiza i te ogă i XML a e să ţi ă o t de egulile p e ăzute î
vocabular (de ex. "schema-aware queries" în software-ul Saxon)
Se pot ea do u e te XML fă ă
vocabulare?
DA, atunci câ d e istă u ele ga a ţii:
– că ei a e o lu a u do u e tele le o î ţelege, s-au pus deja de acord asupra structurii
aşteptate
– că ei a e o p odu e î iito do u e tele XML ga a tează pe alte ăi aliditatea lo de
e e plu pe ăi legale
– ă do u e tele u t e uie să fie o fo e u ui li aj sta da d
– că u se do eşte ge e a ea auto ată de do u e te XML u ele o a ula e pe it asta!

De egulă astfel de ga a ţii e istă doa da ă do u e tele se foloses î t -un mediu


î his, î a e se u os toţi posi ilii utilizato i ai do u e telo .
E e plu: U p og a ato AJAX lu ează la u site:
– El eează u s ipt PHP a e p odu e od XML
– Tot el eează şi pagi a lie t Ja aS ipt a e aşteaptă a el od XML şi e t age di e se date
din el
– Fii d a eeaşi pe soa ă, u a e e oie să alideze odul XML, de ât da ă e istă posi ilitatea să
soseas ă od XML şi di alte su se, pe a e p og a ato ul u le o t olează
– Î astfel de s e a ii au de e it popula e o se ie de alte ati e la XML, a e u au oţiu ea de
o a ula da au pe fo a ţe supe ioa e la e t age ea datelo : JSON, CSV, YAML (deoarece
nu au marcatori, ci doar caractere de delimitare, sunt mai eficiente decât XML)
Ce sunt documentele XML
(dpdv al utilizatorului)?

Sunt ele:
• Programe?
• Baze de date?
• Documente text ce trebuie formatate pentru un cititor uman?
Ce sunt documentele XML
(dpdv al utilizatorului)?
Document XML = Document formatat pentru cititori umani?
• Da, dacă olul a ato ilo e să i di e odul î a e t e uie să a ate dife ite
pă ţi ale u ui do u e t:
<P ALIGN="right">A venit vara</P>
• În acest caz, vo a ularul oferă i stru ţiu ile de for atare (cazul HTML)
• U i te p eto a a esa a o ele DOM şi a fo ata/poziţio a ele e tele
pe t u afişa e sau lista e:
 Exemplu: browserele, care pot interpreta mai multe vocabulare - nu doar
HTML, i şi SVG pe t u ele e te g afi e!
Ce sunt documentele XML?
Document XML = Bază de date ?
• Da, dacă olul a ato ilo este să i di e p op ietăţile u o e tităţi i lusi o
" heie p i a ă" :
<Studenti>
<Student ID="1" Nume="Pop Ioana" Nota="2" />
<Student ID="2" Nume="Marian Andrei" Nota="5" />
<Student ID="3" Nume="Badea Maria" Nota="10" />
</Studenti>
• În acest caz, vo a ularul joa ă rolul stru turii u ei aze de date (de exemplu
eXistDB este un sistem de baze de date formate exclusiv din XML!)
• Un SGBD va folosi a o ele DOM a etodă de sto a e a datelo î ede ea
i te ogă ilo din partea unor clienţi
 Astfel de aze de date i t ă î atego ia baze de date NoSQL ă i
folosesc alte limbaje de interogare decât SQL, de exemplu: XPath, XSLT,
XQuery)
Ce sunt documentele XML?
Document XML = Program ce descrie un algoritm de executat?
• Da, dacă olul a ato ilo e să des ie u algo it :
<variable name="a" value="5"/>
<for i="0" to="N">
<if condition="a!=10">
<then><print string="Hello"/></then>
<else><call function="f()"/></else>
</if>
</for>
• În acest caz, vo a ularul oferă sintaxa limbajului
• Un compilator a a esa a o ele DOM şi a e e uta algo it ul o fo u
ordinea elementelor
 Exemplu: XSLT, limbaj de programare pentru generarea de pagini HTML
din surse de date XML
XML poate ep eze ta a eeaşi
i fo aţie î di e se st u tu i:
• Modelul bazat pe elemente vide cu atribute (recomandat în documente
data-heavy):
<Produs ID="P1" Pret="300 RON" Denumire="Ipod" />
Beneficii: pe fo a ţa ea ai u ă atât la ea e ât şi la i te oga e, apa e fa ilă pe o
ază de date, posi ilitatea de a lu a u u o a ula si plu e i pu e doa lista de
at i ute şi tipu ile de date pe t u fie a e
Dezavantaj: difi il de afișat a te t fo atat, p esupu e p elu ă i o ple e pentru a
compune un mesaj human-readable din aceste date

• Modelul mixt – o i aţie de at i ute, ele e t fiu şi o ţi ut te tual


(nerecomandat):
<Produs ID="P1">
Ipod
<Pret>300 RON</Pret>
</Produs>
Nerecomandat, o pli ă i te ogă ile, o a ula ul, algo it ii de e t age e a datelo
XML poate ep eze ta a eeaşi i fo aţie î di e se
structuri:
• Modelul bazat pe elemente imbricate pe fo a ță sla ă :
<Produs>
<Denumire> Ipod </Denumire>
<Identificator> P1 </Identificator>
<Pret>300 RON</Pret>
</Produs>
Beneficii: ele e tele fiu pot des ie elaţii ie a hi e o ple e
Dezavantaj: i te oga ea şi o st u ţia de ele e te a e pe fo a ţă ai sla ă de ât a
at i utelo pe t u pe fo a ţă, ât ai ultă i fo aţie t e uie i lusă î at i ute!

• Modelul azat pe o ți ut textual (intens folosit în documente text-


heavy):
<Produs> <Produs>
P1-Ipod-300 RON sau deloc structurat: Produsul P1 este un Ipod de 300 RON
</Produs> </Produs>
Beneficii: uşo de fo atat, stilizat, afişat pe t u itito i u a i azul HTML!
Dezavantaj: dificil de extras datele, poate necesita algoritmi de text mining
Co pa ație XML - JSON
A ele odele pot ep eze ta a eleași st u tu i de date
(matrici, arbori, liste, tabele etc.):
<produse>
<produs denumire="Televizor" pret="100" />
<produs denumire="Calculator" pret="200" />
</produse>

{ "produse":
[{"denumire":"Televizor","pret":100},
{"denumire":"Calculator","pret":200}]
}
Construirea si trimiterea unui string
JSON din PHP (la server)
$date=array("oras"=>"Cluj Napoca",
"judet"=>"Cluj",
"adresa"=>"Azuga");
print json_encode($date);
Construirea ca arbore DOM în PHP
$xml=new DOMDocument();
$radacina=$xml->createElement("detalii");
$fiu1=$xml->createElement("oras"); Crearea nodurilor
$fiu2=$xml->createElement("judet");
$continut1=$xml->createTextNode("Cluj Napoca");
$continut2=$xml->createTextNode("Cluj");
$fiu1=$radacina->appendChild($fiu1); Lipirea nodurilor fiu
$fiu2=$radacina->appendChild($fiu2);
$continut1=$fiu1>appendChild($continut1);
$continut2=$fiu2->appendchild($continut2); Lipirea nodurilor text

$atribut=$radacina->setAttribute("adresa","str.Azuga"); Crearea atributului


$radacina=$xml->appendChild($radacina); Crearea documentului
print $xml->saveXML(); Salvarea documentului
Extragerea datelor dintr-un răspuns
JSON (la client)
eval("raspuns="+cerereHTTP.responseText)
a=raspuns.oras
b=raspuns.judet
c=raspuns.adresa

Obs: eval() ridică probleme de securitate (va executa


automat orice cod JavaScript conținut în răspunsul
serverului)
=> e preferabil să se folosească biblioteca de funcții de
conversie JSON oferită la adresa http://json.org
Extragerea datelor dintr-un răspuns
XML (la client)
raspuns=xhr.responseXML
radacina=raspuns.documentElement
oras=raspuns.getElementsByTagName("oras")
judet=raspuns.getElementsByTagName("judet")
a=oras[0].firstChild.nodeValue
b=judet[0].firstChild.nodeValue
c=radacina.getAttribute("adresa")
Co pa aţie XML - JSON
Avantaje JSON:
• Performanțe superioare și economie de caractere (nu sunt necesari marcatori
de închidere)
• Compatibilitatea cu JavaScript – u st i g JSON se o e tește foa te ușo î
obiect JavaScript. Compatibilitatea a fost e ti să și la alte limbaje - majoritatea
supo tă o e sie ati ă string JSON <–> obiect local
–nu sunt necesare parsere ca DOMDocument, SimpleXMLElement etc.
• Datele JSON pot fi accesate prin sintaxa obiectuală...
–obiect.atribut
… în loc de sintaxele de accesare prin DOM:
–getElementsByTagName(), getAttribute(), parcurgerea vectorului childNodes())
• JSON se creează ai ușo de ât XML tot dato ită o e siei din obiecte)
• S-au p opus di e se i iţiati e a e să î u ajeze su stitui ea XML u JSON:
–obiectul JSONRequest alte ati ă la XMLHttpRe uest
–protocolul JSON-RPC alte ati ă la protocoale specializate pe XML, precum SOAP)
–JSON Schema (alternati ă la XML S he a, pe t u a putea i pu e o st u tu ă asup a
stringurilor JSON)
Co pa aţie XML - JSON
Avantaje XML:
•Mai ușo de citit de ăt e om
–e mai ușo de u ă it încadrarea marcatorilor decât închiderea parantezelor
•JSON nu dispune deo a dată* de tehnici standardizate de validare, vocabulare, scripturi de
transformare sau generare HTML
•JSON nu suportă referințe între date, deci nu putem emula baze de date complexe
–XML permite "chei st ăi e" şi elaţii în sensul bazelor de date elaţio ale, cu ajutorul
atributelor de tip ID și IDREF ori a standardului XLink
•JSON nu supo tă interogă i, ci doar a ipulă i obiectuale
–XML folosește multiple soluții: XPath, selectori CSS, fu ții precum
getElementsByTagName
•JSON se foloseşte doar ca st u tu ă de date
–Nu e aplicabil când marcatorii trebuie să descrie un algoritm sau modul de formatare a
unui document

*o i iţiati ă e e tă este JSON S he a jso -s he a.o g, jso s he a. et , a e se do eşte o etodă de i pu e e şi alida e a st ucturilor JSON
si ila ă u XML S he a da fă ă a ato i, se e ifi ă doa odul de g upa e a "at i utelo " şi tipu ile de date .
Deo a dată u a e o e siu e defi iti ă şi sta ilă, validatoarele existente având g ade dife ite de espe ta e a spe ifi aţiei teo eti e
(care la râ dul său se află î ă î dis uţii .
Formatarea de cod XML în browser
• CSS poate fi folosit pentru a formata XML, cu ajutorul selectorilor
• Documentul XML va trebui sa apeleze foaia CSS cu:
<?xml-stylesheet type="text/css" href="stiluri.css"?>
(echivalentul lui LINK din HTML)

• Nu se pot folosi selectori specifici HTML (care se azează pe se ifi aţia


atributelor CLASS sau ID):
– div.stilulmeu nu va fu ţio a ă i se azează pe interpretarea
spe ifi ă lui HTML ă punctul e asociat cu CLASS!

• Dar se pot folosi selectori generici ce ți cont doar de structura DOM


p eze ța atributelor/marcatorilor, elațiile de ordine/încadrare):
– div[class="stilulmeu"] nu e specific lui HTML, ă i e ifi ă doar
e iste ţa unui atribut cu o a u ită valoare într-un element din
arborele DOM fă ă a conta se ifi aţia lui DIV sau CLASS)
Procesarea XML în browser
XML DOM HTML DOM

E arborele elementelor unui document XML, indferent de E arborele elementelor unei pagini HTML, multe din
tip. Se poate apli a atât pe od XML sosit pri AJAX, ât şi fa ilităţile sale u se pot apli a pe alt tip de od XML!
pe pagini HTML
Nu supo tă î ge e al getEle e tB Id. Sele ţia ele e telo Supo tă sele ţie ai uşoa ă u getElementById,
se face getElementsByClassName, getElementsByName
• prin XPath Supo tă a iga e ai uşoa ă u e to ul children o ţi e
• prin navigarea de elemente DOM (childNodes, doar marcatori, nu orice tip de nod!)
parentNode, nextSibling)
• supo tă totuşi getElementsByTagName
Co ţi utul ele e telo XML se a ipulează doa u etode Co ţi utu ile ele e telo se pot a ipula ai uşo u
DOM standard: appendChild, removeChild, insertBefore, innerHTML
replaceChild, cloneNode, nodeValue

At i utele se a ipulează u etode DOM standard: At i utele se pot a ipula ai uşo u si ta a o ie tuală
attributes, getAttribute, setAttribute element.atribut
Ofe ă metode de acces direct la elemente standard din
HTML: document.body, document.links[],
document.anchors[], document.images[],
document.forms[], document.forms[0].elements[],
tabel.rows[], tabel.rows[1].cells[]

• În plus, pentru HTML DOM di e se li ă ii AJAX ofe ă


fa ilităţi supli e ta e de e . $ pentru selecţie de
elemente)
• Pot apa e dife e ţe de de la u o se la altul
Crearea vocabularelor XML
• Se pot crea cu diverse limbaje. Cele mai populare
sunt:
– DTD (inclus de la început în standardul XML)
– XML Schema apă ut ulterior, mai puternic)
• Un document creat după regulile unui vocabular
trebuie să indice acest lucru, astfel încât oricine să îl
poată valida (vocabularul trebuie să fie accesibil
online):
– Vocabularele create cu DTD se de la ă pe a doua linie a documentului cu
<!DOCTYPE radacina SYSTEM URLvocabular>
– Vocabularele XML Schema se de la ă trecând în rădăcina documentului cu
atributele:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=URLvocabular
Exemple de reguli create cu DTD
<!ELEMENT AAA (BBB+,CCC?)>
- elementul AAA poate o ţi e minim un element BBB și a i un CCC
<!ELEMENT BBB (DDD)>
-elementul BBB a o ți e o ligato iu u ele e t DDD
<!ELEMENT DDD EMPTY>
-elementul DDD va fi obligatoriu vid
<!ELEMENT CCC (#PCDATA|DDD)>
-elementul CCC poate conți e fie u nod text, fie un element DDD
Un document valid în raport cu aceste reguli:
<?xml version="1.0"?>
<!DOCTYPE AAA SYSTEM "C:\DTDuri\exemplu.dtd">
<AAA>
<BBB> fișie ul DTD în care s-au salvat regulile!
<DDD />
</BBB>
<CCC>text oarecare</CCC>
</AAA>
Exemple de reguli create cu DTD

<!ELEMENT Curs EMPTY>


<!ATTRLIST Curs
CodCurs ID #REQUIRED -atribut obligatoriu cu valori unice
Descriere CDATA -atribut opțio al u alo i te tuale
TipCurs (A|B|C) #REQUIRED> -at i ut o ligato iu u listă de alo i pe ise
Exemple valide:
<Curs ID="C1" TipCurs="B" />
<Curs ID="C2" Descriere="…." TipCurs="C" />
Exemplu invalid:
<Curs Descriere="…" TipCurs="A">text oarecare</Curs>
Tipuri de atribute în vocabulare DTD
• CDATA – at i ute poate lua o i e aloa e e p i a ilă a st i g
• (v1| |…| – atributul poate lua una din valorile enumerate
• ID – at i utul e heia p i a ă a do u e tului, t e uie să ai ă alo i u i e î t -un
document
• IDREF– at i utul a fu ţio a a o " heie st ăi ă", aloa ea sa t e uie să fie u ID
e iste t de i e p i ă u li k sp e u alt ele e t, ezi HREF î HTML!
• NMTOKEN – at i utul a putea lua ai ulte alo i î t e a eleaşi ghili ele,
sepa ate î t e ele p i spaţii de e e plu CLA““ î HTML poate e u e a ai ulte
stiluri CSS!)

O servaţie:
DTD nu poate impune tipuri de date (integer, boolean etc.)! În schimb XML Schema
poate.
Be efi ii XML “ he a faţă de DTD
• XML S he a este el î suşi u vo a ular XML DTD a e o si ta ă p op ie, e u espe tă
egulile de u ă fo a e :
 Vocabularele XML Schema sunt tot fişie e XML de e . egulile o a ula ului pot fi i te ogate u
Xpath, pot fi ele însele validate)
• XML S he a oferă tipizare DTD u ofe ă tipiza e
 Tipuri de date + expresii regulate pot fi i puse asup a at i utelo şi odu ilo te t
• XML Schema permite modularitatea documentelor
 Elemente diferite din acelaşi do u e t pot aparţi e u o o a ula e dife ite u DTD, u do u e t
t e uie să se supu ă i teg al u ui a elaşi o a ula ; de e e plu î pagi i HTML pute a ea şi od
SVG (elemente grafice)
• XML Schema permite modularitatea vocabularelor:
 Se pot crea vocabulare noi prin reunirea regulilor din vocabulare existente
• XML Schema are caracteristici obiectuale, posi ilităţi de eutiliza e
 Se pot crea "clase de elemente", ce vor deveni reutilizabile (pot fi "moşte ite" pe t u a ea
structuri înrudite)
• XML Schema permite chei mai sofisticate decât atributele ID:
 Chei multivaloare = câ d u i itatea se i pu e pe o o i aţie de at i ute şi/sau noduri text
 Chei cu unicitate limitată = alo i e t e uie să fie u i e doa î i te io ul u ui a ato se pot
repeta în afara sa)
 A este fa ilităţi pe it odela ea u ei î t egi aze de date, u ai ulte ta ele, î a elaşi
document
Exemplu de reguli XML Schema
<xs:element name="DatePersonale">
<xs:complexType>
<xs:sequence>
<xs:element name="profesie" type="xs:string" minOccurs="1" />
<xs:element name="varsta" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="18" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element> valid!!
</xs:sequence>
</xs:complexType>
</xs:element>
<DatePersonale> <DatePersonale>
<DatePersonale> <profesie>
<profesie> <varsta> Medic
<medic /> 16 </profesie>
</profesie> </varsta> <varsta>
</DatePersonale> 25
</DatePersonale>
(invalid!!!) </varsta>
(invalid!!) </DatePersonale>
Tipurile de date din XML Schema
Tipuri XML Schema
• U o a ula XML “ he a se o st uieşte p i definirea unor TIPURI
("clase de elemente") ce pot fi derivate " oşte ite" pe t u a
construi alte TIPURI
– Elementele prezente în documente vor fi i sta ţe ale TIPURILOR
p e ăzute de o a ula
– Derivarea tipurilor duce la o "ierarhie de tipuri" (similară
ierarhiilor de clase create prin moşte i e î p og a a ea
o ie tuală . De i a ea se poate fa e pe două ăi:
• Constrângere = pornind de la un TIP existent, i se elimină opii sau at i ute
opţio ale, i se o st â g alo ile at i utelo sau u ă ul de apa iţii ai
copiilor
– Ai i t e uie ţi ut o t de li ita ea a i sta ţele tipului o ţi ut p i o st â ge e să ă â ă alide şi faţă de tipul i iţial
• Extindere = po i d de la u TIP e iste t, se adaugă ele e te opil sau
atribute
Exemplu de reguli XML Schema
<xs:element name="DatePersonale">
<xs:complexType>
<xs:sequence>
<xs:element name="profesie" type="xs:string" minOccurs="1" />
<xs:element name="varsta" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="18" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence> Acesta e un element de tip complex
</xs:complexType>
</xs:element>
Exemple de i sta ţe valide e pot apare î do u e te:
<DatePersonale> <DatePersonale>
<profesie>Profesor</profesie> <profesie>Sofer</profesie>
<profesie>Cercetator</profesie> <varsta> 32 </varsta>
</DatePersonale> </DatePersonale>
Tipuri XML Schema
• TIPURILE pot fi:
– Simple (predefinite sau derivate) = vor sta la baza atributelor sau marcatorilor
simpli a e u au at i ute şi i i ele e te fiu
Exemplu marcator simplu: <Nume>Pop Ioan</Nume>
– Co ple e u o ți ut si plu = stau la baza marcatorilor cu atribute + conţi ut
textual, dar fără ele e te opil
Exemplu: <Student Nota="10">Pop Ioan</Student>
– Co ple e u o ți ut id = stau la baza ar atorilor u atri ute + fără
o ţi ut
Exemplu: <Student Nume="Pop Ioan" Nota="10" />
– Co ple e u o ţi ut o ple
• Complexe u o ți ut mixat = stau la baza marcatorilor u sau fără atri ute e pot o ţi e
alţi marcatori, i ter alaţi î od eî grădit cu noduri text
Exemplu: <DIV ID="d1">Studentul<Nume>Pop Ioan</Nume>are nota<Nota>10</Nota></DIV>
• Co ple e u o ți ut e i at = stau la baza ar atorilor u sau fără atri ute e pot o ţi e
doar alţi ar atori, u şi oduri text i ter alate
Exemplu: <Student ID="S1"><Nume>Pop Ioan</Nume><Nota>10</Nota></Student>
Tipurile simple
A. Tipuri predefinite = tipuri de date oferite de XML Schema pentru valori simple. Sunt
ai sofisti ate de ât tipu ile de date di p og a a ea lasi ă:
– textuale: string, Name " u e XML", u st i g a e a ată a u u e, î epe
u lite ă et . , token listă de " u i te", sepa ate u a i u spaţiu
– numerice: integer, float, short, byte
– temporale: date, time, duration
– oște ite de la DTD: ID, IDREF, ENTITY, NMTOKEN etc.
– alte tipuri: anyURI (identificatori sau adrese URL), base64Binary (pt i fo aţii
non-text serializate ca text)
Defi i ea u ui tip de ele e t si plu, folosi d u tip p edefi it pe t u o ţi utul său:
<xs:element name="profesie" type="xs:string"/>
Definirea unui tip de atribut, folosind un tip predefinit:
<xs:attribute name="varsta" type="xs:integer"/>

B. Tipuri derivate din cele predefinite se a eptă doa de i a ea prin constrângere !)


Tip simplu derivat din tip predefinit
<xs:element name="varsta">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="18" />
<xs:maxInclusive value="99" />
</xs:restriction>
</xs:simpleType>
</xs:element>

S-a creat tipul varsta:


• Este un tip simplu de element - simpleType (marcatorul varsta nu va putea o ți e
alți a ato i și i i at i ute
• Tipul e creat prin constrângere (xs:restriction apli ată asup a tipului pă i te
(base="xs:integer")
• Constrângerea indică faptul ca valorile permise sunt numere în intervalul 18-99
• E e plu de i sta ţă alidă: <varsta>20</varsta>
Constrângerea tipurilor simple
• Obs: Tipu ile p edefi ite u pot fi e ti se, doa o st â se u pute adăuga alo i
noi la tipul integer!)
• Constrângerea se face prin fațete (restricţii, ca în slide-ul precedent):
– Se pot limita intervale numerice: minInclusive, maxInclusive, minExclusive
– “e poate li ita u ă ul de a a te e: length, totalDigits, fractionDigits
– “e poate i pu e o listă de alo i pe ise: enumeration
– “e poate i pu e o e p esie egulată pe st i gu i: pattern
– “e poate p e iza da ă la est i ţiile de ai sus să se o side e sau u spaţiile
albe succesive: whiteSpace

Exemple:

<xs:pattern value="[A-Z][0-9].+"/>
– Va permite doar stringuri formate dintr-o lite ă, o if ă și i i î ău a a te oa e a e
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
– Va permite doar stringuri care, î u a edu e ii spaţiilo al e su esi e la âte u ul si gu , au
lungimea 5

• Tipu ile si ple se pot de i a di alte tipu i si ple, az î a e o oşte i a este


est i ţii şi le o putea o st â ge ai depa te, p i est i ţii supli e ta e
Agregarea tipurilor simple
• “u t u e oase azu ile î a e u at i ut sau u a ato t e uie să
poată lua ai ulte tipu i de alo i
– Exemplu: atributul COLOR din HTML poate lua atât coduri numerice (RGB)
ât şi st i gu i de u i i de ulo i

• În acest caz se definesc tipuri simple agregate, prin:


– listă e pli ită de alo i u ajuto ul est i ţiei enumeration)
– reuniunea unor tipuri simple deja definite (union)
– o o i ație di t e ele două
Exemplu de tip simplu agregat
<xs:element name="varsta">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="18"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="necunoscuta"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:element>
Exemple valide: <varsta>20</varsta> sau <varsta>necunoscuta</varsta>
Blo a ea de i ă ii
• Da ă do i a u tip simplu să u poată fi derivat în alte tipuri, în
defi iţia sa pute lo a de i a ea u at i utul final:
– final="#all" blochează o i e de i ă i
– final="restriction" lo hează de i a ea prin constrângere
– final="extension" lo hează de i a ea prin extindere
– final="union" lo hează derivarea prin reuniune
• Blo a ea se poate apli a și la i el de fațetă, u at i utul fixed:
<xs:minInclusive value="18" fixed="true" />

Li ita u e i ă minInclusive a putea fi oște ită de noi tipuri


derivate, dar nu va putea fi edefi ită î oile tipu i!
Tipul o ple u o ți ut si plu
• Co plex u o ţi ut si plu = a e at i ute, o ţi ut
te tual, da u şi ele e te opil
• “e o ți e de o i ei p i de i a e e ti de ea u ui tip
simplu cu atribute):
<xs:element name="ModelTelevizor">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Diagonala" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
• Exemple de elemente valide (în mod implicit atributele
su t opţio ale! u use="required" în xs:attribute se
poate impune obligativitatea):
<ModelTelevizor Diagonala="100">Samsung</ModelTelevizor>
<ModelTelevizor>Sony</ModelTelevizor>
Metode de o ți e e p i de i a e a
tipu ilo o ple e u o ți ut si plu
1. Extindem un tip simplu
– p i adăuga e de at i ute ezi slide-ul precedent)
2. Co strâ ge u tip o plex u o ţi ut o plex ixat
– p i eli i a e de ele e te opil pâ ă ă â e doa o ți utul te tual
– î tipul de ază, ele e tele t e uie să fie opţio ale pe t u a fi eli i ate î tipul de i at!
3. Co strâ ge alt tip o plex u o ți ut si plu, dar la ivel de atri ute
– o st â ge alo ile at i utelo la u i te al pe is, la o listă de alo i pe ise , eli i ă at i ute
opţio ale et .

Avertismente privind derivarea:


• La derivarea prin constrângere, i sta ţele tipului o ţi ut t e uie să fie alide faţă de tipul
de ază
 dacă do i a î tipul o st â s să eli i ă ele e te/atribute, t e uie a ele să fi e istat şi î tipul de
ază, da u a a te opţio al!
 intervalul numă ului de apa iţii al u ui opil i O u s- a O u s t e uie să se î ad eze î i te alul
i iţial
• La derivarea prin extensie, nu e permis ca u o ţi ut si plu să fie o e tit di e t î
o ţi ut o ple p i adăuga e de ele e te opil
 di tip si plu se poate o ţi e o i tot tip si plu, o i tip o ple u u o ţi ut si plu p i adăuga e de
at i ute da u şi o ţi ut o ple
 de i o ţi utul o ple se de i ează doa di alt o ţi ut o ple
Tipul o ple u o ţi ut id
Complex cu o ţi ut vid = poate avea atribute dar
nu şi o ţi ut textual sau copii:
<xs:complexType name="DescriereTelevizor">
<xs:attribute name="Diagonala" type="xs:integer"/>
<xs:attribute name="Producator" type="xs:string"/>
</xs:complexType>
<xs:element name="Televizor" type="DescriereTelevizor"/>

Exemplu de element valid:


<Televizor Diagonala="122" Producator="Samsung"/>
Tipul o ple u o ți ut o ple
• Co
(mixat sau nemixat)
plex u o ţi ut o plex = poate avea elemente copil. Copiii pot apare în diverse moduri de
grupare:
– sequence: i pu e a ele e tele opil să apa ă î t -o a u ită o di e, i pli it o dată
– choice: doar unul din elementele copil posibile poate apare la o i sta ță, i pli it o dată
– all: oricare di ele e tele opil poate să apa ă o dată, u o tează o di ea
– acestea se pot o i a se e ţe de alte ati e, alte ati e de se e ţe et .)
<xs:complexType name="DescriereTelevizor" mixed="true">
<xs:sequence>
<xs:element name="Diagonala" type="xs:integer"/>
<xs:element name="Producator" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Televizor" type="DescriereTelevizor"/>
Exemplu de element valid:
<Televizor><Diagonala>22</Diagonala><Producator>Samsung</Producator></Televizor>

P eze ţa at i utului mixed="true" va permite în plus mixarea (intercalarea) de text printre elementele copil,
de i şi u ăto ul e u e e plu alid:
<Televizor>
Modele cu diagonala<Diagonala>22</Diagonala>la produse<Producator>Samsung</Producator>
</Televizor>
• Î plus, pe t u fie a e ele e t opil se poate sta ili de âte o i să apa ă, u atributele minOccurs și
maxOccurs (valoarea unbounded pe ite u ă eli itat de apa iţii
• Pe t u a pe ite o i e o i aţie posi ilă a opiilo , u o i âte epetiţii, o ea un choice în care
fiecare ele e t poate apărea de i i 0 ori şi axi unbounded
Reutilizarea tipurilor
• Tipurile pot fi reutilizate dacă p i es u e:
<xs:complexType name="DescriereTelevizor">
<xs:attribute name="Diagonala" type="xs:integer"/>
<xs:attribute name="Producator" type="xs:string"/>
</xs:complexType>
<xs:element name="Televizor" type="DescriereTelevizor"/>

Reutilizare poate însemna:


• Dife ite ele e te, hia u u e dife ite, o putea ăpăta a eeaşi st u tu ă
• Tipul va putea fi derivat în alte tipuri înrudite

Da ă u p i es u e, tipu ile su t o side ate a o i e, u pot fi oşte ite/derviate şi se apli ă doa


elementului în care s-au defi it ai jos, doa ele e tul a e u e, u şi tipul! :
<xs:element name="ModelTelevizor">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Diagonala" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
De i a ea u ui tip o ple u o ţi ut
o ple di u ul o ple fă ă o ţi ut
Po i d de la defi iţia la DescriereTelevizor din slide-ul p e ede t, ealiză u ou tip adăugâ d ele e tul
copil StocCurent se ue e e e esa hia şi pe t u u si gu opil! şi at i utul o ligato iu Pret:
<xs:element name="TelevizorPeStoc"> Da ă se exti de u tip u o ţi ut ixat,
<xs:complexType> mixarea tre uie păstrată, i luzâ d ai i ixed="true"
<xs:complexContent>
<xs:extension base="DescriereTelevizor">
<xs:sequence>
<xs:element name="StocCurent" type="xs:integer"/>
</xs:sequence>
<xs:attribute name="Pret" type="xs:integer" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>

Exemplu de element valid (Diagonala lipseşte deoa e e e oşte ită de la Des ie eTele izo , u de e
opţio ală! :
<TelevizorPeStoc Pret="1000" Producator="Samsung"><StocCurent>200</StocCurent></TelevizorPeStoc>
"Chei primare" în XML Schema
• Î o a ula e DTD e istă u od si plu de a defi i hei
primare: atribute de tip ID, e o t e ui să ai ă alo i
u i e î do u e tul î a e se află
– Ca şi î azele de date, la heile p i a e se pot fa e efe i ţe
di sp e heile st ăi e aflate altu de a atribute de tip IDREF)
– Hyperlinkurile din HTML nu sunt altceva decât astfel de
efe i ţe sp e hei p i a e HREF e un atribut de tip IDREF,
iar ID e un atribut de tip ID)
• XML “ he a î ogăţeşte a este posi ilităţi p i :
– Chei multivaloare = Câ d u i itatea se apli ă u ei o i aţii
de at i ute şi odu i te t
– Chei u u i itate li itată = Când unicitatea trebuie
espe tată doa î i te io ul u ui a ato , u eapă at î
tot documentul
Exemplu cheie multivaloare
<xs:element name="CatalogProduse" type="Catalog">
<xs:unique name="cheie"> "Ta elul" î a e t e uie asigu ată
unicitatea
<xs:selector xpath="produs"/>
<xs:field xpath="denumire"/> "Î egist ă ile" e t e uie să ai ă fie a e
co i aţia u i ă
<xs:field xpath="@model"/>
</xs:unique"> Co i aţia de alo i a e t e uie să fie u i ă
Pentru fiecare "înregistrare"
</xs:element>
• S-a creat o heie p i a ă unique), cu numele cheie;
• U i itatea sa se e ifi ă doa î i te io ul ele e tului CatalogProduse
• Cheia se apli ă tutu o ele e telo produs şi e fo ată di pe e hea
(denumire, model), unde denumirea apare în produs ca element-copil, iar
modelul ca atribut (s-au folosit ăi Xpath relative!)
E e plu de i sta ță alidă:
<CatalogProduse>
<produs model="M1">
Pe e hea t e uie să fie
<denumire>yyyyyyyy</denumire> u i ă, u fie a e di ele
</produs> două alo i luată sepa at!
<produs model="M1">
<denumire>zzzzzz</denumire> Unicitatea e impusă doar în
</produs> CatalogProduse, î afa ă
……………………………. perechea se poate repeta
</CatalogProduse>
<produs model="M1">
<denumire>yyyyyyyy</denumire>
</produs>
...............................
E e plu de hei st ăi e
între tabele XML
<xs:element name="Produse"> “e defi eşte u "ta el" a e o ţi e o
<xs:element name="ProduseCatalog"> listă de p oduse p eze te î atalog,
……..aici undeva e definit elementul-copil produs fiecare produs are un cod unic sub
are are la râ dul său opilul cod forma unui element copil
</xs:element>
“e defi eşte î a elaşi do u e t! al
<xs:element name="ProdusePeStoc"> doilea "tabel" cu produse pe stoc,
……..aici undeva e definit elementul-copil produs fiecare identificat de un atribut codItem
care are atributul codItem
</xs:element> “e de la ă ă p odusele di
atalog au heia p i a ă î
<xs:unique name="cheie"> copilul cod
<xs:selector xpath="ProduseCatalog/produs"/>
<xs:field xpath="cod"/> “e de la ă ă p odusele di al
</xs:unique"> doilea "ta el", au heia st ăi ă
<xs:keyref name="referinta" refer="cheie"> atributul codItem (deci valorile
<xs:selector xpath="ProdusePeStoc/produs"/> acestui atribut trebuie alese
<xs:field xpath="@codItem"/> dintre valorile cheii primare,
</xs:keyref> evitând astfel repetarea tuturor
</xs:element> i fo aţiilo desp e p oduse!
Exemplu valid
<Produse>
<ProduseCatalog>
<produs producator="Samsung" tip="Televizor"><cod>P1</cod></produs>
<produs producator="Samsung" tip="Frigider"><cod>P2</cod></produs>
<produs producator="Apple" tip="Telefon"><cod>P3</cod></produs>
</ProduseCatalog>
<ProdusePeStoc>
<produs codItem="P1" bucati="10" pret="100"/>
<produs codItem="P3" bucati="1" pret="50"/>
</ProdusePeStoc>
</Produse>
Nu putem avea pe stoc produse pe care nu le avem în catalog!
Î s hi u o i e p odus di atalog t e uie să fie pe sto
 Valorile cheii străi e t e uie alese di t e ele ale heii p i a e
 Nu ai su te e oiţi să epetă detaliile p oduselo p odu ato , tip !
Modularizarea documentelor
XML Schema permite ca un do u e t să o ţi ă ar atori di ai ulte vo a ulare
eea e du e la alida e ultiplă, faţă de ai ulte o a ula e si ulta .

Pentru evitarea conflictelor de nume, u p efi t e uie să i di e o a ula ul ă uia


apa ţi e fie a e ele e t:

<v1:catalog xmlns:v1="http://organizatie1.com/vocabular1">
<v1:produs v1:denumire="Ipod" v1:pret="300 RON"/>
</v1:catalog>

<v2:produs v2:ID="P001" xmlns:v2="http://organizatie2.com/vocabular2" >


<v2:pret>500 RON</v2:pret>
</v2:produs>

Î a este e e plu, p esupu â d ă apa î a elaşi do u e t, a e două utiliză i


diferite ale marcatorului produs:
• P i a e o fo ă u vocabularul , e p e ede a p odusul să ai ă at i utele
denumire şi pret, şi să fie î ad at î t -un element catalog
• Al doilea e conform cu vocabularul , e p e ede a p odusul să ai ă at i utul ID şi să
o ţi ă p eţul a ele e t fiu
Modularizarea
P efi ele : şi : ataşate fie ă ui a ato i i di ă faptul ă a eştia t e uie alidaţi
după eguli dife ite, p eze te î o a ula e dife ite:
• Fie a e di ele două o a ula e a e u identificator universal (URI, unic în
I te et, u it şi spaţiu de u e)
• Ide tifi ato ii u i e sali î ep u ad ese de do e iu ale o ga izaţiilo a e au eat
o a ula ele o ga izatie . o şi o ga izatie . o u ate de u ele
vocabularelor
• Cu ad esele de do e iu su t u i e î I te et şi o t olate , ele o eli i a
a iguitatea. P efi ele şi su t de fapt a e ie i ale ide tifi ato ilo ; fă ă
p efi e, a t e ui să i di ă p o e ie ţa p i o st u ţii ai i o ode, a e e
posi il să o ţi ă a a te e epe ise – ceva în genul:
<http://organizatie1.com/vocabular1/catalog>
<http://organizatie1.com/vocabular1 /produs
http://organzitatie1.com/vocabular1/denumire="Ipod"
http://organtizatie1.com/vocabular1/pret="300 RON"/>
</http://organizatie1.com/vocabular1/catalog>

Prefixul poate lipsi pentru UNUL din vocabularele folosite în document (considerat
"p i ipal", default . De e e plu î HTML puteţi î tâl i adesea de la a ea
o a ula ului, fă ă a-i ai aso ia u p efi pe t u a u fi e oiţi să p efi ă totul!
<html xmlns="http://www.w3.org/1999/xhtml">
Crearea identificatorilor de vocabular
Câ d se eează u o a ula u XML “ he a, t e uie să i se defi eas ă a est
identificator:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://organizatia-mea.com/vocabularul-meu">
.....regulile vo a ularului….
</xs:schema>

O se aţi u î săşi li ajul XML “ he a e u o a ula XML!

De a eea toate "i st u ţiu ile" XML “ he a au p efi ul xs lo ţiito pe t u


ide tifi ato ul u i e sal defi it de Co so ţiul .o g pe t u a est li aj
Modularizarea vocabularelor
Putem crea vocabulare XML Schema noi preluând elemente din vocabulare
existente!

Tehnica prin includere:


<xs:schema xmlns:xs="..." targetNamespace="...">
<xs:include schemaLocation="VocabularVechi.xsd" />
……………………………………
</xs:schema>

Co diţie: o a ula ul e hi să u ai ă ide tifi ato ta getNa espa e sau


să ai ă a elaşi ide tifi ato .
În caz de conflict de nume, se preiau marcatorii/atributele din vocabularul
vechi
Modularizarea vocabularelor
Tehnica prin redefinire:
<xs:schema xmlns:xs="..." targetNamespace="...">
<xs:redefine schemaLocation="VocabularVechi.xsd" />
……………………………………
</xs:schema>
Î az de o fli t de u e, se păst ează ele e tele şi at i utele di oul o a ula .

Tehnica prin import:


<xs:schema xmlns:xs="..." targetNamespace="http://organizatia-mea.com/vocabularul-meu">
<xs:import schemaLocation="http://alta-organizatie.com/VocabularVechi.xsd"
namespace="http://alta-organizatie.com/alt-vocabular" />
……………………………………
</xs:schema>
• Î a est az se pe ite a oul o a ula să ai ă u ide tifi ato (targetNamespace) diferit de al
vocabularului importat (namespace). Tehnica se aplică da ă i po tă o a ula e de la alte
o ga izaţii, asup a ă o a u deţi e o t olul u le pute p elua ide tifi ato ul .
• Evident, în acest caz nu pot apare conflicte de nume (documentele vor folosi prefixe diferite)
• Re a aţi şi ă ide tifi ato ul u ui o a ula u t e uie să fie ide ti u ad esa la a e s-a salvat
fişie ul . sd al a elui o a ula ! ide tifi ato ii su t u fel de de u i i sau ID-u i, hia da ă a ată
a işte ad ese!
E e plu de situaţie î a e e utilă
modularizarea
Pro le ă
• Do i să a e u o a ula pe t u Fa tu i
• Fa tu a e u do u e t ete oge a e o ţi e i fo aţii
desp e ai ulte e tităţi: p oduse, lie t, â zăto
• E posi il să a e deja o a ula e a e i pu u t e uie
des is lie tul sau â zăto ul
Soluţie:
• Fie folosi î a eeaşi fa tu ă a ato i p efi aţi di ai
ulte o a ula e, şi alidă fie a e a ato după alt
vocabular
• Fie eă u o a ula ou î a e le i lude /importă pe
elelalte, apoi alidă fa tu ile faţă de oul o a ula
E e plu de situaţie î a e e utilă
modularizarea
Se ridi ă dilema:
Cât de frag e tate să fie vo a ularele? Facem un vocabular pentru Facturi,
sau vo a ulare ai i i pe tru Produse, Clie t, Vâ zător et .?

Tehnici consacrate:
• Frag e tare după e tităţi:
– Aşa u la azele de date elaţio ale se eează u ta el pe e titate, se poate
ea şi u o a ula XML pe t u fie a e e titate
• Frag e tare după fre ve ţa folosirii:
– Un vocabular cu toate elementele/atributele o ligato ii di fa tu ă şi altul a e
le adaugă şi pe ele opţio ale
– Do u e tele o putea fi alidate faţă de p i ul sau faţă de al doilea, î
fu ţie de ât de detaliate su t!
• O o i aţie î tre ele două teh i i:
– Un vocabular cu elementele/atributele sintetice (structura generală, totalu i şi
altele pe t u detalii o espu zătoa e fie ă ei e tităţi u ul pe t u lista de
p oduse, altul pe t u i fo aţiile desp e lie t/vâ zăto
– Dife ite f ag e te ale u ui do u e t se o alida după o a ula e dife ite.
Ce i ţe pe t u o a ula e
În general în proiectarea vocabularelor trebuie să ţi e o t de:
• posibilele utiliză i ale do u e telo , u o fi ele p o esate ai depa te da ă o fi
preluate de alte sisteme ce au nevoie de un anumit grad de detaliere)
• pe fo a ţă
Î a est se s, a dis utat la î eput disti ţia î t e dife ite st u tu i de ele e te:
<Produs>
<Denumire>Televizorul <Denumire> costa <Pret>300</Pret><Moneda>RON</Moneda>
</Produs>
Date uşor de găsit, dar perfor a ţă sla ă şi vo a ular o pli at datorită u ărului are
de elemente

<Produs>Televizorul costa 300 RON</Produs>


Date greu de găsit, dar afişare fa ilă şi vo a ular uşor de reat

<Produs>Televizorul costa <Pret>300 RON</Pret></Produs>


Vo a ular o pli at, u ele date su t ai uşor de extras de ât altele si ilar u HTML!

<Produs Denumire="Televizor" Pret="300" Moneda="RON" />


Date uşor de găsit, perfor a ţă opti ă, vo a ular de o plexitate edie, î să difi il de
construit mesaje textuale din date
Majoritatea azelor de date relaţio ale pot exporta stru turi de a est tip di ta ele!
Standardul XSL
Standardul XSL: set de standarde specializate pe manipularea
documentelor XML
• manipulare st u tu ală – modificarea arborelui DOM
• manipulare de format – formatare cu stiluri (similar CSS)
Componentele pachetului XSL sunt:
• Xpath – interogarea arborelui DOM prin cale alte ati ă
mai pute i ă la selectorii CSS!) – s-a studiat deja
• XSLT – transformarea unui arbore DOM într-un document
oarecare ce trebuie să o ţi ă unele i fo aţii din arborele
i iţial (poate converti XML în alt XML, dar şi în HTML ori text
simplu) – îl studiem în acest curs
• XSL-FO – formatarea unui arbore DOM cu "șa loa e de
pagini" (stiluri, vag ase ă ătoa e cu CSS), de obicei în
scopul o ți e ii unui document PDF – se va omite în acest
curs, ă i nu are o releva ţă dire tă
Elemente de XSLT
•t a sfo ă un document XML în alt document (nu eapă at tot XML , folosi du-se de
XPath pentru a manipula arborele DOM
• foloseşte reguli de substituire, fo ate di două o po e te:
– Componenta de înlocuit a esată p i Xpath, devine nod curent pe t u o i e ăi Xpath
ce apar în interiorul regulii);
– Componenta de inserat o o i ație de a ato i si instrucţiuni XSLT) – poate lipsi, caz
î a e a e lo ște ge e!
<xsl:template match="calea Xpath a elementelor ce trebuie substituite">
... elementele de inserat şi/sau alte instrucţiuni XSLT ...
</xsl:template>
Exemplu (substituie orice element produs cu un paragraf HTML):
<xsl:template match="//produs">
<p>S-a gasit un produs</p>
</xsl:template>

Toate egulile de su stitui e se e u e ă î t -o ădă i ă sl:st lesheet (deci XSLT este un vocabular XML!):
<xsl:stylesheet>
<xsl:template>…regula1...</xsl:template>
<xsl:template>…regula2...</xsl:template>
<xsl:template>…regula3...</xsl:template>
</xsl:stylesheet>
Reguli de şte ge e
• “u t a ele eguli a e u o ţi i i î i te io ul lo p a ti e
o a de su stitui e u şi ul id
• Şterge toate nodurile text din document:
<xsl:template match="text()"/>
• Şte ge toate odu ile i izi ile fo ate di spaţii, Ta , E te :
<xsl:template match="text()[normalize-space(.)='']"/>
se poate ealiza şi altfel, u i st u ţiu ea dedi ată xsl:strip-space)
• Şte ge toate elementele produs din document:
<xsl:template match="//produs"/>
• Ate ţie: adesea u t e uie să eă eguli de şte ge e, di
cauza regulilor implicite care aplică u ele şte ge i slide-ul
u ăto
Reguli implicite
R1. Dacă mai multe reguli a esează a elași nod, se apli ă regula cea mai spe ifi ă
(cu interogarea XPath cea mai ţi tită . De exemplu...
//produs[@pret!=''] e mai ţi tită decât //*
R2. Toate nodurile care NU su t afe tate de i io egulă de su stitui e sunt
eliminate, u ex epția odurilor text!

• Din acest motiv, un fişie a e o ţi e î ădă i ă DOAR egula de ai jos...


<xsl:template match="text()"/>
... va goli tot documentul su să! Deşi a eastă egulă se o upă doar de şte ge ea
nodurilor text, elementele/atributele se eli i ă dato ită regulii implicite (R2).

• Din a elaşi motiv, un fişie XSLT care îşi o ţi e DOAR ădă i a, fă ă nicio
egulă defi ită....
<xsl:stylesheet></xsl:stylesheet>
... va extrage din documentul su să tot textul, eliminând marcatorii şi atributele lor!
Aşada prin regula i pli ită XSLT ne ofe ă un mecanism rapid de extragere a
o ţi utului textual dintr-un document.
Reguli de conservare
Di auza egulilo i pli ite, t e uie să spe ifi ă e pli it â d do i să păst ă
a u ite po ţiu i di do u e tul o igi al, p i ea ea u o reguli de conservare:
• xsl:copy-of se foloseşte pe t u a ea opia ide ti ă a u ui ele e t di su să
• xsl:copy se foloseşte pe t u a ea o opie goală fă ă at i ute şi o ţi ut a u ui
ele e t, ă eia să i se apli e apoi diverse odifi ă i

Regula de conservare cea mai ge e ală, care ealizează o copie a întregului document
original (de fapt o copie a ădă i ii, cu tot ce o ţi e aceasta):
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
Regula de conservare a unui singur element, cu tot o ţi utul şi atributele sale:
<xsl:template match="produs">
<xsl:copy-of select="." />
</xsl:template>
Regula de conservare a u ui a ato , da fă ă o ţi ut şi at i ute a estea pot fi
redefinite sau filtrate în interiorul lui xsl:copy!):
<xsl:template match="produs">
<xsl:copy/>
</xsl:template>
Reguli î as adă
Cu xsl:apply-templates egulile pot apela alte eguli î as adă. E e plu:

<xsl:template match="/comanda">
Pas1. “e ealizează o opie goală a ădă i ii o a da,
<xsl:copy> la a e se eează u at i ut ou
<xsl:attribute name="AtributNou">ValoareaNoua</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy> Pas2. xsl:apply-te plates aută e alte reguli ai e istă
</xsl:template> pe t u opiii o e zii. “e găseşte a doua.

<xsl:template match="produs"> Pas3. “e ealizează o opie goală a fie ă ui p odus, şi i


<xsl:copy> se i se ează u opil ou
<CopilNou>TextNou</CopilNou>
<xsl:apply-templates/> Pas4. “e aută oi eguli pe t u o ţi utul p oduselo .
</xsl:copy> Nu se găses , aşa ă se apli ă egula i pli ită:
</xsl:template> se păst ează u ele p oduselo , da fă ă a ato !

Sursa: Rezultat:
<comanda client="Pop Ioan"> <comanda AtributNou="TextNou">
<produs pret="100"><nume>Telefon</nume></produs> <produs><CopilNou>TextNou</CopilNou>Telefon</produs>
<produs pret="200"><nume>Frigider</nume></produs> <produs><CopilNou>TextNou</CopilNou>Frigider</produs>
</comanda> </comanda>
Reguli recursive
A estea su t eguli a e se apelează pe si e, di sp e ădă i ă sp e f u ze. Regula de ai jos ealizează
o opie a do u e tului o igi al, di a e eli i ă at i utele de i a e o egulă de o se a e
pa ţială!
<xsl:template match="node()"> Aici xsl:apply-te plates aută e alte eguli ai su t dispo i ile
pe t u opiii odului u e t şi eapli ă e u si a eeaşi egulă, deoa e e şi
<xsl:copy> opiii o espu d i te ogă ii node(). Pe t u fie a e od găsit se ealizează o
<xsl:apply-templates/> opie goală => atributele se pierd, î să o ţi utu ile o ă â e dato ită
</xsl:copy> copierii treptate (recursive) a tuturor nodurilor
</xsl:template>

U ăto ul e e plu ealizează tot o o se a e pa ţială, de data a easta păst â d at i utele şi


eli i â d odu ile te t. Regula e u si ă apli ă a u opie e e u si ă u doa pe odu i, i şi pe
toate atributele (@*):
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()"/>
Eli i a ea odu ilo te t e ealizată de ulti a li ie. Î a se ţa ei, a e de fapt o egulă de o se a e
o pletă a elaşi ezultat u sl: op -of! Re u si itatea o pe sează faptul ă se opiază a ato ii
fă ă o ţi ut.
Rede u i e şi ştergere
Sursa:
<produs pret="200" garantie="3 ani">
Imprimanta HP100
</produs>
Rezultat:
<prod pretunitar="200">
Imprimanta HP100
Caută toate ele e tele <produs>
</prod>
Regula: Le î lo uiește cu elemente <prod>, dotate cu atributul
pretunitar, care-şi p i eşte valoarea de la atributul pret
<xsl:template match="produs"> e t as di su să
<prod pretunitar="{@pret}">
Apli ă alte reguli (da ă e istă pe t u fiii elementului
<xsl:apply-templates/> p odus. Cu u e istă, se apli ă egula i pli ită a e
</prod> păst ează te tul di ele e tul o igi al
</xsl:template> Regula nu indică nimic pe t u at i utul ga a ţie, deci
acesta va dispă ea tot dato ită egulii i pli ite !
Conversie element-at i ut şi invers
Sursa:
<produs pret="200">
<garantie>3 ani</garantie>
</produs>
Rezultat:
<produs garantie="3 ani">
<pret>200</pret>
</produs>
Regula:
Caută toate ele e tele <produs>
<xsl:template match="produs">
<produs garantie="{garantie}"> Adaugă at i ute garantie, cu valoarea
e t asă de la elementele <garantie>
<pret>
<xsl:value-of select="@pret"/> Adaugă ele e te-fiu <pret>, cu valoarea
e t asă de la atributul pret
</pret>
</xsl:template>
Structuri de programare, generare de cod
HTML
Pas1.Parcurge comanda (for-each)
<xsl:template match="/comanda">
Pas2.Creează stringul Pretul pentru
<ol> X este Y!, pentru acele produse la
<xsl:for-each select="produs"> care se găseşte atributul pret (cu X şi
Y extrase din atribute existente în
<xsl:if test="@pret"> documentul original).
<li>Pretul pentru Pas3.Stringurile obţinute sunt
<xsl:value-of select="@nume"/> formatate ca elemente de listă
este HTML (OL, LI)

<xsl:value-of select="@pret"></li>
IF-ul se poate e ita da ă punem în
</xsl:if> select-ul ciclului FOR direct
</xsl:for-each> produs[@pret], pasând astfel
</ol> espo sa ilitatea testă ii e iste ţei
p eţului sp e Xpath!
</xsl:template>
Versatilitatea XSLT
• Fu ția de ază: generarea de documente noi din
datele prezente într-un arbore DOM
=> poate juca rolul limbajului PHP, dacă se ge e ează od
HTML dintr-o " ază de date" XML
• Fu ție se u da ă: li aj de i te oga e:
=> da ă, în loc de substituiri are loc doar copierea unor
fragmente după a u ite o diții), avem un mod de a
ealiza i te ogă i, ai sofisti at de ât e poate XPath!
Ce sunt bazele de u oşti ţe?
(o iziu e foarte si plifi ată)
Bază de Cu oşti ţe = Fapte + Reguli + Axio e

Fapt = afir aţie si plă e i di ă expli it ă i e a/ e a are o a u ită proprietate.


Acea proprietate poate fi:
a) O relaţie cu altcineva/altceva*:
Andrew e rudă u Joe.
b) Un atribut cu o anumită aloare:
Andrew are vârsta de 14 ani.

Regulă = o o stru ţie IF… THEN… care stabileşte um se pot deduce fapte noi din
cele existente. Exemple:
DACĂ x e rudă u y, ATUNCI y e rudă u x
DACP x are vârsta sub 18, ATUNCI x este minor
Aplicate pe faptele de mai sus, aceste reguli vor genera fapte noi ("concluzii"):
Joe e rudă u Andrew.
Andrew e minor.

* Folosi e e ple î li aj atural pâ ă â d studie si ta ele 1


Ce su t azele de u oşti ţe?
Axiomă = un fapt (afirmaţie ce fixează se ifi aţia unui concept, per iţâ d calculatoarelor să realizeze în mod
automat dedu ţii logice:
A fi rudă este o relaţie re ipro ă.

• A u ite i stru e te soft are " otoare i fere ţiale" vor converti axioma în regula de mai jos (scutind
utilizatorul de defi irea expli ită a regulii)...
DACĂ x e rudă u y, ATUNCI y e rudă u x
• ... apoi vor executa regula, ge erâ d a eeaşi o luzie a slide-ul precedent:
Joe e rudă u Andrew.

O ser aţii:
• Pe tru a a est e a is să fie posi il, axio a tre uie for ulată u ajutorul u or terminologii standard
exe plu: ter i ologia OWL e oferă ter e ul sta dard owl:SymmetricProperty pe tru oţiu ea de
"relaţie re ipro ă"
• Axiomele pot fi ăzute a "reguli as u se î fapte", sau "fapte e pot fi interpretate ca reguli" (interpretarea
lor se azează pe ter e i sta dard re u os uţi de ătre otoarele i fere ţiale
• Axio ele u ei aze de u oşti ţe for ează u vocabular sau o ontologie, deoare e ele fixează se ifi aţia
u or o epte ai i, o eptul de "rude ie" pe tru toţi ei are le or utiliza î propriile afir aţii
• Axio ele sta iles ât a "î ţelege" al ulatorul di afir aţiile sto ate, deci ce " o luzii" poate trage fără
i ter e ţie u a ă

2
Ce e i teresează î We . ?
• Cum reprezentă u oşti ţele î al ulator?
– Răspu s: RDF
• Cum interogă u oşti ţele?
– Răspu s: SPARQL
• De u de luă ter e ii sta dard pe tru axio e?
– Răspu s: din terminologii standardizate (RDF/S, OWL)
• Cu sto ă u oşti ţele î We ?
– Răspu s: pe servere de cunoşti ţe/grafuri (Sesame)
• Cum se pot executa reguli pentru a produce noi cunoşti ţe?
– Răspu s : Motoare i fere ţiale exte sii ale ser erelor de u oşti ţe, e pot
interpreta axiomele ca reguli)
– Răspu s : SPARQL (unele tipuri de i terogări pot î orpora reguli
• Cu se alidează u oşti ţele?
– Răspu s: Nu se validează. O afir aţie u poate fi "ero ată", i doar o tradi torie
faţă de alte afir aţii. Contradicţiile se dete tează pri dedu ţii logi e. Dedu ţiile
se auto atizează u ajutorul axio elor şi/sau regulilor.
Variante sintactice pentru
repreze tarea afir aţiilor
• Progra are o ie tuală:
JohnDoe.Salary=200
• XML: Stru tura o u ă = Tripletul!
<JohnDoe Salary="200"/> (subiect, predicat, obiect)
• Prolog:
Salary(JohnDoe,200)
• Sisteme de tip frame-slot (sisteme expert):
JohnDoe:
Salary: 200
• Limbaj natural:
John Doe has a salary of 200
4
E oluţia odelelor de date

Tabele BD relaţio ale Arbori (BD ierarhice): Grafuri BD de tip reţea :


XML, JSON RDF*

Mod de interogare: Mod de interogare: Mod de interogare:


SQL XPath/DOM (pt. XML), SPARQL
JSONiq/metode obiectuale (JSON)
Tehnologii de stocare: Tehnologii de stocare: Tehnologii de stocare:
MySQL, MS Access eXistDB (XML), MongoDB (JSON) Sesame, Virtuoso

*RDF u e si gura teh ologie pe tru aze de date de tip graf, dar este sta dardul propus pe tru Se a ti We . E istă
şi tehnologii non-standard, de ex. Neo4J ce se interoghează u propriul li aj, u it C pherQL.
5
În RDF, "faptele" iau forma unor
afir aţii de tip "triplet"
:Robert :worksAt :UniVie.
:Razvan :hasHairColor :Black.
:Patrik :likes :Beer.
:Susana :hasChild :Robert.
:Robert :hasChild :Razvan, :Patrik.

(Subiecte) (Predicate) (Obiecte)


Ca şi XML, RDF u e u li aj i u set de reguli de u ă for are, cum ar fi:
• Orice afir aţie e for ată din trei termeni: subiect, predicat (=proprietate), obiect.
• Termenii se separă prin spaţii.
• Afir aţiile se separă prin punct.
• Mai multe afirmaţii cu a elaşi subiect şi predicat pot fuziona, separând obiectele cu virgule
(cazul ultimei afir aţii din exemplu)
• etc.... (revenim ulterior la lista o pletă) 6
Prin reutilizare de termeni, afir aţiile
se pot conecta într-un graf interogabil
Susana

hasChild hasHairColor
hasChild Razvan
Black
Robert

worksAt hasChild
Exe ple de i terogări SPARQL:
UniVie Patrik
- Retur ează toţi pări ţii (Susana, Robert)
likes
SELECT ?x
WHERE
Beer {?x :hasChild ?y}

- Retur ează toţi u i ii (Susana)


SELECT ?x
WHERE
{?x :hasChild/:hasChild ?z}

7
Cu au lo ăutările î We -ul clasic?
Varianta A:
Căutare oferită de site-uri (ex., caseta Search a
unui magazin virtual)

Dezavantaje:
• Va ăuta doar î aza de date a site-ului
curent, conform unei i terogări
preprogramate
• Va ăuta doar î aza de date, u şi î textul
paginilor site-ului Baza de
• Căutarea u a ţi e o t de alte i for aţii date
relevante care sunt disponibile în diverse Interogare
surse pu li e, dar u şi î aza de date a locală
site-ului (de ex., detalii suplimentare despre
produsele magazinului)
Cu au lo ăutările î We -ul clasic?
Varianta B.
Căutare oferită de otoare de ăutare

Dezavantaje:
• Va ăuta î orpul HTML al pagi ilor i dexate, u î aze de date existe te î We
• Va ăuta doar î pagi ile e se POT i dexa
• Co ţi utul i serat di a i u Ajax u i erHTML, appe dChild et . u e
indexat, nefiind vizibil la accesarea paginii cu un web crawler
• Va ăuta u i te heie, u proprietăţi ale u or lu ruri

HTML Site A
keyword
scraping

HTML Site B
keyword
scraping

HTML Site C
keyword
scraping
Ce propune Web 3.0?
Varianta A: Site Web
interogări dire te Bază de date = ază de u oşti ţe des hisă
se a ti ă
Serviciu public de interogare
("endpoint")
Varianta B:
knowledge scraping Cod HTML = od HTML u u oşti ţe i luse
semantic
Extra tor de u oşti ţe
din cod HTML
("distiller")

Clienţi age ţi de ăutare/interogare


otoare de ăitare, apli aţii o ile, asete de ăutare et .
Ce propune Web 3.0?
Motoarele de ăutare....
• ...să poată ăuta dire t î a k-end (baza de date/cunoşti ţe , u doar î fro t-end
 de exe plu, Google să aute dire t î azele de date ale agazi elor irtuale
• ...să u aute î fro t-e d doar după stri g-uri u i te heie , i şi după proprietăţile
lu rurilor despre are se or eşte î tr-o pagi ă
 i lusi proprietăţi e u su t afişate î ro ser, dar su t sto ate î odul HTML

Căutările î site-uri...
• ...să se poată exti de şi spre alt a k-end decât al site-ului curent; cel are aută î tr-un
agazi irtual să poată ăuta şi după alte riterii de ât ele sto ate î aza de date
 de exe plu, ordo ează ărţile di li rărie după ota de pe A azo are u există î
aza de date lo ală
• ...să poată a ea lo şi î o ţi utul HTML al site-ului, nu doar în baza de date

 Web-ul să u fie doar " avigat", i şi "i terogat" de ătre ori i e


 a o ază de date/ u oşti ţe distri uită la i el global
 Cal ulatoarele să poată se ala î od auto at o tradi ţii sau comparaţii î i for aţia
preze tă pe We
 o paraţii î tre preţuri, lie ţi diferiţi are de lară a elaşi ard a ar

Originea ideii:
Tim-Berners Lee, James Hendler, Ora Lassila. "The Semantic Web". Scientific American. May,
2001
Pri ii paşi: Google K o ledge Graph
Răspu s dire t di partea otorului de ăutare la soli itarea de
proprietăţi ale u ui su ie t:

Interogare directă
u răspu s dire t
(ceva de genul
?x :fatherOf :BradPitt)
Căutare de
Se pot interoga detalii
cuvinte cheie
supli e tare proprietăţi
ale persoa ei găsite în corpul unor
=> navigare de cunoştinţe pagini

Se pot deschide pagini


pâ ă se găseşte
i for aţia dorită
=> navigare de pagini
Pri ii paşi: Google K o ledge Graph
Navigare de pagini Na igare de u oşti ţe
Pri ii paşi: Fa e ook Ope Graph
Butoanele Like/Share încorporabile
*exe plul e si plifi at, FB foloseşte propria si taxă esta dard

COOKIE/SESSION: Pas . Apăsarea uto ului Like ge erează o afir aţie*


Cinpoeru Mihai pentru userul logat în Facebook (detectat din session):

<http://facebook.com/cinpoeru.mihai> og:likes <http://adevarul.ro>.

Pas . Se ge erează afir aţii despre site, da ă site-ul a


i lus î odul HTML proprietăţile Ope Graph:
Pas3. Site-ul e adăugat la preferi ţele <http://adevarul.ro> og:type :website;
userului FB og:title "Adevarul"; ....
Primii paşi: Google Ri h S ippets
De unde provin
aceste detalii?

[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
<div itemtype="http://schema.org/Movie" itemscope="">
Afir aţii extrase <h1 itemprop="name">Maleficent</h1>
("distilate") <div itemtype="http://schema.org/AggregateRating" itemprop="aggregateRating">
din cod HTML, având <span itemprop="ratingValue">7.0</span>
/
ca su ie t pagi a ure tă <span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>
Acest cod HTML este prezent în pagina Maleficent, asigurând simultan
afişarea (prin CSS) şi des rierea se ifi aţiei pri alorile itemprop, De u de pro i î să
recunoscute de Google) denumirile proprietăţilor
recunoscute de Google?
ur ătorul slide
Valorile itemprop din

Terminologii reutilizabile
slide-ul precedent
provin din
terminologia
Schema.org!
(surse de termeni): Schema.org
S he a.org e o ole ţie de ter e i
pri are se pot des rie i for aţii
fre e t ăutate î We :
fil e, ărţi, persoa e, orga izaţii,
eve i e te, lo aţii et .

Majoritatea ter e ilor oferiţi de


Schema.org sunt proprietăţi ce se
pot folosi în afir aţii ataşate odului
HTML (cu atributul itemprop*)

* e a is ul de exti dere a odului HTML u afir aţii


poartă u ele microdata şi este folosit î adrul
strategiilor de SEO semantic =opti izarea se a ti ă a
odului HTML pe tru a per ite otoarelor de ăutare
să "î ţeleagă" despre e su t pagi ile We , î tr-o
a ieră ai a a sată de ât si pla preze ţă a u or
cuvinte cheie în text = considerat SEO sintactic)
Terminologii reutilizabile
(surse de termeni): DBPedia.org
DBPedia.org e o ază de
u oşti ţe RDF des hisă, pu li ă,
extrasă din casetele Wikipedia,
incluzând o serie de termeni care,
prin reutilizare, vor duce la
conectarea grafurilor noastre la
DBPedia. Serviciul public de
interogare SPARQL e accesibil la:
http://dbpedia.org/sparql

Alte exemple de baze de


u oşti ţe des hise:
• Wikidata
• Freebase
• Yago
• Datahub.io găzduieşte ai ulte aze
de u oşti ţe do loada ile, î for at
RDF dar nu numai)
• CIA World Factbook (nu e RDF, dar are o
ersiu e RDF găzduită de Datahu
Cloud-ul Linked Open Data în 2014
=toate azele de u oşti ţe des hise di lu e, o e tate la DBPedia pri
reutilizare de termeni)
* sursa: journalofwebsemantics.blogspot.com
Ce va urma?
Fazele evoluţiei I ter et:
Faza 1: Internet = o reţea de al ulatoare
- scop: s hi ul de esaje şi fişiere
- mijloace: protocoale (IP/TCP) şi adrese

Faza 2 (Web 1.0) = o reţea de do u e te for atate


- scop: interogarea si ta ti ă ăutare de cuvinte cheie)
- mijloace: distribuirea de documente prin HTTP, formatarea cu HTML

Faza 3 (Web 2.0) = o reţea de apli aţii apa ile să uleagă i put de la utilizator
- scop: producerea de conţi ut We , i teropera ilitatea si ta ti ă î tre apli aţii
- mijloace: CMS-uri, reţele so iale, XML/JSON

Faza 4 (Web 3.0) = o reţea de u oşti ţe i teroga ile ("Semantic Web", "Linked Data")
- scop: interogarea se a ti ă pe ază de proprietăţi şi dedu ţii auto ate
- mijloace: aze de u oşti ţe des hise, ter i ologii reutilizate

Faza 5 (Web 4.0) = o reţea de agenţi soft are ("Pragmatic Web", "Internet of Things")
- scop: i terogarea prag ati ă delegarea de sar i i
- mijloace: procese automatizate consumatoare de servicii Web
Exe plu de i terogare prag ati ă
"Cu pără-mi ----> sarcina " u pără" ( o u i ată u ui age t soft are)
Codul lui Da Vinci în hardcover, ----> obiectul sarcinii ("Codul lui Da Vinci"), cu tipul " arte" dete tat di preze ţa
proprietăţii "hard o er"
u preţ axi 15 USD, ----> restri ţie pe proprietatea "pret"
livrabil într-o săptă â ă" ----> restri ţie pe proprietatea "timp"

Co diţii pe tru a fa e posi ilă exe utarea auto ată a sar i ii:
• Age tul de ăutare să ai ă a es dire t la ataloage de produse i teroga ile, u doar la pagi i î are pot
să apară sa u! u i tele heie rele a te
– Cataloagele de produse tre uie să fie aze de u oşti ţe i teroga ile, î are să fie lară disti ţia di tre arte şi fil , pe baza
proprietăţilor fie ăreia, î tr-u od i depe de t de li ă RDF!
– Age tul de ăutare tre uie să fa ă disti ţia î tre arte şi fil , pe ază de i terogări
– Age tul de ăutare tre uie să poată efe tua ăutarea î ai ulte agazi e irtuale, toate a â d atalogul de produse des his
i terogărilor

• Age tul de ăutare să u retur eze doar "rezultate", i să efe tueze u părarea să exe ute "sar i a"
– Age tul de ăutare tre uie să fie o ştie t are su t paşii şi de iziile are tre uie par urşi î ti pul u părării des rieri de procese
de afaceri cu BPMN!)
– Age tul de ăutare tre uie să ai ă a es protejat la resursele elui are a i iţiat sar i a ard a ar, adresă de li rare
– Magazi ele irtuale tre uie să ofere u ser i iu We la are să se plaseze o a da fără i ter e ţie u a ă

Concluzie: e evoie de el puţi 3 aze de u oşti ţe:


– Baza de u oşti ţe a utilizatorului, di are age tul soft are să poată extrage datele pri ate ale a estuia, e e tual preferi ţele sale
(magazine favorite)
– Baza de u oşti ţe a agazi ului irtual u ul sau ai ulte , î are age tul să efe tueze ăutarea şi sele ţia de produse
– Baza de u oşti ţe a sar i ii de lu ru "pro es"," orkflo " , di are age tul să afle e paşi tre uie par urşi, e de izii trebuie luate
şi u să plaseze o a da fi ală
13
Co paraţie î tre RDF şi...:

- ...limbajul natural
- ...XML

1
Co paraţie u li ajul atural
:Robert :worksAt :UniVie.
:Razvan :hasHairColor :Black.
:Patrik :likes :Beer.
:Susana :hasChild :Robert.
:Robert :hasChild :Razvan, :Patrik.

(Subiecte) (Predicate) (Obiecte)

2
Co paraţie u li ajul atural
• Termenii di RDF su t ase ă ători " u i telor" di li ajul atural, dar e a ai rigizi
– nu au reguli gra ati ale, orfologi e, ti puri, de li ări, a orduri et .
– au o for ă rigidă i pusă de regulile de u ă for are RDF şi de stru tura URI
– for a u ui ter e RDF u ariază, pe tru a per ite al ulatoarelor să for eze grafuri pe aza
reutilizării su t per ise totuşi si o i ele!
– u su t legaţi de o li ă a u e, nu se supun gramaticii vreunei limbi

• O afir aţie (fapt) se asea ă ă u o "propoziţie" di li ajul atural, e a ai rigidă


– se for ează di trei ter e i, o for u ei for ări RDF – subiect, predicat, obiect
– se pot î i a î fraze ai o ple e, u ajutorul u or de "se e de pu tuaţie" de e ., gruparea
afir aţiilor u a elaşi su ie t di e e plul pre ede t

• O descriere se for ează di ai ulte afir aţii u pri ire la a elaşi lu ru a elaşi
ter e , sau si o i e ale a eluiaşi ter e
– ori i e poate fa e ori e şi ori âte afir aţii u pri ire la u a elaşi lu ru, sto ate oriu de
– des rierile e oluează î ti p, pe ăsură e se fa oi afir aţii
– o des riere a o ţi e di erşi ter e i, are la râ dul lor au propriile des rieri
– descrierile din surse diferite se pot completa reciproc sau pot fi contradictorii
• descrierile complementare se pot o e ta şi î ogăţi re ipro
– e or a ai i de " aze de u oşti ţe distri uite"
– i terogările "federati e" or ole ta afir aţii di surse diferite, de pe ser ere diferite
• descrierile contradictorii pot coexista în Web
– " lie ţii" i terogărilor or de ide asupra redi ilităţii sau a pu tul de edere preferat
Co paraţie u li ajul atural
• Unele descrieri sunt "controlate" (stocate într-un
vocabular/ontologie/terminologie) pentru a fixa
semnificaţia unor termeni. Un astfel de vocabular
e ase ă ător u u "di ţio ar e pli ati " care
fi ează se ifi aţia u i telor:
• sti ulează adoptarea pe s ară largă a u ui ter e , cu o
a u ită se ifi aţie
• o ţi e des rieri pu li e şi o trolate, e tre uie să poată fi
interogate de oricine
• e format din axiome afir aţii e i di ă proprietăţile
definitorii ale unui termen)
• axiomele folosesc ter e i sta dardizaţi şi alţi ter e i ărora
li s-a fixat î preala il se ifi aţia î a elaşi o a ular sau î
altele!)
Cu e oluează ter e ii?
Faza 1. Un termen "se creează" pri a dată â d e folosit î tr-o afir aţie:
Am mâncat mere.
– Cum s-a reat u â tul " ăr"?
– Ate ţie, cuvintele limbii române nu a fost create de di ţio arul li ii ro â e! Di ţio arele doar ole tează u i te
care s-au reat deja, pe tru a per ite şi altora să le reutilizeze î a elaşi od, u a eeaşi se ifi aţie!

Faza 2. Ulterior reării, diverse persoa e pot adopta a el ter e fă â d diverse afir aţii u a esta:
A ăzut işte ere. Merele su t roşii. Merele res î opa . Merele ostă lei/kilogram...
– O ulţi e de afir aţii despre a elaşi lu ru for ează o descriere (altfel spus, o "descriere" = o enumerare de
proprietăţi . Fie are ouă afir aţie contribuie la î ogăţirea descrierii acelui lucru

Faza 3. Persoa e diferite pot fa e des rieri diferite, u ter e i preluaţi di surse diferite:
Merele su t roşii. Merele su t erzi. Merele res î opa . Merele res î apă.
– Des rierile se pot o pleta re ipro , dar pot fi şi o tradi torii!

Faza 4. Când mai multe persoane se pun de acord asupra unei descrieri stabile, acea descriere devine
se ifi aţia ter e ului şi, pe tru a putea fi reutilizată, tre uie să i lusă î tr-u di ţio ar o a ular,
ter i ologie, o tologie . Aşadar se ifi aţia e o des riere for ată di proprietăţi defi itorii:
Merele sunt fructe, rotunde, comestibile, cresc în copaci din familia rozacee etc.
a estea su t exe ple de proprietăţi defi itorii, are î preu ă dau se ifi aţia o eptului de
Mere; da ă eli i ă u a, e posi il să u ai vor i de Mere!
astfel de afir aţii su t o siderate axiome şi î RDF se azează pe ter e i sta dardizaţi)
Merele ostă lei/kilogram.
(aceasta e o proprietate nedefinitorie - î ogăţeşte des rierea, dar u o tri uie la se ifi aţia
conceptului de "Mere";
astfel de afir aţii u tre uie să apară î tr-un vocabular, dar pot apare într-o ază de u oşti ţe
pentru a fi interogate!)
Co paraţie RDF-XML
• Aşa cum XML nu impune ce marcatori şi atribute să folosim, RDF nu impune ce termeni
să folosim în afir aţii. Putem utiliza orice termeni, dar (deosebire de XML!) trebuie să
i di ă obligatoriu prove ie ţa fie ărui termen
– "pro e ie ţa"="spaţiul de nume"= o adresă de domeniu pe care o deţi e creatorul termenul
– în a eeaşi afir aţie putem îmbina termeni de pro e ie ţă diferită:
@prefix : <http://johnsmith.ro#>.
@prefix b: <http://buchmann.ro#>.
:Mary b:daughterOf :John.
pri asta a i di at ă ter e ii prefixaţi u b: au fost reaţi de deţi ătorul adresei de do e iu buchmann.ro,
iar ter e ii prefixaţi u : au fost reaţi de deţi ătorul adresei johnsmith.ro; deoarece adresele de domeniu
su t u i e î I ter et, ele oferă o gara ţie de ide tifi are a reatorilor u oşti ţelor

Beneficiu major: Preluarea de ter e i di alte surse per ite o e tarea grafurilor di aze de u oşti ţe
diferite!

Observaţii:
– În exemplele din curs/seminar, se va presupune că deţi e adresa http://expl.at (iar când sunt
necesare mai multe, http://other.at, poate şi altele)
– Î diverse ărţi şi tutoriale, se foloseşte adresa http://example.org (sau o adresă u părată de
autorul ărţii
– Î exe plele voastre i lusiv proie t folosiţi o adresă pe are o deţi eţi deja sau folosiţi u a fi tivă,
cu numele vostru de familie
• pe tru a realiza exer iţiile, adresa u e o ligatoriu să existe, i doar să i di e fără a iguitate
"proprietarul ter e ilor" pe are îi folosiţi
Co paraţie RDF-XML
• Ca şi în cazul XML, termenii se scriu cu caractere UNICODE, deci pot fi scrişi în orice li ă. Prin
urmare este ore tă şi afir aţia:
:Mary :fiicaLui :John .
totuşi, e recomandat să folosim mereu a elaşi termen când ne referim la a elaşi lucru... deci să nu
scriem :fiicaLui într-o afir aţie, apoi :daughterOf în alta, ă i conectarea afir aţiilor în grafuri şi
interogarea lor se azează pe reutilizarea o siste tă a termenilor!)

• Ca şi în XML, termenii nu sunt "cuvinte" direct preluate din limbajul natural. Important e ca
termenul din mijloc să exprime o relaţie între primul şi al treilea. Uneori un termen e construit
din mai multe cuvinte, pentru a uşura î ţelegerea de ătre un cititor uman. Exemplu:
:Mary :fiicaDinPrimaCasatorieALui :JohnSmithDinClujNapoca .
totuşi, pe cât posibil trebuie să si plifi ă afir aţiile; acest exemplu ar trebui descompus în mai
multe afir aţii, pentru a permite separarea oraşului Cluj Napoca pentru i terogări!

• Ca şi în XML, termenii nu trebuie să fie inteligibili de ătre un cititor uman şi nu sunt cuvinte
cheie impuse. La fel de corect ca exemplele de mai sus este şi ur ătorul:
:MMM :fff :JJJ .
(calculatorul e interesat doar de reutilizarea o siste tă a termenilor, pentru a putea forma grafuri
din afir aţii; se re o a dă totuşi ca afir aţiile să fie uşor de citit şi de ătre cititori umani, pentru a
putea crea cât mai uşor i terogările fără expli aţii suplimentare!)
Co paraţie RDF-XML
• Ca şi XML, RDF u e u li aj i u set de reguli de u ă formare. Spre deosebire de
XML, RDF oferă ai ulte si taxe alter ative, fie are u propriile reguli de u ă
formare.
• Exemple:
Sintaxa Turtle:
@prefix : <http://expl.at#>.
:Mary :daughterOf :John.
Sintaxa N-triples:
<http://expl.at#Mary> <http://expl.at#daughterOf> <http://expl.at#John>.

Sintaxa RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://expl.at#">
<rdf:Description rdf:about="http://expl.at#Mary">
<ex:daughterOf rdf:resource="http://expl.at#John">
</rdf:Description>
</rdf:RDF>
(iată hiar un vocabular XML specializat pe afirmaţii RDF!
Co paraţie RDF-XML
• Aşa cum vocabularele XML permit unor orga izaţii să
se pu ă de acord asupra unor structuri XML, mai
multe orga izaţii se pot pune de acord asupra
se ifi aţiilor unor termeni prin definirea unui
vocabular RDF (ontologie, terminologie) :
– Termenii unui vocabular vor indica prin prefix nu doar
creatorul, ci şi vocabularul în care li s-a fixat se ifi aţia
– Se ifi aţia se fi ează prin afir aţii definitorii cu
termeni sta dardizaţi ("axiome")
– Termenii sta dardizaţi se preiau din terminologiile
standard oferite de W3C (OWL, RDF/S). Exemple de
termeni sta dardizaţi:
rdf:type (verbul "a fi")
owl:SymmetricProperty oţiu ea de "relaţie re ipro ă"
Exe plu de fixare a se ifi aţiei
(pentru termenul :rudăCu)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix b: <http://buchmann.ro/vocabularul-meu#>.
b:rudăCu rdf:type owl:SymmetricProperty.
– Relaţia de "rudenie" e defi ită aici ca fiind o relaţie re ipro ă, deci are întotdeauna loc în
ambele sensuri (în mod implicit relaţiile RDF sunt u idire ţio ale!
– Aceasta e o se ifi aţie agă, ar trebui î ogăţită şi cu alte axiome pentru a detalia ă relaţia
de rudenie poate însemna frate, pări te, bunic etc... păstră totuşi exemplul minimal, ă i
trebuie să studiem mai întâi toţi termenii sta dardizaţi
– Axioma trebuie sto ată într-un vocabular on-line pe care oricine să îl poată consulta, la adresa
i di ată prin prefix (http://buchmann.ro/vocabularul-meu)
– Prefixele rdf: şi owl: corespund terminologiilor standardizate de ătre W3C

Oricine va adopta termenul astfel definit va indica prin prefix vocabularul în care s-a fixat se ifi aţia:
@prefix b: <http://buchmann.ro/vocabularul-meu#>.
@prefix : <http://organizatie-oarecare.ro#>.
:Mary b:rudăCu :John.
• Pe baza vocabularului, orice calculator va deduce în mod automat şi afir aţia re ipro ă (:John
b:rudăCu :Mary.)
• Concluzie i porta tă: spre deosebire de vocabularele XML (folosite la validare), vocabularele RDF
au rolul de a permite "î ţelegerea" termenilor şi folosirea lor în dedu ţii automate
Cum se folosesc
vocabularele/ontologiile?
• Clie ţii vor o sulta vo a ularul pe tru a o strui i terogări
– fii d or a de aze de u oşti ţe distri uite î We , tre uie să per ite i terogarea lor de ătre ori i e, nu doar de
către ei are le-au creat
– clie ţii u su t eapărat u a i, pot fi otoare de ăutare, ro sere, apli aţii desktop sau We , age ţi soft are
i telige ţi
– analogie cu MySQL: u poţi i teroga preţurile u or produse da ă u ştii u se u eşte â pul î are su t sto ate
• Axiomele unui vocabular per it al ulatoarelor să realizeze dedu ţii logi e auto atizate
– dedu ţiile auto ate or î ogăţi azele de u oşti ţe fără i ter e ţie u a ă
– unele deducţii per it dete tarea de o tradi ţii afir aţii e o tra i u se ifi aţia fi ată a u or ter e i
– afir aţiile o tradi torii pot fi tolerate, dar tre uie dete tate

Sunt vocabularele obligatorii?


• Afir aţiile pot fi "utile" (i teroga ile) şi fără a li se fixa se ifi aţia ter e ilor, da ă aza de u oşti ţe e de uz
intern/limitat, adi ă…
– a fost reată de a eeaşi persoa ă are creează şi i terogările
– nu a tre ui i terogată de alt i e a î iitor, toate i terogările au fost de ise şi progra ate
– a alogie u M SQL: pe tru u ele i terogări e sufi ie t să ştii ă e istă o oloa ă "preţ" (nu eapărat să ştii ce
se ifi aţie are, da ă apare şi î alte aze de date et .
• Calculatorul poate realiza deducţii şi fără axiome
– a io ele su t u tip parti ular de reguli reguli "as u se" î afir aţii
– e istă şi alte oduri de e pri are a regulilor de e e plu, î orporate î i terogări
Co paraţie teh i ă î tre RDF şi XML
XML RDF
Reprezi tă i for aţia î arbori Reprezi tă i for aţia î grafuri dire ţio ate ori e ar ore e u graf,
dar u şi i ers
Are o si gură si taxă o retă, u u si gur set de reguli de u ă Are mai multe sintaxe concrete (unele bazate pe XML), fiecare cu
formare propriul set de reguli de u ă for are
Elementele XML au ordine fraţii apar î tr-o ordi e fi ă şi se pot Afir aţiile RDF u au ordi e (indiferent de ordinea în care le scriem,
a esa pe ază de ordi e: firstChild, lastChild, hildNodes et . î graful şi i terogările arată la fel
schimb atributele XML nu au.

Co se i ţă: Adăugarea de ele e te oi e ai difi ilă, e esită o Co se i ţă: Adăugarea u ei afir aţii oi se fa e si plu, fără să e
poziţio are pre isă. Adăugarea de atri ute oi e ai si plă, dar pese de poziţio area. Adăugarea de ter e i oi la o afir aţie u e
tre uie ataşate u ui ele e t. per isă, ă i afe tează stru tura de triplet.
Vocabularele XML se folosesc la validare erifi area stru turii şi Vocabularele RDF nu se folosesc la validare, ci la fixarea se ifi aţiei
tipurilor de date) termenilor di afir aţii î s opul auto atizării dedu ţiilor logi e

Vocabularele XML sunt formate din reguli de validare construite cu Vocabularele RDF sunt formate din axiome, are su t tot afir aţii RDF,
li aje spe ializate, are u su t eapărat tot de tip XML ezi DTD î să u ele e foloses ter e i sta dardizaţi
Relaţiile î tre ele e te XML su t vagi relaţii pări te- opil a ăror Relaţiile î tre ter e ii RDF sunt explicite, pot fi la rândul lor descrise
se ifi aţie e i terpretată de o ) într-u od î are se ifi aţia să poată fi i terpretată de al ulator
Ele e tele XML pot a ea proprietăţi u valori simple, numite atribute Ter e ii RDF pot a ea proprietăţi u alori si ple, u ite tot atribute
(cu tipuri impuse prin vocabulare, de obicei prin XML Schema) (cu tipuri preluate de la XML Schema)
Marcatorii şi atri utele u tre uie să ai ă prove ie ţa e pli ită Orice termen RDF tre uie să ai ă prove ie ţă, u u ele e epţii (de
ex., termeni anonimi)
XML se foloseşte ai des a format de transferare a datelor între RDF se foloseşte ai des a ază de date NoSQL des hisă spre
apli aţii, dar poate fi folosit şi i terogat a ază de date NoSQL i terogări î We , dar poate fi folosit şi pe tru a tra sfera frag e te
de grafuri î tre aze de u oşti ţe sau apli aţii diferite
RDF
• Resource Description Framework = o fa ilie de spe ifi aţii pentru
descrierea a ORICE (descrieri de "resurse")
• În RDF, resursă = orice lucru/persoană/aspect despre care se poate face
o afir aţie de i, ORICE
– Axioma fundamentală: Ori e este o resursă

Tipuri de resurse
• Resurse adresabile = orice se poate accesa în Web printr-u URL fişiere,
conturi e-mail, servicii Web, paragrafe din pagini HTML);
• Resurse neadresabile = orice altceva (persoane, concepte, locuri etc.),
e a e e istă î afara We -ului, fiind identificabil printr-un URI
• Resursele neadresabile pot fi "reprezentate" în Web de unele adresabile:
• O persoa ă eadresa ilă) poate avea un cont de e- ail, o pagi ă Fa e ook, u CV
(adresabile)
• U oraş neadresabil poate a ea u site, o pagi ă Wikipedia, o i agi e et .
(adresabile)
• Noţiu ea de "frate" eadresa ilă poate a ea o pagi ă Wikipedia, o pagi ă de
di ţio ar e pli ati et . adresabile)
13
Resurse
• Tre uie să fie lar â d or i despre o resursă adresa ilă şi
â d despre u a eadresa ilă:
@prefix : <http://buchmann.ro#>.
:MichaelJackson :frateCu :JanetJackson. (afirmaţie despre persoa ă
<http://www.michaeljackson.com> :creatCu :PHP. afir aţie despre site
<http://www.michaeljackson.com> :paginaLui :MichaelJackson. (afir aţie e conectează persoana cu site-ul)

• Riscul e mai mare atunci câ d ter e ul URI şi adresa URL au


a eeaşi adresă de do e iu:
@prefix : <http://www.michaeljackson.com#>.
:MichaelJackson :paginaLui :MichaelJackson.
ero at! Nu e asigurată disti ţia di tre pagi a HTML şi persoa ă!

Presupu â d ă site-ul e istă şi u putem modifica URL-urile fişierelor, vom realiza disti ţia în unul din modurile:
a) La nivel de termen:
@prefix : <http://www.michaeljackson.com#>.
:MichaelJackson :paginaLui :persoanaMichaelJackson.
b) La nivel de prefix:
@prefix : <http://www.michaeljackson.com#>.
@prefix t: <http://www.michaeljackson.com/termeni#>.
:MichaelJackson t:paginaLui t:MichaelJackson.
14
Relaţia URL-URI
Ate ţie la posi ila o fuzie î tre URI şi URL! A ele încep u u proto ol şi o adresă de
domeniu sau IP):
• URL sunt adrese, ele i di ă u de s-a găzduit u a u it fişier şi u poate fi a esat
în Web:
http://buchmann.ro/cv#experienta
(a se î ţelege: există pe site-ul u h a .ro o pagi ă v cu un paragraf cu ID="experienta", ce poate
fi deschis cu browserul)
• URI sunt identificatori (ca CNP-urile din buletin sau ISBN-urile la ărţi , ei i di ă doar
ide titatea u ui lu ru şi pro e ie ţa ide tifi atorului:
http://buchmann.ro/voc#frate
(a se î ţelege: proprietarul do e iului u h a .ro a defi it ter e ul "frate", a ărui se ifi aţie e
des risă în vocabularul "voc" şi poate fi folosit î ori e afir aţii de ătre ei are îl adoptă

Dileme:

• Dar da ă tastez URI-ul http://buchmann.ro/voc#frate în browser?


Se re o a dă a ser erul u h a .ro să preî tâ pi e astfel de situaţii, găzdui d la adresa
http://buchmann.ro/voc chiar vocabularul în care s-a defi it se ifi aţia ter e ului "frate"
su for ă de fişier RDF sau a pagi ă HTML î are e istă u DIV/paragraf cu ID="frate")

• Dar dacă foloses URL-ul http://buchmann.ro/cv#experienta într-o afir aţie?


E ok, cu condiţia a afir aţia să se refere hiar la paragraf a "resursă adresa ilă" , de e e plu:
:BuchmannRobert :areExperientaDescrisaIn <http://buchmann.ro/cv#experienta>.
Sintaxe RDF

16
RDF
• RDF oferă*:
–U odel de date, u se a ti ă for ală şi si ta ă a stra tă
(bazat pe grafuri)
– Multiple sintaxe concrete (pentru serializarea grafurilor)
– Un limbaj de interogare a grafurilor (SPARQL)
– O terminologie standard de utilizat în axiome
– Bune practici pentru publicarea grafurilor în Web
• La origi i, RDF a fost o teh i ă de ataşare de etadate
la diverse resurse Web (similar tagului META pentru
pagini Web)
– A evoluat într-u odel pe tru repreze tarea u oşti ţelor
*http://www.w3.org/2001/sw/wiki/Main_Page
*http://www.w3.org/standards/techs/rdf#w3c_all 17
• RDF are
Sintaxele RDF
– o si taxă a stra tă pe tru proie tarea u oşti ţelor = se referă la stru tura ge erală a grafurilor,
u la deli itatori, de a eea e e plele a stra te se dau adesea î for ă grafi ă
– mai multe sintaxe concrete pe tru serializare, adi ă s rierea u oşti ţelor a te t = se referă la
deli itatori, iar u ele si ta e i pu şi âte a u i te heie

Reguli de u ă for are i puse de si taxa a stra tă


– Ori e afir aţie e for ată di ter e i:
• subiect,
• predicat u it şi proprietate, relaţie, atri ut ,
• obiect
– Predi atul e pri ă o relaţie u idire ţio ală (o proprietate a subiectului, având obiectul ca
valoare)
– Î ge eral ter e ii tre uie să fie URI (identificatori de resurse) sau URL da ă or i de resurse
adresa ile; ori u , ori e URL este şi u URI, î să u şi i ers! .
– Se per it u ele e epţii pri i d URI:
• Obiectul poate fi anonim fără ide titate, fără pro e ie ţă
• Obiectul poate fi o valoare si plă (de un anumit tip – integer, boolean etc.)
• Subiectul poate fi anonim fără ide titate, fără pro e ie ţă , dar NU poate fi o aloare!
• Predicatul e obligatoriu URI, u se ad it e epţii
– Mai ulte afir aţii se pot grupa î tr-un graf
• un graf poate avea propriul URI ("graf identificat", "named graph")
• u graf ide tifi at poate ser i a ter e î afir aţii se pot fa e afir aţii despre u graf î a sa lu
E e plu î si ta a a stra tă
Anna is the mother of Andrew and Peter.
Peter is the father of someone having the age of 20.
Peter's age is 40.
40
http://expl.at#isMotherOf http://expl.at#hasAge
http://expl.at#Anna http://expl.at#Peter

http://expl.at#isMotherOf http://expl.at#isFatherOf

20
http://expl.at#Andrew
_:x
http://expl.at#hasAge

• De aici î olo, o presupu e ă pro e ie ţa ter e ilor este http://expl.at#


• Observaţi ă u ele o ie te su t alori si ple u erele 0, 0
• O ser aţi ă proprietăţile su t î totdeau a URI
• u ele su t relaţii isMotherOf, isFatherOf
• altele sunt atribute (hasAge)
• O ser aţi ă u ii ter e i pot fi lipsiţi de identitate/provenienţă (_:x)
• acesta e fiul neideintificat al lui Peter
• ide tifi atorul său este ar itrar ales poate fi ge erat ar itrar
• chiar da ă u are ide titate, are "des riere" are proprietăţi, afir aţii despre a esta 19
E e plu î si ta a a stra tă
Se pot fa e şi afir aţii despre proprietăţi:
Peter is the father of someone whose age is 20.
Age is measured in years. (proprietatea devine subiect!)

http://expl.at#isMotherOf http://expl.at#years
http://expl.at#Anna
http://expl.at#Peter

http://expl.at#isMotherOf http://expl.at#measuredIn

http://expl.at#Andrew http://expl.at#isFatherOf

Cu alte cuvinte: http://expl.at#hasAge


20
• Proprietatea poate deveni subiect (sau obiect!) _:X

• O proprietate poate a ea la râ dul său proprietăţi


• Şi proprietăţile pot fi des rise de o i ei des rierile de proprietăţi apar î o a ulare 20
E e plu î si ta a a stra tă
Pri gruparea u or afir aţii î tr-un graf identificat (cu propiu URI), graful
î a sa lul său poate de e i ter e al altor afir aţii:
Mary believes that Anna is the mother of Andrew and Peter.

http://expl.at#years
http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter

http://expl.at#isMotherOf http://expl.at#measuredIn

http://expl.at#Andrew http://expl.at#isFatherOf

http://expl.at#believes http://expl.at#hasAge
20
http://expl.at#Mary _:X

=> Matematic, un graf RDF este un hipergraf


21
Exemple în sintaxe concrete
Anna is the mother of Andrew and Peter.
Peter is the father of someone having the age of 20.
Peter's age is 40.
40
http://expl.at#isMotherOf http://expl.at#hasAge
http://expl.at#Anna http://expl.at#Peter

http://expl.at#isMotherOf http://expl.at#isFatherOf

20
http://expl.at#Andrew
_:x
http://expl.at#hasAge

Sintaxa Turtle:
@prefix : <http://expl.at#> .
:Anna :isMotherOf :Andrew, :Peter.
:Peter :hasAge 40; :isFatherOf [:hasAge 20].

Sintaxa N-triples:
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> . 22
<http://expl.at#Peter> <http://expl.at#hasAge> "40"^^<http://www.w3.org/XMLSchema#integer> .
Exemple în sintaxe concrete
Sintaxa N-triples:
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> .
<http://expl.at#Peter> <http://expl.at#hasAge> "40"^^<http://www.w3.org/XMLSchema#integer> .

Tipuri de date XML Schema,


au proprii identificatori standard!
Prefixul evită repetarea
prove ie ţeir
Tip detectat automat în Turtle,
Afirmaţii grupate după Sintaxa Turtle: di a se ţa ghili elelor!
subiect+predicat @prefix : <http://expl.at#> .
:Anna :isMotherOf :Andrew, :Peter.
:Peter :hasAge 40; :isFatherOf [:hasAge 20].
Afirmaţii grupate după
subiect
Proprietăţile odului a o i
se i lud î para teze pătrate
Exemple în sintaxe concrete
Sintaxele N-triples şi Turtle su t o pati ile:
• Ori e fişier bine format în N-triples e o siderat i e for at şi î Turtle
• Î o se i ţă, ele două si ta e se pot î i a î a elaşi fişier de tip Turtle şi
hiar î a eeaşi afir aţie:

@prefix : <http://expl.at#> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
:Peter :hasAge 40; :isFatherOf [<http://expl.at#hasAge> 20].
Exemplu cu graf identificat în sintaxa
a stra tă
Mary believes that Anna is the mother of Andrew and Peter.

http://expl.at#years
http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter

http://expl.at#isMotherOf http://expl.at#measuredIn

http://expl.at#Andrew http://expl.at#isFatherOf

http://expl.at#believes http://expl.at#hasAge
20
http://expl.at#Mary _:X

25
Exemple cu graf identificat în sintaxe
Sintaxa TriG:
concrete
extensie Turtle ce permite gruparea afirmaţiilor î grafuri u sau fără ide tifi ator
@prefix : <http://expl.at#> .
{:Mary :believes :someBeliefs. Graf implicit, neidentificat
:Peter :fatherOf [:hasAge 20].
:hasAge :measuredIn :years.}
:someBeliefs {:Anna :isMotherOf :Andrew, :Peter.} Graf identificat

Sintaxa N-quads:
extensie N-triples ce permite gruparea afirmaţiilor î grafuri (cu sau fără identificator)
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> . Graf implicit,
<http://expl.at#hasAge> <http://expl.at#measuredIn> <http://expl.at#years> . neidentificat
<http://expl.at#Mary> <http://expl.at#believes> <http://expl.at#someBeliefs> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> <http://expl.at#someBeliefs> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> <http://expl.at#someBeliefs> .

Graful identificat apare ca al


patrulea termen!
…despre afir ații o te tuale…

1
Ce sunt afirmaţiile o te tuale?
Afirmaţii contextuale = afirmații pentru care prezumția de adevăr e limitată la
un context (la anumite condiţii)

Exemple (cuvintele colorate sugerează un context):


– Afirmații subiective (asociate unei "surse de cunoştinţe"):
George believes that Peter is the brother of Andrew.
The source of the statement "James Cameron directed Terminator" is IMDB.
- Afirmații constrânse de spațiu sau timp:
Mary works for the ABC company, in Cluj.
Mary will work for the ABC company (timpul viitor, sugerat gramatical).
- Afirmații cu evaluări:
The Sun orbits the Earth is a false statement.
Earth orbits the Sun with 30 km/s.
Peter plays footbal well.
2
Weather in UK is rainy with 75% probabilty.
Avertisment
Nu confundați contextul cu afirmații despre obiecte sau despre proprietăți
http://expl.at#Mary http://expl.at#CompanyABC
http://expl.at#worksAt
http://expl.at#location

Acest exemplu corespunde afirmaţiei: http://expl.at#Cluj


Mary works for the ABC company, which is located in Cluj.
(aici compania e în Cluj, nu e clar dacă și Mary!)

http://expl.at#Mary http://expl.at#CompanyABC
http://expl.at#worksAt

http://expl.at#location

http://expl.at#Cluj

Acest exemplu corespunde afirmaţiilor:


Mary works at Company ABC. Everyone who works, works in Cluj.
(proprietăţile unei proprietăţi se aplică peste tot unde folosim acea proprietate!) 3
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția1. Relații de aritate mare (cu mai mulţi participanţi), modelate cu ajutorul unui nod anonim
ce conectează laolaltă toţi participanţii (aici persoana, angajatorul, locaţia... ar putea fi şi altele):

http://expl.at#Mary
http://expl.at#worker

_:workRelation
http://expl.at#location
http://expl.at#employer
http://expl.at#Cluj

http://expl.at#CompanyABC

Turtle:
@prefix : <http://expl.at#>.
[:worker :Mary; :employer :CompanyABC; :location :Cluj].
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția2. Reificarea ("afirmaţii despre afirmaţii"): seamănă cu relaţiile de aritate mare, dar
foloseşte nişte termeni standardizaţi pentru a descrie afirmaţia despre care se fac afirmaţii.

rdf:Statement

rdf:type http://expl.at#Cluj
http://expl.at#hasLocation
_:x

rdf:subject
rdf:object

http://expl.at#Mary rdf:predicate
http://expl.at#CompanyABC

http://expl.at#worksAt

Turtle:
@prefix : <http://expl.at#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
[a rdf:Statement; rdf:subject :Mary; rdf:predicate :worksAt; rdf:object :CompanyABC; :hasLocation :Cluj]
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția3. Grafurile identificate permit gruparea de afirmaţii într-un graf ce devine apoi termen în
alte afirmaţii (avantaj: mai concis decât reificarea sau relațiile de aritate înaltă)

http://expl.at#City http://expl.at#Romania

Se pot adăuga apoi " etadate"


rdf:type http://expl.at#locatedIn
afir aţii despre graf

http://expl.at#Cluj

http://expl.at#worksAt
http://expl.at#Mary http://expl.at#CompanyABC

Se pot adăuga apoi şi alte fapte


afir aţii are au lo î Cluj

TriG:
@prefix : <http://expl.at#>.
:Cluj {:Mary :worksAt :CompanyABC}
{:Cluj a :City; :locatedIn :Romania} 6
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția3. Eventual, graful identificat poate primi un identificator lipsit de semnificaţie, care să fie
apoi ataşat mai multor contexte separate de conţinutul grafului:

http://expl.at#City http://expl.at#Romania

rdf:type http://expl.at#locatedIn

http://expl.at#Cluj http://expl.at#Past
TriG:
@prefix : <http://expl.at#>. http://expl.at#place
:graph1 {:Mary :worksAt :CompanyABC} http://expl.at#time http://expl.at#Robert
{:graph1 :place :Cluj; :time :Past; :source :Robert.
:Cluj a :City; :locatedIn :Romania} http://expl.at#source
http://expl.at#graph1

http://expl.at#worksAt
http://expl.at#Mary http://expl.at#CompanyABC

7
E e plu u afir aţii su ie tive
Afirmaţii subiective: când dorim ca anumite afirmaţii să fie caracterizate ca aparţinând unei
anumite surse/persoane subiective şi dorim să permitem clienţilor să filtreze rezultatele
interogărilor după sursă (de ex. în funcţie de credibilitatea sursei):
Mary believes that Anna is the mother of Andrew and Peter, but does not believe that Peter is the
father of George.

http://expl.at#graph1

http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter
http://expl.at#graph2

http://expl.at#isMotherOf

http://expl.at#Andrew http://expl.at#isFatherOf

http://expl.at#believes http://expl.at#doesNotBelieve
http://expl.at#George
http://expl.at#Mary 8
… despre ter e ii folosiţi î afir aţii…

9
Ter e ii afir aţiilor pot fi
• URI ajoritatea şi, î fu ţie de prove ie ţă, pot fi de ur ătoarele tipuri:
– Proprii = reaţi de reatorul azei de u oşti ţe
• pe baza propriei adrese de domeniu, un termen e creat ad-ho la pri a apariţie î tr-o afir aţie
– Sta dardizaţi = reaţi de W C, se re o a dă adoptarea lor
• pe tru a per ite ori ui să e i terogheze u oşti ţele
• pe tru a per ite dedu ţii auto ate fără i terve ţie u a ă
– Co trolaţi = reaţi de diverse orga izaţii Fa e ook, Mi rosoft et . , se î urajează adoptarea lor
• pe tru a e efi ia de diverse fu ţio alităţi de e ., i portarea u ui site î lista de preferi ţe Fa e ook u
butonul Like)
– Ge eraţi = apar atu i ge eră auto at grafuri RDF di surse tradiţio ale
• de ex., generarea de grafuri din tabele MySQL va produce URI din numele coloanelor concatenate cu
u ele ta elelor şi u o adresă de do e iu
• VALORI SIMPLE
– Pot fi numere, booleene, date calendaristice etc.
• se folosesc tipurile predefinite din XML Schema, plus tipul suplimentar rdf:XMLLiteral pentru cod XML
oarecare (dar bine format conform XML)
– Pot apare doar pe poziţie de o ie t
• de i NU se pot fa e afir aţii despre valori si ple
• NODURI ANONIME
– Su t lo ţiitori te porari sau per a e ţi pe tru u URI
• Pot fi la evoie su stituiţi u u URI, dar de o i ei u prezi tă i teres ide titatea lor, doar poziţia î graf
– Pot apare doar pe poziţie de su ie t sau o ie t
• Proprietăţile NU pot fi a o i e
De ce termenii afirmaţiilor se azează
pe URI?
1. URI au un caracter universal
– pot identifica orice lucru, adresabil sau neadresabil
– sunt mai generali decât alte sisteme de identificare (de ex. CNP se aplică doar la oa e i şi doar î
Ro â ia, ISBN doar la ărţi et .
. URI i di ă pro e ie ţa într-un mod controlabil
– î ep u o adresă de do e iu u i ă î I ter et, deţi ută de i eva a u e
. URI su t stru turaţi şi flexi ili
– proprietarul adresei de do e iu poate defi i u u ăr i fi it de ter e i, folosind extensiile
permise de un URI (unul sau mai multe slash-uri, maxim un hash):
http://buchmann.ro/Maria
http://buchmann.ro#Maria Hash doar o dată, la ulti a parti ulă!
http://buchmann.ro/persoane/Maria
http://buchmann.ro/relatii/frate
http://buchmann.ro/vocabular1/relatii#frate
– ate ţie la prefixare în ultimul exemplu! doar ulti a parti ulă ră â e după prefix:
@prefix : <http://buchmann.ro/vocabular1/relatii#>. va permite să folosi ter e ul :frate
...în schimb...
@prefix : <http://buchmann.ro/>. nu va permite să folosi ter e ul :vocabular1/relatii#frate
– da ă tre uie să folosi toţi URI de mai sus, definim mai multe prefixe!
De ce termenii afirmaţiilor se azează
pe URI?
. URI asigură disti ţia î azul o fli telor de termeni
– ter e i si ilari se pot difere ţia după prefi /provenienţă:
http://expl.at#Maria Două persoa e Maria au pri it ide tifi atori si ilari de la orga izaţii
http://other.at#Maria diferite, di oi ide ţă, dar se pot difere ţia după pro e ie ţă!

http://buchmann.ro#sugar Co eptele "zahăr" şi "sugar" au pri it ide tifi atori si ilari deri aţi di
http://expl.at#sugar li i diferite, dar se pot difere ţia după pro e ie ţă!

http://buchmann.ro/companii#Volkswagen Deşi au a eeaşi pro e ie ţă, compania şi odelul Volks age


http://buchmann.ro/modele#Volkswagen se pot difere ţia datorită stru turii URI

http://buchmann.ro/marimiFizice/masa O o i ul " asa" se poate difere ţia datorită


http://buchmann.ro/mobilier/masa structurii URI

http://buchmann.ro#PopMaria1 Aici presupunem că a e două persoa e. Su i i o for ă u tre uie folosit


a elaşi URI pe tru resurse diferite!
http://buchmann.ro#PopMaria2 Da ă pro e ie ţa e a eeaşi şi dori să păstră stru tura URI,
tre uie să forţă difere ţierea î ulti a parti ulă a ter e ului
De ce termenii afirmaţiilor se azează
pe URI?
5. La nevoie URI pot fi folosiţi a URL-uri: deşi e istă URI are î ep u ftp:/, mailto:, urn: se re o a dă ei are î ep u
http://, di otivele ur ătoare:
– Pentru resursele adresabile, devi e o ve a il a URL să fie şi URI ide tifi atorul va per ite şi o ţi erea
fişierului respe tiv pri HTTP)
:MichaelJackson :arePagina <http://michaeljackson.com>.
A est ter e e ide tifi ator de persoa ă eadresa ilă Acest termen e simultan identificator (de site) şi adresă de site!
– Pentru resursele neadresabile, se pot implementa mecanisme HTTP pe server are să trateze situaţia î are u
URI este folosit ca un URL (de ex. un URI tastat în browser). Exemplu de scenariu:

Presupu e ă foloses ter e ul http://buchmann.ro#MichaelJackson (ca identificator al persoanei Michael Jackson)

Ce doresc să se î tâ ple da ă i e a tastează a est ter e î ro ser? Posibilităţi:


1. Nu e OBLIGATORIU să se î tâ ple eva. Serverul poate retur a o eroare
2. Se re o a dă i ple e tarea u ui e a is de derefere ţiere URI = â d ser erul a eptă u URI şi
retur ează " e a util":
a. Serverul poate preî tâ pi a situaţia pri tr-o redirectare HTTP spre site-ul oficial Michael Jackson, sau
spre pagina sa de Wikipedia
. Serverul poate preî tâ pi a situaţia răspu zâ d u u fişier RDF e o ţi e toate afir aţiile dispo i ile
pe server despre acel termen
2c. Serverul poate preîntâmpina situaţia răspu zâ d u o pagi ă HTML are oferă u ele i for aţii despre
termenul solicitat
Derefere ţierea URI e posi ilă doar pe ser ere HTTP, de a eea se re o a dă a URI să poate de la şa ereri HTTP
De ce termenii afirmaţiilor se azează
pe URI?
6. La e oie, o a eeaşi resursă poate pri i ai ulte URI de o i ei de pro e ie ţă diferită : E istă o pro a ilitate are
a orga izaţii diferite să foloseas ă ter e i diferiţi u a eeaşi se ifi aţie, ori a persoa e diferite să ai ă ide tifi atori
diferiţi î orga izaţii diferite!

http://anaf.ro#PopMaria O persoa ă poate pri i ide tifi atori diferiţi î aze de u oşti ţe diferite,
http://univie.ac.at#PopMaria aparţi â d u or orga izaţii diferite!

http://buchmann.ro/vocabular#frate Conceptul de frate poate să apară u a eeaşi se ifi aţie


http://other.at/voc#brother î o a ulare diferite, de pro e ie ţă diferită!

I porta t de reţi ut!


• O resursă poate a ea ai ulţi URI de o i ei de pro e ie ţă diferită , dar u a elaşi URI u poate ide tifi a ai
multe resurse! adresele de do e iu previ î u ă ăsură a est ris !
• Nu există o ligati itatea î adoptarea ter e ilor, i i ă ar a elor sta dardizaţi! fie are poate fa e afir aţii u
proprii ter e i şi propria adresă de do e iu, ig orâ d e iste ţa altor aze de u oşti ţe sau a ter e ilor reaţi
deja de altcineva)

7. URI au un caracter internaţio al


– se ai u es şi IRI, su li ii d astfel faptul ă pot fi s rişi u ori e ara tere
Analogia URI-URL
Ase ă ări URI-URL:
• Nu pot e ista două site-uri u a elaşi URL
• În schimb un site poate avea mai multe URL-uri (eventual redirectate între ele)
• URL-ul e format din:
– O adresă de do e iu o trolată de proprietarul său
– I for aţii adiţio ale ataşate su for ă de foldere, fişiere, a ore î s opul a esării a diverse ele e te di tr-u site fişiere,
paragrafe, servicii Web etc.), de exemplu:
http://www.mysite.com/folder/file.doc
http://www.mysite.com/DaVinciCode#Chapter1
Deosebiri URI-URL:
• Scopul URI este identificarea, nu accesarea
– URI tre uie văzuţi a "ide tifi atori" si ilar u CNP, ISBN et . , u a "adrese"
– Totuşi la evoie, u URI poate fi folosit a URL da ă pe server s-a programat un mecanism de derefere ţiere URI

• Un URI ide tifi ă ori e, u URL ide tifi ă o resursă adresa ilă fişier, paragraf
etc.)
– Un URI este un "cuvânt" ter e al u ei afir aţii RDF
– Teoretic pentru orice cuvânt din limbajul natural se poate inventa un URI

15
De e să u folosi URL-uri existente
pe post de URI?
• Teoretic Web-ul oferă u eroase surse de ide tifi atori lipsiţi de a iguitate:
• Wikipedia alo ă o pagi ă de i u URL disti t pe tru u eroase o epte şi i sta ţe;
• Reţelele so iale (Facebook, LinkedIn) alo ă o pagi ă disti tă fie ărei persoa e,
orga izaţii, eve i e t et .;
• Totuşi se re o a dă să se evite reutilizarea de URL-uri pe post de URI. Motiv: o
persoa ă şi pagi a sa We NU su t a elaşi lu ru.
• Persoana e eadresa ilă şi are a u ite proprietăţi u e, data aşterii et . ;
• Pagina Web e adresa ilă şi are u totul alte proprietăţi autor, data pu li ării et .
• Două resurse disti te u tre uie ide tifi ator! Două resurse e hivale te tre uie să ai ă
e a t a eleaşi proprietăţi!

• Concluzie: vom utiliza URL-uri pe post de URI doar câ d fa e afir aţii chiar
despre resurse adresabile despre fişiere, servicii Web etc.)
– E istă e epţii: Fa e ook foloseşte URL-ul contului (http://facebook.com/PopIon) şi a
ide tifi ator al persoa ei. Asta pe tru ă FB u doreşte să asigure disti ţia di tre oa e i şi
conturi (vezi FB terms and conditions: You will not create more than one personal account)
16
Ce se î tâ plă da ă e ista deja URI
pe tru lu rurile are apar î afir aţii?
1. Dacă află la ti p, e i e să-i reutiliză pe tru a per ite şi altora să
i terogheze afir aţiile oastre
– Nu e o eroare să folosi doar URI proprii, dar atu i doar oi reatorul a elor URI poate
rea i terogări şi apli aţii lie t are să-i interogheze)
– Utilizarea de URI sta dardizaţi sau o trolaţi vor adu e o serie de e eifi ii
2. Da ă află târziu,şi u ai pute odifi a URI deoare e ar afe ta apli aţii
aflate deja î fu ţiu e , pute i lude î aza de u oşti ţe o ontologie de
aliniere:
– De o i ei e vor a de u "di ţio ar de e hivale ţe" = afir aţii are de lară î tr-un mod
sta dard e hivale ţa ai ultor URI are s-au reat pe tru a elaşi lu ru/resursă
– U astfel de di ţio ar va per ite i terogărilor să a u uleze u oşti ţe di ai ulte surse,
despre a elaşi lu ru
3. Posi ile surse de URI e iste ţi:
– Terminologii standardizate (RDF/S, OWL)
– Terminologii controlate (FOAF, Facebook OpenGraph, DBPedia)
– Baze de cunoşti ţe ale u or orga izaţii parte ere u are dori să o e tă grafurile oastre
17
Granularitatea URI
Cât de apropiat tre uie să fie u URI de uvi tele di li ajul atural?
Cât de detaliat?

Exemplu:
Anna has the age of 20.

Versiuni intuitive: Versiu ea preferată:


A. C.
http://expl.at#Anna http://expl.at#Anna
http://expl.at#has

http://expl.at#hasAge
http://expl.at#theAgeOf20

20
B.
http://expl.at#Anna http://expl.at#has

http://expl.at#Age
http://expl.at#value
20
18
Probleme cu varianta A.
Tre uie să e gâ di la posi ilii lie ţi, la posi ilele i terogări e or e i de la a eştia.

De exemplu, su t destul de pro a ile ur ătoarele s e arii:


• ă u ărul 0 va tre ui o ţi ut separat (de exemplu pentru a calcula o medie între mai multe
vârste)
• ă vo dori să defi i se ifi aţia proprietăţii "hasAge", fă â d afir aţii despre a easta
independent de valoarea 20

http://expl.at#Anna http://expl.at#has

http://expl.at#theAgeOf20

Î a eastă varia tă, i iu ul di a este s e arii u e posi il fără u efort supli e tar di partea
lie tului ar fi e esară o versia URI î stri g, apoi e tragerea u ărului 0 pri pro esare de
stri guri ş.a. .d.

19
Probleme cu varianta B.
Presupu e ă î viitor vor tre ui de larate ai ulte vârste

Prin reutilizarea termenului Age, afir ațiile vor fuzio a într-un mod care nu mai permite
al ulatorului să dis ear ă are vârstă este a ui:

40
http://expl.at#Anna http://expl.at#value

http://expl.at#has
http://expl.at#Age

http://expl.at#has
http://expl.at#value 20
http://expl.at#John

Î o eperea azelor de u oşti ţe tre uie să e pu e și î tre area: care noduri din
afir ații or tre ui reutilizate?

20
Co se i ţă: Varia ta C. e re o a dată
A u se poate reutiliza proprietatea vârstă fără a rea a iguitate
A u se pot i teroga valorile vârstelor separat de restul i for aţiei
A u se poate des rie proprietate vârstă separat de valoarea sa

http://expl.at#John 40
http://expl.at#hasAge
http://expl.at#measuredIn
http://expl.at#Anna http://expl.at#years

http://expl.at#hasAge http://expl.at#measuredIn

20
O ser aţie: afir aţia despre proprietatea hasAge, deşi î imagine apare de două ori, î si taxele o rete se a s rie o
si gură dată o afir aţie se s rie o si gură dată î tr-un graf):
@prefix : <http://expl.at#>.
:John :hasAge 40. :Anna :hasAge 20. :hasAge :measuredIn :years.
Cu alte cuvinte:
• Descrierea unei proprietăţi e i depe de tă de afir aţiile î are se foloseşte a ea proprietate î se sul ă
utilizarea proprietăţii tre uie să ţi ă o t de se ifi aţia sa, u i ers!
• Des rierea u ei proprietăţi e separată de afir aţiile î are se foloseşte a ea proprietate î se sul ă o proprietate
e des risă o dată, apoi se ifi aţia sa e ala ilă peste tot u de se reutilizează a ea proprietate!
• De i u se a fa e disti ţie î tre proprietatea hasAge a lui Joh şi ea a lui A a. Da ă dori disti ţie, î sea ă
ă dori să a e proprietăţi diferite, u se ifi aţii diferite, şi pri ur are tre uie să le dă URI diferiţi! 21
Granularitatea termenilor
Nu trebuie să e ageră cu granularitatea. De exemplu...
Anna was born on 12.12.2000.
...ar putea lua forma: http://expl.at#Anna

http://expl.at#hasBirthyear http://expl.at#hasBirthday
http://expl.at#hasBirthmonth
2000 12 12

Totuşi, deoare e ajoritatea ediilor de progra are pot să des o pu ă uşor o dată
ale daristi ă şi e istă deja u tip XML S he a pe tru a est ge de valori, u e evoie să o
descompunem atât de mult.
Pute păstra o si gură valoare si plă, deci o singură proprietate:
:Anna :birthDate "2000-12-12"^^xsd:date.
22
Granularitatea termenilor
Alteori î să are se s des o pu erea, pe tru a per ite i terogarea separată a ai
multor câmpuri dintr-o stru tură de date o ple ă. E e plu:
Anna lives in Wien, Brunnerstr. 72, Ap. 200.

http://expl.at#Anna
http://expl.at#hasResidenceAp
http://expl.at#hasResidenceCity
http://expl.at#hasResidenceNr
http://expl.at#Wien http://expl.at#hasResidenceStreet 200

20
http://expl.at#Brunner

E istă și alte tehnici, bazate pe noduri anonime (vom reveni ulterior)

23
Granularitatea termenilor
Spre deosebire de slide-ul pre ede t, ai i ave o si gură proprietate:
• se va fa e efort ai puţi la des rierea se ifi aţiei proprietăţilor e u a si gură
de descris, :livesAt)
• î s hi la i terogare u ai pute disti ge î tre oraș, stradă et . de ât da ă
adăugă işte afir aţii supli e tare despre Wie , Bru er et .

http://expl.at#Anna
http://expl.at#livesAt
http://expl.at#livesAt

http://expl.at#livesAt
http://expl.at#Wien http://expl.at#livesAt 200

20
http://expl.at#Brunner

24
Re o a dări privi d URI
Se re o a dă a URI de proprietăţi...
• să fie uşor de difere ţiat faţă de o -proprietăţi
• să sugereze ititorului u a dire ţia î are are lo relaţia

<http://expl.at#Anna> <http://expl.at#Mother> <http://expl.at#Mary>.

Deşi e ore t pe tru al ulator, a est e e plu ridi ă pro le e u ui ititor u a :


• Este Anna mama lui Mary sau invers?
• Ter e ul :Mother reprezi tă o eptul de a ă ulţi ea tuturor a elor, lasa
mamelor) sau relația de a fi a a ui a?
Pe tru evitarea o fuziilor se re o a dă a URI de proprietăți să se e ti dă î od sugestiv:
<http://expl.at#hasMother>
…sau
<http://expl.at#isMotherOf>
25
Re o a dări privi d URI
Se re o a dă a fie are URI să ai ă ataşat u stri g u e, eti hetă, titlu e a fi
folosit la afişări î i terfaţa u utilizatorul:

Resurse cu identitate Stringuri


(persoane, locuri) (denumiri, etichete)

Persoa e diferite u a elaşi u e

:Mary1 :hasFullName "Mary Smith".


:Mary2 :hasFullName "Mary Smith".
:Austria :hasName "Austria"@en, "Autriche"@fr.

Nu e diferite î li i diferite, aso iate a eluiaşi lu ru ţara Austria

26
Re o a dări privi d URI
URI se supun unor principii mai rigide:
• Tre uie să ai ă for a i pusă de URI u prefi şi e te siile per ise, dis utate deja, dar şi u ele li itări privi d
caracterele permise)
• Asigură ide titatea glo ală a lu rurilor u tre uie să e iste două lu ruri disti te u a elaşi URI
• Nu su t legaţi de o li ă a u e, su t doar işte oduri de ide tifi are se re o a dă totuşi să poată fi itiţi şi de
utilizatori umani)
• Pot exista ai ulţi URI pe tru a elaşi lu ru u posi ilitatea de e hivalare î astfel de situaţii
• Apar adesea a su ie te î afir aţii RDF
• Nu tre uie să fie izi ili î i terfaţa u utilizatorul fi al a esta u tre uie să îşi dea sea a da ă apli aţia sa
foloseşte î spate RDF sau M SQL sau alt tip de a k-end)
• Sunt înrudite cu URL-urile şi de ai i derivă u ele o se i ţă posi ilitatea de derefere ţiere URI, posi ilitatea de a
folosi URL-uri ca URI pentru resurse adresabile)
Stringurile în schimb se supun unor principii mai relaxate, fiind considerate "nume" sau "etichete":
• Pot o ţi e ori e ara tere, fără să ai ă o stru tură i pusă u e o ligatoriu să se e e u URI ărora le su t
ataşate
• Nu asigură ide titate glo ală de e e plu pot e ista ai ulte persoa e u a elaşi u e
• Pot fi legate de o li ă a u e, az î are li se ataşează oduri de li ă a elaşi lu ru poate avea de u iri diferite
în limbi diferite)
• Pot exista ai ulte u e pe tru a elaşi lu ru, dar u se pot sta ili e hivalări î tre u e
• Nu pot ser i a su ie te î afir aţii RDF u se pot fa e afir aţii despre valori si ple!
• Tre uie să fie izi ili î i terfaţa u utilizatorul fi al de i i terogările tre uie să ur ăreas ă î spe ial o ţi erea de
stri guri, hiar da ă URI su t ei are asigură o e tarea afir aţiilor î graf 27
• Nu au i io legătură sau depe de ţă faţă de URL-uri
Re o a dări privi d URI
Se re o a dă a u URI să ai ă ataşat ă ar u URL al u ei pagi i We e poate
oferi detalii supli e tare despre a ea resursă
• Aşa u stri gurile devi i porta te la afişarea rezultatelor i terogărilor î i terfaţa utilizatorului
final, astfel de URL-uri pot sta la aza afişării de h perli kuri
• Se asigură astfel o disti ţie lară î tre resursele adresa ile şi ele eadresa ile, î tre URL şi URI,
păstrâ d totodată relaţii i teroga ile î tre a estea
Scenariu:
• Andrew are o pagi ă perso ală cu propriul domeniu (http://www.andrew.at)
• Andrew dorește să publice o descriere RDF cu afir aţii despre el î suși
• Pentru a asigura disti ţia între site şi persoa ă, Andrew va evita să reutilizeze URL-ul existent, va crea
un URI puţi diferit şi va crea o relaţie i teroga ilă între cele două:
<http://www.andrew.at#Andrew> <http://www.andrew.at#isRepresentedBy> <http://www.andrew.at> .
(identificatorul persoanei Andrew) (relația URI-URL) (pagina Web a lui Andrew)
• Şi invers, codul HTML al paginii lui Andrew va trebui să încorporeze a eastă afir aţie
Beneficii: Oricine i teroghează baza de u oşti ţe a lui Andrew va putea o ţi e uşor un hyperlink spre
site-ul acestuia. Oricine izitează site-ul acestuia, va putea o ţi e uşor acces la afir aţiile RDF despre
Andrew.
28
Re o a dări privi d URI
Se re o a dă a URI să fie sufi ie t de detaliaţi î ât să se poată i teroga ât ai
uşor i for aţii rele a te:
:Mary :eCopilDinPrimaCasatorieALui :JohnSmithDinClujNapoca.
Avem aici un exemplu corect (bine format) dar dificil de interogat.
Variante recomandate (am omis prefixele):
A. Variantă u ă, per ite i terogări rafi ate pri B. Variantă ai puţi u ă dar ai u ă de ât ea
i luderea u or oduri a o i e* are u erau e ţio ate, i iţială :
dar su t i pli ite RDF u are rolul de a "tradu e" propoziţii • oferă o disti ţie şi o relaţie lară î tre Joh S ith şi
di li aj atural, i de a le refle ta se ifi aţia! oraş
• per ite o ţi erea opiilor pe aza relaţiei : opilulLui ,
_:x â d u o tează di e ăsătorie su t
:primaSotie _:y
:copilulLui
:aDouaSotie
:Mary :copilulLui
:JohnSmith :Mary :JohnSmith
:copilulLui
:locuiesteIn :dinPrimaCasatorie
:locuiesteIn
*există şi alte oduri de a expri a
ordi ea di tre soţii, o re e i! :ClujNapoca :ClujNapoca
URI o trolaţi şi sta dardizaţi
Diverse orga izații stabilesc identificatori care nu sunt eapărat sta dardizați, dar devin populari în
anumite domenii sau aduc beneficii când sunt re u os uţi de unele apli aţii. A eştia sunt "termeni
o trolaţi".

Exemple de terminologii controlate:


– OpenGraph (http://ogp.me/) – ter e i utilizaţi î des rierea relaţiilor î graful Fa e ook
– Schema.org – ter e i re o a daţi pe tru a des rie di erse tipuri de o ţi ut astfel încât
otoarele de ăutare să î ţeleagă â d a e pagi i e prezi tă astfel de o ţi uturi fil e, ărţi,
reţete, persoa e etc.)
– FOAF (http://xmlns.com/foaf/spec/) – ter e i pe tru des rierea de persoa e şi relaţii so iale
astăzi folosit î u ele apli aţii de loggi g e oferă şi o e iu i de tip reţea so ială – WordPress,
LiveJournal, FriendFeed)
– GoodRelations (http://www.heppnetz.de/ontologies/goodrelations/v1.html) – termeni pentru
des rierea de produse î o erțul electronic (recent înglobat în Schema.org)
– Dublin Core (http://dublincore.org/specifications/) sau DCTerms ersiu ea ai re e tă –
ter e i pe tru des rierea de resurse i for ațio ale pri etadate autor, data reării, tip et .
– OWL-Time (http://www.w3.org/TR/owl-time/) – ter e i pe tru des rierea u or oţiu i
te porale durată, o e t et .
– GeoOWL (http://www.w3.org/2005/Incubator/geo/XGR-geo-20071023/) – termeni pentru
des rierea u or oţiu i spaţiale lo aţie, suprafaţă et . 1
URI o trolaţi şi sta dardizaţi
Wikipedia se tradu e treptat î aza de u oști țe DBPedia, unde s-au stabilit URI pentru resursele despre
are e istă pagi i Wikipedia. Reutilizarea ter e ilor DBPedia a per ite lie ţilor să a eseze i for aţii
pu li e di DBPedia por i d de la aza oastră de u oşti ţe fără a oi să opie a ele i for aţii î
propria ază de u oşti ţe – vezi i terogările federative de la se i ar!).
• Exemple de termeni DBPedia:
– http://dbpedia.org/ontology/Building lasa lădirilor, o eptul de Clădire
– http://dbpedia.org/resource/South_Africa i sta ța Afri a de Sud

W3C a propus o serie de URI sta dardizaţi pe tru concepte fundamentale (clasă, resursă, proprietate) şi
pentru relații fu da e tale (e hi ale ță, disti ție, re ipro itate etc.):
• Exemple de terminologii standard: RDF/S (exemplu de termen - rdf:type), OWL (exemplu de termen -
owl:sameAs)
• Ter e ii sta dardizaţi au prefi e sta dardizate:
– rdf: (http://www.w3.org/1999/02/22-rdf-syntax-ns#)
– rdfs: (http://www.w3.org/2000/01/rdf-schema#)
– owl: (http://www.w3.org/2002/07/owl#)
• Be efi iile adoptării ter e ilor sta dardizaţi:
• toată lu ea îi u oaşte şi poate realiza i terogări pe aza lor;
• pute să-i folosi î a io e e or per ite al ulatorului să realizeze dedu ţii auto ate 2
ge erarea de afir aţii oi, dete tarea de o tradi ţii
Exe ple de URI sta dardizați
http://expl.at#Class
http://expl.at#isOfType
http://expl.at#Human

http://expl.at#isOfType
http://expl.at#isAKindOf

http://expl.at#Man

http://expl.at#isOfType
http://expl.at#equivalentTo
http://expl.at#John http://other.at#Johnny

URI din exemplu, URI sta dardizaţi, Se ifi ație


i provizaţi de utilizat în locul celor din exemplu
http://expl.at#Class http://www.w3.org/2000/01/rdf-schema#Class Co eptul de lasă/ ulți e
(prefixat în Turtle: rdfs:Class)
http://expl.at#isOfType http://www.w3.org/1999/02/22-rdf-syntax-ns#type Relația de aparte e ță la o ulți e relaţia dintre o
(prefixat în Turtle: rdf:type sau litera a fără prefi ) i sta ță și o lasă
http://expl.at#isAKindOf http://www.w3.org/2000/01/rdf-schema#subClassOf Relația de i luziu e î tre ulți i, de spe ializare î tre
(prefixat în Turtle: rdfs:subClassOf) lase relaţi di tre o lasă și super lasa sa)
http://expl.at#equivalentTo http://www.w3.org/2002/07/owl#sameAs Relația de e hi ale ță î tre doi URI are ide tifi ă a elași
(prefixat în Turtle: owl:sameAs) lucru 3
Atenţie la disti ţia di tre relaţiile
standardizate din imagine:
http://expl.at#Human

http://expl.at#isAKindOf (sau, varianta standard rdfs:subClassOf)

http://expl.at#Man

http://expl.at#isOfType (sau, varianta standard rdf:type)

http://expl.at#John

Limbaj natural Teoria ulţi ilor Programare o ie tuală

JohnĂESTEĂB rbat John ∈ Băr at John i sta eOf Băr at


("a fi" la singular) aparte e ţă i sta ţiere
B rbaţii SUNT Oameni Băr at ⊂ Om Băr at extends/inherits Om
("a fi" la plural) (incluziune) (su lasă/moşte ire
sau (reformulat ca regulă/axiomă)
ORICEĂB rbatĂESTEĂOm
sau
DAC ĂxĂESTEĂB rbat,ĂATUNCIĂxĂESTEĂOm
(aparent aici "a fi" are formă de singular, dar ca semnificaţie e o
regulă generală, aplicată la plural!)
Continuaţi ur ătoarele î lă ţuiri î
mod logic
Băr at ⊂ Om ⊂ ........? Fiinţă Băr at={John, Peter, ...} (clasă
Om={John, Peter, Mary, ...} (clasă
Fiinţă={John, Peter, Mary, Grivei, ...} (clasă

Băr at ⊂ Om ∈........? Specie Băr at={John, Peter, ...} (clasă


Om={John, Peter, Mary, ...} (clasă şi i sta ţă
Specie={Om, Câine, ...} (clasă

John ∈ Miner ∈ .......? Profesie John i sta ţă


Miner={John, Peter, ...} (clasă şi i sta ţă
Profesie={Miner, Medic, ...} (clasă

John ∈ Miner ⊂.......? Muncitor John i sta ţă


Miner={John, Peter, ...} (clasă
Muncitor={Joh , Peter, A dre , …} (clasă

Atenţie la o fuzia di tre rdf:t pe (∈ şi rdfs:su ClassOf ⊂)!


Reutilizarea de termeni
Cazul ideal pe tru i teropera ilitate se a ti ă: toată lu ea folosește a elași URI pe tru a elaşi lu ru
• Graful stâ g aparți e orga izației are deți e do e iul http://expl.at
• Graful drept aparți e orga izației are deți e http://other.at
• A ele orga izaţii deți i for ații despre A dre (prima despre familia sa, a doua despre job)
• A ele orga izații știu ă A dre are deja u ide tifi ator glo al reat de el î suşi și îl utilizează

http://expl.at#Anna http://andrew.at#Andrew

http://expl.at#isMotherOf

http://other.at#worksAt

http://andrew.at#Andrew

http://other.at#ABC
http://expl.at#hasAge

20

6
Co se i ță
Chiar da ă grafurile su t sto ate pe ser ere diferite, u adrese de do e iu diferite, i terogările or putea
par urge o e iu ile di tre ele datorită reutilizării ide tifi atorului lui A dre .
Graful pe are îl ăd i terogările are ur ătoarea for ă, hiar da ă părţi ale lui su t sto ate pe ser ere
diferite:

http://expl.at#Anna

http://expl.at#isMotherOf
Pe serverul
http://other.at#worksAt
EXPL http://other.at#ABC
http://andrew.at#Andrew

http://expl.at#hasAge
Pe serverul OTHER

20

I terogările or putea a iga a est graf agregat pe tru a ole ta


u oşti ţe de pe a ele ser ere ezi i terogările federati e de
la seminar!)
Be efi ii ale ter e ilor sta dardizaţi:
echivalarea
Caz neideal, dar mai realist: orga izaţii diferite reează URI diferiți pe tru a eleaşi lu ruri (resurse)
• Orga izația di stâ ga reează u URI pe tru A dre
• Orga izația di dreapta reează alt URI pe tru a elaşi A dre , efii d o știe tă de pri a
• Orga izația di stâ ga află a est lu ru, dar tre uie să păstreze propriul URI ă i e istă deja apli aţii
are îl foloses şi u pot fi odifi ate
• Orga izația di stâ ga de ide totuși să asigure i tegrarea și î a est s op de lară e hi ale ța î tre
cei doi URI

http://other.at#Andy
http://expl.at#Anna

http://expl.at#isMotherOf
owl:sameAs
http://other.at#worksAt

http://expl.at#Andrew
http://other.at#ABC

http://expl.at#hasAge

20
Co se i ță
• Se pot rea i terogări are să tra erseze relaţia owl:sameAs pe tru a ole ta i for aţiile o ple e tare despre
Andrew din cele 2 surse;
• Se or putea rea reguli are să tra sfere tot e se ştie despre A dre la A d , pre u şi i ers, ezi figura:

http://expl.at#Anna

http://expl.at#isMotherOf

http://expl.at#isMotherOf http://other.at#Andy

owl:sameAs
http://other.at#worksAt
http://expl.at#Andrew

http://other.at#ABC
http://other.at#worksAt

http://expl.at#hasAge http://expl.at#hasAge

20

Ate ţie, da ă e hi alarea e de larată î tre URI di a eeaşi ază de u oşti ţe, e e utarea regulii are
opiază afir aţiile î tre ei doi i di izi are a efe t o dupli are puter i ă a i for aţiei redu da ţă!)
De a eea u ele siste e i ple e tează "sa eAs opti izatio " ge erarea afir aţiilor dupli ate doar â d
sunt solicitate de o interogare, apoi distrugerea lor)
Ate ţie, nici reutilizarea, nici echivalarea nu sunt posibile
la oduri a o i e di aze de u oşti ţe diferite

Presupu e ă două orga izaţii foloses u od a o i de u it la fel _:Andrew)

http://expl.at#Anna
_:Andrew
http://expl.at#isMotherOf

http://other.at#worksAt

_:Andrew
http://other.at#ABC

http://expl.at#hasAge

20

10
Ate ţie, nici reutilizarea, nici echivalarea nu sunt
posibile la oduri a o i e di aze de u oşti ţe
diferite

Nodurile anonime au identitate locală şi i sta ilă: se odifi ă ar itrar la


salvare/transferare î tre aze de u oşti ţe:

http://expl.at#Anna _:u989898

http://expl.at#isMotherOf
http://other.at#worksAt

_:u1213133 http://other.at#ABC

http://expl.at#hasAge

20

Totuși, nodul a o i di stâ ga va o ti ua să


conecteze afir ațiile di stâ ga, u o diţia a acestea
să fi fost salvate deodată, pe a elaşi server 11
Noduri anonime
A eştia su t ter e i are u su t i i URI, i i valori si ple, i au for a _:x
• Asigură o ide titate lo ală şi te porară, u u a glo ală şi persiste tă:
– adesea acel "x" e un cod intern generat arbitrar la salvarea afirmaţiilor
– ide tifi atorii odurilor a o i e u au pro e ie ţă se prefi ează u u ders ore
– Ide tifi atorii odurilor a o i e se pot reutiliza doar î afir aţii s rise si ulta la sal ări su esi e,
odurile lor se or rege era, de i o e iu ile î tre afir aţii sal ate separat se pierd
– nu pot fi e hi alaţi â d apar î aze de u oşti ţe diferite
• Nu pot apare î i terogări
– nu pute pu e î tre ări legate DIRECT de u od a o i , dar pute pu e î tre ări legate de odurile
o e tate la a esta, u de răspu sul e efi iază şi de preze ţa odului a o i
• Se foloses pe tru a grupa afir ații î di erse patter uri/fraze o ple e, e itâ d
i trodu erea artifi ială de URI oi

Exemplu (prefixul e omis):


:Anna :isParentOf _:x . _:x :isParentOf :Andrew .
• Nu putem interoga Ci e e pări tele lui _:x?, dar putem interoga Cine e bunica lui Andrew? (beneficiind de poziţia
lui _:x ca nod intermediar)
• Cele două afir aţii se or o e ta doar da ă su t sal ate deodată pe u ser er de u oşti ţe. Da ă le sal ă
separat, ce doi _:x vor primi coduri arbitrare diferite => conexiunea afirmaţiilor se pierde => nici interogarea 12
Cine e
bunica lui Andrew? nu va mai fi posibilă
Utilizarea nodurilor anonime
Un nod anonim poate conecta "câmpurile" unei structuri de date complexe.

=> 1: noduri anonime ca structuri complexe de date!

* ei oloraţi u roşu su t URI


http://expl.at#Anna
http://expl.at#address sta dardizați

http://expl.at#livesAt rdf:type

_:x

http://expl.at#City
http://expl.at#Wien
http://expl.at#Nr
http://expl.at#Str
20 http://expl.at#Ap

http://expl.at#Brunner
200

13
Utilizarea nodurilor anonime
Reifi are = afir ații despre afir ații

Mary believes that Peter is the brother of Andrew.

Care su t ter e ii afir ației?


• Subiect = "Mary"
• Predicat = "believes"
• Obiect = "Peter is the brother of Andrew" (o ie tul e o afir ație!)

Cu odelă e e plul fără a î ăl a stru tura de triplet a afir aţiilor?

14
Utilizarea nodurilor anonime
=> 2: odurile a o i e per it o pu erea de fraze o plexe di afir ații
simple.

* ei oloraţi u roşu su t URI


http://expl.at#Mary sta dardizaţi

http://expl.at#believes
rdf:Statement

rdf:type
_:belief

rdf:subject rdf:object

rdf:predicate
http://expl.at#Peter
http://expl.at#Andrew

http://expl.at#isBrotherOf
15
Utilizarea nodurilor anonime
"Fraze complexe" pot î se a și propoziții o e tate pri operatori logi i

Mary's son is Peter or Andrew.


* ei oloraţi u roşu su t URI sta dardizaţi

http://expl.at#Peter
rdfs:member
http://expl.at#Mary _:x
http://expl.at#hasSon
rdfs:member

rdf:type
http://expl.at#Andrew
rdf:Alt

*operatorul AND e i pli it apli at î tre afir ații dar i pli area, egația, disju ția
tre uie e pri ate pri astfel de o stru ții

16
Utilizarea nodurilor anonime
"Fraze complexe" pot î se a și propoziții o e tate pri operatori logi i

Mary's son is Peter or John's son is Andrew.

rdf:Alt rdf:type

_:x
rdfs:member
rdfs:member
_:y
_:z rdf:type
rdf:type rdf:subject
rdf:subject
rdf:Statement http://expl.at#John
http://expl.at#Mary

rdf:predicate
rdf:predicate
rdf:object rdf:object

http://expl.at#Peter http://expl.at#hasSon http://expl.at#Andrew

* ei oloraţi u roşu su t URI sta dardizaţi 17


Utilizarea nodurilor anonime
Andrew’s grade o Math is .

=> 3: odurile a o i e per it expri area relațiilor de aritate are = ai ult


de 2 parti ipa ți
http://expl.at#Andrew

2
http://expl.at#has

http://expl.at#grade

_:x

rdf:type
http://expl.at#course

http://expl.at#ComplexRelation http://expl.at#Math

18
Utilizarea nodurilor anonime
Peter, Andrew and Anna are colleagues.

A putea apli a o rețea de relații i are: Dezava taj: fie are ou e ru va atrage după
si e rearea u ui u ăr tot ai are de afir aţii!

http://expl.at#colleagueWith http://expl.at#Mary
http://expl.at#Anna

http://expl.at#colleagueWith
http://expl.at#colleagueWith
http://expl.at#colleagueWith

http://expl.at#colleagueWith

http://expl.at#colleagueWith
http://expl.at#Peter http://expl.at#Andrew

19
Utilizarea nodurilor anonime
Dar de e i ai fle i ili da ă grupă toți i di izii su u od a o i are
reprezi tă grupul de la parti ipa ți î sus o a ea ai puți e afir ații de
adăugat
=> 4: odurile a o i e pot repreze ta o tai ere, grupări et .

*URI oloraţi î roşu su t


U e ru ou, o afir aţie
http://expl.at#Anna sta dardizaţi
ouă

http://expl.at#Mary rdf:Bag
rdfs:member
rdf:type
rdfs:member

_:group

rdfs:member
rdfs:member

http://expl.at#Peter http://expl.at#Andrew

20
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.

Graful de mai jos nu e recomandat: ordi ea opiilor depi de de u i terpretă URI


proprietăților
• proprietăţile tre uie să fie ât ai reutiliza ile
• u ărul de opii poate rește i pre izi il î ti p

http://expl.at#Anna

http://expl.at#hasThirdChild

http://expl.at#hasFirstChild
http://expl.at#hasSecondChild

http://expl.at#Peter http://expl.at#Andrew http://expl.at#Mary

21
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.

Ni i a eastă a ordare u e re o a dată: A e proprietăți reutiliza ile (hasChild, index),


dar u e lar da ă i de ul e pri ă ordi ea opiilor de i se apli ă lui hasChild sau da ă se
apli ă altor relaţii î are su t i pli aţi a eiaşi opii ordi ea di Stude tGroup
http://expl.at#Anna
http://expl.at#StudentGroup

http://expl.at#contains http://expl.at#hasChild http://expl.at#hasChild


http://expl.at#contains
http://expl.at#hasChild
http://expl.at#Mary

http://expl.at#Peter
http://expl.at#Andrew

http://expl.at#index

http://expl.at#index http://expl.at#index
3
1
2
22
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.

Ni i a eastă a ordare u e re o a dată: U i de apli at dire t u ei proprietăţi este


apli at si ulta tuturor utilizărilor a elei proprietăţi RDF u disti ge î tre i sta țele
a eleiași proprietăți, toate au a elași URI!)

http://expl.at#Anna

http://expl.at#hasChild http://expl.at#hasChild
http://expl.at#index
http://expl.at#hasChild
1 http://expl.at#Mary

http://expl.at#Peter
http://expl.at#Andrew

23
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
Acum e OK: Noduri a o i e sta iles o relație de aritate î tre A a, fie are opil al său
și i de ul e dă ordi ea opilului, de i u ai e istă o fuzii legat de ordi e. A eiaşi opii
pot fi i pli aţi î alte relaţii ordo ate, u alte u ere de ordi e!
=> 5: nodurile anonime pot exprima ordonarea
http://expl.at#StudentGroup
http://expl.at#Anna

http://expl.at#contains
http://expl.at#hasChild

http://expl.at#hasChild http://expl.at#hasChild _:a


_:z
_:x _:y
http://expl.at#student
http://expl.at#index
http://expl.at#index http://expl.at#index
2 3
http://expl.at#child
1 http://expl.at#index
http://expl.at#child
http://expl.at#child
1
http://expl.at#Peter http://expl.at#Andrew
http://expl.at#Mary

24
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.

Alter ativă: Nodurile a o i e pot rea o stru tură re ursi ă de tip listă î hisă a î
Prolog). Ca şi î azul pre ede t, a eiaşi opii pot fi i pli aţi şi î alte liste, u alte ordi i şi
alte se ifi aţii!
rdf:List
*URI oloraţi î roşu su t
http://expl.at#Anna
sta dardizaţi
rdf:type
rdf:type
http://expl.at#hasChildren
rdf:type

_:z rdf:nil
_:x _:y rdf:rest
rdf:rest
rdf:rest

rdf:first
rdf:first
rdf:first

http://expl.at#Peter http://expl.at#Andrew
http://expl.at#Mary

25
Utilizarea nodurilor anonime
Anna is the mother of someone who works in a city from Austria.
I for ația i o pletă e totuși aloroasă – e per ite să ge eră o relație î tre A a și
Austria.
=> 6: odurile a o i e î lă țuie ai ulte afir ații, per ițâ d ge erarea de oi relații
Relația ge erată*

http://expl.at#hasRelativesIn
http://expl.at#Anna http://expl.at#Austria

http://expl.at#locatedIn
http://expl.at#isMotherOf

_:x
_:y
http://expl.at#worksIn

*ge erarea de relaţii oi se realizează u ajutorul regulilor (de exemplu, cu


interogări CONSTRUCT sau INSERT, dar e posi il şi u a io e OWL
26
Utilizarea nodurilor anonime
Exemplu:
Mar e opilul di pri a ăsătorie a lui Joh S ith
=> 7: nodurile anonime pot fi lo ţiitori pe tru resurse ale ăror ide tităţi u
se u os sau u prezi tă i teres pe tru i terogările / apli aţiile lie t
prevăzute
Varia tă î are e efi ie de teh i ile dis utate
pe tru e pri area ordi ii se poate o epe şi o
varia tă î are ordi ea e e pri ată pri listă
Varia tă dis utată deja: re ursivă

_:x 1 2
_:y _:x _:y
:copilulLui :primaSotie :index
:aDouaSotie :sotie :index
:sotie
_:a
:Mary _:b
:JohnSmith
:copilulLui :aAvutSotia
:aAvutSotia
:copilulDinCasatoria

:Mary :JohnSmith
Ate ţie la î i area ai ultor
ordo ări
Mar S ith a fost pri a soţie a lui Joh S ith di ăs i ii .

Joh S ith a fost al doilea soţ al lui Mar S ith di ăs i ii


A est od are două valori i de ! Nu e clar care Nu uitaţi ă u ele odurilor
dintre ele e u ărul soţului lui Mar şi are e anonime se pierd, deci nu ne putem
u ărul soţului lui Joh ! baza pe numerotarea lor!

1 2 3
:MarySmith _:sotia2 _:sotia3

:aAvutCasnicieCu :aAvutCasnicieCu :index :index :index


:aAvutCasnicieCu :aAvutCasnicieCu
_:y _:z _:w
_:x
:aAvutCasnicieCu :aAvutCasnicieCu
:index :index
:aAvutCasnicieCu
:aAvutCasnicieCu
_:sot1 1 2
:JohnSmith
Ate ţie la relaţiile î tre ele e te di
liste diferite
A u disti ţia î tre ele două ordo ări e ai lară:
MarySmith a fost prima soţie a lui Joh S ith di ăs i ii .
JohnSmith a fost doilea soţ al lui Mar S ith di ăs i ii

rdf:first _:a :casniciiCu

_:sot1 _:MarySmith _:sotie2 _:sotie3


rdf:rest

_:b
rdf:first rdf:first rdf:first

_:x _:y
rdf:rest rdf:rest _:z
rdf:first

:casniciiCu
Atenţie, toate listele se
rdf:rest
:JohnSmith rdf:rest o e tează la a elaşi
apăt!
rdf:nil
…interogarea grafurilor RDF…

Documentație:
SPARQL: http://www.w3.org/TR/sparql11-update/

30
Tipuri de i terogări
• I terogări de itire = i terogări are u odifi ă
aza de u oşti ţe:
– SELECT, ASK, DESCRIBE, CONSTRUCT
• I terogări de s riere = i terogări e odifi ă aza
de u oşti ţe:
– Modifi ări gra ulare (pot avea loc la nivelul unei
si gure afir aţii : INSERT, DELETE, DELETE/INSERT
– Modifi ări la ivel de graf (afectează u graf î treg :
LOAD, ADD, MOVE, COPY, DROP

Avertis e t: î Sesa e itirile şi s rierile se e e ută î ferestre diferite.


I terogări de itire
Comenzi:
• SELECT – o a da de ază, itește afir ații pe aza u or
patternuri;
• SELECT cu GRAPH sau FROM – itește afir ații filtrate după graf
u it şi " o te t" î Sesa e ;
• SELECT cu SERVICE – itește afir ații de la ser i ii We de
interogare (servicii SPARQL endpoint);
• ASK – i terogare u răspu s oolea (testează e iste ța sau
a se ţa unor afir aţii ;
• DESCRIBE – soli ită toate afir ațiile e o ți u anumit termen
("tot e se știe despre o resursă" ;
• CONSTRUCT – per ite e e uţia de reguli, adi ă ge erarea de
afir aţii oi î să u le sto hează î aza de u oşti ţe, doar le
li rează lie tului!

32
E e ple de i terogări
Exemplu de graf RDF scris în Turtle
Am folosit @base în loc de @prefix!
cu @base, toţi ter e ii vor fi " ăi relative" la o a eeaşi "adresă de ază"
=> se foloseşte â d toţi ter e ii au a eeaşi prove ie ţă (deci nu e nevoie de
diferenţierea prefi elor
=> URI nu mai au prefix, dar trebuie î adraţi u para teze u ghiulare a î N-triples)
@base <http://expl.at>.
<#JamesCameron> <#directed> <#Avatar>, <#Terminator>.
<#Arnold> <#playedIn> <#Terminator>;
<#governed> <#California>.
<#Terminator> <#hasTitle> "Terminator".
<#California> <#hasName> "California".
<#Arnold> <#hasName> "Arnold Schwarzenegger".
<#JamesCameron> <#hasName> "James Cameron".
<#Avatar> <#hasTitle> "Avatar".

*Resursele ar tre ui să ai ă eti hete atașate, iar i terogările ar tre ui să soli ite astfel de eti hete î vederea
afișării spre utilizatorul fi al. E e plele oastre u vor fa e î totdeau a asta, pe tru a e e plifi a diverse33
situaţii
E e ple de i terogări
BASE <http://expl.at>* ?m
SELECT ?m <#Avatar>
WHERE {<#JamesCameron> <#directed> ?m} <#Terminator>
= retur ează toate fil ele regizate de James Cameron

SELECT ?p ?o ?p ?o
WHERE {<#Arnold> ?p ?o}
<#playedIn> <#Terminator>
= retur ează toate afir ațiile despre Ar old
<#governor> <#California>
SELECT ?x
WHERE {<#JamesCameron> <#directed> ?mov.
?x <#playedIn> ?mov. ?x
?x <#governed><#California>} <#Arnold>
= ce guvernator din California a jucat într-un film regizat de James Cameron?

*Ca și î Turtle, base sau prefix trebuie declarate (dar fără @ și fără pu t fi al). Vom omite aceste
de larații î a este e e ple pe tru a u î ăr a slide-urile
34
E e ple de i terogări
?mov
SELECT ?mov
<#Terminator>
WHERE {<#JamesCameron> <#directed> ?mov.
?mov <#hasTitle> ?t.
FILTER regex(?t,"^T")}
= ce film regizat de James Cameron are un titlu ce începe cu T? (filtrare după e presie regulată)

SELECT ?mov
?mov
WHERE {<#JamesCameron><#directed>?mov.
<#Terminator>
<#Arnold><#playedIn> ?mov}
= ce film regizat de James Cameron îl are pe Arnold în el?

35
E e ple de i terogări
SELECT ?x ?mov
WHERE { <#JamesCameron>
{?x <#directed> <#Terminator>}
<#Arnold>
UNION
{?x <#playedIn> <#Terminator>}
}
= retur ează pe ei are "au ju at î " SAU "au regizat" Ter i ator (reuniune de
rezultate di două şa loa e)

SELECT ?x ?x
WHERE {
?x <#directed> <#Terminator>.
?x <#playedIn> <#Terminator>
}
= retur ează pe are "au ju at î " ȘI "au regizat" Terminator (i terse ție de
rezultate)
36
E e ple de i terogări
?n ?mov

SELECT ?n ?mov "California"


WHERE { "Arnold Schwarzenegger" <#Terminator>
?x <#hasName> ?n.
"James Cameron"
OPTIONAL {?x <#playedIn> ?mov}}
= retur ează TOATE numele indivizilor și, unde e cazul, filmul în care au jucat (î a se ța lui
OPTIONAL nu vom primi numele celor care nu au jucat în nici un film)
?t
SELECT ?t "Avatar"
WHERE "Terminator"
{<#JamesCameron> <#directed>/<#hasTitle> ?t}
= retur ează titlurile lucrurilor regizate de James Cameron (exemplu de cale de predicate
î lă țuite)

SELECT ?x ?y ?x ?y
WHERE
<#JamesCameron> <#Arnold>
{?x <#directed>/^<#playedIn> ?y}
= retur ează titlurile perechile regizor-actor care au lucrat la acelaşi fil (di ou î lă ţuire,
dar ţi e o t de faptul ă de la fil la a tor se aju ge î se s opus relaţiei)

37
E e ple de i terogări
I terogări oolee e:
ASK {?x <#directed> ?movie. YES
?y <#playedIn> ?movie}
= a e regizori și a tori are au lu rat la a elași fil ?
(răspu s oolea : Yes sau No)

Solicitare de descrieri complete:


Subject Predicate Object
DESCRIBE <#Terminator> <#JamesCameron> <#directed> <#Terminator>
= retur ează tot e se știe despre Terminator <#Arnold> <#playedIn> <#Terminator>
(toate afir ațiile e o ți Terminator) <#Terminator> <#hasTitle> "Terminator"

38
E e ple de i terogări
I terogări oolee e:
ASK {?x <#directed> ?movie. YES
?y <#playedIn> ?movie}
= a e regizori și a tori are au lu rat la a elași fil ?
(răspu s oolea : Yes sau No)

Solicitare de descrieri complete:


Subject Predicate Object
DESCRIBE <#Terminator> <#JamesCameron> <#directed> <#Terminator>
= retur ează tot e se știe despre Terminator <#Arnold> <#playedIn> <#Terminator>
(toate afir ațiile e o ți Terminator) <#Terminator> <#hasTitle> "Terminator"

39
Reguli SPARQL: ge erarea de oi afir ații
" o luzii" u ajutorul i terogărilor

CONSTRUCT
{?x <#workedWith> ?y}
WHERE
{?x <#directed> ?movie. ?y <#playedIn> ?movie}*
= ge erează afir ații e conectează dire t regizorii și a torii are au lu rat î a elași fil
<#JamesCameron> <#directed> <#Terminator>.
<#Arnold> <#playedIn> <#Terminator>.

<#JamesCameron> <#workedWith> <#Arnold>.

Deoare e CONSTRUCT NU e o operație de s riere, rezultatul u e adăugat la graful origi al, i retur at
lie tului pe e ra sau î e orie pe tru prelu răuri ulterioare ; lie tul va de ide da ă să le salveze
permanent sau nu.

*clauza WHERE se poate s rie şi prin î lă ţuire:


{?x <#directed>/^<#playedIn> ?movie} 40
Exemple de i terogări cu sursa
precizată
Sursa poate fi un graf local:
SELECT *
WHERE {
GRAPH <#g1> {?x ?y ?z}}
= retur ează toate afir ațiile di graful #g1

Sursa poate fi un serviciu public:


SELECT *
WHERE {
SERVICE <http://dbpedia.org/sparql> {?x ?y ?z}}
= retur ează toate afir ațiile de la ser i iul SPARQL DBPedia

Sursa poate fi un graf al unui serviciu:


SELECT *
WHERE {
SERVICE <http://expl.at/myservice> {GRAPH <#g1> {?x ?y ?z}}
= retur ează toate afir ațiile din graful g1 oferit de serviciul myservice
41
Exemple de i terogări cu sursa
precizată
Pentru următoarea interogare presupunem că deţi e u graf serviceDescriptions
î are su t des rise ai ulte ser i ii pu li e şi grafurile oferite de a estea :
<#serviceDescriptions>
{
<#myService> <#offersGraphs> <#g1>, <#g2>.
<#g1> <#hasReputation> 10. <#g2> <#hasReputation> 5.

<#otherService> <#offersGraphs> <#g3>.


<#g3> <#hasReputation> 10
}

Atât grafurile ât şi ser i iile pot de e i aria ile


SELECT *
WHERE {
GRAPH <#serviceDescriptions> {?s <#offersGraphs> ?g. ?g <#hasReputation> 10 }
SERVICE ?s {GRAPH ?g {?x ?y ?z}}
= retur ează, de la toate serviciile descrise în graful serviceDescriptions, toate
afir ațiile din toate grafurile cu reputaţie pe are a estea le oferă o for
i for aţiei di ser i eDes riptio s
42
Cu arată rezultatele
i terogărilor de itire SPARQL?
Depi de de tipul i terogării:
– CONSTRUCT, DESCRIBE retur ează grafuri seturi de afir aţii i e for ate , î tr-una din sintaxele RDF:
Turtle, N-triples etc.
– ASK retur ează alori oolee e
– SELECT poate returna structuri diverse (liste, tabele incomplete, vezi mai jos)
?n
"California"
SELECT ?n
WHERE {?x <#hasName> ?n} "Arnold Schwarzenegger"

"James Cameron"

SELECT ?n ?mov ?n ?mov


WHERE {?x <#hasName> ?n.
"California"
OPTIONAL {?x <#playedIn> ?mov}}
"Arnold Schwarzenegger" <#Terminator>

"James Cameron"

Datorită eregularităţii rezultatelor SELECT, s-a propus un format standard numit


SPARQL Results (un format tabelar, cu variante sintactice disponibile ca structuri JSON, XML,
CSV)
Formatul standard SPARQL Results în
varianta XML
<sparql>
<head>
<variable name="?movie" />
…………..Fiecare <variable> indică u ele u ei aria ile retur ate " â p" al ta elului
</head>
<results>
<result>
<binding name="movie">
<uri>http://expl.at#Terminator</uri>
</binding>
………….. Fiecare <binding> indică u ele şi aloarea u ui " â p", î adrul u ei î registrări
</result>
………………. Fiecare <result> indică o î registrare di ta elul retur at
</results>
</sparql>

44
Formatul standard SPARQL Results în
varianta JSON

{
"head": { "vars": [ "movie", ....aici se enumeră u ele aria ilelor retur ate...] } ,
"results":
{"bindings":
[ {
{"movie": { "type": "uri" , "value": "http://expl.at#Terminator" } } ,
{…},
…aici se enumeră â purile u tipul şi aloarea lor, pe tru o î registrare...
},
…ai i se e u eră î registrările retur ate...
]
}
}
45
I terogări de s riere SPARQL Update
SPARQL Update extinde SPARQL u operații de s riere:
• LOAD – î ar ă afir ații de la o sursă e ter ă;
• INSERT DATA – adaugă afir ații e pli ite la u graf, i depe de t de afir aţiile
existente;
• INSERT WHERE – adaugă afir ații pe aza u ui şa lo e le o e tează la
afir aţiile e iste te;
• DELETE DATA – șterge afir ații e pli ite;
• DELETE WHERE – șterge afir ații pe aza u ui patter ;
• INSERT/DELETE – se o i ă pe tru operații de a tualizare ( u e istă o a da
UPDATE!);
• ADD – fuzio ează două grafuri;
• MOVE – rede u ește u graf altfel spus, ută tot o ți utul di tr-un graf în
altul, î lo ui d o ți utul grafului desti ație şi ştergâ d graful origi al);
• COPY – opiază afir ații di tr-u graf î altul, î lo ui d o ți utul grafului
desti ație dar păstrâ d şi graful origi al;
• DROP – șterge u graf.

46
SPARQL Update:
operaţii la i el de graf
LOAD <http://myserver.com/facts.ttl>
INTO GRAPH :g1
= adaugă î g afir ații a esate de pe We (dintr-u fișier Turtle stati dispo i il o -line
pe serverul myserver.com)

ADD GRAPH :g1 TO GRAPH :g2


= fuziu e: adaugă toate afir aţiile di graful g î g păstrâ d şi graful g

COPY GRAPH :g1 TO GRAPH :g2


= opiere: opiază toate afir aţiile di graful g î lo ul elor di g î lo uieşte
o ţi utul lui g , dar păstrează şi g

MOVE GRAPH :g1 TO DEFAULT


= redenumire/mutare: ută toate afir aţiile di graful g î graful i pli it fără URI ,
ştergâ d o ţi utul ve hi al a estuia, pre u şi graful g

DROP GRAPH :g
= ștergere unui graf integral
47
SPARQL Update:
i terogări gra ulare
WITH :network
DELETE {?x ?y ?z} WHERE {:Anna :knows ?x.?x ?y ?z}
= eli i ă di graful network toate afir ațiile despre
u os uții lui A a ai î tâi are lo u SELECT pe şa lo ul
WHERE, apoi varia lele a estuia se foloses pe tru ştergere

WITH :network
DELETE {:Anna ?x ?y} INSERT {:Anette ?x ?y} WHERE {:Anna ?x ?y}
= o aută pe A a î graful et ork și o su stituie u Anette
( u e istă o a da UPDATE, se folosește a eastă
o i ație de DELETE și INSERT a o si gură o a dă!)
48
SPARQL Update:
i terogări gra ulare
INSERT DATA
{
GRAPH :g1
{
:Mary :isRelativeOf :George.
:George :isRelativeOf :Aneta,:Peter.
}
}
= adaugă două afir ații oi î g1, indiferent de ce mai există î el

WITH :g1
INSERT {?y :isFatherOf ?x} WHERE {?x :isChildOf ?y}
= reează î g1 relații de opil a olo u de găsește relații de tată* WITH e per ite să evită folosirea lauzei
GRAPH de ori: o dată î şa lo ul INSERT, apoi î şa lo ul WHERE

*A easta e o altă teh i ă de e e utare a REGULILOR u ajutorul i terogărilor, alter ati ă la CONSTRUCT:
• CONSTRUCT ge erează afir aţii oi şi le li rează lie tului i terogării, fără a le sal a î aza de u oşti ţe
lie tul tre uie să le sal eze
• INSERT WHERE ge erează afir aţii oi şi le sal ează, fără a le li ra lie tului lie tul tre uie să le i terogheze
apoi cu SELECT) 49
…interogarea grafurilor RDF la
dista ţă…
Documentaţie:

Sesame protocol: http://openrdf.callimachus.net/sesame/2.7/docs/system.docbook?view#chapter-http-protocol


SPARQL Graph Store Protocol: http://www.w3.org/TR/sparql11-http-rdf-update/
SPARQL Protocol: http://www.w3.org/TR/sparql11-protocol/
Federated SPARQL:
http://www.w3.org/TR/sparql11-federated-query/
URI dereferencing and Content negotiation:
http://www.w3.org/TR/cooluris/
http://www.w3.org/TR/swbp-vocab-pub/

1
Metode de accesare a grafurilor RDF dintr-o apli aţie We
Apli aţie proprie
Bază de u oşti ţe p op ie

Li ă ii RDF pe t u p o esa ea g afu ilo e.g.,


rdflib), rezultatelor SPARQL (e.g., json) sau SPARQL sau
cererilor HTTP (e.g., urllib2) metode obiectuale locale
Metode (e.g, triples(), subjects())
obiectuale
Cereri HTTP spre URL-ul
unei pagini HTML
Internet
+ Distilare
SPARQL la
dista ţă SPARQL la
(SERVICE) dista ţă
HTML semantic (LOAD)
HTML + afi aţii
Servicii de interogare
Alte (endpoint)
apli aţii Cereri HTTP spre adresele serviciului +
Web co figurări co for protocolului oferit
de serviciu
Derefere ţiere
URI
Cereri HTTP spre un URI
Bază de + Negociere HTTP
u oşti ţe
Fişiere RDF
la dista ţă publice
Cereri HTTP neconfigurate spre URL-ul unui
fişier RDF static sau di a ic
Metoda 1: SPARQL la distanţă
E vor a de i terogări SPARQL e a esează dire t o adresă URL (pot fi testate î i te faţa Sesa e sau
într-o li ă ie e pe ite e e uţia di e tă de i te ogă i SPARQL, fă ă o figu ă i HTTP; de fapt a este
i te ogă i t i it e e i HTTP u işte o figu ă i i pli ite, de e e plu etoda GET).

Varia ta rudi e tară: se e ul e ote ofe ă u fişie RDF stati sau di a i de e . ge e at u u s ipt
PHP . Ad esa fişie ului sau a s iptului a e îl ge e ează poate fi a esată p i o a da LOAD ofe ită de
SPARQL:
LOAD <http://remoteserver.com/facts.ttl> INTO GRAPH :g1
LOAD <http://remoteserver.com/script.php> INTO GRAPH :g1

Varia ta sofisti ată: se e ul e ote ofe ă u se i iu de i te oga e. Ad esa se i iului a fi î o po ată


în SPARQL prin clauza SERVICE. Mai multe clauze SERVICE cu mai multe servicii vor realiza interogare
federativă ole ta ea de i fo aţii o e tate di ai ulte su se , de exemplu:
Organizaţia e deţi e ser er A oferă u oşti ţe Organizaţia e deţi e ser er B oferă u oşti ţe u
despre locul de muncă: privire la familie, despre aceiaşi i di izi:
:Robert :worksAt :UNIVIE. :Robert :hasKids 2.
:Patrik :worksAt :CompanyABC. :Patrik :hasKids 3.
I terogare federati ă: âţi opii au ei are lu rează la UNIVIE?
SELECT ?x ?n WHERE
{
SERVICE <http://serverA.com/sparql> {?x :worksAt :UNIVIE}
SERVICE <http://serverB.com/sparql> {?x :hasKids ?n}
}
Metoda 1: SPARQL la distanţă
LOAD poate a esa o i e ad ese URL a e etu ează grafuri bine formate în od i pli it fă ă o figu ă i
suplimentare)
• adresa poate fi a unui serviciu care returnează g afu i la a es i pli it p i metoda GET, fă ă alte
o figu ă i , de e e plu p i se i iul Sesa e:
LOAD <http://remoteserver.com/repositories/myRepo/statements> INTO GRAPH :g1
• adresa poate fi şi u te e URI a e supo tă "de efe e ţie e URI" fă ă alte o figu ă i HTTP:
LOAD <http://expl.at/JamesCameron> INTO GRAPH :g1

Interogările federative nu sunt suportate în orice libră ie/li aj de p og a a e. Alte ati a e să des o pu e
interogarea într-o su esiu e de i te ogă i si ple şi să pasă a ia ilele o u e î t e a estea. Exemplu (bazat
pe slide-ul precedent):

I terogare tri isă la ser erA. o :


SELECT ?x WHERE
{?x :worksAt :UNIVIE} => p esupu e ă a e rezultatele :Robert, :Mary, :Andrew

I terogării tri ise la ser erB. o i se or o ate a rezultatele pri ei i terogări:


SELECT
{?x :hasKids ?n}
BINDINGS ?x
{(:Robert) (:Mary) (:Andrew)}
* BINDINGS are ca efect reexecutarea interogării pe tru fie are aloare si ilar u ui i lu FOR
* î lo de BINDINGS se poate folosi şi lauza VALUES are per ite o struirea u ui ta el de alori (BINDINGS e doar un
şir de alori
Metoda2: Cereri HTTP neconfigurate
sp e ad esa u ui fişie RDF
• Si ila i te ogă ii LOAD, î să e e ea e fo ulată p i etode o ie tuale
spe ifi e fie ă ui li aj sau li ă ii.

E e ple P tho , u fu ţii a e li ă iilo dfli , espe ti u lli 2:


a.parse (location="http://myserver.com/facts.ttl", format="ttl")
b=urllib2.urlopen("http://myserver.com/facts.ttl").read()

Diferenţe:
• Variabila a e u g af i sta ţiat î p eala il p i dfli
• Variabila b va fi de tip string => se poate converti în graf rdflib (cu parse),
ă i p o esa ea a st i g e ai a e oioasă

Se apli ă şi ai i o se aţiile legate de o a da LOAD se pot a esa o i e


ad ese a e ăspu d i pli it u g afu i la e e i di e te, i lusi se i ii de
i te oga e sau de efe e ţie e
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare SPARQL ("endpoint")

Se i iile SPARQL foloses di e se p oto oale azate pe HTTP e esită o figu ă i


ale e e ilo HTTP . P i " o figu ă i" î ţelege u ătoa ele:

• Se i iul a eptă e e i HTTP la a u ite adrese URL u o stru tură fixată,


e e tual i luzâ d şi u ele u i te heie astfel de se i ii We su t
considerate de tip REST)

• Se i iul ea ţio ează dife it la dife iţi parametri HTTP e se pot ataşa ad eselo
URL t e uie o e tiţi p i t -o fu ţie de oda e URL pe t u a su stitui
caractere nepermise)

• Se i iul ea ţio ează dife it la dife ite metode HTTP (GET, POST, PUT, DELETE
etc.)

• Se i iul poate a epta sau ăspu de u dife ite si ta e. Clie tul îşi a e p i a
p efe i ţa u ajuto ul â pu ilo di antetul HTTP (Accept, Content-Type etc.)
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte stru tura adreselor:

Două protocoale au fost standardizate în acest scop:

• Protocolul Graph Store: pe ite ope aţii la i el de g af afe tează u g af î t eg: ea ea u ui g af,
şte ge ea u ui g af, upload de g af et .
Adresele oferite de protocol au de obicei forma
http://AdresaServiciului/LocatiaBazeiDeCunostinte/rdf-graphs/service?graph=IdentificatorulGrafului
http://AdresaServiciului/LocatiaBazeiDeCunostinte/rdf-graphs/service?default da ă se a esează
graful i pli it, fără ide tifi ator

• Protocolul SPARQL: pe ite ope aţii g a ula e e p i ate a i te ogă i SPARQL


Adresele oferite de protocol au forme precum:
http://AdresaServiciului/LocatiaBazeiDeCunostinte?query=interogarea i terogările de itire se
o ate ează ai i
http://AdresaServiciului/LocatiaBazeiDeCunostinte?update=interogarea i terogările de s riere se
o ate ează ai i)

E posi il a u se i iu să ofe e şi o adresă de bază, la care se pot face cereri neconfigurate (prin metoda
GET) pentru care s-a p egătit u ăspu s i pli it
=> astfel de ad ese o putea fi a esate şi p i metodele directe menţio ate (comanda
LOAD, fu ţii p e u pa se , u lope sau hia p i tasta ea ad esei î t -un browser)
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte stru tura adreselor:

În general serverele RDF a eptă ambele protocoale, eventual extinse cu adrese suplimentare (pentru a
o ţi e u ă ul de afi aţii, p efi ele et . . De e e plu Sesa e a eptă e e i la ad ese o puse
o fo u ăto ului ghid*:

Adresa de ază Sesa e, la are se pot tri ite ereri e o figurate pe tru a o ţi e o ţi utul i tegral al
u ei aze de u oşti ţe este: http://localhost:8080/repositories/BazaDeCunostinte/statements
*http://rdf4j.org/sesame/2.7/docs/system.docbook?view#Protocol_summary
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte para etrii:
I dife e t de p oto olul folosit, toţi pa a et ii graph, query, update t e uie t e uţi p i t -o
fu ţie de "codare URL" pentru a substitui caracterele nepermise sau ambigue dintr-un URL (în
P tho e fu ţia urlencode())

Î e priveşte etoda HTTP:


Î o i aţie u fo a ad esei şi u pa a et ii ataşaţi a esteia, etoda HTTP a di ta e să se
întâmple pe server. Exemple:
• Metoda POST î o i aţie u adresele protocolului GraphStore va uploada un graf
• Metoda PUT î o i aţie u adresele p oto olului G aphSto e a î lo ui o ţi utul u ui
graf
• Metoda DELETE î o i aţie u ad esele p oto olului G aphSto e a şte ge u g af
• Metoda GET î o i aţie u ad esele p oto olului G aphSto e a o ţi e o ţi utul u ui
graf
• Metoda POST t e uie folosită î o i aţie u pa a et ul update al protocolului SPARQL,
pe t u o i e i te ogă i de s ie e i lusi pe t u şte ge e
• Metoa POST se poate folosi î o i aţie u pa a et ul query al protocolului SPARQL,
pe t u i te ogă i de iti e de tip CONSTRUCT
• Metoda GET se foloseşte î o i aţie u pa a et ul query al protocolului SPARQL, pentru
i te ogă i de iti e î ge e al
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
În e priveşte antetul HTTP:

• Câmpul Accept se a folosi pe t u a p e iza si ta a î a e lie tul aşteaptă


ăspu sul de la se i iu. A easta dife ă î fu ţie de atu a ope aţiei:
– Da ă se aşteaptă ăspu s la o i te oga e SELECT, lie tul poate alege si ta e
precum JSON sau XML (reminder: SELECT u ăspu de u g afu i RDF, i cu
structuri tabelare!)
– Da ă se aşteaptă ăspu s la o i te oga e DESCRIBE, CONSTRUCT sau s-a solicitat
o ţi utul u ui g af, lie tul poate alege si ta e RDF Tu tle, N-triples etc.)

• Câmpul Content-Type se va folosi pentru a preciza sintaxa în care clientul trimite


cod RDF spre serviciu
– Se foloseşte â d a e lo upload de u oşti ţe de i u etodele POST/PUT)
– Da ă uploadul se ealizează p i i te oga e de e ., INSERT DATA , si ta a u ai
t e uie de la ată ă i o ţi utul e i lus î i te oga e

• Î a ele situaţii, sintaxa trebuie i di ată p i odul său MIME (pentru Sesame,
codurile MIME pot fi consultate la
http://rdf4j.org/sesame/2.7/docs/system.docbook?view#Content_types)
Metoda4: De efe e ţie ea URI
Derefere ţiere URI = u e a is i ple e tat pe se e pe t u a ăspu de la e e i HTTP
e î ea ă să a eseze u URI de e e plu â d u utilizato u a tastează u URI î a a
de ad esă URL a o se ului . Nu e istă u sta da d î e p i eşte ea ţia aşteptată se
poate etu a o e oa e , da e istă o se ie de e o a dă i p i i d a o dă i posi ile:

Abordare 1:
• Se e ul a edi e ta lie tul sp e u site sau o pagi ă We u i fo aţii utile desp e
a el lu u. Pe t u a easta, se e ul t e uie să găseas ă î p op ia ază de u oşti ţe
afir aţii e i di ă î tr-un mod standard resurse adresabile relevante pentru fiecare URI,
de exemplu:
:MichaelJackson rdfs:seeAlso <http://michaeljackson.com>.
:MichaelJackson foaf:page <http://michaeljackson.com>.

Abordare 2:
• Se e ul a etu a u fişie u afi aţii RDF desp e URI-ul soli itat, î si ta a do ită de
client. Pentru aceasta, serverul trebuie:
– să deţi ă u s ipt a e ge e ează di a i u fişie u toate afi aţiile desp e u a u it te e de
e e plu să e e ute o i te oga e DESCRIBE i te ă pe t u URI-ul solicitat)
– să i iţieze o negociere HTTP p i a e să de idă si ta a î a e să ofe e ăspu sul şi u doa si ta a,
se pot ofe i şi opţiu i legate de li ă, set de a a te e o i alte opţiu i dispo i ile î a tetul HTTP

Cele două a o dă i pot fi î i ate ego ie ea poate ofe i şi opţiu ea de edi e ta e


Tipuri de negociere HTTP

În cadrul mecanismului de derefere ţiere URI, se e ul t e uie să de idă u doa CE să ăspu dă, i şi î e FORMĂ
si ta ă, li ă, set de a a te e . Î fu ţie de u se ia de izia, a e tipu ile de ego ie e:

A. Negociere pe ază de o ţi ut, cu decizia clientului: Se e ul etu ează afi aţii î t -u fo at default sau ăspu s
gol , î să u odul HTTP 300 (Multiple Choices). Răspu sul a o ţi e li ku i la alte fo ate dispo i ile . Clie tul a i te oga
a ele li ku i şi a t i ite o a doua e e e sp e u ul di t e ele, o fo p efe i ţei de i su t e esa e i i 2 e e i HTTP).

Exemple de linkuri ce se pot include într-u ăspu s de tip Turtle, pe t u a i di a faptul ă a eleaşi u oşti ţe su t
dispo i ile şi î alte si ta e de ât fişie ul u e t e e tual hia şi a pagi i HTML :
:MichaelJackson rdfs:seeAlso <http://expl.at/MichaelJackson/statements/xml>, <http://michaeljackson.com>.

Exemple de linkuri ce se pot include într-u ăspu s de tip HTML, pe t u a i di a faptul ă di e se si ta e RDF su t
dispo i ile la u a sau ai ulte ad ese poate fi a eeaşi ad esă, î soţită de u od MIME la a e ad esa poate ăspu de u
si ta a do ită :
<link rel="alternate" type="application/rdf+xml" href="http://expl.at/MichaelJackson/statements"/>
<link rel="alternate" type="application/x-trig" href="http://expl.at/MichaelJackson/statements"/>

12
Tipuri de negociere HTTP

B. Nego iere pe ază de protocol, cu decizia clientului: Serverul ăspu de cu codul HTTP 303 (See Other) î soţit de â pul
de antet HTTP Location p i a e i di ă o listă u ad ese u de su t ofe ite fo ate alternative.
Clientul o sultă lista di a tetul HTTP, apoi i iţiază o a doua e e e sp e u a di ad esele di listă.

C. Negociere cu decizia serverului: Clie tul spe ifi ă de la u î eput fo atul p efe at, folosi d â pu ile de a tet HTTP
Accept (Accept, Accept-Language, Accept-Charset etc.), plus parametrul q pentru prioritizare. Exemplu de antet HTTP:

Accept: application/rdf+xml;q=0.6, text/html

A est e e plu i di ă p efe i ţa pe t u fo atul HTML a e u a e , de i e o side at i pli it u p io itate a i ă . Da ă


fo atul HTML u e dispo i il, e a epta ilă şi si ta a RDF /XML (prioritate q=0.6).
Serverul va verifica î o di ea p io ităţilo e si ta e poate ofe i şi ăspu de u ea ai p io ita ă u e o ligato iu a u
se e să poată ăspu de u o i e si ta ă!
Avantaj faţă de ego ie ile de tip A şi B: a e o si gu ă e e e HTTP
Dezavantaj faţă de ego ie ile de tip A şi B: lie tul u a e ga a ţia ă fo atele soli itate su t dispo i ile.

Î sfâ şit, ego ierea poate fi evitată da ă se e ul e p og a at să ăspu dă la o i e e e e u od HTML î ogăţit


semantic od HTML e ti s u afi aţii . Î a est az e i e lie tului espo sa ilitatea să e t agă afi aţiile di odul
su să, u ajuto ul u o p og a e u ite distilatoare.

13
Ate ţie, de efe e ţie ea e afe tată de
tipul de URI
Varianta1: Se a esează u URI de tip slash
• P esupu e ă esu sa soli itată a e ide tifi ato ul http://expl.at/George
• Mai multe URL-uri se pot p egăti p i p elu gi ea sa, pe t u di e se fo ate dispo i ile:
http://expl.at/George/html, http://expl.at/George/rdf, etc.
 A elaşi URI a oferi a es la ai ulte URL-uri

Varianta2: Se a esează u URI de tip hash


• P esupu e ă esu sa soli itată a e ide tifi ato ul http://expl.at/myknowledge#George
• Ai i p o le a e ă o e e e HTTP sp e a est ide tifi ato a eli i a auto at pa tea de după diez!
La server va ajunge cererea http://expl.at/myknowledge, i dife e t e URI se soli ită!
* Gâ diţi- ă la HTML: partea de după diez e u ID folosit doar î ro ser pe tru Ja aS ript, CSS et . . A el ID u
aju ge i iodată la ser er, ser erul răspu de u pagi a i tegrală
• Se e ul a ăspu de u toate afi aţiile a esi ile p i http://expl.at/myknowledge, lăsâ d î
sea a lie tului ăspu de ea filt ă ii afi aţiilo desp e Geo ge
 A elaşi URL a răspu de la ereri pe tru ai ulte URI

14
…pagini HTML semantice…
Documentaţie:
Microformate: http://microformats.org/
Microdate: https://www.w3.org/TR/microdata/
Terminologia Schema.org: http://schema.org/
RDFa: http://www.w3.org/TR/xhtml-rdfa-primer/
JSON-LD: http://json-ld.org/

1
Ce sunt paginile HTML semantice?
• E vorba de acele pagini Web care au afirmaţii î glo ate dire t î odul lor sursă.
– Clie ţii u au e oie de a es la aza de u oşti ţe, i pot e trage u oşti ţe dire t di odul sursă
al paginii
– Progra ele are asigură e tra ţia poartă u ele de distiller sau gleaner sau, în mod generic, parser
• Beneficii: afir aţiile u afe tează odul î are se ede pagi a HTML, dar "des riu"
lu rurile e ţio ate î a easta e e tual şi altele, e e ţio ate
– Un vizitator uman va vedea o pagină o iş uită, preze tată î ro ser
– Un "agent software" (clientul unei cereri HTTP, un add-o de ro ser, o apli aţie o ilă, u otor
de ăutare a edea afir aţii despre lu rurile e ţio ate î pagi ă
– Motoarele de ăutare se azează pe a eastă teh i ă pe tru a î ţelege "despre e" este o pagi ă
Web (=> e vorba deci despre "SEO semantic")

A ordări posi ile:


1. Nu se odifi ă i i î odul HTML, dar se o vertes î afir aţii a u ite structuri uzuale din
codul HTML (de ex., tag-urile TABLE, META) sau chiar din documente XML
• De regulă î a est o te t se foloseşte ter e ul "glea er"
2. Extinderea tag-urilor HTML cu microformate
3. Extinderea tag-urilor HTML cu microdate
4. Extinderea tag-urilor HTML cu atribute RDFa
• De regulă î a est o te t progra ul e tra tor e u it "distiller"
5. Sto area de grafuri î se ţiu ea Ja aS ript, î arra -uri create cu sintaxa JSON-LD
*Notă:
Pe tru a ordările 2-5 sintaxele sunt standardizate, deci programele extractoare sunt disponibile în mod public (ca servicii Web sau în
li rării di di erse li aje). Extractoarele de tip "gleaner" su t tra sfor ări XSLT e u se pot standardiza, deoarece trebuie create
individual pentru fie are site, î fu ţie de stru turile HTML sau XML existente în paginile sale. Proprietarul site-ului tre uie să ofere
a es şi la glea er.
Reminder: Google Rich Snippets
De unde provin
aceste detalii?

[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
<div itemtype="http://Schema.org/Movie" itemscope="itemscope">
Afir aţii extrase <h1 itemprop="name">Maleficent</h1>
("distilate") <div itemtype="http://Schema.org/AggregateRating" itemprop="aggregateRating">
din cod HTML, având <span itemprop="ratingValue">7.0</span>
/
ca su ie t pagi a ure tă <span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>
Acest cod HTML este prezent în pagina Maleficent, asigurând simultan
afişarea (prin CSS) şi des rierea se ifi aţiei pri alorile itemprop, De u irile proprietăţilor
recunoscute de Google) sunt preluate din
terminologia Schema.org
A ordarea rudi e tară: glea i g
Principiu: reatorul u ui site We î ţelege i for aţia pe are a dorit să o
prezi te şi poate oferi î preu ă u site-ul şi u o ertor "glea er" are
poate ge era afir aţii RDF di di erse stru turi î tâl ite î fişierele site-ului.
Exemplu:
Presupu e ă î tr-o pagi ă a site-ului avem codul HTML al unui tabel:
<table>
<th><td>ID</td><td>Name</td><td>Price</td></th>
<tr><td>P1</td><td>TV set</td><td>1000</td></tr>
<tr><td>P2</td><td>Mouse</td><td>10</td></tr>
</table>
Se poate construi un gleaner (o transformare XSLT) pe ur ătoarele pri ipii:
• "Cheile primare" de pe coloana ID devin subiecte
• Numele coloanelor devin proprietăţi
• Restul datelor devine obiecte
• Se a ge era şi u prefi o e a il, pe aza adresei site-ului
Rezultat:
@prefix : <http://expl.at#>.
:P1 :Name "TV set"; :Price 1000 . Tra sfor ări si ilare se pot o epe şi
:P2 :Name "Mouse"; :P2 :Price 10 . • pe tru stru turi XML de ex., atri utele pot de e i proprietăţi ale
ar atorului pări te sau ale u ui ID ,
• pe tru stru turi HTML de alte tipuri o i aţii de DIV-uri, SPAN-uri)
A ordarea rudi e tară: glea i g
Neaju sul a ordării este ă gleanerul nu e reutilizabil – se reează doar pe tru stru turi de tag-uri
existente în site-ul respe ti pro a il u şi î altele! . Di a est oti :
• glea erul tre uie pu li at u de a pe site şi o e tat la do u e tele pe are le poate o erti pri
aşa-numitele linkuri GRDDL
• clie ţii or tre ui să ai ă apa itatea de a e e uta tra sfor area

Exemplu de link GRDDL inclus într-o pagi ă HTML pe tru a i di a spre glea erul XSLT pregătit pe tru a
e trage afir aţii di a easta:
<head>
<link rel="profile" href=" http://www.w3.org/2003/g/data-view" />
<link rel="transformation" href="http://myserver.com/myRDFgleaner.xsl" />
</head>

Exemplu de link GRDDL inclus într-u do u e t XML, î a elaşi s op:


<Catalog xmlns:grddl="http://www.w3.org/2003/g/data-view#"
grddl:transformation="http://myserver.com/myRDFgleaner.xsl">
<product ID="P1" Name="TV set" Price="1000"/>
<product ID="P2" Name="Mouse" Price="10"/>
</Catalog> 5
Abordarea 2: Microformatele
Microformat = o terminologie o e ţio ală (denumiri de proprietăţi asupra ărora a
o e it o o u itate largă de We de eloperi . Se poate folosi î a u ite atri ute
HTML CLASS, ID pe tru a i di a se ifi aţia te tului î adrat de ar atori. E e plu:
La origini, CLASS e e it să apli e stiluri CSS asupra u or ele e te HTML:
.mystyle {color:blue}

<P ID="cat" CLASS="mystyle">Product Catalog</P>
<TABLE>
…..<TD CLASS="mystyle">TV set</TD>…..<TD CLASS="mystyle"> EUR</TD>…..
</TABLE>

Totuşi, CLASS poate fi folosit şi î a se ţa stilurilor CSS! Valoarea lui CLASS poate i di a proprietăţile lu rurilor despre are
se or eşte î pagi ă:

<P ID="cat" CLASS="title">Product Catalog </P>


<TABLE> <#cat> :title "Product Catalog".
Transformare :P1 :name "TV Set"; :price 300.
<TR ID="P1"> XSLT
<TD CLASS="name">TV set</TD>
<TD CLASS="price">300</TD> Cod RDF extras
</TR>
</TABLE> Cod HTML
Exemplu de microformat: hCard
<div class="vcard">
Our website is: <a class="fn org url" href="http://www.ABCinc.net/"> ABC Inc.</a>
<div>You can find us at:
<div class="adr">
<span class="type">Work</span>:
<span class="street-address">160 Brunnerstr. </span>,
<span class="locality">Wien</span>,
hCard e o colecţie de termeni pentru descrierea
<span class="postal-code">1210</span>, datelor de contact pentru o persoa ă/organizaţie:
<span class="country-name">Austria</div> • Valorile lui CLASS joa ă rolul unor proprietăţi
</div> RDF
• Valorile italice o ţi utul afişa il al paginii)
<div>Our phone number is: devin "obiecte RDF" (valori de tip string)
<div class="tel"> • Subiectul şi tipul subiectului sunt indicate cu fn
<span class="type">Work</span>: org url (=o organizaţie pentru care sunt indicate
numele şi URL-ul site-ului oficial)
<span class="value">+43-650-289-4040</span>
</div>
Our contact e-mail address is: <span class="email">info@abc.net</span>
</div>
</div>

7
Microformate
U izitator u a a edea î ro ser i for aţia:

Un client software ar putea folosit un convertor hCard-to-RDF*


(ex.: http://www.w3.org/2006/vcard/hcard2rdf.xsl) pentru a extrage afirmaţiile:

@prefix : <http://www.w3.org/2006/vcard/>
[a :org ; *Adresa la care e disponibil convertorul se include în pagina
fn "ABC Inc. "; HTML tot prin linkuri GRDDL.
"Profilul" (identificatorul URI al terminologiei folosite) se ia de
:url <http://www.ABCinc.net>;
pe site-ul unde sunt centralizate toate microformatele:
:adr [:type :work; http://microformats.org/wiki/profile-uris
:street-addresss " 160 Brunnerstr. ";
:locality :Wien;
:postal-code " 1210";
:country-name " Austria "];
:tel [:type :work;
:value "+43-650-289-4040" ];
:email <mailto:info@abc.net> ]
Microformate
Add-on-ul (de browser) Operator extrage
automat dintr-o astfel de pagi ă datele de o ta t
şi le oferă spre exportare î Outlook

Skype dete tează u ere de telefo şi oferă posi ilitatea


de a suna prin click direct:

Alte exemple populare de microformate*:


hReview – stru turează re e zii la fil e, uzi ă et .;
hResume – stru turează Curriculum Vitae (ex. în pagini LinkedIn)
hRecipe – reţete de u ătărie
hEvent – evenimente
*vezi o listă exti să la http://microformats.org/wiki/profile-uris
Microdate HTML
Microdate = si ilare u i rofor atele, dar se azează pe o serie de
atribute HTML noi, introduse de HTML 5 pentru a descuraja utilizarea
i ade ată a atri utelor CLASS, ID et . e esare î CSS şi JS
• atri utele oi su t dedi ate ar ării se a ti e: ITEMPROP, ITEMTYPE
etc.
• în locul terminologiilor oferite de numeroasele Microformate
popularizate î tre şi , s-a propus utilizarea unei
terminologii centralizate în site-ul Schema.org (lansat în 2011-2012)
– teoreti ter i ologiile oferite de Mi rofor ate pot fi folosite şi î oile
atribute (de ex. ITEMPROP în loc de CLASS), ceea ce duce la un mix între
ele două a ordări
• î preze t a e de a fa e u o igraţie a We -ului dinspre cod de tip
Mi rofor at spre od de tip Mi rodata+S he a.org, î să
i rofor atele su t î ă do i a te
Exemplu cu microdate
Cod HTML + atribute Microdata + terminologie Schema.org
<div itemscope="itemscope" itemtype ="http://Schema.org/Movie" itemid="http://expl.at#Avatar">
<h1 itemprop="name">Avatar</h1>
Regizat de:
<span itemprop="director">James Cameron</span><br/>
Genul: <span itemprop="genre">Science fiction</span><br/>
<a href="http://imdb.com/trailers/avatar-trailer.html" itemprop="trailer">
Click aici pentru trailer
</a> Reguli de conversie:
</div> • Subiectul este indicat în HTML prin atributul itemid. De
asemenea, itemscope i di ă faptul ă DIV-ul ure t o ţi e
afir aţii despre a est su ie t pâ ă la apariţia u ui alt
Afirmaţii RDF e or fi e trase de u distilator Mi rodata itemscope, care va schimba subiectul)
(https://www.w3.org/2012/pyMicrodata/#distill_by_input): • Clasa (tipul) subiectului e declarat cu itemtype
@prefix : <http://expl.at#> . • Proprietăţile su t i di ate î itemprop
• Stri gurile izi ile î pagi ă or de e i alorile proprietăţilor, u
@prefix s: <http://Schema.org/> . e epţia li kurilor, la are o ie tul afir aţiei se ia di HREF la fel
:Avatar a s:Movie. pentru imagini, din SRC)
s:name "Avatar"; • Toate proprietăţile şi lasa Mo ie su t luate di ter i ologia
s:director "James Cameron"; S he a.org i di ată pri prefi ul s:, difere ţiat faţă de prefi ul
nostru)
s:genre "Science fiction";
s:trailer <http://imdb.com/trailers/avatar-trailer.html>.
Exemplu cu microdate
Ur ătoarea afir aţie e i ade ată, ă i sta ileşte o relaţie î tre u fil şi u stri g:
:Avatar s:director "James Cameron".
Mai corect ar fi să disti ge lar persoa a de u ele său, pe tru a putea adăuga ai departe afir aţii despre
persoa ă:
:Avatar s:director :James Cameron. :JamesCameron s:name "James Cameron"; s:birthDate "August 16, 1954" .
Pe tru a a est lu ru să se î tâ ple, Ja es Ca ero tre uie să de i ă la râ dul său su ie t ( are să poată pri i
propriile proprietăţi . Pe tru asta îi o alo a u identificator (itemid şi u itemscope are să deli iteze porţiu ea
de pagi ă î are Ja es Ca ero tre uie o siderat su ie t:

<div itemscope="itemscope" itemid="http://expl.at#Avatar" itemtype ="http://Schema.org/Movie" >


<h1 itemprop="name">Avatar</h1>
Regizat de:
<span itemprop="director" itemid="http://expl.at#JamesCameron"
itemscope="itemscope" itemtype="http://Schema.org/Person" >
<span itemprop="name">James Cameron</span>, ăs ut la data de
<span itemprop="birthDate"> August 16, 1954</span>
</span> <br/>
Genul: <span itemprop="genre">Science fiction</span>
<a href="http://imdb.com/trailers/avatar-trailer.html" itemprop="trailer">
Click aici pentru trailer
</a>
</div>

Ceva similar putem face cu genul "Science Fiction".


Mai mult, putem include în codul HTML relaţii u persoa e sau lu ruri are i i ă ar u su t e ţio ate î te tul
paginii (next slide)
Exemplu cu microdate
Se pot stabili relaţii proprietăţi u alori are u su t izi ile sau e ţio ate î pagi ă, folosi d o serie de
ele e te HTML lipsite de o ţi ut:
• u META şi atri utul CONTENT se pot rea proprietăţi u alori si ple atri ute are să u fie izi ile î pagi ă
• cu SPAN-uri goale se pot rea relaţii u alte lu ruri resurse eadresa ile are u su t e ţio ate î pagi ă
• cu LINK, atributul ITEMPROP="url" şi atri utul HREF se pot rea relaţii u resurse adresa ile adrese URL ale
u or fişiere/site-uri) fără a le i lude î pagi ă da ă dori să le i lude , folosi ar atori a A sau IMG

<div itemscope="itemscope" itemid="http://expl.at#Avatar" itemtype ="http://Schema.org/Movie" >


<h1 itemprop="name">Avatar</h1>
Regizat de:
<span itemprop="director" itemid="http://expl.at#JamesCameron"
itemscope="itemscope" itemtype="http://schema.org/Person" >
<span itemprop="name">James Cameron</span>, ăs ut la data de
<meta itemprop="birthDate" content="August 16, 1954"/>
<link itemprop="url" href="https://en.wikipedia.org/wiki/James_Cameron"/>
<span itemprop="spouse" itemscope="itemscope" itemid="http://expl.at#SuzyAmis"
itemtype="http://Schema.org/Person"/>
</span>
</div>
O ser aţii
Puteţi re ar a î u eroase pagi i We şi î tutoriale HTML 5 ă adesea atri utul itemid lipseşte sau u se dis ută
despre el:
• Î astfel de azuri distilatoarele or ge era oduri a o i e are pri es proprietăţile di itemprop
• Motivele utilizării rare a ide tifi atorilor URI su t ultiple:
Legate de audie ţa ţi tă a tutorialelor:
– Multe tutoriale se adresează elor are î aţă HTML 5 sau SEO fără să ai ă î ţelegerea adrului
mai larg al Web-ului Se a ti de i fără să ai ă oţiu i legate de grafuri, o e tare î tre afir aţii
de pe pagini Web diferite etc.). Microdatele/Microformatele sunt percepute adesea ca o reţetă
pe tru SEO " u o tează e î sea ă, ştie Google e să fa ă u ele"
Legat de natura exemplelor:
– Poate fi or a de pagi i are u i lud relaţii u alte lu ruri/persoane nemenţio ate î textul site-
ului sau u dores o e tare u afir aţii di alte site-uri
Legat de obiectivul exemplelor:
– Da ă s opul e stri t li itat la SEO, otoarele de ăutare oder e deţi deja proprii ide tifi atori
pe tru ulte di e tităţile i dexate.
» Google are proprii URI (noduri din Google Knowledge Graph) de forma http//g.co/kg/m/….,
» Facebook are proprii URI (noduri din OpenGraph) de forma http://ogp.me/ns/…
» Microsoft Bing are la râ dul său u graf de u oşti ţe, Satori K o ledge Base
– Pe tru oduri a o i e, otoarele de ăutare or atri ui propriile URI pe aza re u oaşterii
a u itor proprietăţi heie e ţio ate î pagi ă de exe plu u ele, sau o i aţii î tre u e şi
alte proprietăţi
Exemplu
Preşedi tele Barack Obama are deja în Google Knowledge Graph identificatorul http//g.co/kg/m/02mjmr.

Ur ătoarea pagi ă o ţi e o ţi e u ele lui Bara k O a a fără a-i atribui ITEMID:


<div itemscope="itemscope" itemtype ="http://Schema.org/Person" >
<h1 itemprop="name">Barack Obama</h1> a vizitat România.
................................
</div>

Afir aţiile distilate or fi atri uite u ui od a o i :


[a s:Person; s:name "Barack Obama"; ....]

Google va căuta î propriul K o ledge Graph e e titate are u ele respe ti .


Va găsi http//g.co/kg/m/02mjmr şi a su stitui odul a o i u a est URI.

Aşadar:
– Paginile despre alte persoane cu numele "Bara k O a a" tre uie o ligatoriu să spe ifi e propriul ITEMID pe tru a nu
primi identificatorul existent în Google
– Google poate e ita o fuzia e a i â d şi alte proprietăţi e ţio ate î pagi ă de ât u ele proprietăţi heie are,
combinate cu numele, ar putea clarifica identitatea: un link spre site-ul ofi ial al lui O a a, e ţio area soţiei, a
profesiei etc.)

Pe acelaşi pri ipiu se tolerează şi situaţii de tipul:


:Avatar s:director "James Cameron".
În realitate Google va insera un nod anonim aici, pentru a-l asocia apoi cu un identificator Knowledge Graph pe baza
si ilarităţii de u e:
:Avatar s:director [s:name "James Cameron"].
RDF in attributes (RDFa)
• Similarităţi cu microdatele:
– a elaşi rol, de a i tegra u oşti ţe î odul HTML
– o ţi utul izi il al pagi ii dă stri guri e or de e i alori de proprietăţi î afir aţii RDF
– odul HTML e e ti s u atri ute dedi ate, î oduri are u afe tează afişarea î ro ser, dar oferă
u oşti ţe u ui lie t distilator
– poate folosi ter i ologii e iste te ole ţii de proprietăţi şi lase
• Difere ţe faţă de microdate:
– atri utele su t altele, odalităţile de i ludere a afir aţiilor e a ai di erse
– nu se o e trează pe SEO şi i i pe ter i ologia S he a.org, i pe pri ipii RDF ai ge erale:
• ori i e e î urajat să foloseas ă ori e ter i ologie, i lusi URI proprii
• se azează pe prefi e, î urajâ d de i î i area î a eeaşi pagi ă HTML de ter e i di
ter i ologii ariate i lusi S he a.org, dar şi RDF/S, OWL - care nu se prea folosesc în
microdate)
• u se o e trează eapărat pe SEO, i se adresează ori ărui lie t soft are are are e oie să
î ţeleagă despre e e or a î tr-o pagi ă HTML de i o ate ţie ai are a ordată spe ifi ării
de URI pe tru ori e lu ru e ţio at î pagi ă
• Co luzie: RDFa e o alter ati ă ai ge erală la teh i a i rodatelor
• Un distilator RDFa e oferit în mod public de W3C la adresa
http://www.w3.org/2012/pyRdfa/#distill_by_input 16
RDFa:
Su ie te şi proprietăţi u alori stri g
• Subiectul RDF: ABOUT (în loc de ITEMID)
– da ă e a se t, su ie tul e oşte it de la ele e tul HTML pări te; da ă ABOUT u apare delo î do u e t,
subiectul va fi considerat chiar documentul;
• Proprietatea RDF cu valori simple: PROPERTY (în loc de ITEMPROP)
• O ie tul RDF, a aloare si plă: a şi la i rodate, poate fi
– o ţi utul izi il al ele e tului HTML î soţit de PROPERTY sau,
– da ă aloarea u tre uie să fie izi ilă î ro ser, se foloses SPAN-uri goale cu atributul CONTENT
• Î plus faţă de i rodate se foloseşte şi PREFIX:
<body>
<div about="x:Tempest" prefix="x: http://expl.at#">
<h1 property="x:title">The Tempest</h1>
<h2 property="x:author">William Shakespeare</h2>
<span property="x:writtenInYear" content="1610"></span>
</div>
</body>
Ur ătorul od RDF a fi ge erat de u distilator RDFa:
@prefix x: <http://expl.at#>.
x:Tempest x:title "The Tempest"; x:author "William Shakespeare" ; x:writtenInYear "1610" .
RDFa:
Terminologii
• Prefixul poate fi o is da ă de lară u VOCAB o ter i ologie i pli ită " o a ular" pe tru
proprietăţi şi tipuri lase
– ter i ologia i pli ită ar putea fi hiar S he a.org
• Se pot î i a ai ulte ter i ologii, u prefi e diferite, sau u a u prefi şi u a i pli ită
fără prefi
– o relaţie sta dard (<http://www.w3.org/ns/rdfa#usesVocabulary>) se a ge era auto at î tre pagi ă şi
ter i ologia sa i pli ită; ter i ologia i pli ită a pri i u prefi i pli it î e e plul de ai jos ns2:)
<body>
<div about="x:AmintiriDinCopilarie" typeof="Book" vocab="http://Schema.org" prefix="x: http://expl.at#">
<h1 property="name">Amintiri din copilarie</h1>
de
<strong property="author">Ion Creanga</strong>
……………………..
</div>
</body>
Se va extrage codul RDF:
@prefix ns1: <http://www.w3.org/ns/rdfa#> .
@prefix ns2: <http://Schema.org/> .
@prefix x: <http://expl.at#> .
<> ns1:usesVocabulary ns2: .
x:AmintiriDinCopilarie a ns2:Book; ns2:author "Ion Creanga"; ns2:name "Amintiri din copilarie" . 18
RDFa:
Relaţii u alte resurse
• Pe tru relaţii u alte resurse REL se va folosi în loc de PROPERTY
– SRC, HREF or i di a o ie tul RDF da ă e or a de resurse adresabile URL de fişiere), e e tual HREF î LINK da ă
u dori să a e u li k izi il a î e e plul de la i rodate
– RESOURCE a i di a o ie tul da ă e or a de o resursă eadresa ilă URI sau a o i . Da ă RESOURCE lipseşte,
se foloseşte ur ătorul su ie t ABOUT găsit î i teriorul ele e tului ure t î ederea î lă ţuirii de afir aţii :
<body prefix="x: http://expl.at#">
……………….
<img about="x:Shakespeare" rel="x:hasPortrait" src="Shakespeare.jpg"/>
<a about="x:Shakespeare" rel="x:hasWikiPage" href="http://en.wikipedia.org/wiki/William_Shakespeare">
click here to read about Shakespeare
</a>
<span about="x:Shakespeare" rel="x:bornIn" resource="x:Stratford"></span>
<div about="x:Shakespeare" rel="x:wrote"><span about="x:Tempest">...</span></div>

Output RDF:
@prefix x: <http://expl.at#>.
x:Shakespeare x:hasPortrait <Shakespeare.jpg> ;
x:hasWikiPage <http://en.wikipedia.org/wiki/William_Shakespeare>;
x:bornIn x:Stratford
x:wrote x:Tempest.
19
RDFa:
gruparea afir aţiilor
Afir aţii u a elaşi su ie t Shakespeare :
<body prefix="x: http://expl.at#">
……………….
<div about="x:Shakespeare" property="x:hasFirstName" content="William">
<img rel="x:hasPortrait" src="Shakespeare.jpg"/>
<a rel="x:hasWikiPage" href="http://en.wikipedia.org/wiki/William_Shakespeare">
click here to read about Shakespeare</a>
<span rel="x:bornIn" resource="x:Stratford"></span>
<span rel="x:wrote"><span about="x:Tempest"></span></span>
</div>
Afir aţii u a elaşi su ie t A a şi proprietate hasChildre :
<body prefix="x: http://expl.at#">
………………
<div about="x:Anna" rel="x:hasChildren">
<span resource="x:Peter"></span>
<span resource="x:George"></span>
</div>
20
RDFa:
prefixe multiple,
valori de diferite tipuri sau în diferite limbi
<body prefix="x: http://expl.at# xsd: http://www.w3.org/XMLSchema#">
spaţii
…………
<span about="x:Andrew" rel="x:hasBrother" resource="x:Peter" />
<span about="x:Andrew" property="x:hasAge" content="20" datatype="xsd:integer" />
<span about="x:England" property="x:hasName" content="England" xml:lang="en" />
………..

Output:

@prefix x: <http://expl.at#>. • O ser aţi odul de i ludere


@prefix xsd: <http://www.w3.org/XMLSchema#> . a tipului şi odului de li ă
x:Andrew x:hasBrother x:Peter; x:hasAge "20"^^xsd:integer . • O ser aţi odul de de larare
x:England x:hasName "England"@en .
a mai multor prefixe
separate de spaţii î adrul
a eluiaşi atri ut PREFIX

21
RDFa:
cod HTML/XML ca obiecte RDF
Dacă o aloare de tip stri g tre uie să o ţi ă şi od HTML sau XML i se apli ă tipul
rdf:XMLLiteral (altfel se a păstra doar te tul, u şi ar atorii! :

<body prefix="x: http://expl.at#">


…………………………………………….
<span about="x:Anna" property="x:hasName" datatype="rdf:XMLLiteral">
<strong>Anna Smith</strong>
</span>

Output:

@prefix x: <http://expl.at#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
x:Anna x:hasName "<strong>Anna Smith</strong>"^^rdf:XMLLiteral .

22
RDFa:
i ersarea relaţiilor
Se sul u ei relaţii u o resursă eadresa ilă poate fi i ser at u REV (în loc de REL) :
<body prefi =" : http://e pl.at#">……………….
<div about="x:Peter" rel="x:hasParent" rev="x:hasChild" resource="x:George"></div>
Output:
@prefix x: <http://expl.at#> .
x:George x:hasChild x:Peter .
x:Peter x:hasParent x:George .

Se sul u ei relaţii u o resursă adresa ilă se i ersează da ă lipseşte ABOUT (adresa din SRC sau HREF
devine subiect!) :
<body prefi =" : http://e pl.at#">……………….
<img src="Shakespeare.jpg" property="x:description" content="a portrait of Shakespeare"/>
<a href="http://en.wikipedia.org/wiki/William_Shakespeare" property="x:description" content="a
wikipedia page about Shakespeare">click here...</a>
Output:
@prefix x: <http://expl.at#> .
<Shakespeare.jpg> x:description "a portrait of Shakespeare".
<http://en.wikipedia.org/wiki/William_Shakespeare> x:description "a wikipedia page about Shakespeare"
23
.
RDFa:
afir aţii î lă ţuite
Varianta 1. Î a se ţa lui ABOUT, su ie tul RDF e oşte it de la ele e tul pări te (din
precedentul ABOUT sau RESOURCE)

<body prefix="x: http://expl.at#">


……………………………………
<div about="x:Andreea">
<div rel="x:isMotherOf" resource="x:Peter">
<span rel="x:isFatherOf" resource="x:George" />
</div>
</div>

Output:

@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter .
x:Peter x:isFatherOf x:George . 24
RDFa:
afir aţii î lă ţuite
Varia ta . Î a se ţa lui RESOURCE, obiectul RDF devi e su ie tul ur ătorului ele e t opil
(din ABOUT)

<body prefix="x: http://expl.at#">


……………………………………
<div about="x:Andreea" rel="x:isMotherOf">
<div about="x:Peter" rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>

Output:

@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter .
x:Peter x:isFatherOf x:George . 25
RDFa:
afir aţii î lă ţuite
Varia ta . Separare o pletă î tre su ie t, proprietate şi o ie t, evitâ d repetarea odului
o u î tre afir aţii (fu ţio ează şi u ABOUT, şi u RESOURCE):
<body prefix="x: http://expl.at#">
……………………………………
Pri a afir aţie
<div about="x:Andreea">
<div rel="x:isMotherOf">
<div about="x:Peter"> A doua afir aţie
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter . 26
x:Peter x:isFatherOf x:George .
RDFa:
afir aţii î lă ţuite u oduri a o i e
Se poate apli a ori are di varia tele pre ede te, da ă eli i ă odul o siderat a o i
(de i da ă ave două REL fără ABOUT sau RESOURCE între ele)
Varianta 1:
<body prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea">
<div rel="x:isMotherOf">
<span rel="x:isFatherOf" resource="x:George" />
</div>
</div>

Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .

27
RDFa:
afir aţii î lă ţuite u oduri a o i e
Varianta 2:
<html prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea" rel="x:isMotherOf">
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>

Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .

28
RDFa:
afir aţii î lă ţuite u oduri a o i e
Varianta 3:
<html prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea">
<div rel="x:isMotherOf">
<div>
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .
29
RDFa:
noduri anonime explicite
Se pot folosi şi oduri a o i e, u ide tifi atori lo ali:
<html prefix="x: http://expl.at#">
……….
<div about="_:y">
<h1 property="x:title">The Tempest</h1>
<h2 property="x:author">William Shakespeare</h2>
</div>

Output:

@prefix x: <http://expl.at#>.
_:y x:title "The Tempest"; x:author "William Shakespeare" .

30
RDFa:
caz de utilizare
A e două paragrafe afişate î două siteuri:
Site1: <p> Mary lives in Wien </p>
Site2: <p> Peter is a chess champion </p>

Creatorii site-urilor ai ştiu ă Mar e a a lui Peter şi or să ofere a eastă i for aţie
otoarelor de ăutare, are ar putea fi i teresate de a eastă relaţie. Pentru asta, vor marca
paragrafele cu RDFa:
Site1:
<body vocab="http://Schema.org/" prefix="x: http://expl.at#">
<p> <span about="x:Mary" rel="parent" resource="x:Peter" property="name">Mary</span>
lives in Wien </p>
Site2:
<body vocab="http://Schema.org/" prefix="x: http://expl.at#">
<p> <span about="x:Peter" property="name">Peter</span> is a chess champion</p>
Beneficiu: Un motor de căutare a putea dete ta relaţia de fa ilie, atâta re e ât a ele site-
uri foloses a elaşi ide tifi ator pe tru i di idul o u :Peter şi a eeaşi ter i ologie de
31
proprietăţi ai i S he a.org .
Alte o ser aţii
• REL şi REV pot a ea u ele alori predefi ite, oşte ite di HTML-ul clasic:
– "stylesheet" relaţia u ei pagi i u u fişier de stiluri CSS
– "license" relaţia u u do u e t de li e ţiere
– "help" relaţia u u do u e t help
– "cite" relaţia u o sursă itată
• CONTENT are prioritate faţă de o ţi utul HTML izi il â d a ele apar la
a elaşi ele e t
• La detectarea subiectelor/obiectelor ABOUT şi RESOURCE au prioritate faţă
de SRC şi HREF

32
JSON-LD: sintaxa pentru încorporarea
de grafuri în obiecte JavaScript
Beneficii:
• Oferă o alter ati ă pe tru î glo area de afir aţii î pagi i HTML, î tr-o a ieră e u alterează odul HTML
• E e tual, se poate î i a u elelalte a ordări distilatoarele i rodata/RDFa pot genera grafuri JSON-LD care să fie
ulterior inserate în alte pagini Web sau stocate în baze de date NoSQL de tip JSON)
• Grafurile JSON-LD se pot a esa î a ieră JSON, u are ulţi progra atori su t fa iliarizaţi (de e e plu, pri si ta ă
o ie tuală de for a obiect.proprietate sau array[index] etc., adesea ai ușor de folosit de ât SPARQL sau fu țiile oferite
de di erse li rării)
• Grafurile JSON-LD se pot sto a şi gestio a u ajutorul azelor de date NoSQL de tip JSON Mo goDB, Cou hDB et .
• La ora a tuală RDFa, i rodatele şi i rofor atele u suportă gruparea afir aţiilor î "grafuri ide tifi ate", î s hi
JSON-LD le suportă
• Google Knowledge Graph oferă u ser i iu pu li de i terogare https://kgsearch.googleapis.com/v1/entities:search) ce
răspu de în format JSON-LD
Exemplu TriG:
@prefix x: <http://expl.at#>.
x:BeliefsOfMary {x:Andrew x:isBrotherOf x:Peter. x:Peter x:hasAge 20}

Echivalent JSON-LD este u arra aso iativ u se țiu i i di ate de iște eti hete heie e î ep u @ :
{ În secțiunea @context se definesc, printre
"@context":{"x":"http://expl.at#"}, altele, prefixele* (a nu se confunda cu noțiunea
"@id":"x:BeliefsOfMary", de context discutată la afirmații contextuale!)
"@graph":
[{ Un @id înainte de @graph va fi
"@id":"x:Andrew", considerat identificator de graf
"x:isBrotherOf":{"@id":"x:Peter","x:hasAge":20}
}] O secțiune @graph e un array ce include toate
} afirmațiile unui graf, de obicei grupate după33
subiecte (indicate tot cu @id)
I for ațiile grupate î se țiu ea
@context indică di erse teh i i de
abreviere a termenilor
{"@context": @base (similar cu Turtle) stabilește o adresă de
bază ce se va aplica tuturor termenilor cărora nu li
{ se aplică niciuna din celelalte tehnici de abreviere
"@base":"http://otherdomain.at/", => aici se aplică la CompanyABC

"@vocab":"http://Schema.org/", @vocab (similar cu RDFa) stabilește terminologia


"x":"http://expl.at#", din care provin toate clasele și proprietățile pentru
care nu s-a indicat deja o altă tehnică de abreviere
"br":{"@id":"x:isBrotherOf","@type":"@id"}, => aici se aplică la Person, gender
"name":"x:hasName"
prefixele (similar cu Turtle), se aplică tuturor
}, termenilor ce folosesc acele prefixe, inclusiv în
"@id":"x:Peter", interiorul secțiunii @context => aici se aplică la
isBrotherOf,hasName,George,worksAt
"@type":"Person",
"br":"x:George", prescurtările (specifice JSON-LD) se aplică doar proprietăților, peste tot
"name":"Peter Smith", unde se folosesc acele prescurtări
=> aici se aplică la isBrotherOf (prescurtat "br"), hasName (prescurtat
"gender":"male", "name")
"x:worksAt":{"@id":"CompanyABC"}
*în definirea unei prescurtări se indică și dacă obiectul proprietății va fi un
} URI ("@type":"@id") sau o valoare simplă (implicit); aceasta va determina
dacă să fie considerat termen abreviat sau un string simplu
Exemplu convertit în Turtle
Exemplu în JSON-LD:
Echivalent Turtle:

{"@context":
@base <http://otherdomain.at/>.
{
@prefix x: <http://expl.at#>.
"@base":"http://otherdomain.at/",
@prefix : <http://Schema.org/>.
"@vocab":"http://Schema.org/",
"x":"http://expl.at#",
x:Peter a :Person;
"br":{"@id":"x:isBrotherOf","@type":"@id"},
x:isBrotherOf x:George;
"name":"x:hasName"
x:hasName "Peter Smith";
},
:gender "male";
"@id":"x:Peter",
x:worksAt <CompanyABC>.
"@type":"Person",
"br":"x:George",
"name":"Peter Smith",
"gender":"male",
"x:worksAt":{"@id":"CompanyABC"}
}
35
JSON-LD:
Gruparea afirmațiilor, liste, tipuri de date
Exemplu JSON-LD:
{"@context": într-o secțiune @graph se includ afirmațiile
unui graf, grupate după subiecte (@id);
{"x":"http://expl.at#", @graph poate lipsi, caz în care secțiunea
"xsd":"http://www.w3.org/2001/XMLSchema#", @context e valabilă doar pentru primul
"x:isBrotherOf":{"@type":"@id"}, subiect!
"x:hasChildren":{"@type":"@id"}},
"@graph": când mai multe afirmații au același subiect și
[ aceeași proprietate, obiectele se enumeră într-
{"@id":"x:Peter", un array simplu
"x:isBrotherOf":["x:George","x:Anna"],
array-ul poate fi declarat ca fiind listă
"x:hasChildren":{"@list":["x:Mary","x:John"]}}, ordonată (rdf:List) cu cuvântul cheie @list
{"@id":"x:John",
"x:bornOn":{"@value":"2002-10-10","@type":"xsd:date"}}
]}
valorile simple pot primi tipuri XML Schema cu
Echivalent TriG: @type (sau coduri de limbă cu @language)
@prefix x: <http://expl.at#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
{x:Peter x:isBrotherOf x:George, x:Anna;
x:hasChildren (x:Mary x:John).
x:John x:bornOn "2002-10-10"^^xsd:date.} 36
JSON-LD:
Per ite și gruparea după o ie tul afir ației, prin
definire de relații i erse!

JSON-LD example fără @graph, de i u @ o te t apli a il doar pe afir ațiile


primului subiect!):
{ "@context": {
"x": "http://expl.at#",
"x:hasChild":{"@reverse":"x:hasParent", "@type":"@id"}
},
"@id": "x:Peter",
@reverse va genera în RDF relația
"x:hasChild":["x:Mary","x:John"]} inversă hasParent de câte ori se întâlnește
în JSON-LD relația hasChild. Aceasta
permite gruparea în JSON-LD a mai multor
Echivalent Turtle: afirmații care au același obiect pentru
@prefix x: <http://expl.at#>. hasParent.

x:Mary x:hasParent x:Peter.


X:John x:hasParent x:Peter.

37
JSON-LD: noduri anonime
Exemplu JSON-LD:
{"@context":
{
"x":"http://expl.at#", Lipsa lui @id între cele două proprietăți va
"xsd":"http://www.w3.org/2001/XMLSchema#", crea un nod anonim
"x:isSonOf":{"@type":"@id"}
},
"@id":"x:Peter", Un obiect prefixat cu _: la o proprietate
pentru care în @context s-a declarat tipul
"x:isFatherOf":{"x:hasAge":20}, @id va deveni nod anonim
"x:isSonOf":"_:a",
"x:livesAt":{"@id":"_:b","x:city":"Wien","x:street":"Brunnerstr."}
} Un subiect care e introdus cu @id și
Echivalent Turtle: totodată e prefixat cu _: devine nod
anonim
@prefix x: <http://expl.at#>.
x:Peter x:isFatherOf [x:hasAge 20];
x:isSonOf _:a;
x:livesAt [x:city "Wien; x:street "Brunnerstr."]. 38
JSON-LD:
u eori dori să i lude arra -uri asociative ale
ăror hei să u fie i terpretate a ter e i RDF
Exemplu JSON-LD:
{ "@context": Dacă o proprietate ia ca valoare un array
{"x": "http://expl.at#", asociativ (dicționar), iar etichetele (cheile) acelui
"x:hasSubsidiaries": {"@container": "@index"} array dorim să fie ignorate la conversia în RDF,
declarăm proprietatea ca având valori de tip
}, "@container":"@index"
"@id": "x:CompanyABC",
"x:hasSubsidiaries": { Cheile "france", "austria" nu vor mai deveni
"france": {"@id": "x:ABCFrance", proprietăți RDF, dar vor fi totuși utile
"x:address": "DeGaulle 22, Paris"}, programatorilor, care vor putea crea cicluri
FOR de tipul
"austria": {"@id": "x:ABCAustria",
for i in (obiect["x:hasSubsidiaries"])
"x:address": "Brunner Strasse 21, Wien"} proceseaza(i["x:address])
} sau extrageri de date prin sintaxa
} obiect["x:hasSubsidiaries"].france

Echivalent TriG: În RDF, @id-urile subordonate cheilor


vor fi conectate direct prin proprtietatea
@prefix x: <http://expl.at#>.
hasSubsidiaries
x:CompanyABC x:hasSubsidiaries x:ABCFrance, x:ABCAustria.
x:ABCFrance x:address "De Gaulle 22, Paris".
x:ABCAustria x:address "Brunner Strasse 21, Wien". 39
A esarea i for ației di JSON-LD
Blocurile JSON-LD se încorporează în pagini HTML printr-o se țiu e SCRIPT are are ID pe tru a fi ușor de a esat și e
difere țiată pri TYPE de s ripturile Ja aS ript o iș uite:
<SCRIPT TYPE="application/ld+json" ID="afirmatii">
{"@context": {
"@base":"http://otherdomain.at/",
"@vocab":"http://Schema.org/",
"x":"http://expl.at#",
"br":{"@id":"x:isBrotherOf","@type":"@id"},
"name":"x:hasName"},
"@id":"x:Peter",
"@type":"Person",
"br":"x:George",
"name":"Peter Smith",
"gender":"male",
"x:worksAt":{"@id":"CompanyABC"}
}
</SCRIPT>
Apoi, dintr-un script JS, această se țiu e e a esată pe ază de ID și o ertită î o ie t JS.
graf=JSON.parse(document.getElementById("afirmatii").innerHTML)
Na igarea pri o ie tul JS e ai fa ilă pe tru a ele proprietăți la are a folosit pres urtări sau @ o a :
graf.name
graf.gender
Î s hi pe tru proprietățile u prefi tre uie să folosi si ta a pe tru arra -uri asociative:
graf["x:worksAt"]
O serie de li rării spe ializate de e e plu jso -ld.js oferă și alte fa ilități, i lusi o ersie î si ta ele RDF dis utate
REGULI, AXIOME ȘI MOTOARE
INFEREN IALE
Stru tura i for aţiei î Se a ti We
Pri ipiu: i terogările SPARQL ar trebui să returneze spre utilizatorul final date, folosindu-se
î să de u oşti ţe pe tru o filtrare ai i telige tă de ât per it BD relaţio ale
DATE: vizibile în pagini Web ca stringuri,
î od tradiţio al sto ate î aze de date izolate
DATE
vizibile
<http://amazon.com>
doar în
10 Amazon

DATE
"James Cameron" 11 vizibile
:vinde doar în
:Amazon :DVD1
:JC IMDB
:DVD2
"Arnold
DATE Schwarzenegger" :AS
vizi ile şi î
IMDB şi î :LH
237 mil
Amazon
:Avatar
"Linda Hamilton" :Predator
:Terminator

6.4 mil

CUNOŞTIN E: "Predator"
18 mil
graf o u e oferă "des rieri"
pentru date vizibile în mai multe site-uri "Terminator"
• dpdv tehnic "graful comun" va fi distribuit "Avatar"
între mai multe servere
• por iu i din graf pot fi înglobate în HTML
Stru tura i for aţiei î Se a ti We
Regulile pot fi i ple e tate a i terogări CONSTRUCT sau INSERT WHERE
sau sto ate per a e t î aza de u oşti ţe a io e, li aje pe tru reguli

<http://amazon.com>
În schimb graful poate
reşte î "de sitate", 10
pri ge erare de relaţii
noi (cu ajutorul
regulilor) "James Cameron" 11

:Amazon :vinde
:JC :DVD1

:DVD2
"Arnold
Schwarzenegger" :AS

:LH
237 mil
:Avatar
"Linda Hamilton" :Predator
:Terminator

6.4 mil

"Predator"
18 mil ....
"Terminator"
Datele sunt noduri terminale!
"Avatar"
u se pot fa e afir aţii are
au valori simple ca subiecte)
Reguli
REGULILE ge erează afir ații noi ("implicite", "concluzii") din afir ații existente ("explicite","premise"),
per iţâ d automatizarea dedu ţiilor logice. Beneficii:
• Î ogăţirea auto ată a bazelor de u oşti ţe;
• Detectarea auto ată a o tradi ţiilor între afir aţii.
Concluzie
relație ouă

:Anna :hasRelativesIn :Austria

:isMotherOf :locatedIn

:Andrew :livesIn :Wien

REGULILE u ge erează doar relații oi î tre oduri e iste te, i pot ge era ori e afir ații u oduri oi, hiar
și afir ații u oduri a o i e sau afir ații o plet de o e tate de ele e iste te :
Concluzii
afir ații oi,
cu noduri noi)

a :Movie a
:Terminator :Batman

:directedBy :directedBy
a :Director a
:JamesCameron :TimBurton 4
Reguli
:relatieContradictorie
REGULILE pot să caute și să marcheze o tradi ții
în vederea i terogării și a alizării lor ulterioare:
:motherOf
:Ana :Mary
For ă rudi e tară de ar are:
da ă e istă ai ulte relații î tre A a și Mar , u e lar :motherOf
care se contrazice cu care)

_:y

For ă sofisti ată de ar are, pri reificare: rdf:subject a


toate ele e tele u ei afir ații
rdf:predicate rdf:object
contradictorii sunt legate de un nod
a o i , pus apoi î relație u alte oduri e :motherOf
:contrazice
ar hează o tradi ții pe tru a per ite :Mary
:Ana
analizarea lor prin interogare) :Contradictie
:motherOf
rdf:predicate rdf:subject
rdf:object a

_:x
Notă: De ulte ori o tradi țiile u se ar hează, i doar se afișează î esaje de eroare
Cum definim reguli?
Regulile se pot defini în mai multe moduri, dintre care cele mai uzuale sunt (folosim primul exemplu din slide-urile
precedente, cu rudele din Viena):

Varianta A: Reguli î orporate î i terogări


A1. I terogări de itire u odifi ă aza de u oşti ţe :
CONSTRUCT {?x :hasRelativesIn ?y}
WHERE {?x :isMotherOf/:livesIn/:locatedIn ?y}
A2. I terogări de scriere odifi ă aza de u oşti ţe :
INSERT {?x :hasRelativesIn ?y}
WHERE {?x :isMotherOf/:livesIn/:locatedIn ?y}

Avantaj: Nu e esită i stalarea u ui otor i fere ţial "reaso er" , e sufi ie t li ajul SPARQL

Dezavantaj: Co luziile su t ge erate doar la o e tul e e utării i terogării.


• Dacă î viitor se adaugă afir aţii oi are ar putea fi releva te pe tru regulă, i terogarea tre uie ree e utată
• Da ă î viitor se şterg afir aţii are au fost folosite de ătre regulă, u oşti ţele ris ă să devi ă i o siste te
o luziile u vor ai fi fu da e tate pe o pre isă!
• La i terogările CONSTRUCT, si gurul are e efi iază de o luziile ge erate e lie tul i terogării (acesta va
decide dacă să le sto heze per a e t
Regulile î orporate î i terogări u gara tează
o siste ța pe ter e lu g
. Starea i ițială a azei de u oști țe: . Se e e ută regula, su for a u ei
i terogări INSERT ... WHERE:
:Anna :Austria

:isMotherOf :locatedIn :Anna :hasRelativesIn :Austria

:isMotherOf :locatedIn
:Andrew :Wien
:livesIn
:Andrew :Wien
:livesIn

. Se adaugă afir ații oi: . Se șterg afir ații:

:Austria :Anna :hasRelativesIn :Austria


:Anna :hasRelativesIn
:isMotherOf :locatedIn :isMotherOf :locatedIn

:Andrew :Wien :Andrew :Wien


:livesIn

:Mary În felul acesta, apar o luzii lipsite de pre isă!


:livesIn :A a :hasRelativesI :Austria tre uie să dispară
:isMotherOf
Trebuie executat un DELETE pe concluziile generate din
:Matt afir ația ștearsă u e sigur ă ai ști are su t a elea

În felul acesta, apar premise lipsite de concluzie! Motoarele i fere țiale evită a este ris uri deoare e ți
:Mar :hasRelativesI :Austria lipsește evide ța regulilor, a afir ațiilor ge erate și le pot re al ula
Tre uie ree e utată regula la fie are odifi are î aza de u oști țe
Reguli
Varianta B. Reguli stocate (încorporate în baza de u oşti e și exe utate de otoare i fere țiale)

B1. Axiome (=afir aţii RDF s rise u ter e i sta dardizaţi, avâ d a su ie t o lasă sau o proprietate .
A elași e e plu, s ris a a io ă u ter i ologia OWL a se o serva ă a io ele su t tot afir aţii RDF :
:hasRelativeIn owl:propertyChainAxiom (:isMotherOf :livesIn :locatedIn).

B2. Limbaje dedicate pentru stocarea de reguli (SWRL, SPIN, RIF, RuleML, Horst etc.)
A elași e e plu, scris în limbajul SPIN a se o serva ă regulile SPIN su t tot afir aţii RDF, structurate cu ajutorul
nodurilor anonime):
[a sp:Construct;
sp:templates
([sp:subject spin:_x; sp:predicate :isRelativeOf sp:object spin:_y]);
sp:where
([a sp:TriplePath;
sp:subject spin:_x;
sp:path [a sp:SeqPath; sp:path1 :isMotherOf; sp:path2 :livesIn; sp:path3 :locatedIn];
sp:object spin:_y])]
A elași e e plu, scris în sintaxa Horst u ai e o pati ilă u RDF, e esită u parser separat :
X <:isMotherOf> A
A <:livesIn> B
B <:locatedIn> Y
----------------------------
X <:hasRelativeIn> Y
Reguli
Avantajele regulilor stocate:
• Concluziile generate se salvează auto at î aza de u oşti ţe
• Regulile stocate în format RDF (axiome, SPIN) pot fi la rândul lor interogate sau transferate între servere
diferite, folosi d a eleași teh i i RDF
• Regulile sto ate se ree e ută auto at de âte ori e a e i țată o siste ța ge erală a o luziilor
generate:
– La ştergeri de afir aţii, să u ră â ă afir aţii ge erate fără pre isele di are au fost ge erate
– La adăugări, să u apară pre ise oi fără a ge era și o luziile e se pot ge era di a estea
*la i terogări, o luziile ge erate refle tă doar afir aţiile preze te î o e tul i terogării!

Dezavantajele regulilor stocate:


• Ne esită u otor i fere ţial, are nu e disponibil pentru orice server (uneori trebuie instalat separat)
• Motoarele i fere ţiale diferă ult î e privește ter e ii sta dardizaţi pe are îi re u os *
– Sesa e are i luse otoare i fere ţiale pe tru a io e RDF/S şi reguli SPIN**
– GraphDB este o extensie Sesame care mai oferă otoare i fere ţiale OWL şi Horst
(*cu ât re u os ai ulţi ter e i, u atât perfor a ţa regulilor e ai sla ă, de a eea ajoritatea
otoarelor i fere ţiale u oferă suport % pe tru ter i ologiile standardizate)
(**suportul SPIN e oferit doar de la versiunea 4)
Ceri ță fu da e tală:
Despre fiecare termen (URI) X din graf, calculatorul trebuie să aibă răspu s la întrebarea
"Ce este X?" ("Ce tip are X?")

Pentru aceasta, trebuie să existe afir ații de forma


X rdf:type Y (sau X a Y, "X este un/o Y") pentru orice X e țio at în baza de u oști țe

Pentru aceasta, graful trebuie extins cu un vocabular (ontologie, terminologie) care


• să defi eas ă se ifi ația fie ărui Y
• să per ită generarea auto ată a afir ațiilor "X a Y", pe baza acelei se ifi ații

Vocabularul:
• Poate fi stocat separat de restul bazei de u oști țe (scopul e să ofere o terminologie
pu li ă, reutiliza ilă și de ătre alții
• Poate fi un vocabular existent pe care decidem să îl adoptă (Schema.org, FOAF)
• Poate fi un vocabular creat de noi, caz în care:
• are forma unei ole ții de afir ații despre clase și proprietăți (axiome)
• axiomele se construiesc cu termeni sta dardizați din RDF/S sau OWL da ă se
folosește OWL, vocabularul se u ește "ontologie")
• axiomele se pot folosi pentru a genera automat afir ații noi (inclusiv afir ații de
tip "X a Y", dar nu numai)
Proprietăţile se Clasele se
ierarhizează ( u ierarhizează (cu
rdfs:subPropertyOf) rdfs:subClassOf)
Vocabular/Ontologie
= descrieri de clase + proprietă i
:aLucratLa
:Persoana
(folosind ter e i sta dardizaţi)
:Regizor
<http://amazon.com>
10

:Actor
"James Cameron" 11

:Amazon :vinde
:aJucatIn :JC :DVD1

:DVD2
"Arnold
Schwarzenegger" :AS
:aRegizat
:LH
237 mil
:Avatar
"Linda Hamilton" :Predator
:Terminator

6.4 mil
:Film
"Predator"
Proprietăţile se o e tează la clase 18 mil
(cu rdfs:domain şi rdfs:range) pentru a "Terminator"
i di a e SUNT lu rurile e parti ipă la "Avatar"
a ele relaţii
* u uitaţi ă proprietăţile pot deve i
su ie te î u ele afir aţii
Prefix pentru
Exemplu
i sta țe @prefix : <http://expl.at#>.
Prefix pentru @prefix voc: <http://expl.at/vocabularul-meu#>.
ter i ologia ou reată @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
Prefixe standard @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Anna a voc:Femeie .
Baza de
Fapte :Andrew a voc:Persoana . cunoştin e
(au ca subiect :Anna voc:mamaLui :Andrew .
i sta țe voc:Femeie a rdfs:Class.
voc:Persoana a rdfs:Class. Vocabular
Axiome voc:mamaLui a rdf:Property. (axiome cu termeni Ontologie
RDF/S) (axiome cu termeni
(au ca subiect voc:mamaLui rdfs:domain voc:Femeie.
clase sau RDF/S+OWL)
voc:mamaLui rdfs:range voc:Persoana.
proprietăți
voc:mamaLui a owl:AsymmetricProperty .

Tipuri de URI folosiți î e e plu:


URI standard:
• URI u su li iere o ti uă (rdfs:Class, rdfs:domain, rdfs:range, rdf:Property, a / rdf:type) aparți terminologiei
standard RDF/S
• URI u su li iere pu tată (owl:AsymmetricProperty) aparți terminologiei standard OWL (de obicei numim
"ontologii" acele vocabulare ce folosesc termeni OWL)
URI nestandard:
• URI italici (clasa voc:Femeie, voc:Persoana, proprietatea voc:mamaLui) sunt termenii vocabularului/ontologiei VOC
are se reează pri a est e e plu)
• URI efor ataţi (:Anna, :Andrew) reprezi tă işte resurse i dividuale i sta ţe ale laselor vo a ularului/o tologiei
12
Interpretarea axiomelor din exemplu
@prefix : <http://expl.at#>.
@prefix voc: <http://expl.at/vocabularul-meu#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Anna a voc:Femeie .
:Andrew a voc:Persoana .
:Anna voc:mamaLui :Andrew . Defi ește oțiu ea ter e ul de Femeie a fii d o ulți e
de i divizi lasă
voc:Femeie a rdfs:Class.
Defi ește oțiu ea de Persoana a fii d o ulți e de i divizi lasă
voc:Persoana a rdfs:Class.
voc:mamaLui a rdf:Property.
voc:mamaLui rdfs:domain voc:Femeie. Definesc termenul mamaLui ca exprimând o
relație î tre Fe ei i divizi de tip Femeie și
voc:mamaLui rdfs:range voc:Persoana. Persoane (indivizi de tip Persoana).
voc:mamaLui a owl:AsymmetricProperty.
Adaugă o strâ gerea ă relația nu poate avea loc în
a ele se suri, î tre a eiași i divizi
utilă la dete tarea de o tradi ții, dacă se afir ă ă
u i divid e și a a și opilul a eluiași i divid
Relaţia î tre a io e şi fapte
A io ele su t tot afir ații, se o e tează la restul afir ațiilor, de i di pu t de vedere al repreze tării î al ulator și
al i terogărilor u e istă o disti ție î tre vo a ulare/o tologii și restul afir ațiilor! Disti ția e dată de ter e ii folosiți
și de faptul ă î a io e su ie tele su t î totdeau a lase sau proprietăți.

rdfs:Class owl:AsymmetricProperty
a
a
a
rdf:Property

:Femeie :Persoana
rdfs:domain
a a
rdfs:range
rdfs:domain
a

:mamaLui
:Anna :Andrew

Di a est otiv, a io ele pot fi la râ dul lor i terogate a și restul grafului:


retur ează toate proprietă ile asi etri e ale A ei
SELECT ?x
WHERE {:Anna ?x ?y. ?x a owl:AsymmetricProperty} 14
I terogări azate pe afir ații de tip
X a Y ("X este un/o Y")
Afirmațiile de for a X a Y asigură lia tul î tre:
a) ivelul i sta țelor afir ații despre i divizi . A eastă o po e tă a azei de u oști țe ai poartă u ele ABox.
Deoare e au a su ie t u i divid, și afir ațiile X a Y se o sideră ă fa parte di ivelul i sta țelor.
b) nivelul terminologic, vo a ularul, o tologia afir ații despre lase și proprietăți, u rolul de a fi a tipurile de i divizi și
proprietățile a estora . A eastă o po e tă a azei de u oști țe ai poartă u ele Tbox.

Preze ța afir ațiilor X a Y permit calculatorului să î țeleagă e su t lu rurile despre are se vor ește î aza de u oști țe și
asigură răspu suri pe tru u ele i terogări fundamentale:

• Ce este Andrew? ărei lase aparți e, e tip are


SELECT ?x WHERE {:Andrew a ?x}
Răspu s pe e e plul di slide-ul precedent: voc:Persoana
*ate ție: pot e ista ai ulte răspu suri, u i divid poate fi de ai ulte tipuri

• Returnează lista u toate persoa ele toate i sta țele u ei lase


SELECT ?x WHERE {?x a voc:Persoana}
Răspu s pe e e plul ostru: :Andrew
(*dilemă: De e u și A a? Cu fa e să apară și A a? Avem nevoie de axiome sau reguli suplimentare!)

• Retur ează resursele despre are u se știe e su t î tr-o ază de u oști țe o pletă, u ar tre ui să ai ă răspu s
SELECT ?x WHERE {?x a ?y. FILTER (!BOUND(?y))}
Răspu s pe e e plul ostru: rdfs:Class, owl:AsymmetricProperty, rdf:Property
*pe tru a a operi și ter e ii sta dard, otoarele i fere țiale pot genera afir ații de tipul ?x a rdfs:Resource pentru orice (cu alte
uvi te, e e ută a io a fu da e tală "ORICE este o resursă"); pentru a exclude astfel de răspu suri i pli ite și vagi , refor ulă
interogarea astfel:
• Retur ează resursele despre are u se știe alt eva de ât ă su t resurse ai pre is: despre are u e istă afir ații ? a ? î
are ? să fie alt eva de ât rdfs:Resour e :
SELECT ?x WHERE {?x a ?y. FILTER NOT EXISTS {?x a ?y. FILTER (?y!=rdfs:Resource))}
Cu fa e să ave afir ația
X a Y pentru orice X
• Abordare 1. I lude a ual astfel de afir ații î aza de u oști țe, î preu ă u toate elelalte afir ații
Poate fi un proces anevoios, cu risc de erori de tastare u URI tastat greșit va de o e ta afir ații! sau o tradi ții
logice da ă de lară pe tru a elași i divid ai ulte tipuri o tradi torii
• Abordare 2. E e ută o regulă su for ă de i terogare e e plu: Da ă X este a a uiva, atu i X este fe eie)

2a.Regula poate fi spe ifi ă pe tru o proprietate az î are tre uie e e utată separat pe tru alte proprietăți

INSERT {?s a :Femeie}


:Anna voc:mamaLui :Andrew. WHERE {?s voc:mamaLui ?o} :Anna a :Femeie.

2 .Regula poate e efi ia de preze ța a io elor, az î are e apli a ilă și altor proprietăți e au rdfs:do ai .

voc:mamaLui rdfs:domain voc:Femeie. INSERT {?s a ?c}


:Anna a :Femeie.
:Anna voc:mamaLui :Andrew. WHERE {?s ?p ?o. ?p rdfs:domain ?c}

• Abordare 3. Apelă la u otor i fere țial are să realizeze dedu ții auto ate pe aza a io elor vezi și
ava tajele dis utate față de regulile î orporate î i terogări . U otor i fere țial i terpretează fie are a io ă
a pe o regulă și o e e ută o for sta dardelor RDF/S și OWL are prevăd și ge erarea u or afir ații "implicite",
pe tru a gara ta o pletitudi ea azei de u oști țe .
:Anna a :Femeie.
voc:mamaLui rdfs:domain voc:Femeie. Motor inferențial RDFS
:Anna voc:mamaLui :Andrew. :Anna a rdfs:Resource.
:Andrew a rdfs:Resource.
Afir ații i pli ite
:Femeie a rdfs:Resource, rdfs:Class.
voc:mamaLui a rdfs:Resource, rdf:Property.
A elași e e plu, a u e efi ii d de
u otor i fere țial RDFS
Baza de u oști țe di e e plu poate fi ult redusă da ă lu ră u u otor
i fere țial – acesta va putea genera o parte din exemplul discutat prin dedu ții
automatizate:

A eastă parte va tre ui reată a ual: A eastă parte poate fi ge erată de u


otor i fere țial RDFS:
@prefix : <http://expl.at#>.
@prefix voc: <http://expl.at/vocabularul-meu#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>. Fapte
:Anna a voc:Femeie . deduse
:Andrew a voc:Persoana .
:Anna voc:mamaLui :Andrew .
Axiome
voc:Femeie a rdfs:Class. deduse
voc:Persoana a rdfs:Class.
voc:mamaLui a rdf:Property.
voc:mamaLui rdfs:domain voc:Femeie.
voc:mamaLui rdfs:range voc:Persoana.
voc:mamaLui a owl:AsymmetricProperty .
E istă răspu s la î tre area
"Ce este X?" pentru orice X?
@prefix : <http://expl.at#>.
@prefix voc: <http://expl.at/vocabularul-meu#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Anna a voc:Femeie .
:Andrew a voc:Persoana . Ce este rdfs:Class?
:Anna voc:mamaLui :Andrew . Ce este owl:AsymmetricProperty?
voc:Femeie a rdfs:Class. Ce este rdfs:domain?
voc:Persoana a rdfs:Class. etc.
voc:mamaLui a rdf:Property.
voc:mamaLui rdfs:domain voc:Femeie. Exemplul nu are răspu s la a eastă
voc:mamaLui rdfs:range voc:Persoana. întrebare pentru termenii
voc:mamaLui a owl:AsymmetricProperty . sta dardizați!
Tot otoarele i fere țiale se o upă și
de asta, generând o serie de afirmații
implicite (next slide)
Cu oști țe i pli ite
ge erate i pli it de otoarele i fere țiale
rdfs:Class a rdfs:Class. ulți ea tuturor laselor e la râ dul său o lasă
rdf:Property a rdfs:Class. ulți ea tuturor proprietăților e o lasă
rdfs:domain a rdf:Property. (domeniul e o proprietate)
rdfs:range a rdf:Property. (codomeniul e o proprietate)
owl:AsymmetricProperty a rdfs:Class. ulți ea proprietăților asi etri e e o lasă
rdf:type a rdf:Property. ("a fi ceva" este o proprietate)
rdfs:Resource a rdfs:Class. (mulți ea tuturor lu rurilor e o lasă

:Anna a rdfs:Resource.
:Andrew a rdfs:Resource.
voc:Femeie a rdfs:Resource.
voc:Persoana a rdfs:Resource.
voc:mamaLui a rdfs:Resource. Co se i țele axio ei fu da e tale:
rdfs:Class a rdfs:Resource. Ori e este o resursă,
rdf:Property a rdfs:Resource. inclusiv termenii standard,
owl:AsymmetricProperty a rdfs:Resource. inclusiv ulți ea tuturor resurselor
rdfs:domain a rdfs:Resource.
rdfs:range a rdfs:Resource.
rdf:type a rdfs:Resource.
rdfs:Resource a rdfs:Resource.
Cu oști țe i pli ite
A ia după e afir ațiile i pli ite su t i luse ave u răspu s la î tre area "Ce
este X?" pentru orice X:
• U otor i fere țial va ge era afir ațiile i pli ite, dar ele pot fi i luse și î
a se ța u ui otor, pe ăile discutate (manual sau prin reguli încorporate în
i terogări
• Dacă e ază doar pe afir ațiile i pli ite, răspu sul la î tre area "Ce este
X?" poate fi prea vag pentru a fi util
• rdfs:Resour e e u răspu s vag, ajută doar la i terogări ge eraliste: "Returnează lista tuturor
ter e ilor folosiți î aza de u oști țe (URI și oduri a o i e "
• Pe tru ori e X ar tre ui să e iste ă ar u răspu s în plus față de rdfs:Resour e la a eastă
întrebare
• Pentru termenii standard, motoarele inferențiale ai ge erează ă ar rdf:Propert sau rdfs:Class
• Pe tru ori e i divid i sta ță reat de oi ar tre ui să e iste ă ar u răspu s care nu e un termen standard (deci o
lasă defi ită de oi, î adrul propriului ostru vo a ular
• Pe tru lasele reate de oi e a epta il a si gurele răspu suri să fie rdfs:Class și rdfs:Resour e
• Pe tru proprietăți e a epta il a si gurele răspu suri să fie rdf:Propert și rdfs:Resour e. Pe tru o proprietate
o tează ai ult e tipuri de i divizi poate o e ta de i rdfs:do ai și rdfs:ra ge, î tradu ere "domeniu" și
"codomeniu")
• Ori e proprietate reată de oi tre uie să ai ă lar spe ifi at do e iul și odo e iul, și ă ar u ul di tre a estea
tre uie să fie diferit de rdfs:Resour e, altfel proprietatea e prea vagă u va per ite dedu erea tipului i divizilor e
parti ipă la a ea relație
A elași e e plu, a u e efi ii d de
u otor i fere țial RDFS
Baza de u oști țe di e e plu poate fi ult redusă da ă lu ră u u otor
i fere țial – a esta va putea ge era o parte di e e plul dis utat pri dedu ții
automatizate:

A eastă parte va tre ui reată a ual: A eastă parte poate fi ge erată de u


otor i fere țial RDFS:
@prefix : <http://expl.at#>.
@prefix voc: <http://expl.at/vocabularul-meu#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>. Fapte
:Anna a voc:Femeie . deduse
:Andrew a voc:Persoana .
:Anna voc:mamaLui :Andrew .
Axiome
voc:Femeie a rdfs:Class. deduse
voc:Persoana a rdfs:Class.
voc:mamaLui a rdf:Property.
voc:mamaLui rdfs:domain voc:Femeie.
voc:mamaLui rdfs:range voc:Persoana.
voc:mamaLui a owl:AsymmetricProperty .
Dete tarea de o tradi ții
Dete tarea de o tradi ții = se alarea situațiilor î are apar o i ații de afir ații o tradi torii.

Principiu general: Dete tarea o tradi țiilor se azează pe terminologia OWL - unele axiome cu termeni
OWL sunt i terpretate a și o strâ geri ter e ii RDF/S nu permit definire de constrângeri!)

"Se alarea o tradi țiilor" poate lua numeroase forme:


• Generarea de semnale î i terfața u utilizatorul fără a produce nicio modificare în baza de u oști țe.
Exemple:
– Mesaje de eroare declanșate î i terfață
– E e utarea u or i terogări de itire ătre utilizator, apa ile să afișeze o tradi ții fără a adu e odifi ări
• Copierea afirmațiilor are se o trazi î tr-un graf de o tradi ții, ce va fi ulterior interogat pentru
analizare
– Ate țe, u toate afir ațiile o tradi torii su t false; de o i ei u ele adevărate se o trazi u u ele false, de i e
e esară a alizarea lor de ătre ad i istratorul azei de u oști țe!
• Mar area o tradi țiilor u afir ații dedi ate pe tru asta, are să poată fi ulterior i terogate pe tru
analizare. Exemple:
– Afir ații de tip "X a :IndividContradictoriu" pentru i sta țe
– Afir ații de tip "P a :ProprietateContradictorie" pentru proprietăți
– Afirmații de tip "C a :ClasaContradictorie" pentru proprietăți
– Reifi area afir ațiilor o tradi torii s-a exemplificat deja)
Dete tarea de o tradi ții
:Anna :isMotherOf :Andrew .
Fapte (contradictorii)
:Andrew :isMotherOf :Anna .
:isMotherOf a owl:AsymmetricProperty . Axio ă OWL dete toare de o tradi ții
U otor i fere ţial de tip OWL va re u oaşte se ifi aţia ter e ului sta dard şi va se ala o
o tradi ţie î odul de utilizare a relaţiei :isMotherOf, pe aza i terpretării ter e ului sta dard
owl:AsymmetricProperty (din terminologia OWL)!

Da ă otorul i fere ţial u e dispo i il, pute totuși e efi ia de a io ă și u ajutorul u ei


i terogări e e utate de u "administrator" al u oști țelor, responsabil cu calitatea lor):
• O i terogare de itire poate se ala o tradi țiile administratorului cunoști țelor:
SELECT ?s ?p ?o WHERE
{?p a owl:AsymmetricProperty.
?s ?p ?o.
?o ?p ?s.}
• O interogare de scriere poate să sto heze o tradi țiile per ițâ d și altora să le analizeze
ulterior*
INSERT {GRAPH :Contradictii {?s ?p ?o.?o ?p ?s}}
WHERE {?p a owl:AsymmetricProperty. ?s ?p ?o. ?o ?p ?s.}
*nu uitați, e posi il a di tr-u set de afir ații o tradi torii, u ele să fie totuși adevărate sau utile î tr-un context limitat (" u oști țe
subiective"); de aceea ștergerea auto ată a afir ațiilor o tradi torii u e re o a dată
Terminologia standard RDF/S
= colecție de ter e i sta dard cu care se pot crea vocabulare
 or i de o tologii a ia â d i lude și ter e i di ter i ologia OWL
= pe baza sa, motoarele i fere țiale pot genera anumite afir ații
 inclusiv afir ații de tipul "X a Y"
= este inclusă î ter i ologia OWL
 otoarele i fere țiale OWL re u os și termenii RDF/S
 ori e o tologie i lude și u o a ular sau, o o tologie este u o a ular
e ti s u a io e supli e tare e ite să î ogățeas ă des rierile de lase
și proprietăți

1
rdfs:Resource
= ulți ea tuturor resurselor "clasa universală"), conți e ori e URI, od a o i sau
aloare si plă de ori e tip
Notă: ter i ologia OWL oferă și u si o i , ter e ul owl:Thing

Di preze ţa afir aţiei…


:Anna :isMotherOf :Peter.
…un motor i fere țial a ge era "declarații de resurse" pe tru ori e URI și ori e od
anonim*:
:Anna a rdfs:Resource.
:isMotherOf a rdfs:Resource.
:Peter a rdfs:Resource.
(deoarece ori e e o resursă)

Declarațiile de resurse su t afir ații agi, de utilitate redusă. Totuși, ele adu u ele
beneficii:
• Gara tează o pletitudi ea azei de u oști țe e istă ă ar u răspu s la
întrebarea Ce este X? pe tru ori e resursă e țio ată î aza de u oști țe
• Per it i terogarea u ei liste o plete a resurselor folosite î aza de u oști țe

*nu și pe tru valorile si ple, dar u pe tru ă a estea u ar fi resurse, i pe tru ă u pot
apare a su ie te î afir ații! 2
rdf:Property
= ulți ea tuturor proprietăților relații+atri ute

Din:
:Anna :isMotherOf :Peter.
...se va genera:
:isMotherOf a rdf:Property.
(ori e ter e di ijlo ul u ei afir aţii e o proprietate)

Per ite i terogarea u ei liste u toate proprietățile


3
rdfs:Class, rdf:type
rdfs:Class = ulți ea tuturor ulți ilor laselor
Notă: ai i lasele tre uie î țelese a ulți i de i sta țe ,
și u î se s o ie tual, a seturi de atri ute de i sta țiat/ oște it

rdf:type (abreviat "a" în Turtle) = relația de aparte e ță a u ui i di id/u ei


i sta țe la o ulți e/ lasă
Notă: de o i ei î li aj atural se tradu e pri ver ul "a fi", la singular.

Din:
:Anna a :Human. (sau :Anna rdf:type :Human.)
...se va genera:
:Human a rdfs:Class. (sau :Human rdf:type rdfs:Class.)
(ori e o ie t al relaţiei rdf:type e o lasă)

4
rdfs:subClassOf
= relația de i luziu e î tre ulți i lase
Notă: ai ulte astfel de relații vor o strui o ierarhie de lase taxo o ie

Din:
:Andrew a :Man.
:Man rdfs:subClassOf :Human.
:Human rdfs:subClassOf :Being.
…se a ge era:
:Andrew a :Human, :Being.
o i sta ță pri ește toate tipurile pozițio ate î ierarhie deasupra
clasei sale declarate)
:Man rdfs:subClassOf :Being.
(i luziu ea e tra zitivă
5
Propagarea tipului în sus pe ierarhie
î a elași ti p, se vor dedu e relațiile
de incluziune indirecte, ce reies din
tranzitivitate
da ă o i sta ță pri ește u tip,
pentru ea se vor deduce toate tipurile rdfs:Resource
de deasupra în ierarhie
rdfs:subClassOf

:Being
rdf:type
rdfs:subClassOf
rdf:type rdfs:subClassOf

:Andrew rdf:type :Human

rdf:type
rdfs:subClassOf
rdfs:subClassOf rdfs:subClassOf

:Man
6
Incluziunea între mai multe clase duce
la o ierarhie (taxonomie) Mulţi ea
Mulți e de reu iu e
i trodusă forțat pe tru a rdfs:Resource / owl:Thing
u iversală
unifica alte clase)
Mulți e de
i terse ţie u ai :Person :Object :Location

multe supraclase)

:Employee :Student :Computer :Furniture :Lab :Office

:EmployedStudent
rdf:type
:Admin :Master :Bachelor
:Teaching :L201

rdf:type
:Andrew

rdf:type
owl:Nothing
Mulţi ea vidă o eptul
:Alain
există doar î OWL!
I sta ță "clasificată" 7
(primește a "tip" toate lasele de deasupra elei î are e î adrată i ițial
Eroare fre e tă: ierarhia plată
Ie a hie plată = o ierarhie î are fie are lasă e o e tată doar la ulți ea u i ersală și ulți ea
idă, fără a a ea relații u alte lase relațiile u rdfs:Resour e și u o l:Nothi g ori u se ge erează
auto at de ătre otorul i fere țial, pe tru ori e lasă
Neajuns: Nu a per ite dedu ții utile doar dedu ții de tipul X a rdfs:Resource)
rdfs:Resource / owl:Thing

:Employee :Student :MasterStudent :Lab :Computer :Furniture

owl:Nothing

Î er ați să ierarhizați ât ai detaliat lasele reate de oi:


• Ide tifi ați lase î tre are e istă o i luziu e lară e e plu: ori e stude t la aster
este u stude t . Ide tifi ați și su lase o ple e tare, da ă su t utile i terogărilor
• I trodu eți lase de i terse ție a olo u de e istă i sta țe o u e ai ultor lase
• I trodu eți lase de reu iu e a olo u de doriți să u ifi ați lase fără a le lega dire t la
rdfs:Resource
Pri ipii ale ierarhizării
Î efortul de ierarhizare, ghidați- ă după:
• I terogări e tre uie progra ate î apli ații reate de oi e tipuri reți să se poată dete ta pe tru i di izi
• I terogări pro a ile di partea altor lie ți și altor apli ații
• Posi ilitățile de e te sie pre o izate pe tru iitor adăugare de lase oi
Cu alte u i te, u e o ligatoriu să a eți o ulți e de i terse ție î tre ori are două lase, doar a olo u de se
pre o izează i terogări. Î e e plul de ai jos a e ti s ierarhia plată di oti ele i di ate:
Reu iu e i trodusă pe tru a per ite
• interogarea inventarului complet de
e hipa e te și piese de o ilier
Su ulți e o ple e tară • defi irea pe viitor și a altor tipuri de
i trodusă pe tru a i di a e su t o ie te eî suflețite î tr-un mod
stude ții are u su t astera zi rdfs:Resource / owl:Thing are să le disti gă ușor de elelalte
clase (ca subclase ale lui Object)

:Employee :Student :Object

:EmployeeStudent :BachelorStudent :MasterStudent :Lab :Equipment :Furniture

I terse ție i trodusă pe tru a


per ite i terogarea fa ilă a elor Relație de i luziu e ide tifi ată
are su t și stude ți și a gajați owl:Nothing î tre două lase di ierarhia plată
Incluziunea permite echivalarea de clase
defi ite de orga izaţii diferite,
î aze de u oști țe diferite
(cu prefixe diferite)
rdfs:subClassOf
:Human alt:HomoSapiens
rdfs:subClassOf

Afirmațiile ce asigură maparea


conceptelor formează o
"ontologie de aliniere"
Organizaţia A (în forma cea mai simplă, un Organizaţia B
(cu prefixul :) dicționar de echivalențe) (cu prefixul alt:)

U eori u a e e hi alare, dar pute a ea totuși relații î tre o epte î rudite î tr-
u fel sau altul, defi ite de orga izații diferite:
• Relaţia poate fi reată și î tr-un singur sens
• Alter ati , se pot rea lase de reu iu e sau i terse ţie (vezi slideul urmator) 10
O tologia de ali iere poate o ți e
apări ai sofisti ate de ât
e hi alările
Mulțime de reuniune
:Employee

rdfs:subClassOf rdfs:subClassOf

:Researcher alt:Manager

rdfs:subClassOf
rdfs:subClassOf

:ManagingResearcher

Organizaţia A Organizaţia B
Mulțime de intersecție
11
rdfs:subPropertyOf
= relația de ge eralizare a proprietăților, pri are o proprietate e
de larată a fii d o ersiu e ai agă a alteia
Notă: a și rdfs:su ClassOf, per ite o struirea de ierarhii de proprietăți

Din:
:JamesCameron :directed :Terminator.
:directed rdfs:subPropertyOf :created.
:created rdfs:subPropertyOf :workedOn.
…se a ge era:
:JamesCameron :created :Terminator.
:JamesCameron :workedOn :Terminator.
se dedu ai ulte relații î tre a eiași i divizi
:directed rdfs:subPropertyOf :workedOn.
(şi ge eralizarea proprietăţilor e tra zitivă)

12
Ge eralizarea proprietăţilor
(relația universală care
owl:topObjectProperty "conectează toate lucrurile")
rdfs:subPropertyOf

:workedOn rdfs:subPropertyOf
rdfs:subPropertyOf rdfs:subPropertyOf
rdfs:subPropertyOf
:created
rdfs:subPropertyOf

Ca i incluziunea de clase,
:directed
:JamesCameron :Terminator i generalizarea proprietăților
e tranzitivă
Principala utilizare e deducerea
de relații multiple (tot mai vagi)
între aceia i indivizi
13
Ge eralizarea proprietăţilor du e la
două ierarhii de proprietăţi:
u a pe tru relaţii, u a pe tru atri ute
(pentru a fi taxonomii complete, ambele se pot închide cu termeni OWL)
Relația universală Atributul universal
(există între orice resurse) (îl are oricine, poate lua orice valoare)
owl:topObjectProperty owl:topDataProperty

:RelativeTo :worksWith
:knownAs
:hasIncome

:ParentOf
:BossOf :Coworker :hasName :hasNickname
:MarriedTo

"Andy"

:BossAndRelativeTo (relație de intersecție)


:Peter :Andrew

Instanțe a căror relație owl:bottomObjectProperty owl:bottomDataProperty


se generalizează în sus
:Anna
Relația imposibilă Atributul imposibil
(nu poate exista între două resurse) (nu îl poate avea nimeni)
14
Pute du la și i ersa relația pe tru a
e hi ala proprietăţi "sinonime"
folosite de orga izaţii diferite

rdfs:subPropertyOf

:knows alt:isAcquaintedTo

rdfs:subPropertyOf

: i aceste echivalări țin tot de


"ontologiile de aliniere"

Organizaţia A Organizaţia B

15
Ca și la lase, o tologiile de ali iere u
o ți eapărat e hi alări
Relație de reuniune
:citizenInSameCity

rdfs:subPropertyOf rdfs:subPropertyOf

:livesNear alt:Neighbour

rdfs:subPropertyOf
rdfs:subPropertyOf

:livesInTheSameBuildingWith Organizaţia B

Organizaţia A
Relație de intersecție
rdfs:domain, rdfs:range
rdfs:domain = do e iul u ei relații tipul pe are îl or pri i su ie tele
rdfs:range = odo e iul u ei relații tipul pe are îl or pri i o ie tele
Exemplu:
:directed rdfs:domain :Director; rdfs:range :Movie.

A alogie cu fu cțiile di ate atică:


f:A->B (fu ția f aso iază ele e telor di A ele e te di B
directed: Director -> Movie (relația dire torOf aso iază regizori u fil ele lor
Disti cție față de fu cțiile di ate atică:
• Î ate ati ă ORICE ele e t di A tre uie aso iat u u ul di B
– Aici nu e obligatoriu ca ORICE regizor să ai ă el puți o relație u u fil
• pute i trodu e a ual X a :Dire tor fără să a e afir ații de tipul X :dire torOf Y
• Î ate ati a, fu ția poate fi i terpretată a o o strâ gere u ui ele e t di A i se poate aso ia
doar u ele e t di B, o for u ui a u it al ul i pus de fu ție
– Ai i u gâ di î o strâ geri, i î dedu ții ge erări de afir ații :
• da ă u X apare a su ie t î relația dire torOf, se a dedu e ă e regizor X a :Dire tor
• da ă u Y apare a o ie t î relația dire torOf, se a dedu e ă e fil Y a :Mo ie
Re i der: î ge eral ter e ii RDF/S u pot i pu e o strâ geri și u pot dete ta o tradi ții
se zi e ă u au rol restri tiv, i rol des riptiv 17
rdfs:domain, rdfs:range
Din:
:JamesCameron :directed :Terminator.
:directed rdfs:domain :Director; rdfs:range :Movie.
…se a ge era:
:JamesCameron a :Director.
:Terminator a :Movie.
• Pri a este a io e i sta ţele su t repartizate pe lase "clasificate") î fu ţie de relaţiile la care
parti ipă
• E principalul mecanism prin care se generează de răspu suri la î tre ările de tip Ce este X?
– u o diția a ori e proprietate să își ai ă defi it do e iul și odo e iul, iar ă ar u ul di tre a estea să fie
diferit de rdfs:Resource
• E e a is ul are leagă ierarhiile de proprietăți u ierarhiile de lase
– pra ti u o a ular tre uie să o ți ă i i o ierarhie de lase+o ierarhie de proprietăți+legături î tre ierarhii u
ajutorul do e iului și odo e iului

Avertisment: Dedu erea tipului u se apli ă la alori si ple! Di e e plul de ai jos...


:hasAge rdfs:range xsd:integer.
:Anna :hasAge "thirty".
... u se poate ge era ur ătoarea î pri ul râ d pe tru ă su ie tul u poate fi u stri g ...
"thirty" a xsd:integer.
U ele otoare i fere țiale i lusiv Sesa e, GraphDB ig oră astfel de azuri fără a ge era i i . Altele pot
să apli e validări de tip pe aza XML S he a pe tru a se ala o tradi ții.
I difere t de situație, pri a li ie tre uie totuși i lusă ă ar a de larație ă i e utilă pe tru i terogări
lie ții vor putea afla e tipuri de valori ar tre ui să găseas ă la u atri ut și eve tual pe aza lor pot realiza
validări î odul apli ației lie t, î for ulare et . 18
Domeniul și odo e iul i flue țează
ierarhia de clase
Daă o proprietate are u do e iu sau odo e iu ai larg sau ai restrâ s de ât lasele e iste te î ierarhie,
seor i trodu e lase oi reu iu i, i terse ții, tipuri de date . E e plu por i d de la ierarhia plată de ai jos:
• Defi i proprietatea hasNa e, apli a ilă atât a gajaților ât și stude ților, u alori de tip stri g
• Defi i proprietate lo atedI , apli a ilă atât al ulatoarelor ât și o ilierului, u alori i sta țe de tip
Room
 De i e esare lase oi ele u o tur î groșat :
rdfs:Resource / owl:Thing

:Employee :Student :Room :Computer :Furniture

:locatedIn owl:Nothing

:hasName rdfs:range rdfs:range


rdfs:Resource / owl:Thing rdfs:domain
Te ă de gâ dire:
rdfs:domain De e să u defi i două do e ii?
:Person :InventoryObject :locatedIn rdfs:domain :Computer,
rdfs:Literal
:Furniture.
:Room :Computer
:Employee :Student xsd:string :Furniture

owl:Nothing
rdfs:label, rdfs:comment,
rdfs:isDefinedBy, rdfs:seeAlso
rdfs:label = ataşarea u ei alori de tip stri g u rol de de u ire/titlu/et . eti hetă are să fie i terogată și
î orporată î i terfața apli ațiilor lie t:
:Anna rdfs:label "Smith Anna".
U eori dori să disti ge î tre ai ulte astfel de proprietăți u e, titlu, pore lă et . de e e plu pe tru a le
da diferite do e ii/ odo e ii e : titlurile să fie folosite doar la fil e/ ărți, u ele doar la fii țe . Î a est az,
a ele proprietăți or fi de larate a su proprietăți ale lui rdfs:la el
:titlu rdfs:subPropertyOf rdfs:label; rdfs:domain :CreatieArtistica.

rdfs:comment = ataşarea u ui o e tariu î li aj atural:


:ProABC rdfs:comment "acest URI e identificatorul companiei Prosperitas".

rdfs:seeAlso = atașarea de URL-uri ale unor site-uri We sau aze de u oști țe rele a te pe tru resursa-subiect
se pot î orpora a li kuri î i terfața apli ațiilor lie t :
:MichaelJackson rdfs:seeAlso <http://en.wikipedia.org/wiki/Michaeljackson>;
rdfs:seeAlso < http://dbpedia.org/resource/Michael_Jackson>.

rdfs:isDefinedBy = indicarea locului (de obicei un vocabular/ontologie) în care s-a descris în mod definitoriu
se ifi ația u ui ter e de o i ei o proprietate sau o lasă :
:eSotiaLui rdfs:isDefinedBy :vocabularPentruRelatiiSociale.
Se folosește rdfs:isDefinedBy și pe tru a i di a site-ul ofi ial al u ei i sta țe î ti p e u rdfs:seeAlso se de lară
diverse siteuri "secundare")...
:MichaelJackson rdfs:isDefinedBy <http://www.michaeljackson.com>.
… sau adresa URL la care se pot o ți e afir ații RDF u proprietăți defi itorii, de e . pagina de pe DBPedia:
:MichaelJackson rdfs:isDefinedBy <http://dbpedia.org/page/Michael_Jackson>.
20
rdf:value
= i di ă "valoarea principală" aloarea ea ai pro a il să fie i terogată de lie ți atu i â d a e relații
complexe (ce grupează ai ulte proprietăți/ alori

Reminder: Relațiile n-are (complexe, sau "cu aritate mare") apar atunci când la o relație parti ipă mai multe valori
sau i sta țe conectate printr-un nod anonim. În astfel de cazuri, dorim uneori să i di ă ă una dintre valori
reprezi tă "valoarea pri ipală" (mai i porta tă în calcule) în timp ce restul au doar rol de a î ogăți se ifi ația
valorii principale (eventual pentru filtre).

De exemplu în loc de...


:Andrew :grades [:val 10; :course :Math].
:Cluj :weather [:temp 30; :measurement :Celsius].
…se re o a dă...
:Andrew :grades [rdf:value 10; :course :Math].
:Cluj :weather [rdf:value 30; :measurement :Celsius].

Î pri ul az, lie ții tre uie să o sulte o a ularul lista proprietăților, do e iile și odo e iile pe tru a î țelege
disti ția î tre u eroasele proprietăți și pe tru a afla di are pot să e tragă otele sau te peraturile.

În al doilea caz:
• Vo a ularul azei de u oști țe e mai redus u ărul de proprietăți are tre uie defi ite u do e iu și
codomeniu e mai mic)
• Clie ții pot folosi i terogări u î lă țuiri :grades/rdf: alue, : eather/rdf: alue pe tru toate relațiile -are.
Tre uie doar să afle are relații foloses a eastă stru tură, aspe t pe tru are e istă u ele pra ti i uzuale:
– Clie ții pot folosi i terogări preala ile pe tru a erifi a ai î tâi u de s-a folosit rdf:value (cu ASK sau clauza
OPTIONAL)
– Baza de u oști țe poate i lude o lasă pe tru toate odurile a o i e e î depli es a eastă fu ție sau o
supraproprietate pe tru toate relațiile legate la u astfel de od a o i
21
rdf:value
Într-o altă aria tă (mai puți efi ie tă putem asigura atât disti ția între proprietățile i ițiale cât și marcarea
acelor proprietăți care trebuie să indice "valoarea principală":

:Andrew :grades [:val 10; :course :Math].


:Cluj :weather [:temp 30; :measurement :Celsius].
:val rdfs:subPropertyOf rdf:value.
:temp rdfs:subPropertyOf rdf:value.
Motorul inferențial a du la alorile pri ipale pri dedu ție:
:Andrew :grades [:val 10; rdf:value 10; :course :Math].
:Cluj :weather [:temp 30; rdf:value 10; :measurement :Celsius].

Mai putem folosi această teh i ă pe tru afir ații î are tre uie eapărat a su ie tul să fie o aloare si plă.
Deoarece acest lucru nu e permis în RDF, vom folosi un nod anonim pe post de subiect, conectând la acesta
aloarea si plă e e tual și alte proprietăți rele a te, pre u tipul XML S he a al a esteia :

[rdf:value 7] a :NrPrim. sau [] rdf:value 7; a :NrPrim. sau [rdf:value 7; a :NrPrim] este u u ăr pri
[rdf:value 7; a xsd:integer] a :NrPrim. este o aloare de tip î treg și este u u ăr pri
[rdf:value 4] :arePatratul 16. (4 are pătratul 1

Sau, atunci câ d u ei proprietăți îi atașă ai ulte alori difere țiate pri relații -are:
:John :hasPhoneNumber [rdf:value "0724888888"; :phoneType :PersonalMobile],
[rdf:value "0263333333"; :phoneType :Work].

22
rdf:HTML, rdf:XMLLiteral,
rdf:langString
A estea su t si gurele tipuri de date i troduse de RDF î rest, se azează pe tipurile
XML Schema):
rdf:XMLLiteral = stri guri ale ăror alori su t frag e te de od XML
rdf:HTML = stri guri ale ăror alori su t frag e te de od HTML
rdf:langString = stri guri ale ăror alori au atașat u od de li ă de o i ei u apare
delo î afir ații, a estea fii d re u os ute/filtrate după preze ța odului li ă

E e plu u i for ații de o ta t sto ate î for at HTML și XML:


:Anna :hasContactInfo "<table><tr><td>Phone:00000</td></tr>
<tr><td>Email:anna@yahoo.com</td></tr>
</table>"^^rdf:HTML,
"<contact phone='888888'
email='anna@yahoo.com'/>"^^rdf:XMLLiteral.
Beneficii:
• se pot stoca într-o ază de u oști țe frag e te de do u e te HTML și/sau XML gata pregătite pe tru
i serare î i terfața fi ală de e . pri AJAX sau alte tipuri de pro esări de e . pri XSLT, XPath !
• se pot rea pagi i We odulare, o puse di frag e te sto ate î grafuri RDF u di erse relații î tre ele 23
rdfs:Datatype, rdfs:Literal
rdfs:Datatype = mulți ea tuturor tipurilor de date
rdfs:Literal = ulți ea tuturor alorilor si ple, indiferent de tip

Din:
:Anna :hasAge "20"^^xsd:integer.
...se va genera:
xsd:integer a rdfs:Datatype; rdfs:subClassOf rdfs:Literal.
(ori e resursă ataşată u ei alori si ple e u tip de date și o su ulți e a ulți ii tuturor alorilor)

A e și posi ilitatea de a i e ta propriile tipuri de date:


:Anna :hasName "ANNA SMITH"^^:StringCuMajuscule.
Atenție, a easta e doar o de larație, u a putea fi folosită pe tru a erifi a efe ti da ă aloarea
stri gului orespu de tipului i e tat. Co strâ gerile aso iate oului tip pot fi defi ite pe ai ulte ăi:

A. Cu ajutorul OWL (vom reveni ulterior)


B. Atașâ du-i codul XML Schema care definește restri țiile respe ti e și lăsâ d lie ților
respo sa ilitatea erifi ării o strâ gerile
:StringCuMajuscule a rdfs:Datatype;
rdfs:isDefinedBy "<xs:simpleType name='StringCuMajuscule'>
<xs:restriction base='xs:string'>
<xs:pattern value='[A-Z]*'/>
</xs:restriction>
</xs:simpleType>"^^rdf:XMLLiteral.
24
rdf:Bag, rdf:Seq, rdf:Alt, rdf:Container,
rdfs:member, rdf:_1/2/3/...,
rdfs:ContainerMembershipProperty
Des riu relaţii "part-of", între un obiect complex ("container") și "componentele" sale
rdf:Container = ulți ea "containerelor"; un container e un grup de "componente" și î fu ție de relația di tre o tai er și
componente, avem mai multe variante (subclase):

rdf:Bag = ulți ea o tai erelor eordo ate u o tează ordi ea o po e telor, a estea fii d o e tate u rdfs:member):
:Computer a rdf:Bag.
:Computer rdfs:member :CPU, :motherboard, :disk.

rdf:Seq = ulți ea o tai erelor ordo ate lie ții ar putea fi i teresați de ordi ea o po e telor, o e tate u relații de
forma rdf:_1,2,3...):
:DocumentFolder a rdf:Seq.
:DocumentFolder rdf:_1 :birthCertificate; rdf:_2 :diploma; rdf:_3 :salaryStatement.

rdf:Alt = ulți ea o tai erelor de alter ati e; da ă ordi ea u o tează se folosește rdfs:member, da ă ordi ea o tează o
e pri ă a ai sus. Mai jos alternativele de călătorie su t ordo ate după preferi ță:
:MyTravelAlternatives a rdf:Alt;
:MyTravelAlternatives rdf:_1 :Automobile; rdf:_2 :Plane; rdf:_3 :Bike.

Relațiile are e istă î tre toate a estea și se ge erează i pli it:


• rdf:Bag, rdf:Seq, rdf:Alt sunt subclase ale lui rdf:Container de i ori e o tai er, i difere t de tip, de i e și i sta ță a lui
rdf:Container)
• rdfs:_1/2/3 et . pre u și rdfs: e er su t i sta țe ale lui rdfs:ContainerMembershipProperty are e su lasă
rdf:Property)
• rdf:_1/2/3 su t su proprietăți ale lui rdfs:member de i se poate dedu e relația rdfs:member di relațiile u ordi e,
per ițâ d i terogarea fa ilă a tuturor o po e telor hiar da ă a estea s-au declarat ca fiind ordonate)
25
rdf:List, rdf:first, rdf:rest, rdf:nil
rdf:List = ulți ea tuturor listelor
rdf:first = relația e leagă o listă de apul a esteia pri ul ele e t
rdf:rest = relația e leagă o listă de oada a esteia oada fii d tot de tip rdf:List
rdf:nil = od e ar hează î hiderea u ei liste legat pri rdf:rest de ulti ul ele e t .

Turtle oferă o si ta ă a re iată pe tru liste, e e s utește de a folosi a ești ter e i:


:Anna :hasChildren (:Peter :Mary :George).
Stru tura reală di spatele a estei si ta e este:
:Anna :hasChildren [a rdf:List; rdf:first :Peter; rdf:rest [a rdf:List; rdf:first :Mary; rdf:rest [a
rdf:List; rdf:first :George; rdf:rest rdf:nil]]].

E i porta t să u oaște stru tura di spate și a ești ter e i, pe tru a-i folosi î i terogări,
de exemplu:

Când soli ită toate ele e tele listei fără să ști âte su t:
SELECT ?x
WHERE { :Anna :hasChildren/rdf:rest*/rdf:first ?x}
26
rdf:List, rdf:first, rdf:rest, rdf:nil
Alte exe ple de i te ogă i pe liste:

Câ d soli ită primul element din toate listele:


SELECT ?primul
WHERE { ?s ?p [a rdf:List; rdf:first ?primul] FILTER NOT EXISTS {?s a rdf:List}}
E nevoie de filtru, altfel se returnează toate ele e tele listei, ă i toate su t legate pri rdf:first de u od de tip
rdf:List o altă aria tă ar fi a filtrul să erifi e a ?p să fie diferit de rdf:rest .

Câ d soli ită ulti ul element din toate listele:


SELECT ?ultim
WHERE {?ultim ^rdf:first/rdf:rest rdf:nil}
Ate ție, rdf: il e a elași î TOATE listele, de i o e tează apetele tuturor listelor! Da ă e ază doar pe rdf: il,
u e lar î are listă e află . De a eea â d soli ită ulti ul ele e t al u ei liste a u e tre uie să î epe
parcurgerea sa de la început, nu de la rdf:nil:
SELECT ?ultim
WHERE {:Anna :hasChildren/rdf:rest*/rdf:first ?ultim FILTER EXISTS {?ultim ^rdf:first/rdf:rest rdf:nil}}
Se uleg toate ele e tele listei de la î eput și se păstrează el are e o e tat la rdf: il pri î lă țuirea di
filtru)

Da ă ști e a t âte ele e te su t, pute folosi și î i terogări si ta a a re iată, de e e plu pe tru a o ți e


ultimul element dintr-o listă de 3:
SELECT ?ultim
WHERE { :Anna :hasChildren (?x ?y ?ultim).}
27
Dife e țe î t e df:List și df:Se
:DocumentFolder rdf:_1 :birthCertificate :hasChildren
:Ana
_:X rdf:first

:Peter
rdf:_2
rdf:type rdf:rest
rdf:type
:diploma _:Y rdf:first
rdf:type
:Mary
rdf:List
rdf:_3 rdf:rest

rdf:Seq rdf:first
rdf:type _:Z
:George
:salaryStatement
rdf:rest

rdf:nil

28
Dife e țe î t e df:List și df:Se
Atât listele rdf:List ât și o tai erele rdf:Seq per it e u erări ordo ate, dar
e istă difere țe i porta te:
• Structura este cu totul alta și a easta i flue țează odul î are arată
i terogările
• Listele sea ă ă ai ult u lasele, fii d adesea o e u erare de i sta țe
de a elași tip OWL per ite hiar o ersia listă-> lasă)
– Containerele sunt de regulă grupuri de elemente (componente) de diferite
tipuri.
• Î liste este ai ușor de i terogat ulti ul ele e t, fii d ar at u rdf:nil
– În o tai ere tre uie să le u ără cu o interogare cu COUNT î ai te să
pute i teroga ulti ul ele e t de a eea zi e ă listele su t ordo ări
î hise, î ti p e se e țele su t ordo ări des hise
• Î o tai ere este ai ușor de adăugat u ele e t, fără a odifi a alte
afir ații existente
– În liste adăugarea u ui ele e t e esită utarea lui rdf: il de i o ștergere și
o inserare)
rdf:Statement,
rdf:subject, rdf:predicate, rdf:object

rdf:Statement = ulți ea tuturor afir ațiilor reifi ate


rdf:subject = relația di tre o afir ație reifi ată și su ie tul său
rdf:predicate = relație di tre o afir ație reifi ată și proprietatea sa
rdf:object = relația di tre o afir ație reifi ată și o ie tul său

Se apli ă la afir aţii reifi ate de e e plu la afir ații su ie ti e :


Anna thinks that Peter’s age is 30.
URI sta dardizaţi pe tru reifi area:
:Anna :thinks [a rdf:Statement; rdf:subject :Peter; rdf:predicate :hasAge; rdf:object 30].

S-a arătat deja ă grafurile identificate sunt preferabile reificării, da ă a e ai ulte


afir ații e tre uie supuse reifi ării de e . ai ulte afir ații su ie ti e ale a eluiași
su ie t . Altfel, rearea u ui graf pe tru o si gură afir ație e i efi ie t și a a ea
perfor a ță ai sla ă de ât reifi area.

30
Avertisment
• Nu o fu daţi rdf:type cu rdfs:subClassOf, rdfs:subPropertyOf sau relaţii part-of:
– rdf:type=aparte e ţa la lasă u ele e t aparţi e u ei ulţi i :
:Shakespeare rdf:type :Writer .
:Writer rdf:type :Profession .
– rdfs:subClassOf=i luziu e ori e ele e t al u ei su ulţi i aparţi e şi ulţi ii are o
include):
:Writer rdfs:subClassOf :Profession . – greşit! ori e s riitor ar de e i o profesie!)
:Writer rdfs:subClassOf :Artist . – corect!
– rdfs:subPropertyOf=ge eralizarea proprietăţilor o supraproprietate are lo î tre
a eleaşi i sta ţe a şi su proprietăţile sale
:isBrotherOf rdf:type :isRelativeOf . – greşit! isRelati eOf u e o lasă
:isBrotherOf rdfs:subPropertyOf :isRelativeOf . – corect da ă A şi B su t fraţi, ei su t şi
rude)
– rdfs:member=relaţii part-of:
:CPU rdfs:subClassOf :Computer – greşit! procesoarele nu sunt calculatoare)
:Computer rdfs:member :CPU – corect!
Co fuzia apare di auză ă toate a este relaţii du la o struirea de ierarhii 31
Sumar
Terminologia RDF/S permite:
– Declaraţii:
• Care URI su t resurse, lase, proprietăţi et .;
– Taxonomii:
• Taxonomia (ierarhia) claselor, incluzând tipuri de date;
• Ta o o ia proprietăţilor;
– Mapări între ierarhiile de clase și proprietăți:
• Domenii
• Codomenii
– Adnotări:
• Etichete, comentarii, adrese URL asociate termenilor
– Structuri de date complexe:
• Liste, o tai ere, relații -are 32
Terminologia standard OWL
= colecție de ter e i sta dard cu care se pot crea ontologii
= rolul o tologiilor e si ilar u al o a ularelor dedu ții auto ate
= i lude ter i ologia RDF/S și îi adaugă oi ter e i de i ori e o tologie o ți e și
un vocabular)
= pri ipala fa ilitate î plus față de RDF/S e oțiu ea de egație, de i posi ilitatea
de a dete ta o tradi ție o tradi ția apare atu i â d o afir ație și egația sa
apar si ulta î a eeași ază de u oști țe
= are ai ulte ersiu i și su seturi, per ițâ d otoarelor i fere țiale să
i ple e teze diferite frag e te ale ter i ologiei OWL i ple e tarea o pletă
are perfor a ță sla ă și u ele dedu ții ede ida ile

33
owl:Thing,
owl:NamedIndividual, owl:Class
owl:ObjectProperty, owl:DataProperty
owl:Thing = ulți ea tuturor resurselor (sinonim cu rdfs:Resource în majoritatea
otoarelor i fere țiale*
owl:NamedIndividual = ulți ea tuturor i sta țelor ea o i e
owl:Class = ulți ea tuturor laselor OWL si o i u rdfs:Class î ajoritatea
otoarelor i fere țiale*
owl:ObjectProperty = mulți ea tuturor relațiilor su lasă a lui rdf:Propert
owl:DataProperty = ulți ea tuturor atri utelor su lasă a lui rdf:Propert

Din:
:Anna rdf:type :Woman, :hasAge 30.
…u otor i fere țial OWL a ge era:
:Anna a owl:NamedIndividual, owl:Thing.
rdf:type a owl:ObjectProperty, owl:Thing.
:Woman a owl:Class, owl:Thing.
:hasAge a owl:DataProperty, owl:Thing.

*există otoare i fere țiale are re u os doar a u ite frag e te ale ter i ologiei OWL, î are se dă i terpretare diferită termenilor OWL
față de ei RDFS; totuși u vo a aliza la a est urs disti ția î tre diferitele versiu i de OWL și vo o sidera doar varianta si plă, de
o pati ilitate totală î tre OWL și RDFS

34
Co epte u i ersale şi i posi ile
owl:Thing
- ulţi ea tuturor lu rurilor e hi ale tă u rdfs:Resour e, supra lasă pe tru o l:Class
owl:Nothing
- ulţi ea idă, ori e aparte e ţă la a eastă lasă tre uie să de la şeze o tradi ţie, ea
î săşi e o su lasă pe tru ori e altă lasă
owl:topObjectProperty
- relaţia u i ersală: e istă î tre ori e două lu ruri resurse
owl:topDataProperty
- atri utul u i ersal: îl are ori e resursă, şi poate lua ori e aloare
owl:bottomObjectProperty
- relaţia i posi ilă, u tre uie să apară i iodată da ă se produ e, a e o tradi ţie
owl:bottomDataProperty
- atri utul i posi il, u tre uie să pri eas ă i iodată aloare î az o trar, o tradi ţie

Aceste concepte sunt utile la asigurarea completitudinii ierarhiilor de clase și de proprietăți


(s-a ăzut deja la terminologia RDF/S)

35
Tipuri de proprietăți OWL
owl:ObjectProperty
- Mulţi ea tuturor relaţiilor su lasă a lui rdf:Propert
owl:DataProperty
- Mulţi ea tuturor atri utelor su lasă a lui rdf:Propert
owl:AnnotationProperty
- mulţi ea proprietăţilor de ad otare rdfs:la el, rdfs:comment, rdfs:isDefinedBy,
rdfs:seeAlso, owl:versionInfo)
owl:OntologyProperty
- mulţi ea relaţiilor î tre o tologii de e ., de laraţii de i port sau o pati ilitate
- su ie tul şi o ie tul a estora or fi î totdeau a o tologii

36
Tipuri de proprietăți OWL
Din:
:isParentOf owl:inverseOf :isChildOf .
:Peter :isParentOf :Andrew .
...se va deduce:
:Andrew :isChildOf :Peter .

Din:
:isRelativeOf a owl:SymmetricProperty .
:Anna :isRelativeOf :Peter .
...se va deduce:
:Peter :isRelativeOf :Anna .

Din:
:knows a owl:ReflexiveProperty .
:Anna a :Woman .
...se va deduce:
:Anna a owl:NamedIndividual .
37
:Anna :knows :Anna .
Tipuri de proprietăți OWL
Din:
:isBrotherOf a owl:TransitiveProperty.
:Peter :isBrotherOf :Andrew.
:Andrew :isBrotherOf :Michael.
...se va deduce:
:Peter :isBrotherOf :Michael.

Din:
:isNephewOf owl:propertyChainAxiom (:isSonOf :isBrotherOf).
:Peter :isSonOf :Andrew.
:Andrew :isBrotherOf :Michael.
...se va deduce:
:Peter :isNephewOf :Michael.
38
Noi oduri de a î ogăți ierarhia de
clase (cu clase de reuniune sau de
i terse ție
:AustrianWriter owl:intersectionOf (:Writer :Austrian).
:Human owl:unionOf (:Man :Woman).
:Andrew a :AustrianWriter, :Man.
…ge erează:
:AustrianWriter rdfs:subClassOf :Writer. di i terse ție
:AustrianWriter rdfs:subClassOf :Austrian.
:Man rdfs:subClassOf :Human. (din reuniune)
:Woman rdfs:subClassOf :Human.
…apoi:
:Andrew a :Writer, :Austrian, :Human.

39
Tipuri de e hi alări î OWL
Din:
:Anna :isA :Woman.
alt:Ann a alt:Woman. E hi ale ță î tre i sta țe
:Anna owl:sameAs alt:Ann. E hi ale ță î tre lase
:Woman owl:equivalentClass alt:Woman.
:isA owl:equivalentProperty rdf:type. E hi ale ță î tre proprietăți
…se va deduce:
:Anna :isA alt:Woman.
:Anna a alt:Woman.
:Anna a :Woman.
alt:Ann :isA alt:Woman.
alt:Ann :isA :Woman.
alt:Ann a :Woman.
40
Disti ția
Fie are od de e hi alare are o aria tă egată a sa disti ția e se folosește la
dete tarea de o tradi ții. Toate azurile de ai jos su t e e ple de o tradi ții și
pot fi dete tate de u otor i fere țial OWL:
:Anna owl:sameAs :Ann.
:Anna owl:differentFrom :Ann.

:Woman owl:equivalentClass :Man.


:Woman owl:disjointWith :Man.

:hasChild owl:propertyDisjointWith :isChildOf.


:Mary :hasChild :Andrew.
:Mary :isChildOf :Andrew.

Î azuri realiste, e puți pro a il a astfel de afir ații o tradi torii să fie
i troduse a ual î a eeași ază de u oști țe.
• Fie au pro e ie țe diferite u a e i portată di tr-o altă ază de u oști țe
• Fie ă ar u a di tre ele a fost dedusă di alte afir ații slideurile ur ătoare
41
Moduri de dedu ere a disti ției
Di disju cție de ulți i:
:Anna a :Woman.
:George a :Man.
:Woman owl:disjointWith :Man.
…ge erează:
:Anna owl:differentFrom :George.

Di ulți i co ple e ta e:
:Anna a :Woman.
_:x owl:complementOf :Woman.
:George a _:x.
…ge erază:
_:x owl:disjointWith :Woman.
…apoi:
:Anna owl:differentFrom :George.
42
Moduri de dedu ere a disti ției
Enumerare de i di izi disti ți:
:StudentGroup owl:members (:Anna :Ann :Andrew); a owl:AllDifferent.
sau
:StudentGroup owl:distinctMembers (:Anna :Ann :Andrew).
Enumerare de lase disju te u pot a ea i sta țe o u e :
:Gender owl:members (:Woman :Man); a owl:AllDisjointClasses.
Reniune de clase disjuncte:
:Human owl:disjointUnionOf (:Woman :Man).

E u erare de proprietăți disju te utual e lusi e, u pot a ea lo î tre a eiași


indivizi) :
:FamilyRelation owl:members (:isMotherOf :isChildOf); a owl:AllDisjointProperties.

43
Moduri de dedu ere a e hi ale ței
P op ietățile fu cțio ale = u pot aso ia u su ie t u ai ulte o ie te da ă o
fa , o ie tele su t o siderate e hi ale te; o tradi ția apare a ia da ă u pot fi
e hi ale te datorită u ei disti ții de larate altu de a :
:Peter :hasMother :Anna.
:Peter :hasMother :Aneta.
:hasMother a owl:FunctionalProperty.
…ge erează:
:Anna owl:sameAs :Aneta.

Similar, p op ietățile i ve s-fu cțio ale nu pot asocia un obiect cu mai multe
subiecte:
:Anna :hasEmail <mailto:Anna@expl.at>.
alt:Aneta :hasEmail <mailto:Anna@expl.at>.
:hasEmail a owl:InverseFunctionalProperty.
…ge erează:
:Anna owl:sameAs alt:Aneta.

44
Moduri de dedu ere a e hi ale ței
P op ietățile cheie su t ersiu i ai a a sate ale proprietăților fu țio ale:
• Pot o ți e o o i ație de proprietăți
• U i itatea heii e li itată la o lasă de su ie te
• A țio ează a și heile pri are di aze de date

Nu pot e ista doi stude ți u a elași ID î a eeași i stituție:


:Anna :ID 100; :studentAt :Univie; a :Student.
:Aneta :ID 100; studentAt :Univie; a :Student.
:Student owl:hasKey (:ID :studentAt).
… a ge era:
:Anna owl:sameAs :Aneta.

45
Moduri de dedu ere a e hi ale ței
Cardinalitatea li itează u ărul de relații pe are le pot a ea i sta țele u ei
clase.

Î e e plul ur ător, de lară lasa Mo opare talChild a fii d for ată di


a ei i di izi are au a i u pări te ardi alitate a i ă 1 apli ată relației
hasParent):
:MonoparentalChild owl:onProperty :hasParent; owl:maxCardinality 1 .
:Peter a :MonoparentalChild; hasParent :Anna, alt:Mary.
…deoare e s-au de larat doi pări ți, se a dedu e e hi ale ța lor și a ia î
azul î tâl irii u ei disti ții se a de la șa o tradi ție :
:Anna owl:sameAs alt:Mary.
:MonoparentalChild a owl:Restriction, owl:Class.
î plus se dedu e și faptul ă Mo opare talChild e o lasă defi ită pri
restri ție
46
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
:EarthSatellite owl:onProperty :Orbits; owl:hasValue :Earth .
:Moon :Orbits :Earth .
…ge erează:
:Moon a :EarthSatellite .
:EarthSatellite a owl:Restriction, owl:Class .
ori e or itează Pă â tul de i e e ru al lasei EarthSatellite

Dedu ția fu țio ează și i ers:


:EarthSatellite owl:onProperty :Orbits; owl:hasValue :Earth.
:Moon a :EarthSatellite.
…ge erează:
:Moon :Orbits :Earth.
:EarthSatellite a owl:Restriction, owl:Class.
ori e satelit de larat al Pâ â tului or itează Pă â tul

47
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Dedu erea tipului su ie tului di relațiile î are e i pli at:
:Playwright owl:onProperty :wrote; owl:someValuesFrom :Play .
:Will :wrote :Tempest .
:Tempest a :Play .
…ge erează:
:Will a :Playwright.
:Playwright a owl:Restriction, owl:Class.
(ori i e s rie i i o piesă de teatru de i e i sta ță a lasei Pla right => e o
versiune mai sofisticată a a io elor rdfs:do ai , ă i se i pu e o o diție
legată de lasa o ie telor

48
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Deducerea tipului obiectului di relațiile î are e i pli at:
:Vegetarian owl:onProperty :eats;
owl:allValuesFrom :VegetarianFood.
:Peter a :Vegetarian; :eats :Salad.
…ge erează:
:Salad a :VegetarianFood.
:Vegetarian a owl:Restriction, owl:Class.
(ori e lu ru â at de u egetaria de i e i sta ță a lasei Vegetaria Food
=> variantă ai sofisti ată a a io elor rdfs:ra ge

49
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Deducerea tipului o ie tului di relațiile î are e i pli at di u ărul
acestora):
:Parent owl:onProperty :hasChild; owl:minCardinality 1 .
:Peter :hasChild :Andrew .
…ge erează:
:Peter a :Parent.
:Parent a owl:Restriction, owl:Class.
(ori i e are ă ar u opil, de i e i sta ță a lasei Pare t
=> variantă ai sofisti ată la rdfs:do ai , ă i pute odifi a pragul de
cardinalitate)

50
Alte moduri de detectare a
o tradi țiilor
Preze ța de afir ații u relații eper ise pe tru i sta țele u ei a u ite lase:

:WithoutChildren owl:onProperty :hasChild; owl:maxCardinality 0 .


:Anna :hasChild :Andrew; a :WithoutChildren.

Varia tă u ardi alitate alifi ată:

:OrphanOfMother owl:onProperty :hasParent;


owl:maxQualifiedCardinality 0; onClass:Woman.
:Andrew a :OrphanOfMother; hasParent :Mimi.
:Mimi a :Woman.

51
Alte moduri de detectare a
o tradi țiilor
P op ietăți ireflexive – relații pe are u i di id u le poate a ea u el î suși:

:isMarriedTo a owl:IrreflexiveProperty .
:Anna :isMarriedTo :Anna .

P op ietăți asi et ice – relații e u pot a ea lo î a ele se suri î tre


a eiași i di izi:

:isMotherOf a owl:AsymmetricProperty .
:Anna :isMotherOf :Mary .
:Mary :isMotherOf :Anna .

52

S-ar putea să vă placă și