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 cte 2)
10% = punctul din oficiu

Componentele proiectului practic:


O az de u oti e des his
Un modul client care folosete i for aia di aza de u oti e
eri e ai spe ifi e or fi o u i ate ulterior, dup e larifi
o eptele de az

Condiie pro o are:

Media final s ias 5.

Web 3.0 = Semantic Web


Obiectiv Semantic Web

Tehnologii Semantic Web

Interoperabilitatea si ta ti i se a ti n
Web

Si ta ti : Gara ia structura i for aiei pe care o


pri ete un destinatar este a eeai cu cea pe care i-a
propus-o expeditorul
Altfel spus: gara ia dou apli aii Web,
indiferent de limbajul n care au fost scrise, pot
schimba ntre ele date complexe i le pot accesa
n a elai mod
Se a ti : Gara ia se ifi aia i for aiei pe
care o pri ete un destinatar este a eeai cu
se ifi aia pe care i-a atribuit-o expeditorul
Altfel spus: gara ia dou apli aii Web,
indiferent de limbajul n care au fost scrise, i
pot "da seama" da dei i for aii despre
a elai lucru i, n caz afirmativ, i pot ogi
reciproc " u oaterea" despre acel lucru sau pot
lua decizii pe baza acelei u oateri

I teropera ilitatea si ta ti
Secretariat

Profesor

Solicit lista notelor din aceast sesiu e!

Rspu s serializat*:
S110DS10 2DS1 10DS1 3510

Nu eleg i i !

Rspu 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


DS10!

Rspu s: Nu! E vorba de studentul S110! Nota apare dup dis ipli !
Dai- i oie s retri it datele u o deli itare lar:
S110 DS10 2 DS1 10 DS1 3 5 1 0

Ok! Deci studentul S110 a luat nota 2 la disciplina


DS10!
Aha! Deci a luat un 5 la DS10_2 i u

la DS _10.

V rog s i di ai lar are su t dis ipli ele i are otele


Acum se elege! Tri itei i otele elorlali stude i!
Nu lipses

ite ote?

Nu putei tri ite otele astea astfel t s se eleag fr s


o sult i alte surse? Ne-ar ajuta s lu r
ai efi ie t!

Rspu s: Nu! Studentul S110 a luat 5 la disciplina DS10_2.


Notele apar chiar la sfrit, a eeai ordi e u dis ipli ele!
Rspu s: Nu! A luat 1 la disciplina DS1_
De aceea am pus 0 n dreptul acesteia.

i a fost a se t la DS1_3,

Rspu s:
S=110; DS=10_2,1_10,1_3; N=5,1,absent
Rspu s:
S=110,123,124; DS=10_2,1_10,1_3; N=5,1,absent,4,4,10,10
Rspu s:
Nu, ultimii 2 studeni su t s rii doar la di dis ipli e!
Putei erifi a asta ataloage!

*serializare: d o i utul u ui fiier sau date di


e oria al ulatorului o ie te, ta ele et .
sunt convertite ntr-u ir de ara tere ederea i tra sferrii pri reea sau ii a editrii u u editor de texte.
Exe plu. Opiu 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
Acum e clar! Dar nu putei e ita repetarea odului stude ilor, pe tru
a fa e fiierul ai i ?
i s i di ai 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.
Acum e perfect! V rog s o u i ai tuturor olegilor de atedr
s foloseas a elai od de deli itare a s e fie lar i e e ot
a luat i la e dis ipli !

Profesor
Rspu s:
S=110,DS=10_2,N=5;S=110,DS=1_10,N=1;S=110,DS=1_3,N=absent;
S=123,DS=10_2,N=4;S=123,DS=1_10,N=4;
S=124,DS=10_2,N=10; S=124,DS=1_10,N=10
Rspu s:
<Prof Nume="Buchmann">
<S ID="110"> <D ID="10_2 1_10 1_3" N="5 1 absent"/> </S>
<S ID="123"> <D ID="10_2 1_10" N="4 4"/> </S>
<S ID="124"> <D ID="10_2 1_10" N="10 10"/> </S>
</Prof>

=================================== Au aprut regulile de u for are ! =============================================

Am primit un program care extrage automat notele i ge ereaz


cataloage, pe baza structurii pe care ne-ai propus-o!
A e s pro le e u otele olegilor:
azul dlui To ai, atri utul N gsi
u ere atri ole, u ote!
azul dlui Silaghi, u gsete delo atri utul N! i i i atri utul ID
V rug s folosii totdeau a atri utul N pe tru a i di a otele i
totdeau a atri utul ID pe tru oduri de stude t i de dis ipli !

Rspu s:
Ok, ai a
ite ote de la doi olegi! S- i o fir ai c e lar
ci e e ot a luat:
Mesaj1:
<Prof Nume="Tomai">
<D ID="1_1"> <S N="110" Note="5"/> </D>
<D ID="1_2"> <S N="110 124" Note="8 8"/> </D>
</Prof>
Mesaj2:
<Prof Nume="Silaghi">
<D Cod="2_1">
<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

Acum e clar care sunt notele i are su t odurile de ide tifi are! Mai
a e totui o pro le :
La dl Tomai otele su t ataate dis ipli elor i dis ipli ele su t
i luse stude i;
La dl Silaghi otele su t ataate stude ilor i stude ii i lui
discipline.
Programul nostru nu poate s extrag note dect da sunt ataate
disciplinelor, aa cum ni le-ai trimis prima dat. Trebuie s plti
furnizorul de software da soli it modificarea programului. V rog
s o u i ai colegilor ca toat lumea s foloseas a elai mod de
ncadrare a datelor.

Profesor
Rspu s:
A o u i at eri a olegilor i au folosit a eleai atri ute i
a eiai 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>
<D ID="2_2"> <S ID="110" N="5"> </D>
</Prof>

Varia ta de Rspu s:
A i pus tuturor olegilor s foloseas a eeai stru tur!
S-a reat hiar u progra are s alideze stru tura pe tru a gara ta
pri ii de la toat lu ea otele stru tura adoptat!
Astfel apare un vocabular XML!
Varia ta de Rspu s:
Am comunicat eri a, s dl Silaghi folosete la r dul su u
soft are are export otele i u are se poate odifi a!
Vei fi e oii s soli itai odifi area progra ului d s., s
pro ite pe iitor u or apare alte ex epii: 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 acelorai date!
=================================== Au aprut o a ularele ! =============================================

Concluzie

INTEROPERABILITATEA SINTACTIC
se o i e d u exist a iguitate si taxa i stru tura datelor,
fr a e esita i terve ie u a expli aii supli e tare

Mecanismele
interoperabilitii si ta ti e
UNICODE = setul u i ersal de ara tere exti s fa de ASCII e per ite
i ter aio 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 aio 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 elai 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 aie 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 organizaii se pu de a ord
asupra structurii documentelor XML pe care le vor schimba ntre ele n viitor
Validare XML = operaia pri are se testeaz da u do u e t XML re epio at de
la u parte er respe t regulile a terior sta ilite pri tr-un vocabular
HTTP = proto olul pri are orga izaiile 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
cu az de cunoti e
ANAF

Software
ANAF

Solicit e iturile lui Pop


Ioan pe 2015

Serviciu Web
Compania A
(din Romnia)

Serviciu Web
Compania B
(din Austria)

Serviciu Web
Evide a populaiei
Austria

Care Pop Ioan? Avem 10


angajai u a est u e!

Care e CNP-ul lui Pop Ioan?


CNP=12345
Soli it e iturile pe
pentru CNP=12345

Venitul solicitat:
100 RON
Nu elege e
sea CNP

Soli it e iturile pe
pentru CNP=12345
Social Security Number

Ce se folosete lo de
CNP n Austria?
SSN=10001

Care este SSN pentru


persoana cu CNP=12345?
Soli it e iturile pe
pentru SSN=10001

Da dorii s a esai
i for aii despre a east
persoa , a esai la ser i iul
nostru adresa
http://anaf.ro#PopIoan1

De aici ncolo, identificatorul


universal al acestei persoane va
fi http://anaf.ro#PopIoan1, cu
urmtoarele proprieti:
CNP n Ro=12345
SSN n Au=10001
Venit 2015 n Ro=100 RON
Venit 2015 n Au=500 EUR

Venitul solicitat:
500 EU

Ok, a
e orat
http://anaf.ro#PopIoan1
este persoana pe care noi o
ide tifi u CNP=

Ok, a
e orat
http://anaf.ro#PopIoan1
este persoana pe care noi o
ide tifi u SSN=

Ok, a
e orat
http://anaf.ro#PopIoan1
este persoana pe care noi o
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 deprtarea a iguitii u e esit i terve ie u a

Mecanismele interoperabilitii
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 semnificaia pe are o
d u ui lu ru/concept
Regulile de u for are RDF = reguli sintactice standardizate, ce garanteaz toate
apli aiile pot pro esa a elai 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 aie
dintr-o descrierea unui lucru/concept (ceea ce este Xpath pentru XML!)
Ontologii/vocabulare RDF = seturi de reguli prin care mai multe organizaii se pu de
acord asupra terminologiei folosite n descrieri
Raio are i fere e = operaia pri are se ogete des rierea existe t a u or
lucruri/concepte sau pri are se dete teaz o tradi ii tre des rieri diferite ale
a eluiai lu ru/concept
HTTP = proto olul pri are orga izaiile 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 urmtoa ele e e ple este


corect?

Care din urmtoa ele e e ple este


corect?

Care din urmtoa ele e e ple este


corect?

Care din urmtoa 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 ? cnd primim cod XML dintr-o su s e te i
do i s e asigu are structura de marcatori/atribute ateptat
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 uo i fo aiile 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 opio al at i utul Nota
ge e al egulile u ui o a ula au de a fa e u o i aiile 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

Att 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 aii, i dife e t de li ajul a e au fost s ise

Rostul regulilor de bun fo


S pe

it ge e a ea u ui a o e DOM:

<Catalog>
<Produs ID="P1" Pret="300">
Ipod
</Produs>
<Produs ID="P2" Pret="100">
Frigider
</Produs>
</Catalog>

document

Catalog

Produs[2]

Produs[1]

ID:P2

ID:P1

Pret:300

a e?

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 alturate pri spaii
a ori e ele e t s fie o i ut tr-u si gur alt ele e t, u ex epia u ui
element-rd 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 opio 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 elai fel
Ca e e dife e a t e XHTML i HTML?
HTML a ap ut ai te de XML i i iial 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 pst at totui 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 fiie e Offi e:
WordML
ExcelML
PowerpointML

Pe t u fiie e u uzi : Musi XML


Pentru formule matematice: MathML
Pentru imagini vectoriale: SVG
Pe tru o list exti s o sultai
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


U o a ula se eeaz atu i d i e a defi ete un set de reguli pentru vocabular.
Acestea se pot crea prin mai multe metode: DTD, XML Schema, Schematron etc.
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

1.
2.

3.

va ti la e s se atepte d p i ete 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

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 teresai s


ad odul surs al u ei pagi i HTML.

Uneori o a ula ul e eat de a eiai 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 att o a ularul WordML .DOCX t i progra ul Word are poate des hide
fiiere 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 ii!

Pentru HTML, o a ularul a fost reat de Co soriul 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 eiai!

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 eri parte eri e
foloses a elai 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

Baz o tra tual

ise di at i ute i odu i te t

Vo a ula ul e p i u a o d t e p ile a e o s hi
documente de un anumit tip

a t e ele

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 fee g afi e fo ula e u pu i p egtite 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


ateptate
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 ete 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 toi 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 ateapt a el od XML i e t age di e se date
din el
Fii d a eeai 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 oiu 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 dect 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/poziio a ele e tele
pe t u afia 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 ietile u o e titi 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 clieni
Astfel de aze de date i t atego ia baze de date NoSQL i
folosesc alte limbaje de interogare dect 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 eeai


i fo aie 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 att 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 afiat 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 aie 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 eeai i fo


structuri:
Modelul bazat pe elemente imbricate pe fo
<Produs>
<Denumire> Ipod </Denumire>
<Identificator> P1 </Identificator>
<Pret>300 RON</Pret>
</Produs>

aie di e se
a sla :

Beneficii: ele e tele fiu pot des ie elaii 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 aie t e uie i lus at i ute!

Modelul azat pe o i ut textual (intens folosit n documente textheavy):


<Produs>
<Produs>
P1-Ipod-300 RON sau deloc structurat: Produsul P1 este un Ipod de 300 RON
</Produs>
</Produs>
Beneficii: uo de fo atat, stilizat, afiat pe t u itito i u a i azul HTML!
Dezavantaj: dificil de extras datele, poate necesita algoritmi de text mining

Co pa aie XML - JSON


A ele odele pot ep eze ta a eleai 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");
$fiu2=$xml->createElement("judet");
$continut1=$xml->createTextNode("Cluj Napoca");
$continut2=$xml->createTextNode("Cluj");

Crearea nodurilor

$fiu1=$radacina->appendChild($fiu1);
$fiu2=$radacina->appendChild($fiu2);

Lipirea nodurilor fiu

$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 rspuns


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 coninut n rspunsul
serverului)
=> e preferabil s se foloseasc biblioteca de funcii de
conversie JSON oferit la adresa http://json.org

Extragerea datelor dintr-un rspuns


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 aie XML - JSON


Avantaje JSON:
Performane superioare i economie de caractere (nu sunt necesari marcatori
de nchidere)
Compatibilitatea cu JavaScript u st i g JSON se o e tete foa te uo
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 uo de t XML tot dato it o e siei din obiecte)


S-au p opus di e se i iiati 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 aie XML - JSON


Avantaje XML:
Mai uo de citit de t e om
e mai uo de u it ncadrarea marcatorilor dect nchiderea parantezelor
JSON nu dispune deo a dat* de tehnici standardizate de validare, vocabulare, scripturi de
transformare sau generare HTML
JSON nu suport referine ntre date, deci nu putem emula baze de date complexe
XML permite "chei st i e" i elaii n sensul bazelor de date elaio 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 folosete multiple soluii: XPath, selectori CSS, fu ii precum
getElementsByTagName
JSON se folosete doar ca st u tu de date
Nu e aplicabil cnd marcatorii trebuie s descrie un algoritm sau modul de formatare a
unui document
*o i iiati e e t este JSON S he a jso -s he a.o g, jso s he a. et , a e se do ete 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 avnd g ade dife ite de espe ta e a spe ifi aiei teo eti e
(care la r dul su se afl dis uii .

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 aia
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, elaiile 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 aia lui DIV sau CLASS)

Procesarea XML n browser


XML DOM

HTML DOM

E arborele elementelor unui document XML, indferent de


tip. Se poate apli a att pe od XML sosit pri AJAX, t i
pe pagini HTML

E arborele elementelor unei pagini HTML, multe din


fa ilitile sale u se pot apli a pe alt tip de od XML!

Nu supo t ge e al getEle e tB Id. Sele ia ele e telo


se face
prin XPath
prin navigarea de elemente DOM (childNodes,
parentNode, nextSibling)
supo t totui getElementsByTagName

Supo t sele ie ai uoa u getElementById,


getElementsByClassName, getElementsByName
Supo t a iga e ai uoa u e to ul children o i e
doar marcatori, nu orice tip de nod!)

Co i utul ele e telo XML se a ipuleaz doa u etode


DOM standard: appendChild, removeChild, insertBefore,
replaceChild, cloneNode, nodeValue

Co i utu ile ele e telo se pot


innerHTML

At i utele se a ipuleaz u etode DOM standard:


attributes, getAttribute, setAttribute

At i utele se pot
element.atribut

a ipula

ai uo

a ipula

ai uo

u si ta a o ie tual

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 iliti supli e ta e de e . $ pentru selecie 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 nct 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 trecnd n rdcina 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 coni 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>
fiie 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 opio al u alo i te tuale
TipCurs (A|B|C) #REQUIRED> -at i ut o ligato iu u list de alo i pe
Exemple valide:
<Curs ID="C1" TipCurs="B" />
<Curs ID="C2" Descriere="." TipCurs="C" />
Exemplu invalid:
<Curs Descriere="" TipCurs="A">text oarecare</Curs>

ise

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 eleai ghili ele,
sepa ate t e ele p i spaii de e e plu CLA HTML poate e u e a ai ulte
stiluri CSS!)
O servaie:
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 sui 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 fiie 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

XML Schema permite modularitatea documentelor

XML Schema permite modularitatea vocabularelor:

XML Schema are caracteristici obiectuale, posi iliti de eutiliza e

XML Schema permite chei mai sofisticate dect atributele ID:

Tipuri de date + expresii regulate pot fi i puse asup a at i utelo i odu ilo te t

Elemente diferite din acelai do u e t pot apari 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 elai o a ula ; de e e plu pagi i HTML pute a ea i od
SVG (elemente grafice)
Se pot crea vocabulare noi prin reunirea regulilor din vocabulare existente

Se pot crea "clase de elemente", ce vor deveni reutilizabile (pot fi "mote ite" pe t u a ea
structuri nrudite)
Chei multivaloare = c d u i itatea se i pu e pe o o i aie 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 iliti pe it odela ea u ei t egi aze de date, u ai ulte ta ele, a elai
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>
</xs:sequence>
</xs:complexType>
</xs:element>
<DatePersonale>
<profesie>
<medic />
</profesie>
</DatePersonale>
(invalid!!)

<DatePersonale>
<varsta>
16
</varsta>
</DatePersonale>
(invalid!!!)

valid!!

<DatePersonale>
<profesie>
Medic
</profesie>
<varsta>
25
</varsta>
</DatePersonale>

Tipurile de date din XML Schema

Tipuri XML Schema


U o a ula XML he a se o st uiete p i definirea unor TIPURI
("clase de elemente") ce pot fi derivate " ote 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 mote i e p og a a ea
o ie tual . De i a ea se poate fa e pe dou i:
Constrngere = pornind de la un TIP existent, i se elimin opii sau at i ute
opio ale, i se o st g alo ile at i utelo sau u ul de apa iii 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 iial

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>
Acesta e un element de tip complex
</xs:sequence>
</xs:complexType>
</xs:element>
Exemple de i sta e valide e pot apare do u e te:
<DatePersonale>
<DatePersonale>
<profesie>Sofer</profesie>
<profesie>Profesor</profesie>
<varsta> 32 </varsta>
<profesie>Cercetator</profesie>
</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 + coni ut
textual, dar fr 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 + fr
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 fr atri ute e pot o i e


ali marcatori, i ter alai
od e grdit 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 fr atri ute e pot o i e
doar ali 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 spaiu
numerice: integer, float, short, byte
temporale: date, time, duration
ote ite de la DTD: ID, IDREF, ENTITY, NMTOKEN etc.
alte tipuri: anyURI (identificatori sau adrese URL), base64Binary (pt i fo aii
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 su:
<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 constrngere !)

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
ali a ato i i i i at i ute
Tipul e creat prin constrngere (xs:restriction apli at asup a tipului p i te
(base="xs:integer")
Constrngerea indic faptul ca valorile permise sunt numere n intervalul 18-99
E e plu de i sta alid: <varsta>20</varsta>

Constrngerea tipurilor simple


Obs: Tipu ile p edefi ite u pot fi e ti se, doa o st se u pute aduga alo i
noi la tipul integer!)
Constrngerea se face prin faete (restricii, 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 spaiile
albe succesive: whiteSpace
Exemple:
<xs:pattern value="[A-Z][0-9].+"/>

Va permite doar stringuri formate dintr-o lite , o if i

<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>

Va permite doar stringuri care, u


lungimea 5

i i

a a te oa e a e

a edu e ii spaiilo al e su esi e la te u ul si gu , au

Tipu ile si ple se pot de i a di alte tipu i si ple, az a e o ote 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
poat lua ai ulte tipu i de alo i

a ato t e uie s

Exemplu: atributul COLOR din HTML poate lua att 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 aie 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 iia 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 constrngere
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 faet, u at i utul fixed:
<xs:minInclusive value="18" fixed="true" />
Li ita u e i minInclusive a putea fi ote 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 opio 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

2.

3.

p i aduga e de at i ute ezi slide-ul precedent)

Co str ge

u tip o plex u o i ut o plex

ixat

Co str ge

alt tip o plex u o i ut si plu, dar la ivel de atri ute

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 opio ale pe t u a fi eli i ate tipul de i at!
o st ge alo ile at i utelo la u i te al pe
opio ale et .

is, la o list de alo i pe

ise , eli i

at i ute

Avertismente privind derivarea:


La derivarea prin constrngere, 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 opio al!
intervalul num ului de apa iii al u ui opil i O u s- a O u s t e uie s se ad eze i te alul
i iial

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 aduga 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 aduga 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


(mixat
sau
nemixat)
plex u o i ut o plex = poate avea elemente copil. Copiii pot apare n diverse moduri de

Co
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 iii
Pe t u a pe ite o i e o i aie posi il a opiilo , u o i te epetiii, o
ea un choice n care
fiecare ele e t poate aprea 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 pta a eeai 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 ote 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 iia la DescriereTelevizor din slide-ul p e ede t, ealiz u ou tip adug 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 pstrat, 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 lipsete deoa e e e ote it de la Des ie eTele izo , u de e
opio 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 dect 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

ogete a este posi iliti p i :

Chei multivaloare = C d u i itatea se apli u ei o i aii


de at i ute i odu i te t
Chei u u i itate li itat = Cnd 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">
"Ta elul" a e t e uie asigu at
<xs:unique name="cheie">
unicitatea
<xs:selector xpath="produs"/>
<xs:field xpath="denumire"/>
<xs:field xpath="@model"/>

" egist ile" e t e uie s ai fie a e


co i aia u i

Co i aia de alo i a e t e uie s fie u i


</xs:unique">
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">
<denumire>yyyyyyyy</denumire>
</produs>
<produs model="M1">
<denumire>zzzzzz</denumire>
</produs>
.
</CatalogProduse>
<produs model="M1">
<denumire>yyyyyyyy</denumire>
</produs>
...............................

Pe e hea t e uie s fie


u i , u fie a e di ele
dou alo i luat sepa at!
Unicitatea e impus doar n
CatalogProduse, afa
perechea se poate repeta

E e plu de hei st i e
ntre tabele XML
<xs:element name="Produse">
<xs:element name="ProduseCatalog">
..aici undeva e definit elementul-copil produs
are are la r dul su opilul cod
</xs:element>
<xs:element name="ProdusePeStoc">
..aici undeva e definit elementul-copil produs
care are atributul codItem
</xs:element>
<xs:unique name="cheie">
<xs:selector xpath="ProduseCatalog/produs"/>
<xs:field xpath="cod"/>
</xs:unique">
<xs:keyref name="referinta" refer="cheie">
<xs:selector xpath="ProdusePeStoc/produs"/>
<xs:field xpath="@codItem"/>
</xs:keyref>

</xs:element>

e defi ete u "ta el" a e o i e o


list de p oduse p eze te atalog,
fiecare produs are un cod unic sub
forma unui element copil
e defi ete a elai do u e t! al
doilea "tabel" cu produse pe stoc,
fiecare identificat de un atribut codItem
e de la p odusele di
atalog au heia p i a
copilul cod

e de la p odusele di al
doilea "ta el", au heia st i
atributul codItem (deci valorile
acestui atribut trebuie alese
dintre valorile cheii primare,
evitnd astfel repetarea tuturor
i fo aiilo 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 stri e t e uie alese di t e ele ale heii p i a e
Nu ai su te
e oii 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 elai 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 eul a ele e t fiu

Modularizarea
P efi ele : i : ataate fie ui a ato i i di faptul a etia t e uie alidai
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 spaiu de u e)
Ide tifi ato ii u i e sali ep u ad ese de do e iu ale o ga izaiilo 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 putei tl 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 oii s p efi totul!
<html xmlns="http://www.w3.org/1999/xhtml">

Crearea identificatorilor de vocabular


C d se eeaz u
identificator:

o a ula u XML he a, t e uie s i se defi eas a est

<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 ai u

si 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 prelund elemente din vocabulare
existente!
Tehnica prin includere:
<xs:schema xmlns:xs="..." targetNamespace="...">
<xs:include schemaLocation="VocabularVechi.xsd" />

</xs:schema>
Co diie: o a ula ul e hi s u ai ide tifi ato ta getNa espa e sau
s ai a elai 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 pst 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 izaii, asup a o a u dei 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 ai 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
fiie 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 ite ad ese!

E e plu de situaie 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 aii
desp e ai ulte e titi: p oduse, lie t, zto
E posi il s a e deja o a ula e a e i pu u t e uie
des is lie tul sau zto ul
Soluie:
Fie folosi a eeai fa tu a ato i p efi ai 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 situaie a e e util


modularizarea
Se ridi dilema:
Ct 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 ztor et .?
Tehnici consacrate:
Frag e tare dup e titi:

Aa u la azele de date elaio 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 opio 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 aie tre ele dou teh i i:

Un vocabular cu elementele/atributele sintetice (structura general, totalu i i


altele pe t u detalii o espu ztoa e fie ei e titi u ul pe t u lista de
p oduse, altul pe t u i fo aiile desp e lie t/v zto
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 uor de gsit, 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 gsit, dar afiare fa il i vo a ular uor de reat
<Produs>Televizorul costa <Pret>300 RON</Pret></Produs>
Vo a ular o pli at, u ele date su t ai uor de extras de t altele si ilar u HTML!
<Produs Denumire="Televizor" Pret="300" Moneda="RON" />
Date uor de gsit, perfor a opti , vo a ular de o plexitate edie, s difi il de
construit mesaje textuale din date
Majoritatea azelor de date relaio 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 aii din arborele
i iial (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
folosete 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 aie de a ato i si instruciuni 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 instruciuni 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 spaii, 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 elai nod, se apli regula cea mai spe ifi
(cu interogarea XPath cea mai i tit . De exemplu...
//produs[@pret!=''] e mai i tit dect //*

R2. Toate nodurile care NU su t afe tate de i io egul de su stitui e sunt


eliminate, u ex epia odurilor text!
Din acest motiv, un fiie

a e o i e

d i DOAR egula de

ai jos...

<xsl:template match="text()"/>
... va goli tot documentul su s! Dei 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 elai motiv, un fiie 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, eliminnd marcatorii i atributele lor!
Aada 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 pst
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 folosete pe t u a ea opia ide ti a u ui ele e t di su s
xsl:copy se folosete 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:

Pas1. e ealizeaz o opie goal a d i ii o a da,

<xsl:template match="/comanda">
la a e se eeaz u at i ut ou
<xsl:copy>
<xsl:attribute name="AtributNou">ValoareaNoua</xsl:attribute>
<xsl:apply-templates/>
Pas2. xsl:apply-te plates aut e alte reguli
</xsl:copy>
</xsl:template>
pe t u opiii o e zii. e gsete a doua.
<xsl:template match="produs">
<xsl:copy>
<CopilNou>TextNou</CopilNou>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

ai e ist

Pas3. e ealizeaz o opie goal a fie ui p odus, i i


se i se eaz u opil ou
Pas4. e aut oi eguli pe t u o i utul p oduselo .
Nu se gses , aa se apli egula i pli it:
se pst eaz u ele p oduselo , da f a ato !

Sursa:
<comanda client="Pop Ioan">
<produs pret="100"><nume>Telefon</nume></produs>
<produs pret="200"><nume>Frigider</nume></produs>
</comanda>

Rezultat:
<comanda AtributNou="TextNou">
<produs><CopilNou>TextNou</CopilNou>Telefon</produs>
<produs><CopilNou>TextNou</CopilNou>Frigider</produs>
</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!
Aici xsl:apply-te plates aut e alte eguli ai su t dispo i ile
<xsl:template match="node()">
pe t u opiii odului u e t i eapli e u si a eeai egul, deoa e e i
<xsl:copy>
opiii o espu d i te og ii node(). Pe t u fie a e od gsit 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 pst 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 elai 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>
Le lo uiete cu elemente <prod>, dotate cu atributul
Regula:
pretunitar, care-i p i ete 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
pst eaz te tul di ele e tul o igi al
</prod>
</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:
<xsl:template match="produs">
<produs garantie="{garantie}">
<pret>
<xsl:value-of select="@pret"/>
</pret>
</xsl:template>

Caut toate ele e tele <produs>


Adaug at i ute garantie, cu valoarea
e t as de la elementele <garantie>
Adaug ele e te-fiu <pret>, cu valoarea
e t as de la atributul pret

Structuri de programare, generare de cod


HTML
<xsl:template match="/comanda">
<ol>
<xsl:for-each select="produs">
<xsl:if test="@pret">
<li>Pretul pentru
<xsl:value-of select="@nume"/>
este
<xsl:value-of select="@pret"></li>
</xsl:if>
</xsl:for-each>
</ol>
</xsl:template>

Pas1.Parcurge comanda (for-each)


Pas2.Creeaz stringul Pretul pentru
X este Y!, pentru acele produse la
care se gsete atributul pret (cu X i
Y extrase din atribute existente n
documentul original).
Pas3.Stringurile obinute sunt
formatate ca elemente de list
HTML (OL, LI)
IF-ul se poate e ita da punem n
select-ul ciclului FOR direct
produs[@pret], pasnd astfel
espo sa ilitatea test ii e iste ei
p eului sp e Xpath!

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 diii), avem un mod de a
ealiza i te og i, ai sofisti at de t e poate XPath!

Ce sunt bazele de u oti e?


(o iziu e foarte si plifi at)

Baz de Cu oti e = Fapte + Reguli + Axio e


Fapt = afir aie si pl e i di expli it i e a/ e a are o a u it proprietate.
Acea proprietate poate fi:
a) O relaie cu altcineva/altceva*:
Andrew e rud u Joe.
b) Un atribut cu o anumit aloare:
Andrew are vrsta de 14 ani.
Regul = o o stru ie IF THEN care stabilete 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 vrsta 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

Ce su t azele de u oti e?
Axiom = un fapt (afirmaie ce fixeaz se
automat dedu ii logice:
A fi rud este o relaie re ipro .

ifi aia unui concept, per i d calculatoarelor s realizeze n mod

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 eeai o luzie a slide-ul precedent:
Joe e rud u Andrew.

O ser aii:
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 oiu ea de
"relaie 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 ui de tre otoarele i fere iale
Axio ele u ei aze de u oti e for eaz u vocabular sau o ontologie, deoare e ele fixeaz se ifi aia
u or o epte ai i, o eptul de "rude ie" pe tru toi ei are le or utiliza propriile afir aii
Axio ele sta iles t a " elege" al ulatorul di afir aiile sto ate, deci ce " o luzii" poate trage fr
i ter e ie u a
2

Ce e i tereseaz We
Cum reprezent

Rspu s: RDF

Cum interog

u oti ele

. ?

al ulator?

u oti ele?

Rspu s: SPARQL

De u de lu

ter e ii sta dard pe tru axio e?

Cu

u oti ele We ?

Rspu s: din terminologii standardizate (RDF/S, OWL)

sto

Rspu s: pe servere de cunoti e/grafuri (Sesame)

Cum se pot executa reguli pentru a produce noi cunoti e?

Rspu s : Motoare i fere iale exte sii ale ser erelor de u oti e, e pot
interpreta axiomele ca reguli)
Rspu s : SPARQL (unele tipuri de i terogri pot orpora reguli

Cu

se alideaz u oti ele?

Rspu s: Nu se valideaz. O afir aie u poate fi "ero at", i doar o tradi torie
fa de alte afir aii. Contradiciile 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 aiilor
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 oluia
Tabele BD relaio ale

Mod de interogare:
SQL

Tehnologii de stocare:
MySQL, MS Access

odelelor de date

Arbori (BD ierarhice):


XML, JSON

Mod de interogare:
XPath/DOM (pt. XML),
JSONiq/metode obiectuale (JSON)
Tehnologii de stocare:
eXistDB (XML), MongoDB (JSON)

Grafuri BD de tip reea :


RDF*

Mod de interogare:
SPARQL

Tehnologii de stocare:
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 aii de tip "triplet"
:Robert
:Razvan
:Patrik
:Susana
:Robert

:worksAt
:hasHairColor
:likes
:hasChild
:hasChild

:UniVie.
:Black.
:Beer.
:Robert.
: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 aie e for at din trei termeni: subiect, predicat (=proprietate), obiect.
Termenii se separ prin spaii.
Afir aiile se separ prin punct.
Mai multe afirmaii cu a elai subiect i predicat pot fuziona, separnd obiectele cu virgule
(cazul ultimei afir aii din exemplu)
6
etc.... (revenim ulterior la lista o plet)

Prin reutilizare de termeni, afir aiile


se pot conecta ntr-un graf interogabil
Susana

hasChild
Razvan

hasChild

Black

Robert

worksAt
UniVie

hasHairColor

hasChild
Patrik

likes
Beer

Exe ple de i terogri SPARQL:


- Retur eaz toi pri ii (Susana, Robert)
SELECT ?x
WHERE
{?x :hasChild ?y}

- Retur eaz toi u i ii (Susana)


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

Cu

au lo

utrile We -ul clasic?

Varianta A:
Cutare 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 terogri
preprogramate
Va uta doar aza de date, u i textul
paginilor site-ului
Cutarea u a i e o t de alte i for aii
relevante care sunt disponibile n diverse
surse pu li e, dar u i aza de date a
site-ului (de ex., detalii suplimentare despre
produsele magazinului)

Baza de
date
Interogare
local

Cu

au lo

Varianta B.
Cutare oferit de

utrile We -ul clasic?

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 proprieti ale u or lu ruri
HTML

Site A

HTML

Site B

HTML

Site C

keyword
scraping

keyword
scraping
keyword
scraping

Ce propune Web 3.0?


Site Web

Varianta A:
interogri dire te

Baz de date
se a ti

= az de u oti e des his

Serviciu public de interogare


("endpoint")
Varianta B:
knowledge scraping

Cod HTML
semantic

= od HTML u u oti e i luse

Extra tor de u oti e


din cod HTML
("distiller")

Clieni age i de utare/interogare


otoare de itare, apli aii 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/cunoti 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 proprietile
lu rurilor despre are se or ete tr-o pagi
i lusi proprieti e u su t afiate ro ser, dar su t sto ate odul HTML
Cutrile site-uri...
...s se poat exti de i spre alt a k-end dect 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 rile di li rrie 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 oti e distri uit la i el global
Cal ulatoarele s poat se ala
od auto at o tradi ii sau comparaii i for aia
preze t pe We
o paraii tre preuri, lie i diferii are de lar a elai ard a ar
Originea ideii:
Tim-Berners Lee, James Hendler, Ora Lassila. "The Semantic Web". Scientific American. May,
2001

Pri ii pai: Google K o ledge Graph


Rspu s dire t di partea otorului de utare la soli itarea de
proprieti ale u ui su ie t:

Interogare direct
u rspu s dire t
(ceva de genul
?x :fatherOf :BradPitt)

Se pot interoga detalii


supli e tare proprieti
ale persoa ei gsite
=> navigare de cunotine

Cutare de
cuvinte cheie
n corpul unor
pagini
Se pot deschide pagini
p se gsete
i for aia dorit
=> navigare de pagini

Pri ii pai: Google K o ledge Graph


Navigare de pagini

Na igare de u oti e

Pri ii pai: Fa e ook Ope Graph


Butoanele Like/Share ncorporabile
*exe plul e si plifi at, FB folosete propria si tax esta dard

COOKIE/SESSION:
Cinpoeru Mihai

Pas . Apsarea uto ului Like ge ereaz o afir aie*


pentru userul logat n Facebook (detectat din session):

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

Pas . Se ge ereaz afir aii despre site, da site-ul a


i lus odul HTML proprietile Ope Graph:
Pas3. Site-ul e adugat la preferi ele
userului FB

<http://adevarul.ro> og:type :website;


og:title "Adevarul"; ....

Primii pai: Google Ri h S ippets


De unde provin
aceste detalii?

[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].

Afir aii extrase


("distilate")
din cod HTML, avnd
ca su ie t pagi a ure t

<div itemtype="http://schema.org/Movie" itemscope="">


<h1 itemprop="name">Maleficent</h1>
<div itemtype="http://schema.org/AggregateRating" itemprop="aggregateRating">
<span itemprop="ratingValue">7.0</span>
/
<span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>

Acest cod HTML este prezent n pagina Maleficent, asigurnd simultan


afiarea (prin CSS) i des rierea se ifi aiei pri alorile itemprop,
recunoscute de Google)

De u de pro i s
denumirile proprietilor
recunoscute de Google?
ur torul slide

Valorile itemprop din


slide-ul precedent
provin din
terminologia
Schema.org!

Terminologii reutilizabile
(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 aii
fre e t utate We :
fil e, ri, persoa e, orga izaii,
eve i e te, lo aii et .
Majoritatea ter e ilor oferii de
Schema.org sunt proprieti ce se
pot folosi n afir aii ataate odului
HTML (cu atributul itemprop*)
* e a is ul de exti dere a odului HTML u afir aii
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 oti e RDF des his, pu li ,
extras din casetele Wikipedia,
incluznd 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 oti e des hise:

Wikidata
Freebase
Yago
Datahub.io gzduiete ai ulte aze
de u oti e do loada ile, for at
RDF dar nu numai)
CIA World Factbook (nu e RDF, dar are o
ersiu e RDF gzduit de Datahu

Cloud-ul Linked Open Data n 2014


=toate azele de u oti e des hise di lu e, o e tate la DBPedia pri
reutilizare de termeni)
* sursa: journalofwebsemantics.blogspot.com

Ce va urma?
Fazele evoluiei I ter et:
Faza 1: Internet = o reea de al ulatoare
- scop: s hi ul de esaje i fiiere
- mijloace: protocoale (IP/TCP) i adrese
Faza 2 (Web 1.0) = o reea 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 reea de apli aii apa ile s uleag i put de la utilizator
- scop: producerea de coni ut We , i teropera ilitatea si ta ti tre apli aii
- mijloace: CMS-uri, reele so iale, XML/JSON
Faza 4 (Web 3.0) = o reea de u oti e i teroga ile ("Semantic Web", "Linked Data")
- scop: interogarea se a ti pe az de proprieti i dedu ii auto ate
- mijloace: aze de u oti e des hise, ter i ologii reutilizate

Faza 5 (Web 4.0) = o reea de ageni 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 pr-mi
Codul lui Da Vinci n hardcover,

u pre axi 15 USD,


livrabil ntr-o spt "

Co diii 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
s apar sa u! u i tele heie rele a te

----> sarcina " u pr" ( o u i at u ui age t soft are)


----> obiectul sarcinii ("Codul lui Da Vinci"), cu tipul " arte" dete tat di preze a
proprietii "hard o er"
----> restri ie pe proprietatea "pret"
----> restri ie pe proprietatea "timp"

are pot

Cataloagele de produse tre uie s fie aze de u oti e i teroga ile, are s fie lar disti ia di tre arte i fil , pe baza
proprietilor 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 terogri
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 terogrilor

Age tul de utare s u retur eze doar "rezultate", i s efe tueze u prarea s exe ute "sar i a"

Age tul de utare tre uie s fie o tie t are su t paii i de iziile are tre uie par uri ti pul u prrii 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 iiat 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 fr i ter e ie u a

Concluzie: e evoie de el pui 3 aze de u oti e:

Baza de u oti 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 oti 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 oti e a sar i ii de lu ru "pro es"," orkflo " , di are age tul s afle e pai tre uie par uri, e de izii trebuie luate
i u s plaseze o a da fi al
13

Co paraie tre RDF i...:


- ...limbajul natural
- ...XML

Co paraie u li

ajul atural

:Robert
:Razvan
:Patrik
:Susana
:Robert

:worksAt
:hasHairColor
:likes
:hasChild
:hasChild

:UniVie.
:Black.
:Beer.
:Robert.
:Razvan, :Patrik.

(Subiecte)

(Predicate)

(Obiecte)

Co paraie u li

ajul atural

Termenii di RDF su t ase tori " u i telor" di li

O afir aie (fapt) se asea u o "propoziie" di li

O descriere se for eaz di


ai ulte afir aii u pri ire la a elai lu ru a elai
ter e , sau si o i e ale a eluiai ter e

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
reutilizrii su t per ise totui si o i ele!
u su t legai de o li a u e, nu se supun gramaticii vreunei limbi

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 tuaie" de e ., gruparea
afir aiilor u a elai su ie t di e e plul pre ede t

ori i e poate fa e ori e i ori te afir aii u pri ire la u a elai lu ru, sto ate oriu de
des rierile e olueaz ti p, pe sur e se fa oi afir aii
o des riere a o i e di eri 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

descrierile contradictorii pot coexista n Web

ogi re ipro

e or a ai i de " aze de u oti e distri uite"


i terogrile "federati e" or ole ta afir aii di surse diferite, de pe ser ere diferite
" lie ii" i terogrilor or de ide asupra redi ilitii sau a pu tul de edere preferat

Co paraie u li

ajul atural

Unele descrieri sunt "controlate" (stocate ntr-un


vocabular/ontologie/terminologie) pentru a fixa
semnificaia unor termeni. Un astfel de vocabular
e ase tor u u "di io ar e pli ati " care
fi eaz se ifi aia u i telor:

sti uleaz adoptarea pe s ar larg a u ui ter e , cu o


a u it se ifi aie
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 aii e i di proprietile
definitorii ale unui termen)
axiomele folosesc ter e i sta dardizai i ali ter e i rora
li s-a fixat preala il se ifi aia a elai 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 aie:
Am mncat mere.

Cum s-a reat u tul " r"?


Ate ie, cuvintele limbii romne 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 elai od, u a eeai se ifi aie!

Faza 2. Ulterior rerii, diverse persoa e pot adopta a el ter e f d diverse afir aii u a esta:
A zut ite ere. Merele su t roii. Merele res opa . Merele ost lei/kilogram...

O uli e de afir aii despre a elai lu ru for eaz o descriere (altfel spus, o "descriere" = o enumerare de
proprieti . Fie are ou afir aie contribuie la ogirea descrierii acelui lucru

Faza 3. Persoa e diferite pot fa e des rieri diferite, u ter e i preluai di surse diferite:
Merele su t roii. 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. Cnd mai multe persoane se pun de acord asupra unei descrieri stabile, acea descriere devine
se ifi aia 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 . Aadar se ifi aia e o des riere for at di proprieti defi itorii:
Merele sunt fructe, rotunde, comestibile, cresc n copaci din familia rozacee etc.
a estea su t exe ple de proprieti defi itorii, are preu dau se ifi aia o eptului de
Mere; da eli i u a, e posi il s u ai vor i de Mere!
astfel de afir aii su t o siderate axiome i RDF se azeaz pe ter e i sta dardizai)
Merele ost lei/kilogram.
(aceasta e o proprietate nedefinitorie - ogete des rierea, dar u o tri uie la se ifi aia
conceptului de "Mere";
astfel de afir aii u tre uie s apar tr-un vocabular, dar pot apare ntr-o az de u oti e
pentru a fi interogate!)

Co paraie RDF-XML

Aa cum XML nu impune ce marcatori i atribute s folosim, RDF nu impune ce termeni


s folosim n afir aii. Putem utiliza orice termeni, dar (deosebire de XML!) trebuie s
i di obligatoriu prove ie a fie rui termen
"pro e ie a"="spaiul de nume"= o adres de domeniu pe care o dei e creatorul termenul
n a eeai afir aie 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 prefixai u b: au fost reai de dei torul adresei de do e iu buchmann.ro,
iar ter e ii prefixai u : au fost reai de dei 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 oti elor
Beneficiu major: Preluarea de ter e i di alte surse per ite o e tarea grafurilor di
diferite!

aze de u oti e

Observaii:
n exemplele din curs/seminar, se va presupune c dei e adresa http://expl.at (iar cnd sunt
necesare mai multe, http://other.at, poate i altele)
diverse ri i tutoriale, se folosete adresa http://example.org (sau o adres u prat de
autorul rii
exe plele voastre i lusiv proie t folosii o adres pe are o dei ei deja sau folosii u a fi tiv,
cu numele vostru de familie
pe tru a realiza exer iiile, adresa u e o ligatoriu s existe, i doar s i di e fr a iguitate
"proprietarul ter e ilor" pe are i folosii

Co paraie RDF-XML

Ca i n cazul XML, termenii se scriu cu caractere UNICODE, deci pot fi scrii n orice li . Prin
urmare este ore t i afir aia:
:Mary :fiicaLui :John .
totui, e recomandat s folosim mereu a elai termen cnd ne referim la a elai lucru... deci s nu
scriem :fiicaLui ntr-o afir aie, apoi :daughterOf n alta, i conectarea afir aiilor 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 relaie ntre primul i al treilea. Uneori un termen e construit
din mai multe cuvinte, pentru a uura elegerea de tre un cititor uman. Exemplu:
:Mary :fiicaDinPrimaCasatorieALui :JohnSmithDinClujNapoca .
totui, pe ct posibil trebuie s si plifi afir aiile; acest exemplu ar trebui descompus n mai
multe afir aii, pentru a permite separarea oraului Cluj Napoca pentru i terogri!

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 aii; se re o a d totui ca afir aiile s fie uor de citit i de tre cititori umani, pentru a
putea crea ct mai uor i terogrile fr expli aii suplimentare!)

Co paraie 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 afirmaii RDF!

Co paraie RDF-XML
Aa cum vocabularele XML permit unor orga izaii s
se pu de acord asupra unor structuri XML, mai
multe orga izaii se pot pune de acord asupra
se ifi aiilor 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 aia
Se ifi aia se fi eaz prin afir aii definitorii cu
termeni sta dardizai ("axiome")
Termenii sta dardizai se preiau din terminologiile
standard oferite de W3C (OWL, RDF/S). Exemple de
termeni sta dardizai:
rdf:type (verbul "a fi")
owl:SymmetricProperty oiu ea de "relaie re ipro "

Exe plu de fixare a se ifi aiei


(pentru termenul :rudCu)
@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:rudCu rdf:type owl:SymmetricProperty.
Relaia de "rudenie" e defi it aici ca fiind o relaie re ipro , deci are ntotdeauna loc n
ambele sensuri (n mod implicit relaiile RDF sunt u idire io ale!
Aceasta e o se ifi aie ag, ar trebui ogit i cu alte axiome pentru a detalia relaia
de rudenie poate nsemna frate, pri te, bunic etc... pstr totui exemplul minimal, i
trebuie s studiem mai nti toi termenii sta dardizai
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 aia:
@prefix b: <http://buchmann.ro/vocabularul-meu#>.
@prefix : <http://organizatie-oarecare.ro#>.
:Mary b:rudCu :John.
Pe baza vocabularului, orice calculator va deduce n mod automat i afir aia re ipro (:John
b:rudCu :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 terogri


fii d or a de aze de u oti e distri uite We , tre uie s per ite i terogarea lor de tre ori i e, nu doar de
ctre ei are le-au creat
clie ii u su t eaprat u a i, pot fi otoare de utare, ro sere, apli aii desktop sau We , age i soft are
i telige i
analogie cu MySQL: u poi i teroga preurile u or produse da u tii u se u ete 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 ogi azele de u oti e fr i ter e ie u a
unele deducii per it dete tarea de o tradi ii afir aii e o tra i u se ifi aia fi at a u or ter e i
afir aiile o tradi torii pot fi tolerate, dar tre uie dete tate
Sunt vocabularele obligatorii?
Afir aiile pot fi "utile" (i teroga ile) i fr a li se fixa se ifi aia ter e ilor, da aza de u oti e e de uz
intern/limitat, adi
a fost reat de a eeai persoa are creeaz i i terogrile
nu a tre ui i terogat de alt i e a iitor, toate i terogrile au fost de ise i progra ate
a alogie u M SQL: pe tru u ele i terogri e sufi ie t s tii e ist o oloa "pre" (nu eaprat s tii ce
se ifi aie are, da apare i alte aze de date et .
Calculatorul poate realiza deducii i fr axiome
a io ele su t u tip parti ular de reguli reguli "as u se" afir aii
e ist i alte oduri de e pri are a regulilor de e e plu, orporate i terogri

Co paraie teh i tre RDF i XML


XML

RDF

Reprezi t i for aia arbori

Reprezi t i for aia 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


formare

Are mai multe sintaxe concrete (unele bazate pe XML), fiecare cu


propriul set de reguli de u for are

Elementele XML au ordine fraii apar tr-o ordi e fi i se pot


a esa pe az de ordi e: firstChild, lastChild, hildNodes et .
schimb atributele XML nu au.

Afir aiile RDF u au ordi e (indiferent de ordinea n care le scriem,


graful i i terogrile arat la fel

Co se i : Adugarea de ele e te oi e ai difi il, e esit o


poziio are pre is. Adugarea de atri ute oi e ai si pl, dar
tre uie ataate u ui ele e t.

Co se i : Adugarea u ei afir aii oi se fa e si plu, fr s e


pese de poziio area. Adugarea de ter e i oi la o afir aie u e
per is, i afe teaz stru tura de triplet.

Vocabularele XML se folosesc la validare erifi area stru turii i


tipurilor de date)

Vocabularele RDF nu se folosesc la validare, ci la fixarea se ifi aiei


termenilor di afir aii s opul auto atizrii dedu iilor logi e

Vocabularele XML sunt formate din reguli de validare construite cu


li aje spe ializate, are u su t eaprat tot de tip XML ezi DTD

Vocabularele RDF sunt formate din axiome, are su t tot afir aii RDF,
s u ele e foloses ter e i sta dardizai

Relaiile tre ele e te XML su t vagi relaii pri te- opil a ror
se ifi aie e i terpretat de o )

Relaiile tre ter e ii RDF sunt explicite, pot fi la rndul lor descrise
ntr-u
od are se ifi aia s poat fi i terpretat de al ulator

Ele e tele XML pot a ea proprieti u valori simple, numite atribute


(cu tipuri impuse prin vocabulare, de obicei prin XML Schema)

Ter e ii RDF pot a ea proprieti u alori si ple, u ite tot atribute


(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 epii (de


ex., termeni anonimi)

XML se folosete ai des a format de transferare a datelor ntre


apli aii, dar poate fi folosit i i terogat a az de date NoSQL

RDF se folosete ai des a az de date NoSQL des his spre


i terogri We , dar poate fi folosit i pe tru a tra sfera frag e te
de grafuri tre aze de u oti e sau apli aii diferite

RDF
Resource Description Framework = o fa ilie de spe ifi aii pentru
descrierea a ORICE (descrieri de "resurse")
n RDF, resurs = orice lucru/persoan/aspect despre care se poate face
o afir aie de i, ORICE
Axioma fundamental: Ori e este o resurs

Tipuri de resurse
Resurse adresabile = orice se poate accesa n Web printr-u URL fiiere,
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)
Noiu 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
<http://www.michaeljackson.com>
<http://www.michaeljackson.com>

:frateCu
:creatCu
:paginaLui

:JanetJackson.
:PHP.
:MichaelJackson.

(afirmaie despre persoa


afir aie despre site
(afir aie e conecteaz persoana cu site-ul)

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


a eeai 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 fiierelor, 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

Relaia 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 gzduit u a u it fiier 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 ri , 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
des ris n vocabularul "voc" i poate fi folosit ori e afir aii de tre ei are l adopt

ifi aie e

Dileme:

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

Dar dac foloses URL-ul http://buchmann.ro/cv#experienta ntr-o afir aie?

Se re o a d a ser erul u h a .ro s pre t pi e astfel de situaii, gzdui d la adresa


http://buchmann.ro/voc chiar vocabularul n care s-a defi it se ifi aia ter e ului "frate"
su for de fiier RDF sau a pagi HTML are e ist u DIV/paragraf cu ID="frate")

E ok, cu condiia a afir aia 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 ataare de etadate


la diverse resurse Web (similar tagului META pentru
pagini Web)
A evoluat ntr-u

odel pe tru repreze tarea u oti elor

*http://www.w3.org/2001/sw/wiki/Main_Page
*http://www.w3.org/standards/techs/rdf#w3c_all

17

Sintaxele RDF

RDF are

o si tax a stra t pe tru proie tarea u oti 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 oti 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 aie e for at di

ter e i:

subiect,
predicat
obiect

Obiectul poate fi anonim fr ide titate, fr pro e ie


Obiectul poate fi o valoare si pl (de un anumit tip integer, boolean etc.)
Subiectul poate fi anonim fr ide titate, fr pro e ie , dar NU poate fi o aloare!
Predicatul e obligatoriu URI, u se ad it e epii

un graf poate avea propriul URI ("graf identificat", "named graph")


u graf ide tifi at poate ser i a ter e afir aii se pot fa e afir aii despre u graf a sa

u it i proprietate, relaie, atri ut ,

Predi atul e pri o relaie u idire io al (o proprietate a subiectului, avnd 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 epii pri i d URI:

Mai

ulte afir aii se pot grupa tr-un graf

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#Anna

http://expl.at#isMotherOf

http://expl.at#isMotherOf

http://expl.at#hasAge

http://expl.at#Peter

http://expl.at#isFatherOf
20

http://expl.at#Andrew

_:x

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


Observai u ele o ie te su t alori si ple u erele 0, 0
O ser ai proprietile su t totdeau a URI

O ser ai u ii ter e i pot fi lipsii de identitate/provenien (_:x)

u ele su t relaii isMotherOf, isFatherOf


altele sunt atribute (hasAge)

acesta e fiul neideintificat al lui Peter


ide tifi atorul su este ar itrar ales poate fi ge erat ar itrar
chiar da u are ide titate, are "des riere" are proprieti, afir aii despre a esta

http://expl.at#hasAge

19

E e plu si ta a a stra t
Se pot fa e i afir aii despre proprieti:
Peter is the father of someone whose age is 20.
Age is measured in years. (proprietatea devine subiect!)
http://expl.at#Anna

http://expl.at#isMotherOf

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

http://expl.at#isMotherOf

http://expl.at#Andrew

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

http://expl.at#hasAge
Cu alte cuvinte:
_:X
Proprietatea poate deveni subiect (sau obiect!)
O proprietate poate a ea la r dul su proprieti
i proprietile pot fi des rise de o i ei des rierile de proprieti apar o a ulare

20

20

E e plu si ta a a stra t
Pri gruparea u or afir aii tr-un graf identificat (cu propiu URI), graful
a sa lul su poate de e i ter e al altor afir aii:
Mary believes that Anna is the mother of Andrew and Peter.

http://expl.at#Anna

http://expl.at#isMotherOf

http://expl.at#years
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
http://expl.at#Mary

=> Matematic, un graf RDF este un hipergraf

20

_:X

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.
http://expl.at#Anna

http://expl.at#isMotherOf

http://expl.at#isMotherOf

40
http://expl.at#hasAge

http://expl.at#Peter

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> .
<http://expl.at#Peter> <http://expl.at#hasAge> "40"^^<http://www.w3.org/XMLSchema#integer> .

22

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

Prefixul evit repetarea


prove ie eir
Afirmaii grupate dup
subiect+predicat
Afirmaii grupate dup
subiect

Tipuri de date XML Schema,


au proprii identificatori standard!

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

Tip detectat automat n Turtle,


di a se a ghili elelor!

Proprietile odului a o i
se i lud para teze ptrate

Exemple n sintaxe concrete


Sintaxele N-triples i Turtle su t o pati ile:
Ori e fiier 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 elai fiier de tip Turtle i
hiar a eeai afir aie:
@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#Anna

http://expl.at#isMotherOf

http://expl.at#years
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
http://expl.at#Mary

20

_:X

25

Exemple cu graf identificat n sintaxe


concrete
Sintaxa TriG:
extensie Turtle ce permite gruparea afirmaiilor grafuri u sau fr ide tifi ator
@prefix : <http://expl.at#> .
Graf implicit, neidentificat
{:Mary :believes :someBeliefs.
:Peter :fatherOf [:hasAge 20].
:hasAge :measuredIn :years.}
Graf identificat
:someBeliefs {:Anna :isMotherOf :Andrew, :Peter.}
Sintaxa N-quads:
extensie N-triples ce permite gruparea afirmaiilor grafuri (cu sau fr identificator)
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
Graf implicit,
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> .
neidentificat
<http://expl.at#hasAge> <http://expl.at#measuredIn> <http://expl.at#years> .
<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 aii o te tuale

Ce sunt afirmaiile o te tuale?


Afirmaii contextuale = afirmaii pentru care prezumia de adevr e limitat la
un context (la anumite condiii)
Exemple (cuvintele colorate sugereaz un context):
Afirmaii subiective (asociate unei "surse de cunotine"):
George believes that Peter is the brother of Andrew.
The source of the statement "James Cameron directed Terminator" is IMDB.
- Afirmaii constrnse de spaiu sau timp:
Mary works for the ABC company, in Cluj.
Mary will work for the ABC company (timpul viitor, sugerat gramatical).
- Afirmaii cu evaluri:
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 confundai contextul cu afirmaii despre obiecte sau despre proprieti
http://expl.at#Mary

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

Acest exemplu corespunde afirmaiei:


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#Cluj

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

http://expl.at#Cluj

Acest exemplu corespunde afirmaiilor:


Mary works at Company ABC. Everyone who works, works in Cluj.
(proprietile unei proprieti se aplic peste tot unde folosim acea proprietate!)

Soluii de repreze tare a afir aiilor


contextuale
Soluia1. Relaii de aritate mare (cu mai muli participani), modelate cu ajutorul unui nod anonim
ce conecteaz laolalt toi participanii (aici persoana, angajatorul, locaia... ar putea fi i altele):

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

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

http://expl.at#Cluj
http://expl.at#CompanyABC

Turtle:
@prefix : <http://expl.at#>.
[:worker :Mary; :employer :CompanyABC; :location :Cluj].

Soluii de repreze tare a afir aiilor


contextuale
Soluia2. Reificarea ("afirmaii despre afirmaii"): seamn cu relaiile de aritate mare, dar
folosete nite termeni standardizai pentru a descrie afirmaia despre care se fac afirmaii.

rdf:Statement
http://expl.at#Cluj
http://expl.at#hasLocation

rdf:type
_:x
rdf:subject
http://expl.at#Mary

rdf:object
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]

Soluii de repreze tare a afir aiilor


contextuale
Soluia3. Grafurile identificate permit gruparea de afirmaii ntr-un graf ce devine apoi termen n
alte afirmaii (avantaj: mai concis dect reificarea sau relaiile de aritate nalt)
http://expl.at#Romania

http://expl.at#City

rdf:type

http://expl.at#locatedIn

Se pot aduga apoi " etadate"


afir aii despre graf

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

http://expl.at#worksAt

http://expl.at#CompanyABC

Se pot aduga apoi i alte fapte


afir aii are au lo Cluj

TriG:
@prefix : <http://expl.at#>.
:Cluj {:Mary :worksAt :CompanyABC}
{:Cluj a :City; :locatedIn :Romania}

Soluii de repreze tare a afir aiilor


contextuale
Soluia3. Eventual, graful identificat poate primi un identificator lipsit de semnificaie, care s fie
apoi ataat mai multor contexte separate de coninutul grafului:
http://expl.at#Romania

http://expl.at#City

rdf:type

http://expl.at#locatedIn

http://expl.at#Cluj

http://expl.at#Past

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

http://expl.at#Robert
http://expl.at#source

http://expl.at#graph1

http://expl.at#Mary

http://expl.at#worksAt

http://expl.at#CompanyABC

E e plu u afir aii su ie tive


Afirmaii subiective: cnd dorim ca anumite afirmaii s fie caracterizate ca aparinnd unei
anumite surse/persoane subiective i dorim s permitem clienilor s filtreze rezultatele
interogrilor dup surs (de ex. n funcie 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#Anna

http://expl.at#isMotherOf

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

despre ter e ii folosii afir aii

Ter e ii afir aiilor pot fi

URI

ajoritatea i, fu ie de prove ie , pot fi de ur toarele tipuri:

Proprii = reai de reatorul azei de u oti e

pe baza propriei adrese de domeniu, un termen e creat ad-ho la pri a apariie tr-o afir aie

pe tru a per ite ori ui s e i terogheze u oti ele


pe tru a per ite dedu ii auto ate fr i terve ie u a

pe tru a e efi ia de diverse fu io aliti de e ., i portarea u ui site lista de preferi e Fa e ook u


butonul Like)

Sta dardizai = reai de W C, se re o a d adoptarea lor

Co trolai = reai de diverse orga izaii Fa e ook, Mi rosoft et . , se urajeaz adoptarea lor
Ge erai = apar atu i ge er

auto at grafuri RDF di surse tradiio 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 poziie de o ie t

de i NU se pot fa e afir aii 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 stituii u u URI, dar de o i ei u prezi t i teres ide titatea lor, doar poziia graf

Proprietile NU pot fi a o i e

Pot apare doar pe poziie de su ie t sau o ie t

De ce termenii afirmaiilor se azeaz


pe URI?
1. URI au un caracter universal
pot identifica orice lucru, adresabil sau neadresabil
sunt mai generali dect alte sisteme de identificare (de ex. CNP se aplic doar la oa e i i doar
Ro ia, ISBN doar la ri 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, dei ut de i eva a u e
. URI su t stru turai 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 toi URI de mai sus, definim mai multe prefixe!

De ce termenii afirmaiilor 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 izaii
diferite, di oi ide , dar se pot difere ia dup pro e ie !
http://other.at#Maria
http://buchmann.ro#sugar
http://expl.at#sugar

Co eptele "zahr" i "sugar" au pri it ide tifi atori si ilari deri ai di


li i diferite, dar se pot difere ia dup pro e ie !

http://buchmann.ro/companii#Volkswagen
http://buchmann.ro/modele#Volkswagen
http://buchmann.ro/marimiFizice/masa
http://buchmann.ro/mobilier/masa
http://buchmann.ro#PopMaria1
http://buchmann.ro#PopMaria2

Dei au a eeai pro e ie , compania i


se pot difere ia datorit stru turii URI

odelul Volks age

O o i ul " asa" se poate difere ia datorit


structurii URI

Aici presupunem c a e dou persoa e. Su i i o for u tre uie folosit


a elai URI pe tru resurse diferite!
Da pro e ie a e a eeai i dori s pstr stru tura URI,
tre uie s for difere ierea ulti a parti ul a ter e ului

De ce termenii afirmaiilor se azeaz


pe URI?
5. La nevoie URI pot fi folosii a URL-uri: dei 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
fiierului 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 situaia
URI este folosit ca un URL (de ex. un URI tastat n browser). Exemplu de scenariu:

Presupu e

are u

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? Posibiliti:


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 situaia pri tr-o redirectare HTTP spre site-ul oficial Michael Jackson, sau
spre pagina sa de Wikipedia
. Serverul poate pre t pi a situaia rspu z d u u fiier RDF e o i e toate afir aiile dispo i ile
pe server despre acel termen
2c. Serverul poate prentmpina situaia rspu z d u o pagi HTML are ofer u ele i for aii 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 afirmaiilor se azeaz


pe URI?
6. La e oie, o a eeai 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 izaii diferite s foloseas ter e i diferii u a eeai se ifi aie, ori a persoa e diferite s ai ide tifi atori
diferii orga izaii diferite!

http://anaf.ro#PopMaria
http://univie.ac.at#PopMaria

O persoa poate pri i ide tifi atori diferii


apari d u or orga izaii diferite!

aze de u oti e diferite,

http://buchmann.ro/vocabular#frate Conceptul de frate poate s apar u a eeai se


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

ifi aie

I porta t de rei ut!

O resurs poate a ea ai uli URI de o i ei de pro e ie diferit , dar u a elai 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 dardizai! fie are poate fa e afir aii u
proprii ter e i i propria adres de do e iu, ig or d e iste a altor aze de u oti e sau a ter e ilor reai
deja de altcineva)
7. URI au un caracter internaio al
se ai u es i IRI, su li ii d astfel faptul pot fi s rii u ori e ara tere

Analogia URI-URL
Ase ri URI-URL:
Nu pot e ista dou site-uri u a elai 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 su


I for aii adiio ale ataate su for de foldere, fiiere, a ore s opul a esrii a diverse ele e te di tr-u site fiiere,
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 vzui a "ide tifi atori" si ilar u CNP, ISBN et . , u a "adrese"
Totui 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 fiier, paragraf
etc.)

Un URI este un "cuvnt" ter e al u ei afir aii RDF


Teoretic pentru orice cuvnt 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 lipsii de a

iguitate:

Wikipedia alo o pagi de i u URL disti t pe tru u eroase o epte i i sta e;


Reelele so iale (Facebook, LinkedIn) alo o pagi disti t fie rei persoa e,
orga izaii, eve i e t et .;

Totui 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 elai lu ru.
Persoana e eadresa il i are a u ite proprieti u e, data aterii et . ;
Pagina Web e adresa il i are u totul alte proprieti 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 eleai proprieti!

Concluzie: vom utiliza URL-uri pe post de URI doar c d fa e


despre resurse adresabile despre fiiere, servicii Web etc.)

afir aii chiar

E ist e epii: Fa e ook folosete URL-ul contului (http://facebook.com/PopIon) i a


ide tifi ator al persoa ei. Asta pe tru FB u dorete 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 aii?
1.

Dac afl la ti p, e i e s-i reutiliz


i terogheze afir aiile oastre

2.

pe tru a per ite i altora s

Nu e o eroare s folosi doar URI proprii, dar atu i doar oi reatorul a elor URI poate
rea i terogri i apli aii lie t are s-i interogheze)
Utilizarea de URI sta dardizai sau o trolai vor adu e o serie de e eifi ii

Da afl trziu,i u ai pute


odifi a URI deoare e ar afe ta apli aii
aflate deja fu iu e , pute i lude aza de u oti e o ontologie de
aliniere:

De o i ei e vor a de u "di io ar de e hivale e" = afir aii are de lar tr-un mod
sta dard e hivale a ai ultor URI are s-au reat pe tru a elai lu ru/resurs
U astfel de di io ar va per ite i terogrilor s a u uleze u oti e di
ai ulte surse,
despre a elai lu ru

3. Posi ile surse de URI e iste i:


Terminologii standardizate (RDF/S, OWL)
Terminologii controlate (FOAF, Facebook OpenGraph, DBPedia)
Baze de cunoti e ale u or orga izaii parte ere u are dori s o e t

grafurile oastre
17

Granularitatea URI
Ct de apropiat tre uie s fie u URI de uvi tele di li
Ct de detaliat?

ajul atural?

Exemplu:
Anna has the age of 20.
Versiuni intuitive:

C.

A.
http://expl.at#Anna

Versiu ea preferat:
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 terogri e or e i de la a etia.

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
vrste)
vo dori s defi i se ifi aia proprietii "hasAge", f d afir aii 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 fr 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 vrste

Prin reutilizarea termenului Age, afir aiile vor fuzio a ntr-un mod care nu mai permite
al ulatorului s dis ear are vrst este a ui:
40

http://expl.at#value

http://expl.at#Anna
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 oti e tre uie s e pu e


afir aii or tre ui reutilizate?

i tre area: care noduri din


20

Co se i : Varia ta C. e re o a dat
A u
A u
A u

se poate reutiliza proprietatea vrst fr a rea a iguitate


se pot i teroga valorile vrstelor separat de restul i for aiei
se poate des rie proprietate vrst separat de valoarea sa

40

http://expl.at#John

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 aie: afir aia despre proprietatea hasAge, dei imagine apare de dou ori, si taxele o rete se a s rie o
si gur dat o afir aie 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 proprieti e i depe de t de afir aiile are se folosete a ea proprietate se sul
utilizarea proprietii tre uie s i o t de se ifi aia sa, u i ers!
Des rierea u ei proprieti e separat de afir aiile are se folosete a ea proprietate se sul o proprietate
e des ris o dat, apoi se ifi aia 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 proprieti diferite, u se ifi aii diferite, i pri ur are tre uie s le d URI diferii!
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

Totui, deoare e ajoritatea ediilor de progra are pot s des o pu uor 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 att de mult.
Pute

pstra 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
multor cmpuri dintr-o stru tur de date o ple . E e plu:

ai

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

200

http://expl.at#hasResidenceStreet
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 pui la des rierea se ifi aiei proprietilor 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
adug
ite afir aii 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

200

http://expl.at#livesAt

20
http://expl.at#Brunner

24

Re o a dri privi d URI


Se re o a d a URI de proprieti...
s fie uor de difere iat fa de o -proprieti
s sugereze ititorului u a dire ia are are lo relaia
<http://expl.at#Anna> <http://expl.at#Mother> <http://expl.at#Mary>.
Dei 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 uli ea tuturor a elor, lasa
mamelor) sau relaia de a fi a a ui a?
Pe tru evitarea o fuziilor se re o a d a URI de proprieti s se e ti d
od sugestiv:
<http://expl.at#hasMother>
sau
<http://expl.at#isMotherOf>
25

Re o a dri privi d URI


Se re o a d a fie are URI s ai ataat u stri g
folosit la afiri i terfaa u utilizatorul:
Resurse cu identitate
(persoane, locuri)

u e, eti het, titlu e a fi

Stringuri
(denumiri, etichete)
Persoa e diferite u a elai 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 eluiai lu ru ara Austria

26

Re o a dri 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 itri 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 elai URI

Nu su t legai de o li a u e, su t doar ite oduri de ide tifi are se re o a d totui s poat fi itii i de
utilizatori umani)

Pot exista ai uli URI pe tru a elai lu ru u posi ilitatea de e hivalare astfel de situaii

Apar adesea a su ie te afir aii RDF

Nu tre uie s fie izi ili i terfaa u utilizatorul fi al a esta u tre uie s i dea sea a da apli aia sa
folosete 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, fr s ai o stru tur i pus u e o ligatoriu s se e e u URI rora le su t
ataate

Nu asigur ide titate glo al de e e plu pot e ista ai ulte persoa e u a elai u e

Pot fi legate de o li a u e, az are li se ataeaz oduri de li a elai lu ru poate avea de u iri diferite
n limbi diferite)

Pot exista ai ulte u e pe tru a elai lu ru, dar u se pot sta ili e hivalri tre u e

Nu pot ser i a su ie te afir aii RDF u se pot fa e afir aii despre valori si ple!

Tre uie s fie izi ili i terfaa u utilizatorul fi al de i i terogrile 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 aiilor graf
27

Nu au i io legtur sau depe de fa de URL-uri

Re o a dri privi d URI


Se re o a d a u URI s ai ataat ar u URL al u ei pagi i We
oferi detalii supli e tare despre a ea resurs

e poate

Aa u stri gurile devi i porta te la afiarea rezultatelor i terogrilor i terfaa utilizatorului


final, astfel de URL-uri pot sta la aza afirii de h perli kuri
Se asigur astfel o disti ie lar tre resursele adresa ile i ele eadresa ile, tre URL i URI,
pstr d totodat relaii i teroga ile tre a estea
Scenariu:
Andrew are o pagi perso al cu propriul domeniu (http://www.andrew.at)
Andrew dorete s publice o descriere RDF cu afir aii despre el sui
Pentru a asigura disti ia ntre site i persoa , Andrew va evita s reutilizeze URL-ul existent, va crea
un URI pui diferit i va crea o relaie i teroga il ntre cele dou:

<http://www.andrew.at#Andrew>
(identificatorul persoanei Andrew)

<http://www.andrew.at#isRepresentedBy> <http://www.andrew.at> .
(relaia URI-URL)
(pagina Web a lui Andrew)

i invers, codul HTML al paginii lui Andrew va trebui s ncorporeze a east afir aie
Beneficii: Oricine i terogheaz baza de u oti e a lui Andrew va putea o i e uor un hyperlink spre
site-ul acestuia. Oricine iziteaz site-ul acestuia, va putea o i e uor acces la afir aiile RDF despre
Andrew.
28

Re o a dri privi d URI


Se re o a d a URI s fie sufi ie t de detaliai t s se poat i teroga t
uor i for aii 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 terogri rafi ate pri
i luderea u or oduri a o i e* are u erau e io ate,
dar su t i pli ite RDF u are rolul de a "tradu e" propoziii
di li aj atural, i de a le refle ta se ifi aia!
_:x
:copilulLui

B. Variant ai pui u dar ai u de t ea


i iial :
ofer o disti ie i o relaie lar tre Joh S ith i
ora
per ite o i erea opiilor pe aza relaiei : opilulLui ,
d u o teaz di e storie su t

_:y

:primaSotie

:aDouaSotie
:Mary
:copilulLui

:JohnSmith
:locuiesteIn

*exist i alte oduri de a expri a


ordi ea di tre soii, o re e i!

:ClujNapoca

ai

:Mary

:copilulLui
:dinPrimaCasatorie

:JohnSmith
:locuiesteIn
:ClujNapoca

URI o trolai i sta dardizai


Diverse orga izaii stabilesc identificatori care nu sunt eaprat sta dardizai, dar devin populari n
anumite domenii sau aduc beneficii cnd sunt re u os ui de unele apli aii. A etia sunt "termeni
o trolai".
Exemple de terminologii controlate:
OpenGraph (http://ogp.me/) ter e i utilizai des rierea relaiilor graful Fa e ook
Schema.org ter e i re o a dai pe tru a des rie di erse tipuri de o i ut astfel nct
otoarele de utare s eleag d a e pagi i e prezi t astfel de o i uturi fil e, ri,
reete, persoa e etc.)
FOAF (http://xmlns.com/foaf/spec/) ter e i pe tru des rierea de persoa e i relaii so iale
astzi folosit u ele apli aii de loggi g e ofer i o e iu i de tip reea so ial WordPress,
LiveJournal, FriendFeed)
GoodRelations (http://www.heppnetz.de/ontologies/goodrelations/v1.html) termeni pentru
des rierea de produse o erul 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 aio ale pri
etadate autor, data rerii, tip et .
OWL-Time (http://www.w3.org/TR/owl-time/) ter e i pe tru des rierea u or oiu 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 oiu i spaiale lo aie, suprafa et .
1

URI o trolai i sta dardizai


Wikipedia se tradu e treptat aza de u oti 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 aii
pu li e di DBPedia por i d de la aza oastr de u oti e fr a oi s opie a ele i for aii
propria az de u oti e vezi i terogrile federative de la se i ar!).
Exemple de termeni DBPedia:
http://dbpedia.org/ontology/Building lasa ldirilor, o eptul de Cldire
http://dbpedia.org/resource/South_Africa i sta a Afri a de Sud
W3C a propus o serie de URI sta dardizai pe tru concepte fundamentale (clas, resurs, proprietate) i
pentru relaii 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 dardizai 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 adoptrii ter e ilor sta dardizai:
toat lu ea i u oate i poate realiza i terogri 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 aii oi, dete tarea de o tradi ii

Exe ple de URI sta dardizai


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

http://expl.at#isOfType

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

http://expl.at#equivalentTo

http://expl.at#John
URI din exemplu,
i provizai
http://expl.at#Class
http://expl.at#isOfType
http://expl.at#isAKindOf
http://expl.at#equivalentTo

URI sta dardizai,


de utilizat n locul celor din exemplu
http://www.w3.org/2000/01/rdf-schema#Class
(prefixat n Turtle: rdfs:Class)
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
(prefixat n Turtle: rdf:type sau litera a fr prefi )
http://www.w3.org/2000/01/rdf-schema#subClassOf
(prefixat n Turtle: rdfs:subClassOf)
http://www.w3.org/2002/07/owl#sameAs
(prefixat n Turtle: owl:sameAs)

http://other.at#Johnny
Se

ifi aie

Co eptul de las/ uli e


Relaia de aparte e la o uli e relaia dintre o
i sta i o las
Relaia de i luziu e tre uli i, de spe ializare tre
lase relai di tre o las i super lasa sa)
Relaia de e hi ale tre doi URI are ide tifi a elai
3
lucru

Atenie la disti ia di tre relaiile


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

uli ilor

JohnESTEB rbat
("a fi" la singular)
B rbaii SUNT Oameni
("a fi" la plural)
sau (reformulat ca regul/axiom)
ORICEB rbatESTEOm
sau
DAC xESTEB rbat,ATUNCIxESTEOm
(aparent aici "a fi" are form de singular, dar ca semnificaie e o
regul general, aplicat la plural!)

John Br at
aparte e
Br at Om
(incluziune)

Programare o ie tual
John i sta eOf Br at
i sta iere
Br at extends/inherits Om
(su las/mote ire

Continuai ur toarele l uiri


mod logic
Br at Om ........? Fiin

Br at={John, Peter, ...} (clas


Om={John, Peter, Mary, ...} (clas
Fiin={John, Peter, Mary, Grivei, ...} (clas

Br at Om ........? Specie

Br at={John, Peter, ...} (clas


Om={John, Peter, Mary, ...} (clas i i sta
Specie={Om, Cine, ...} (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

Atenie 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 folosete a elai URI pe tru a elai lu ru

Graful st g apari e orga izaiei are dei e do e iul http://expl.at

Graful drept apari e orga izaiei are dei e http://other.at

A ele orga izaii dei i for aii despre A dre (prima despre familia sa, a doua despre job)

A ele orga izaii tiu A dre are deja u ide tifi ator glo al reat de el sui 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 terogrile or putea
par urge o e iu ile di tre ele datorit reutilizrii ide tifi atorului lui A dre .
Graful pe are l d i terogrile are ur toarea for , hiar da pri ale lui su t sto ate pe ser ere
diferite:

http://expl.at#Anna

http://expl.at#isMotherOf

Pe serverul
EXPL

http://other.at#worksAt
http://andrew.at#Andrew

http://expl.at#hasAge

http://other.at#ABC

Pe serverul OTHER

20

I terogrile or putea a iga a est graf agregat pe tru a ole ta


u oti e de pe a ele ser ere ezi i terogrile federati e de
la seminar!)

Be efi ii ale ter e ilor sta dardizai:


echivalarea
Caz neideal, dar mai realist: orga izaii diferite reeaz URI diferii pe tru a eleai lu ruri (resurse)

Orga izaia di st ga reeaz u URI pe tru A dre

Orga izaia di dreapta reeaz alt URI pe tru a elai A dre , efii d o tie t de pri a

Orga izaia di st ga afl a est lu ru, dar tre uie s pstreze propriul URI i e ist deja apli aii
are l foloses i u pot fi odifi ate

Orga izaia di st ga de ide totui 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 terogri are s tra erseze relaia owl:sameAs pe tru a ole ta i for aiile 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#worksAt
http://expl.at#hasAge

http://other.at#ABC

http://expl.at#hasAge
20

Ate ie, da e hi alarea e de larat tre URI di a eeai az de u oti e, e e utarea regulii are
opiaz afir aiile tre ei doi i di izi are a efe t o dupli are puter i a i for aiei redu da !)
De a eea u ele siste e i ple e teaz "sa eAs opti izatio " ge erarea afir aiilor 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 oti e diferite
Presupu e

dou orga izaii 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 oti e
diferite
Nodurile anonime au identitate local i i sta il: se
salvare/transferare tre aze de u oti e:
http://expl.at#Anna

odifi ar itrar la

_:u989898

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

_:u1213133

http://other.at#ABC

http://expl.at#hasAge
20

Totui, nodul a o i di st ga va o ti ua s
conecteze afir aiile di st ga, u o diia a acestea
s fi fost salvate deodat, pe a elai server

11

Noduri anonime
A etia 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:

Nu pot apare i terogri

adesea acel "x" e un cod intern generat arbitrar la salvarea afirmaiilor


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 aii s rise si ulta la sal ri su esi e,
odurile lor se or rege era, de i o e iu ile tre afir aii sal ate separat se pierd
nu pot fi e hi alai d apar aze de u oti e diferite
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 rspu sul e efi iaz i de preze a odului a o i

Se foloses pe tru a grupa afir aii 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 pri tele lui _:x?, dar putem interoga Cine e bunica lui Andrew? (beneficiind de poziia
lui _:x ca nod intermediar)
Cele dou afir aii se or o e ta doar da su t sal ate deodat pe u ser er de u oti e. Da le sal
separat, ce doi _:x vor primi coduri arbitrare diferite => conexiunea afirmaiilor se pierde => nici interogarea 12
Cine e
bunica lui Andrew? nu va mai fi posibil

Utilizarea nodurilor anonime


Un nod anonim poate conecta "cmpurile" unei structuri de date complexe.
=> 1: noduri anonime ca structuri complexe de date!

http://expl.at#Anna

http://expl.at#address

http://expl.at#livesAt

* ei olorai u rou su t URI


sta dardizai

rdf:type

_:x
http://expl.at#City

http://expl.at#Wien

http://expl.at#Nr
http://expl.at#Str
20

http://expl.at#Ap
200

http://expl.at#Brunner

13

Utilizarea nodurilor anonime


Reifi are = afir aii despre afir aii
Mary believes that Peter is the brother of Andrew.
Care su t ter e ii afir aiei?
Subiect = "Mary"
Predicat = "believes"
Obiect = "Peter is the brother of Andrew" (o ie tul e o afir aie!)
Cu

odel

e e plul fr a l a stru tura de triplet a afir aiilor?

14

Utilizarea nodurilor anonime


=> 2: odurile a o i e per it o pu erea de fraze o plexe di afir aii
simple.
* ei olorai u rou su t URI
sta dardizai

http://expl.at#Mary

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 propoziii o e tate pri operatori logi i

Mary's son is Peter or Andrew.

* ei olorai u rou su t URI sta dardizai

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 aii dar i pli area, egaia, disju ia
tre uie e pri ate pri astfel de o stru ii

16

Utilizarea nodurilor anonime


"Fraze complexe" pot se

a i propoziii o e tate pri operatori logi i

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


rdf:type

rdf:Alt

_:x
rdfs:member

rdfs:member
_:z

_:y
rdf:type

rdf:type

rdf:subject

rdf:subject
http://expl.at#John

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

rdf:predicate
rdf:predicate
rdf:object

rdf:object
http://expl.at#Peter

* ei olorai u rou su t URI sta dardizai

http://expl.at#hasSon

http://expl.at#Andrew
17

Utilizarea nodurilor anonime


Andrews grade o Math is .
=> 3: odurile a o i e per it expri area relaiilor de aritate
de 2 parti ipa i

are = ai

ult

http://expl.at#Andrew
2
http://expl.at#has
http://expl.at#grade
_:x

rdf:type

http://expl.at#ComplexRelation

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

18

Utilizarea nodurilor anonime


Peter, Andrew and Anna are colleagues.
A

putea apli a o reea de relaii i are:

Dezava taj: fie are ou e


si e rearea u ui u r tot

http://expl.at#colleagueWith

ru va atrage dup
ai are de afir aii!

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 toi i di izii su u od a o i are
reprezi t grupul de la parti ipa i sus o a ea ai pui e afir aii de
adugat
=> 4: odurile a o i e pot repreze ta o tai ere, grupri et .

U
e
ou

ru ou, o afir aie

*URI olorai rou su t


sta dardizai

http://expl.at#Anna
rdf:Bag

http://expl.at#Mary

rdfs:member
rdf:type

rdfs:member
_:group
rdfs:member

http://expl.at#Peter

rdfs:member
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
proprietilor
proprietile tre uie s fie t ai reutiliza ile
u rul de opii poate rete i pre izi il ti p

i terpret

URI

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 proprieti 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 relaii are su t i pli ai a eiai 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#contains

http://expl.at#hasChild

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
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 proprieti este
apli at si ulta tuturor utilizrilor a elei proprieti RDF u disti ge tre i sta ele
a eleiai proprieti, toate au a elai URI!)

http://expl.at#Anna

http://expl.at#hasChild

http://expl.at#hasChild

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

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 relaie de aritate tre A a, fie are opil al su
i i de ul e d ordi ea opilului, de i u ai e ist o fuzii legat de ordi e. A eiai opii
pot fi i pli ai alte relaii 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

_:y

_:x
http://expl.at#index

http://expl.at#child

http://expl.at#index

http://expl.at#student
http://expl.at#index

1
http://expl.at#child

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

http://expl.at#index

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 eiai opii pot fi i pli ai i alte liste, u alte ordi i i
alte se ifi aii!
rdf:List

*URI olorai rou su t


sta dardizai

http://expl.at#Anna
rdf:type
http://expl.at#hasChildren

rdf:type
rdf:type
_:y

_:x

_:z
rdf:rest

rdf:nil
rdf:rest

rdf:rest
rdf:first
http://expl.at#Peter

rdf:first
rdf:first
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 aia i o plet e totui aloroas e per ite s ge er o relaie tre A a i
Austria.
=> 6: odurile a o i e l uie ai ulte afir aii, per i d ge erarea de oi relaii
Relaia 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 relaii oi se realizeaz u ajutorul regulilor (de exemplu, cu


interogri CONSTRUCT sau INSERT, dar e posi il i u a io e OWL

26

Utilizarea nodurilor anonime


Exemplu:
Mar e opilul di pri a storie a lui Joh S ith
=> 7: nodurile anonime pot fi lo iitori pe tru resurse ale ror ide titi u
se u os sau u prezi t i teres pe tru i terogrile / apli aiile lie t
prevzute
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
re ursiv

Varia t dis utat deja:

:primaSotie

_:y

_:x

_:y
:copilulLui

_:x

:sotie

:aDouaSotie

:index
:sotie

:index

_:a

:Mary

:copilulLui

_:b

:JohnSmith
:aAvutSotia

:copilulDinCasatoria
:Mary

:aAvutSotia

:JohnSmith

Ate ie la

i area
ordo ri

Mar S ith a fost pri a soie a lui Joh S ith di

ai

s i ii .

Joh S ith a fost al doilea so al lui Mar S ith di

s i ii
Nu uitai u ele odurilor
anonime se pierd, deci nu ne putem
baza pe numerotarea lor!

A est od are dou valori i de ! Nu e clar care


dintre ele e u rul soului lui Mar i are e
u rul soului lui Joh !

1
_:sotia2

:MarySmith
:aAvutCasnicieCu

:aAvutCasnicieCu :index

:aAvutCasnicieCu
:index

_:sot1

:aAvutCasnicieCu

_:y

_:x
:index

ultor

_:sotia3

:index
:aAvutCasnicieCu
_:z

:aAvutCasnicieCu
:aAvutCasnicieCu
:aAvutCasnicieCu
:JohnSmith

_:w

3
:index

Ate ie la relaiile tre ele e te di


liste diferite
A u disti ia tre ele dou ordo ri e ai lar:
MarySmith a fost prima soie 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
_:sot1

_:a
rdf:rest

:casniciiCu
_:sotie2

_:MarySmith

_:sotie3

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

rdf:first

rdf:first
rdf:rest

_:y

:casniciiCu

:JohnSmith

rdf:rest
rdf:rest
rdf:nil

rdf:rest

_:z

Atenie, toate listele se


o e teaz la a elai
apt!

interogarea grafurilor RDF


Documentaie:
SPARQL: http://www.w3.org/TR/sparql11-update/

30

Tipuri de i terogri
I terogri de itire = i terogri are u
aza de u oti e:
SELECT, ASK, DESCRIBE, CONSTRUCT

I terogri de s riere = i terogri e


de u oti e:

odifi

odifi aza

Modifi ri gra ulare (pot avea loc la nivelul unei


si gure afir aii : 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 terogri de itire
Comenzi:
SELECT o a da de az, itete afir aii pe aza u or
patternuri;
SELECT cu GRAPH sau FROM itete afir aii filtrate dup graf
u it i " o te t" Sesa e ;
SELECT cu SERVICE itete afir aii de la ser i ii We de
interogare (servicii SPARQL endpoint);
ASK i terogare u rspu s oolea (testeaz e iste a sau
a se a unor afir aii ;
DESCRIBE soli it toate afir aiile e o i u anumit termen
("tot e se tie despre o resurs" ;
CONSTRUCT per ite e e uia de reguli, adi ge erarea de
afir aii oi s u le sto heaz aza de u oti e, doar le
li reaz lie tului!
32

E e ple de i terogri
Exemplu de graf RDF scris n Turtle
Am folosit @base n loc de @prefix!
cu @base, toi ter e ii vor fi " i relative" la o a eeai "adres de az"
=> se folosete d toi ter e ii au a eeai prove ie (deci nu e nevoie de
diferenierea prefi elor
=> URI nu mai au prefix, dar trebuie adrai u para teze u ghiulare a N-triples)

@base <http://expl.at>.
<#JamesCameron>
<#Arnold>
<#Terminator>
<#California>
<#Arnold>
<#JamesCameron>
<#Avatar>

<#directed>
<#playedIn>
<#governed>
<#hasTitle>
<#hasName>
<#hasName>
<#hasName>
<#hasTitle>

<#Avatar>, <#Terminator>.
<#Terminator>;
<#California>.
"Terminator".
"California".
"Arnold Schwarzenegger".
"James Cameron".
"Avatar".

*Resursele ar tre ui s ai eti hete ataate, iar i terogrile ar tre ui s soli ite astfel de eti hete vederea
afirii spre utilizatorul fi al. E e plele oastre u vor fa e totdeau a asta, pe tru a e e plifi a diverse33
situaii

E e ple de i terogri
BASE <http://expl.at>*
SELECT
?m
WHERE {<#JamesCameron> <#directed> ?m}
= retur eaz toate fil ele regizate de James Cameron
SELECT
?p
?o
WHERE {<#Arnold> ?p ?o}
= retur eaz toate afir aiile despre Ar old

?m
<#Avatar>
<#Terminator>

?p

?o

<#playedIn>

<#Terminator>

<#governor>

<#California>

SELECT
?x
WHERE {<#JamesCameron> <#directed> ?mov.
?x
?x <#playedIn> ?mov.
?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 fr @ i fr pu t fi al). Vom omite aceste
de laraii a este e e ple pe tru a u r a slide-urile
34

E e ple de i terogri
?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
WHERE {<#JamesCameron><#directed>?mov.
<#Arnold><#playedIn> ?mov}
= ce film regizat de James Cameron l are pe Arnold n el?

?mov
<#Terminator>

35

E e ple de i terogri
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 terogri
?n

?mov

"California"
SELECT ?n ?mov
"Arnold Schwarzenegger" <#Terminator>
WHERE {
?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 acelai fil (di ou l uire,
dar i e o t de faptul de la fil la a tor se aju ge se s opus relaiei)
37

E e ple de i terogri
I terogri oolee e:
ASK
{?x <#directed> ?movie.
?y <#playedIn> ?movie}
= a e regizori i a tori are au lu rat la a elai fil ?
(rspu s oolea : Yes sau No)
Solicitare de descrieri complete:
DESCRIBE
<#Terminator>
= retur eaz tot e se tie despre Terminator
(toate afir aiile e o i Terminator)

YES

Subject

Predicate

Object

<#JamesCameron>

<#directed>

<#Terminator>

<#Arnold>

<#playedIn>

<#Terminator>

<#Terminator>

<#hasTitle>

"Terminator"

38

E e ple de i terogri
I terogri oolee e:
ASK
{?x <#directed> ?movie.
?y <#playedIn> ?movie}
= a e regizori i a tori are au lu rat la a elai fil ?
(rspu s oolea : Yes sau No)
Solicitare de descrieri complete:
DESCRIBE
<#Terminator>
= retur eaz tot e se tie despre Terminator
(toate afir aiile e o i Terminator)

YES

Subject

Predicate

Object

<#JamesCameron>

<#directed>

<#Terminator>

<#Arnold>

<#playedIn>

<#Terminator>

<#Terminator>

<#hasTitle>

"Terminator"

39

Reguli SPARQL: ge erarea de oi afir aii


" o luzii" u ajutorul i terogrilor
CONSTRUCT
{?x <#workedWith> ?y}
WHERE
{?x <#directed> ?movie. ?y <#playedIn> ?movie}*
= ge ereaz afir aii e conecteaz dire t regizorii i a torii are au lu rat a elai fil
<#JamesCameron> <#directed>
<#Terminator>.
<#Arnold>
<#playedIn>
<#Terminator>.

<#JamesCameron>

<#workedWith>

<#Arnold>.

Deoare e CONSTRUCT NU e o operaie de s riere, rezultatul u e adugat la graful origi al, i retur at
lie tului pe e ra sau
e orie pe tru prelu ruri 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 terogri cu sursa


precizat
Sursa poate fi un graf local:
SELECT *
WHERE {
GRAPH <#g1> {?x ?y ?z}}
= retur eaz toate afir aiile di graful #g1

Sursa poate fi un serviciu public:


SELECT *
WHERE {
SERVICE <http://dbpedia.org/sparql> {?x ?y ?z}}
= retur eaz toate afir aiile 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 aiile din graful g1 oferit de serviciul myservice
41

Exemple de i terogri cu sursa


precizat
Pentru urmtoarea interogare presupunem c dei 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
}

Att 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 aiile din toate grafurile cu reputaie pe are a estea le ofer o for
i for aiei di ser i eDes riptio s
42

Cu arat rezultatele
i terogrilor de itire SPARQL?
Depi de de tipul i terogrii:
CONSTRUCT, DESCRIBE retur eaz grafuri seturi de afir aii 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

SELECT
WHERE

?n
{?x <#hasName> ?n}

"California"
"Arnold Schwarzenegger"

"James Cameron"

SELECT
WHERE

?n ?mov
{?x <#hasName> ?n.
OPTIONAL {?x <#playedIn> ?mov}}

?n

?mov

"California"
"Arnold Schwarzenegger"

<#Terminator>

"James Cameron"

Datorit eregularitii 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 registrri
</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 registrrile retur ate...
]
}

}
45

I terogri de s riere SPARQL Update


SPARQL Update extinde SPARQL u operaii de s riere:
LOAD ar afir aii de la o surs e ter ;
INSERT DATA adaug afir aii e pli ite la u graf, i depe de t de afir aiile
existente;
INSERT WHERE adaug afir aii pe aza u ui a lo e le o e teaz la
afir aiile e iste te;
DELETE DATA terge afir aii e pli ite;
DELETE WHERE terge afir aii pe aza u ui patter ;
INSERT/DELETE se o i pe tru operaii de a tualizare ( u e ist o a da
UPDATE!);
ADD fuzio eaz dou grafuri;
MOVE rede u ete u graf altfel spus, ut tot o i utul di tr-un graf n
altul, lo ui d o i utul grafului desti aie i terg d graful origi al);
COPY opiaz afir aii di tr-u graf altul, lo ui d o i utul grafului
desti aie dar pstr d i graful origi al;
DROP terge u graf.

46

SPARQL Update:
operaii la i el de graf
LOAD <http://myserver.com/facts.ttl>
INTO GRAPH :g1
= adaug g afir aii a esate de pe We (dintr-u fiier Turtle stati dispo i il o -line
pe serverul myserver.com)
ADD GRAPH :g1 TO GRAPH :g2
= fuziu e: adaug toate afir aiile di graful g g

pstr d i graful g

COPY GRAPH :g1 TO GRAPH :g2


= opiere: opiaz toate afir aiile di graful g lo ul elor di g
o i utul lui g , dar pstreaz i g

lo uiete

MOVE GRAPH :g1 TO DEFAULT


= redenumire/mutare: ut toate afir aiile di graful g graful i pli it fr 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 terogri gra ulare
WITH :network
DELETE {?x ?y ?z} WHERE {:Anna :knows ?x.?x ?y ?z}
= eli i di graful network toate afir aiile despre
u os uii lui A a ai ti 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 folosete a east
o i aie de DELETE i INSERT a o si gur o a d!)
48

SPARQL Update:
i terogri gra ulare
INSERT DATA
{
GRAPH :g1
{
:Mary :isRelativeOf :George.
:George :isRelativeOf :Aneta,:Peter.
}
}
= adaug dou afir aii oi g1, indiferent de ce mai exist el
WITH :g1
INSERT {?y :isFatherOf ?x} WHERE {?x :isChildOf ?y}
= reeaz g1 relaii de opil a olo u de gsete relaii de tat* WITH e per ite s evit
GRAPH de ori: o dat a lo ul INSERT, apoi a lo ul WHERE

folosirea lauzei

*A easta e o alt teh i de e e utare a REGULILOR u ajutorul i terogrilor, alter ati la CONSTRUCT:
CONSTRUCT ge ereaz afir aii oi i le li reaz lie tului i terogrii, fr a le sal a aza de u oti e
lie tul tre uie s le sal eze
INSERT WHERE ge ereaz afir aii oi i le sal eaz, fr a le li ra lie tului lie tul tre uie s le i terogheze
apoi cu SELECT)
49

interogarea grafurilor RDF la


dista

Documentaie:

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/

Metode de accesare a grafurilor RDF dintr-o apli aie We


Apli aie proprie

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


rdflib), rezultatelor SPARQL (e.g., json) sau
cererilor HTTP (e.g., urllib2)
Metode
obiectuale
Cereri HTTP spre URL-ul
unei pagini HTML
+ Distilare

HTML semantic
HTML + afi aii

Alte
apli aii
Web

SPARQL sau
metode obiectuale locale
(e.g, triples(), subjects())

Internet
SPARQL la
dista
(SERVICE)

SPARQL la
dista
(LOAD)

Servicii de interogare
(endpoint)

Derefere iere
URI

Baz de
u oti e
la dista

Baz de u oti e p op ie

Cereri HTTP spre adresele serviciului +


co figurri co for protocolului oferit
de serviciu
Cereri HTTP spre un URI
+ Negociere HTTP

Fiiere RDF
publice
Cereri HTTP neconfigurate spre URL-ul unui
fiier RDF static sau di a ic

Metoda 1: SPARQL la distan


E vor a de i terogri SPARQL e a eseaz dire t o adres URL (pot fi testate i te faa Sesa e sau
ntr-o li ie e pe ite e e uia 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 ite o figu i i pli ite, de e e plu etoda GET).
Varia ta rudi e tar: se e ul e ote ofe u fiie RDF stati sau di a i de e . ge e at u u s ipt
PHP . Ad esa fiie 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 aii o e tate di
ai ulte su se , de exemplu:
Organizaia e dei e ser er A ofer u oti e
despre locul de munc:
:Robert
:worksAt
:UNIVIE.
:Patrik
:worksAt
:CompanyABC.

Organizaia e dei e ser er B ofer u oti e u


privire la familie, despre aceiai i di izi:
:Robert
:hasKids
2.
: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


Interogrile federative nu sunt suportate n orice libr ie/li
interogarea ntr-o su esiu e de i te og i si ple i s pas
pe slide-ul precedent):

aj de p og a a e. Alte ati a e s des o pu e


a ia ilele o u e t e a estea. Exemplu (bazat

I terogare tri is la ser erA. o :


SELECT ?x WHERE
{?x :worksAt :UNIVIE} => p esupu e

a e rezultatele :Robert, :Mary, :Andrew

I terogrii tri ise la ser erB. o i se or o ate a rezultatele pri ei i terogri:


SELECT
{?x :hasKids ?n}
BINDINGS ?x
{(:Robert) (:Mary) (:Andrew)}
* BINDINGS are ca efect reexecutarea interogrii 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 fiie RDF
Si ila i te og ii LOAD, s e e ea e fo
spe ifi e fie ui li aj sau li ii.

ulat p i

etode o ie tuale

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()

Diferene:
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 aiile 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 ii parametri HTTP e se pot ataa ad eselo
URL t e uie o e tii 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 privete stru tura adreselor:

Dou protocoale au fost standardizate n acest scop:

Protocolul Graph Store: pe ite ope aii 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, fr ide tifi ator
Protocolul SPARQL: pe ite ope aii 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 terogrile de itire se
o ate eaz ai i
http://AdresaServiciului/LocatiaBazeiDeCunostinte?update=interogarea i terogrile 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 egtit u spu s i pli it
=> astfel de ad ese o putea fi a esate i p i metodele directe menio 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 privete 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 aii, 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 oti 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 privete para etrii:
I dife e t de p oto olul folosit, toi pa a et ii graph, query, update t e uie t e ui 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 privete etoda HTTP:


o i aie u fo a ad esei i u pa a et ii ataai a esteia, etoda HTTP a di ta e s se
ntmple pe server. Exemple:
Metoda POST o i aie u adresele protocolului GraphStore va uploada un graf
Metoda PUT o i aie u adresele p oto olului G aphSto e a lo ui o i utul u ui
graf
Metoda DELETE o i aie u ad esele p oto olului G aphSto e a te ge u g af
Metoda GET o i aie 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 aie 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 aie 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 folosete o i aie 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 privete antetul HTTP:
Cmpul Accept se a folosi pe t u a p e iza si ta a a e lie tul ateapt
spu sul de la se i iu. A easta dife fu ie de atu a ope aiei:

Da se ateapt 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 ateapt 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.)

Cmpul Content-Type se va folosi pentru a preciza sintaxa n care clientul trimite


cod RDF spre serviciu
Se folosete d a e lo upload de u oti 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 situaii, sintaxa trebuie i di at p i odul su 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 ete ea ia ateptat 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 aii utile desp e
a el lu u. Pe t u a easta, se e ul t e uie s gseas p op ia az de u oti e
afir aii 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 fiie u afi aii RDF desp e URI-ul soli itat, si ta a do it de
client. Pentru aceasta, serverul trebuie:
s dei u s ipt a e ge e eaz di a i u fiie u toate afi aiile 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 iieze 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 opiu i legate de li , set de a a te e o i alte opiu i dispo i ile a tetul HTTP

Cele dou a o d i pot fi

i ate

ego ie ea poate ofe i i opiu 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
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:

e FORM

A. Negociere pe az de o i ut, cu decizia clientului: Se e ul etu eaz afi aii t -u fo at default sau spu s
gol , s u odul HTTP 300 (Multiple Choices). Rspu 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 eleai u oti e su t
dispo i ile i alte si ta e de t fiie 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 eeai ad es, soit 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) soit 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 iiaz 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 itilo 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 ogit
semantic od HTML e ti s u afi aii . a est az e i e lie tului espo sa ilitatea s e t ag afi aiile 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 egti 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 elai 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 dii- 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 rspu de u pagi a i tegral

Se e ul a spu de u toate afi aiile a esi ile p i http://expl.at/myknowledge, ls d


sea a lie tului spu de ea filt ii afi aiilo desp e Geo ge
A elai URL a rspu de la ereri pe tru ai ulte URI
14

pagini HTML semantice


Documentaie:
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/

Ce sunt paginile HTML semantice?

E vorba de acele pagini Web care au afirmaii glo ate dire t

Beneficii: afir aiile 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

odul lor surs.

Clie ii u au e oie de a es la aza de u oti e, i pot e trage u oti 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
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 aie o il, u
otor
de utare a edea afir aii 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 ordri posi ile:

Nu se odifi i i odul HTML, dar se o vertes afir aii a u ite structuri uzuale din
codul HTML (de ex., tag-urile TABLE, META) sau chiar din documente XML

1.

2.
3.
4.

Extinderea tag-urilor HTML cu microformate


Extinderea tag-urilor HTML cu microdate
Extinderea tag-urilor HTML cu atribute RDFa

5.

De regul a est o te t se folosete ter e ul "glea er"

De regul a est o te t progra ul e tra tor e u it "distiller"

Sto area de grafuri se iu ea Ja aS ript, arra -uri create cu sintaxa JSON-LD

*Not:
Pe tru a ordrile 2-5 sintaxele sunt standardizate, deci programele extractoare sunt disponibile n mod public (ca servicii Web sau n
li rrii 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]].

Afir aii extrase


("distilate")
din cod HTML, avnd
ca su ie t pagi a ure t

<div itemtype="http://Schema.org/Movie" itemscope="itemscope">


<h1 itemprop="name">Maleficent</h1>
<div itemtype="http://Schema.org/AggregateRating" itemprop="aggregateRating">
<span itemprop="ratingValue">7.0</span>
/
<span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>

Acest cod HTML este prezent n pagina Maleficent, asigurnd simultan


afiarea (prin CSS) i des rierea se ifi aiei pri alorile itemprop,
recunoscute de Google)

De u irile proprietilor
sunt preluate din
terminologia Schema.org

A ordarea rudi e tar: glea i g


Principiu: reatorul u ui site We elege i for aia 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 aii RDF di di erse stru turi tl ite fiierele 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 proprieti
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 .
:P2 :Name "Mouse"; :P2 :Price 10 .

Tra sfor ri si ilare se pot o epe i


pe tru stru turi XML de ex., atri utele pot de e i proprieti ale
ar atorului pri te sau ale u ui ID ,
pe tru stru turi HTML de alte tipuri o i aii de DIV-uri, SPAN-uri)

A ordarea rudi e tar: glea i g


Neaju sul a ordrii 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
aa-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 pregtit pe tru a
e trage afir aii 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 elai 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 proprieti 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 aia 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">
</TABLE>

EUR</TD>..

Totui, CLASS poate fi folosit i a se a stilurilor CSS! Valoarea lui CLASS poate i di a proprietile lu rurilor despre are
se or ete pagi :

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


<TABLE>
<TR ID="P1">
<TD CLASS="name">TV set</TD>
<TD CLASS="price">300</TD>
</TR>
Cod HTML
</TABLE>

Transformare
XSLT

<#cat> :title "Product Catalog".


:P1 :name "TV Set"; :price 300.
Cod RDF extras

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 colecie de termeni pentru descrierea
<span class="postal-code">1210</span>,
datelor de contact pentru o persoa /organizaie:

Valorile lui CLASS joa rolul unor proprieti


<span class="country-name">Austria</div>
RDF
</div>
Valorile italice o i utul afia 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
org url (=o organizaie pentru care sunt indicate
<span class="type">Work</span>:
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>

Microformate
U

izitator u a

a edea

ro ser i for aia:

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


(ex.: http://www.w3.org/2006/vcard/hcard2rdf.xsl) pentru a extrage afirmaiile:
@prefix : <http://www.w3.org/2006/vcard/>
[a
:org ;
fn
"ABC Inc. ";
:url
<http://www.ABCinc.net>;
:adr
[:type
:work;
: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> ]

*Adresa la care e disponibil convertorul se include n pagina


HTML tot prin linkuri GRDDL.
"Profilul" (identificatorul URI al terminologiei folosite) se ia de
pe site-ul unde sunt centralizate toate microformatele:
http://microformats.org/wiki/profile-uris

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 reete de u trie
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 ordri

preze t a e de a fa e u o igraie 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:
Subiectul este indicat n HTML prin atributul itemid. De
</div>
Afirmaii RDF e or fi e trase de u distilator Mi rodata
(https://www.w3.org/2012/pyMicrodata/#distill_by_input):

asemenea, itemscope i di faptul DIV-ul ure t o i e


afir aii despre a est su ie t p la apariia u ui alt
itemscope, care va schimba subiectul)
Clasa (tipul) subiectului e declarat cu itemtype
Proprietile su t i di ate itemprop
Stri gurile izi ile pagi or de e i alorile proprietilor, u
e epia li kurilor, la are o ie tul afir aiei se ia di HREF la fel
pentru imagini, din SRC)
Toate proprietile i lasa Mo ie su t luate di ter i ologia
S he a.org i di at pri prefi ul s:, difere iat fa de prefi ul
nostru)

@prefix : <http://expl.at#> .
@prefix s: <http://Schema.org/> .
:Avatar
a s:Movie.
s:name "Avatar";

s:director "James Cameron";


s:genre "Science fiction";
s:trailer <http://imdb.com/trailers/avatar-trailer.html>.

Exemplu cu microdate
Ur toarea afir aie e i ade at, i sta ilete o relaie 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 su, pe tru a putea aduga ai departe afir aii 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 su su ie t ( are s poat pri i
propriile proprieti . Pe tru asta i o alo a u identificator (itemid i u itemscope are s deli iteze poriu 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 relaii u persoa e sau lu ruri are i i
paginii (next slide)

ar u su t

e io ate te tul

Exemplu cu microdate
Se pot stabili relaii proprieti 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 proprieti u alori si ple atri ute are s u fie izi ile pagi
cu SPAN-uri goale se pot rea relaii 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 relaii u resurse adresa ile adrese URL ale
u or fiiere/site-uri) fr 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 aii

Putei re ar a u eroase pagi i We i tutoriale HTML 5 adesea atri utul itemid lipsete sau u se dis ut
despre el:

astfel de azuri distilatoarele or ge era oduri a o i e are pri es proprietile di itemprop

Motivele utilizrii 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 fr s ai elegerea adrului
mai larg al Web-ului Se a ti de i fr s ai oiu i legate de grafuri, o e tare tre afir aii
de pe pagini Web diferite etc.). Microdatele/Microformatele sunt percepute adesea ca o reet
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 relaii u alte lu ruri/persoane nemenio ate textul siteului sau u dores o e tare u afir aii di alte site-uri

Legat de obiectivul exemplelor:


Da s opul e stri t li itat la SEO, otoarele de utare oder e dei deja proprii ide tifi atori
pe tru ulte di e titile 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 su u graf de u oti 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 oaterii
a u itor proprieti heie e io ate pagi de exe plu u ele, sau o i aii tre u e i
alte proprieti

Exemplu
Preedi 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 fr a-i atribui ITEMID:
<div itemscope="itemscope" itemtype ="http://Schema.org/Person" >
<h1 itemprop="name">Barack Obama</h1> a vizitat Romnia.
................................
</div>
Afir aiile distilate or fi atri uite u ui od a o i :
[a s:Person; s:name "Barack Obama"; ....]
Google va cuta propriul K o ledge Graph e e titate are u ele respe ti .
Va gsi http//g.co/kg/m/02mjmr i a su stitui odul a o i u a est URI.
Aadar:
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 proprieti e io ate pagi de t u ele proprieti heie are,
combinate cu numele, ar putea clarifica identitatea: un link spre site-ul ofi ial al lui O a a, e io area soiei, a
profesiei etc.)
Pe acelai pri ipiu se tolereaz i situaii 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 ilaritii de u e:
:Avatar s:director [s:name "James Cameron"].

RDF in attributes (RDFa)

Similariti cu microdatele:
a elai rol, de a i tegra u oti e odul HTML
o i utul izi il al pagi ii d stri guri e or de e i alori de proprieti afir aii RDF
odul HTML e e ti s u atri ute dedi ate,
oduri are u afe teaz afiarea ro ser, dar ofer
u oti e u ui lie t distilator
poate folosi ter i ologii e iste te ole ii de proprieti i lase
Difere e fa de microdate:
atri utele su t altele, odalitile de i ludere a afir aiilor 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 eeai 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 eaprat 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
16
http://www.w3.org/2012/pyRdfa/#distill_by_input

RDFa:
Su ie te i proprieti u alori stri g
Subiectul RDF: ABOUT (n loc de ITEMID)

da e a se t, su ie tul e ote it de la ele e tul HTML pri 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 soit 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 folosete 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


proprieti i tipuri lase

ter i ologia i pli it ar putea fi hiar S he a.org

Se pot i a
fr prefi

u VOCAB o ter i ologie i pli it " o a ular" pe tru

ai

ulte ter i ologii, u prefi e diferite, sau u a u prefi i u a i pli it

o relaie 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:
Relaii u alte resurse

Pe tru relaii 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 fiiere), 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 lipsete,
se folosete ur torul su ie t ABOUT gsit i teriorul ele e tului ure t ederea l uirii de afir aii :
<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 aiilor
Afir aii u a elai 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 aii u a elai 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#">
spaii

<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#>.
@prefix xsd: <http://www.w3.org/XMLSchema#> .
x:Andrew x:hasBrother x:Peter; x:hasAge "20"^^xsd:integer .
x:England x:hasName "England"@en .

O ser ai odul de i ludere


a tipului i odului de li
O ser ai odul de de larare
a mai multor prefixe
separate de spaii adrul
a eluiai 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 pstra 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 relaiilor
Se sul u ei relaii 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 relaii u o resurs adresa il se i erseaz da lipsete 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 aii l uite
Varianta 1. a se a lui ABOUT, su ie tul RDF e
precedentul ABOUT sau RESOURCE)

ote it de la ele e tul pri te (din

<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 aii 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 aii l uite
Varia ta . Separare o plet tre su ie t, proprietate i o ie t, evit d repetarea odului
o u tre afir aii (fu io eaz i u ABOUT, i u RESOURCE):
<body prefix="x: http://expl.at#">

Pri a afir aie


<div about="x:Andreea">
<div rel="x:isMotherOf">
A doua afir aie
<div about="x:Peter">
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter .
x:Peter x:isFatherOf x:George .

26

RDFa:
afir aii 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 fr 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 aii 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 aii 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 afiate 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 aie
otoarelor de utare, are ar putea fi i teresate de a east relaie. 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 cutare a putea dete ta relaia de fa ilie, atta re e t a ele siteuri foloses a elai ide tifi ator pe tru i di idul o u :Peter i a eeai ter i ologie de
31
proprieti ai i S he a.org .

Alte o ser aii


REL i REV pot a ea u ele alori predefi ite,

ote ite di HTML-ul clasic:

"stylesheet" relaia u ei pagi i u u fiier de stiluri CSS


"license" relaia u u do u e t de li e iere
"help" relaia u u do u e t help
"cite" relaia u o surs itat

CONTENT are prioritate fa de o i utul HTML izi il d a ele apar la


a elai 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 aii pagi i HTML, tr-o a ier e u altereaz odul HTML

E e tual, se poate i a u elelalte a ordri 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 uli progra atori su t fa iliarizai (de e e plu, pri si ta
o ie tual de for a obiect.proprietate sau array[index] etc., adesea ai uor de folosit de t SPARQL sau fu iile oferite
de di erse li rrii)

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 aiilor "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


rspu 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 ite eti hete heie e ep u @ :
{
n seciunea @context se definesc, printre
"@context":{"x":"http://expl.at#"},
altele, prefixele* (a nu se confunda cu noiunea
"@id":"x:BeliefsOfMary",
de context discutat la afirmaii 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 seciune @graph e un array ce include toate
}]
afirmaiile unui graf, de obicei grupate dup33
}
subiecte (indicate tot cu @id)

I for aiile grupate se iu ea


@context indic di erse teh i i de
abreviere a termenilor
@base (similar cu Turtle) stabilete o adres de
{"@context":
baz ce se va aplica tuturor termenilor crora nu li
{
se aplic niciuna din celelalte tehnici de abreviere
=> aici se aplic la CompanyABC
"@base":"http://otherdomain.at/",
"@vocab":"http://Schema.org/",
@vocab (similar cu RDFa) stabilete terminologia
din care provin toate clasele i proprietile pentru
"x":"http://expl.at#",
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
interiorul seciunii @context => aici se aplic la
"@id":"x:Peter",
isBrotherOf,hasName,George,worksAt
"@type":"Person",
"br":"x:George",
prescurtrile (specifice JSON-LD) se aplic doar proprietilor, peste tot
unde se folosesc acele prescurtri
"name":"Peter Smith",
=> aici se aplic la isBrotherOf (prescurtat "br"), hasName (prescurtat
"gender":"male",
"name")
"x:worksAt":{"@id":"CompanyABC"}
*n definirea unei prescurtri se indic i dac obiectul proprietii 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:
{"@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"}
}

Echivalent Turtle:
@base <http://otherdomain.at/>.
@prefix x: <http://expl.at#>.
@prefix : <http://Schema.org/>.
x:Peter

a :Person;
x:isBrotherOf x:George;
x:hasName "Peter Smith";
:gender "male";
x:worksAt <CompanyABC>.

35

JSON-LD:
Gruparea afirmaiilor, liste, tipuri de date
Exemplu JSON-LD:
ntr-o seciune @graph se includ afirmaiile
{"@context":
unui graf, grupate dup subiecte (@id);
{"x":"http://expl.at#",
@graph poate lipsi, caz n care seciunea
"xsd":"http://www.w3.org/2001/XMLSchema#",
@context e valabil doar pentru primul
"x:isBrotherOf":{"@type":"@id"},
subiect!
"x:hasChildren":{"@type":"@id"}},
"@graph":
cnd mai multe afirmaii au acelai subiect i
aceeai proprietate, obiectele se enumer ntr[
un array simplu
{"@id":"x:Peter",
"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 cuvntul cheie @list
{"@id":"x:John",
"x:bornOn":{"@value":"2002-10-10","@type":"xsd:date"}}
]}

Echivalent TriG:
@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.}

valorile simple pot primi tipuri XML Schema cu


@type (sau coduri de limb cu @language)

36

JSON-LD:
Per ite i gruparea dup o ie tul afir aiei, prin
definire de relaii i erse!
JSON-LD example fr @graph, de i u @ o te t apli a il doar pe afir aiile
primului subiect!):
{ "@context": {
"x": "http://expl.at#",
"x:hasChild":{"@reverse":"x:hasParent", "@type":"@id"}
},
"@id": "x:Peter",
@reverse va genera n RDF relaia
"x:hasChild":["x:Mary","x:John"]}
invers hasParent de cte ori se ntlnete
Echivalent Turtle:
@prefix x: <http://expl.at#>.
x:Mary x:hasParent x:Peter.
X:John x:hasParent x:Peter.

n JSON-LD relaia hasChild. Aceasta


permite gruparea n JSON-LD a mai multor
afirmaii care au acelai obiect pentru
hasParent.

37

JSON-LD: noduri anonime


Exemplu JSON-LD:
{"@context":
{
"x":"http://expl.at#",
Lipsa lui @id ntre cele dou proprieti va
crea un nod anonim
"xsd":"http://www.w3.org/2001/XMLSchema#",
"x:isSonOf":{"@type":"@id"}
},
Un obiect prefixat cu _: la o proprietate
"@id":"x:Peter",
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
}
totodat e prefixat cu _: devine nod
Echivalent Turtle:
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 (dicionar), iar etichetele (cheile) acelui
array dorim s fie ignorate la conversia n RDF,
"x:hasSubsidiaries": {"@container": "@index"}
declarm proprietatea ca avnd valori de tip
},
"@container":"@index"
"@id": "x:CompanyABC",
"x:hasSubsidiaries": {
Cheile "france", "austria" nu vor mai deveni
"france": {"@id": "x:ABCFrance",
proprieti RDF, dar vor fi totui utile
programatorilor, care vor putea crea cicluri
"x:address": "DeGaulle 22, Paris"},
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
}
n RDF, @id-urile subordonate cheilor
Echivalent TriG:
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 aiei di JSON-LD


Blocurile JSON-LD se ncorporeaz n pagini HTML printr-o se iu e SCRIPT are are ID pe tru a fi uor 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 proprieti la are a folosit pres urtri sau @ o a :
graf.name
graf.gender
s hi
pe tru proprietile u prefi tre uie s folosi si ta a pe tru arra -uri asociative:
graf["x:worksAt"]
O serie de li rrii spe ializate de e e plu jso -ld.js ofer i alte fa iliti, i lusi o ersie si ta ele RDF dis utate

REGULI, AXIOME I MOTOARE


INFEREN IALE

Stru tura i for aiei Se a ti We


Pri ipiu: i terogrile SPARQL ar trebui s returneze spre utilizatorul final date, folosindu-se
s de u oti e pe tru o filtrare ai i telige t de t per it BD relaio ale

DATE: vizibile n pagini Web ca stringuri,

od tradiio al sto ate

aze de date izolate

DATE
vizibile
doar n
Amazon

<http://amazon.com>
10

"James Cameron"

11
:JC

DATE
vizi ile i
IMDB i
Amazon

:Amazon

:vinde

:DVD1
:DVD2

"Arnold
Schwarzenegger"

:AS
:LH

237 mil
:Avatar
:Predator

"Linda Hamilton"

:Terminator
6.4 mil

CUNOTIN E:

DATE
vizibile
doar n
IMDB

"Predator"

graf o u e ofer "des rieri"


pentru date vizibile n mai multe site-uri
dpdv tehnic "graful comun" va fi distribuit
ntre mai multe servere
por iu i din graf pot fi nglobate n HTML

18 mil
"Terminator"
"Avatar"

Stru tura i for aiei Se a ti We


Regulile pot fi i ple e tate a i terogri CONSTRUCT sau INSERT WHERE
sau sto ate per a e t aza de u oti e a io e, li aje pe tru reguli

n schimb graful poate


rete "de sitate",
pri ge erare de relaii
noi (cu ajutorul
regulilor)

<http://amazon.com>
10

"James Cameron"

11
:JC

:Amazon

:vinde

:DVD1
:DVD2

"Arnold
Schwarzenegger"

:AS
:LH

237 mil
:Avatar

"Linda Hamilton"

:Predator
:Terminator
6.4 mil
"Predator"
18 mil
"Terminator"
"Avatar"

....
Datele sunt noduri terminale!
u se pot fa e afir aii are
au valori simple ca subiecte)

Reguli
REGULILE ge ereaz afir aii noi ("implicite", "concluzii") din afir aii existente ("explicite","premise"),
per i d automatizarea dedu iilor logice. Beneficii:

ogirea auto at a bazelor de u oti e;

Detectarea auto at a o tradi iilor ntre afir aii.


Concluzie
relaie ou

:hasRelativesIn

:Anna

:Austria
:locatedIn

:isMotherOf
:livesIn

:Andrew

:Wien

REGULILE u ge ereaz doar relaii oi tre oduri e iste te, i pot ge era ori e afir aii u oduri oi, hiar
i afir aii u oduri a o i e sau afir aii o plet de o e tate de ele e iste te :
Concluzii
afir aii oi,
cu noduri noi)

:Terminator
:directedBy
:JamesCameron

:Movie

:Director

:Batman
:directedBy

a
:TimBurton

Reguli
:relatieContradictorie

REGULILE pot s caute i s marcheze o tradi ii


n vederea i terogrii i a alizrii lor ulterioare:

:motherOf

:Mary

:Ana
For rudi e tar de ar are:
da e ist ai ulte relaii tre A a i Mar , u e lar
care se contrazice cu care)

:motherOf

_:y

For sofisti at de ar are, pri reificare:


toate ele e tele u ei afir aii
contradictorii sunt legate de un nod
a o i , pus apoi relaie u alte oduri e
ar heaz o tradi ii pe tru a per ite
:Ana
analizarea lor prin interogare)

rdf:subject

rdf:predicate rdf:object

:motherOf

:contrazice
:Mary
:Contradictie

:motherOf
rdf:predicate rdf:subject
a

rdf:object

Not: De

ulte ori o tradi iile u se

ar heaz, i doar se afieaz

esaje de eroare

_:x

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 terogri
A1. I terogri de itire u odifi aza de u oti e :
CONSTRUCT {?x :hasRelativesIn ?y}
WHERE {?x :isMotherOf/:livesIn/:locatedIn ?y}
A2. I terogri de scriere odifi aza de u oti 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 utrii i terogrii.

Dac viitor se adaug afir aii oi are ar putea fi releva te pe tru regul, i terogarea tre uie ree e utat

Da viitor se terg afir aii are au fost folosite de tre regul, u oti ele ris s devi i o siste te
o luziile u vor ai fi fu da e tate pe o pre is!

La i terogrile CONSTRUCT, si gurul are e efi iaz de o luziile ge erate e lie tul i terogrii (acesta va
decide dac s le sto heze per a e t

Regulile orporate i terogri u gara teaz


o siste a pe ter e lu g
. Starea i iial a azei de u oti e:
:Austria

:Anna

:locatedIn

:isMotherOf
:Andrew

:livesIn

. Se e e ut regula, su for a u ei
i terogri INSERT ... WHERE:

:Austria

:hasRelativesIn

:locatedIn

:isMotherOf

:Mary

:livesIn

:livesIn

:Wien

. Se terg afir aii:

. Se adaug afir aii oi:

:Andrew

:locatedIn

:isMotherOf

:Wien

:Andrew

:Anna

:Austria

:hasRelativesIn

:Anna

:Wien

:livesIn

:isMotherOf

:Matt

n felul acesta, apar premise lipsite de concluzie!


:Mar :hasRelativesI :Austria lipsete
Tre uie ree e utat regula

:Austria

:hasRelativesIn

:Anna

:locatedIn

:isMotherOf

:Andrew

:Wien

n felul acesta, apar o luzii lipsite de pre is!


:A a :hasRelativesI :Austria tre uie s dispar
Trebuie executat un DELETE pe concluziile generate din
afir aia tears u e sigur ai ti are su t a elea

Motoarele i fere iale evit a este ris uri deoare e i


evide a regulilor, a afir aiilor ge erate i le pot re al ula
la fie are odifi are aza de u oti e

Reguli
Varianta B. Reguli stocate (ncorporate n baza de u oti e i exe utate de

otoare i fere iale)

B1. Axiome (=afir aii RDF s rise u ter e i sta dardizai, av d a su ie t o las sau o proprietate .
A elai e e plu, s ris a a io u ter i ologia OWL a se o serva a io ele su t tot afir aii RDF :
:hasRelativeIn owl:propertyChainAxiom (:isMotherOf :livesIn :locatedIn).
B2. Limbaje dedicate pentru stocarea de reguli (SWRL, SPIN, RIF, RuleML, Horst etc.)
A elai e e plu, scris n limbajul SPIN a se o serva regulile SPIN su t tot afir aii 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 elai 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 oti e

Regulile stocate n format RDF (axiome, SPIN) pot fi la rndul lor interogate sau transferate ntre servere
diferite, folosi d a eleai 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 aii, s u r afir aii ge erate fr pre isele di are au fost ge erate
La adugri, s u apar pre ise oi fr a ge era i o luziile e se pot ge era di a estea
*la i terogri, o luziile ge erate refle t doar afir aiile preze te
o e tul i terogrii!
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 privete ter e ii sta dardizai 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 uli ter e i, u att 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 rspu s la ntrebarea
"Ce este X?" ("Ce tip are X?")
Pentru aceasta, trebuie s existe afir aii 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 oti e

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

s defi eas se ifi aia fie rui Y

s per it generarea auto at a afir aiilor "X a Y", pe baza acelei se ifi aii
Vocabularul:

Poate fi stocat separat de restul bazei de u oti e (scopul e s ofere o terminologie


pu li , reutiliza il i de tre alii

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 aii despre clase i proprieti (axiome)

axiomele se construiesc cu termeni sta dardizai din RDF/S sau OWL da se


folosete OWL, vocabularul se u ete "ontologie")

axiomele se pot folosi pentru a genera automat afir aii noi (inclusiv afir aii de
tip "X a Y", dar nu numai)

Proprietile se
ierarhizeaz ( u
rdfs:subPropertyOf)

:aLucratLa

Clasele se
ierarhizeaz (cu
rdfs:subClassOf)

Vocabular/Ontologie
= descrieri de clase + propriet i
(folosind ter e i sta dardizai)

:Persoana
:Regizor

<http://amazon.com>
10
:Actor
"James Cameron"

11
:JC

:aJucatIn

:Amazon

:vinde

:DVD1
:DVD2

"Arnold
Schwarzenegger"

:AS

:aRegizat
:LH

237 mil
:Avatar

"Linda Hamilton"

:Predator
:Terminator
6.4 mil

:Film
Proprietile se o e teaz la clase
(cu rdfs:domain i rdfs:range) pentru a
i di a e SUNT lu rurile e parti ip la
a ele relaii
* u uitai proprietile pot deve i
su ie te u ele afir aii

"Predator"
18 mil
"Terminator"
"Avatar"

Exemplu
Prefix pentru
i sta e
Prefix pentru
ter i ologia ou reat
Prefixe standard

Fapte
(au ca subiect
i sta e
Axiome
(au ca subiect
clase sau
proprieti

@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 .
voc:Femeie a rdfs:Class.
voc:Persoana a rdfs:Class.
Vocabular
(axiome cu termeni Ontologie
voc:mamaLui a rdf:Property.
(axiome cu termeni
RDF/S)
voc:mamaLui rdfs:domain voc:Femeie.
RDF/S+OWL)
voc:mamaLui rdfs:range voc:Persoana.
voc:mamaLui a owl:AsymmetricProperty .

Baza de
cunotin e

Tipuri de URI folosii e e plu:


URI standard:

URI u su li iere o ti u (rdfs:Class, rdfs:domain, rdfs:range, rdf:Property, a / rdf:type) apari terminologiei


standard RDF/S

URI u su li iere pu tat (owl:AsymmetricProperty) apari 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 atai (:Anna, :Andrew) reprezi t ite 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 .
Defi ete oiu ea ter e ul de Femeie a fii d o uli e
:Anna voc:mamaLui :Andrew .
de i divizi las

voc:Femeie a rdfs:Class.
Defi ete oiu ea de Persoana a fii d o uli 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 exprimnd o
relaie 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 relaia nu poate avea loc n


a ele se suri, tre a eiai i divizi
util la dete tarea de o tradi ii, dac se afir
u i divid e i a a i opilul a eluiai i divid

Relaia tre a io e i fapte


A io ele su t tot afir aii, se o e teaz la restul afir aiilor, de i di pu t de vedere al repreze trii al ulator i
al i terogrilor u e ist o disti ie tre vo a ulare/o tologii i restul afir aiilor! Disti ia e dat de ter e ii folosii
i de faptul a io e su ie tele su t totdeau a lase sau proprieti.
owl:AsymmetricProperty

rdfs:Class
a

rdf:Property

rdfs:domain
:Persoana

:Femeie

a
rdfs:domain

rdfs:range
a

:Anna
Di a est

:mamaLui

:Andrew

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 terogri azate pe afir aii de tip


X a Y ("X este un/o Y")
Afirmaiile de for a X a Y asigur lia tul tre:
a)
ivelul i sta elor afir aii despre i divizi . A east o po e t a azei de u oti e ai poart u ele ABox.
Deoare e au a su ie t u i divid, i afir aiile X a Y se o sider fa parte di ivelul i sta elor.
b)
nivelul terminologic, vo a ularul, o tologia afir aii despre lase i proprieti, u rolul de a fi a tipurile de i divizi i
proprietile a estora . A east o po e t a azei de u oti e ai poart u ele Tbox.
Preze a afir aiilor X a Y permit calculatorului s eleag e su t lu rurile despre are se vor ete
asigur rspu suri pe tru u ele i terogri fundamentale:

Ce este Andrew? rei lase apari e, e tip are


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

ai

aza de u oti e i

ulte tipuri

Returneaz lista u toate persoa ele toate i sta ele u ei lase


SELECT ?x WHERE {?x a voc:Persoana}
Rspu 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 oti e o plet, u ar tre ui s ai rspu s
SELECT ?x WHERE {?x a ?y. FILTER (!BOUND(?y))}
Rspu 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 aii 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 rspu 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 aii ? 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 aia


X a Y pentru orice X

Abordare 1. I lude
a ual astfel de afir aii aza de u oti e, preu u toate elelalte afir aii
Poate fi un proces anevoios, cu risc de erori de tastare u URI tastat greit va de o e ta afir aii! sau o tradi ii
logice da de lar pe tru a elai 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
:Anna voc:mamaLui :Andrew.

INSERT {?s a :Femeie}


WHERE {?s voc:mamaLui ?o}

2 .Regula poate e efi ia de preze a a io elor, az


voc:mamaLui rdfs:domain voc:Femeie.
:Anna voc:mamaLui :Andrew.

are tre uie e e utat separat pe tru alte proprieti

:Anna a :Femeie.

are e apli a il i altor proprieti e au rdfs:do ai .

INSERT {?s a ?c}


WHERE {?s ?p ?o. ?p rdfs:domain ?c}

:Anna a :Femeie.

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 terogri . 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 prevd i ge erarea u or afir aii "implicite",
pe tru a gara ta o pletitudi ea azei de u oti e .
:Anna a :Femeie.
voc:mamaLui rdfs:domain voc:Femeie.
Motor inferenial RDFS
:Anna a rdfs:Resource.
:Anna voc:mamaLui :Andrew.
:Andrew a rdfs:Resource.
Afir aii i pli ite
:Femeie a rdfs:Resource, rdfs:Class.
voc:mamaLui a rdfs:Resource, rdf:Property.

A elai e e plu, a u
e efi ii d de
u
otor i fere ial RDFS
Baza de u oti 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:

@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 .
voc:Femeie a rdfs:Class.
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 .

A east parte poate fi ge erat de u


otor i fere ial RDFS:

Fapte
deduse

Axiome
deduse

E ist rspu 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 rspu s la a east
ntrebare pentru termenii
voc:mamaLui rdfs:range voc:Persoana.
sta dardizai!
voc:mamaLui a owl:AsymmetricProperty .

Tot otoarele i fere iale se o up i


de asta, genernd o serie de afirmaii
implicite (next slide)

Cu oti e i pli ite

ge erate i pli it de
rdfs:Class a rdfs:Class.
rdf:Property a rdfs:Class.
rdfs:domain a rdf:Property.
rdfs:range a rdf:Property.
owl:AsymmetricProperty a rdfs:Class.
rdf:type a rdf:Property.
rdfs:Resource a rdfs:Class.
:Anna a rdfs:Resource.
:Andrew a rdfs:Resource.
voc:Femeie a rdfs:Resource.
voc:Persoana a rdfs:Resource.
voc:mamaLui a rdfs:Resource.
rdfs:Class a rdfs:Resource.
rdf:Property a rdfs:Resource.
owl:AsymmetricProperty a rdfs:Resource.
rdfs:domain a rdfs:Resource.
rdfs:range a rdfs:Resource.
rdf:type a rdfs:Resource.
rdfs:Resource a rdfs:Resource.

otoarele i fere iale

uli ea tuturor laselor e la r dul su o las


uli ea tuturor proprietilor e o las
(domeniul e o proprietate)
(codomeniul e o proprietate)
uli ea proprietilor asi etri e e o las
("a fi ceva" este o proprietate)
(muli ea tuturor lu rurilor e o las

Co se i ele axio ei fu da e tale:


Ori e este o resurs,
inclusiv termenii standard,
inclusiv uli ea tuturor resurselor

Cu oti e i pli ite


A ia dup e afir aiile i pli ite su t i luse ave u rspu s la tre area "Ce
este X?" pentru orice X:
U
otor i fere ial va ge era afir aiile 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 terogri
Dac e az doar pe afir aiile i pli ite, rspu sul la tre area "Ce este
X?" poate fi prea vag pentru a fi util

rdfs:Resour e e u rspu s vag, ajut doar la i terogri ge eraliste: "Returneaz lista tuturor
ter e ilor folosii aza de u oti e (URI i oduri a o i e "
Pe tru ori e X ar tre ui s e iste ar u rspu s n plus fa de rdfs:Resour e la a east
ntrebare

Pentru termenii standard, motoarele infereniale 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 rspu 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 rspu suri s fie rdfs:Class i rdfs:Resour e
Pe tru proprieti e a epta il a si gurele rspu 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 relaie

A elai e e plu, a u
e efi ii d de
u
otor i fere ial RDFS
Baza de u oti 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:

@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 .
voc:Femeie a rdfs:Class.
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 .

A east parte poate fi ge erat de u


otor i fere ial RDFS:

Fapte
deduse

Axiome
deduse

Dete tarea de o tradi ii

Dete tarea de o tradi ii = se

alarea situaiilor

are apar o

i aii de afir aii 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 constrngeri!)
"Se alarea o tradi iilor" poate lua numeroase forme:
Generarea de semnale i terfaa u utilizatorul fr a produce nicio modificare n baza de u oti e.
Exemple:

Mesaje de eroare declanate i terfa


E e utarea u or i terogri de itire tre utilizator, apa ile s afieze o tradi ii fr a adu e

Ate e, u toate afir aiile o tradi torii su t false; de o i ei u ele adevrate se o trazi
e esar a alizarea lor de tre ad i istratorul azei de u oti e!

odifi ri

Copierea afirmaiilor are se o trazi tr-un graf de o tradi ii, ce va fi ulterior interogat pentru
analizare
u u ele false, de i e

Mar area o tradi iilor u afir aii dedi ate pe tru asta, are s poat fi ulterior i terogate pe tru
analizare. Exemple:

Afir aii de tip "X a :IndividContradictoriu" pentru i sta e


Afir aii de tip "P a :ProprietateContradictorie" pentru proprieti
Afirmaii de tip "C a :ClasaContradictorie" pentru proprieti
Reifi area afir aiilor 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 oate se ifi aia ter e ului sta dard i va se ala o
o tradi ie
odul de utilizare a relaiei :isMotherOf, pe aza i terpretrii ter e ului sta dard
owl:AsymmetricProperty (din terminologia OWL)!
Da otorul i fere ial u e dispo i il, pute totui e efi ia de a io i u ajutorul u ei
i terogri e e utate de u "administrator" al u oti elor, responsabil cu calitatea lor):
O i terogare de itire poate se ala o tradi iile administratorului cunoti 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 uitai, e posi il a di tr-u set de afir aii o tradi torii, u ele s fie totui adevrate sau utile tr-un context limitat (" u oti e
subiective"); de aceea tergerea auto at a afir aiilor o tradi torii u e re o a dat

Terminologia standard RDF/S


= colecie 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 aii
inclusiv afir aii 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 ogeas des rierile de lase
i proprieti
1

rdfs:Resource
=

uli ea tuturor resurselor "clasa universal"), coni e ori e URI, od a o i


aloare si pl de ori e tip

sau

Not: ter i ologia OWL ofer i u si o i , ter e ul owl:Thing

Di preze a afir aiei


:Anna :isMotherOf :Peter.
un motor i fere ial a ge era "declaraii 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)
Declaraiile de resurse su t afir aii agi, de utilitate redus. Totui, ele adu u ele
beneficii:
Gara teaz o pletitudi ea azei de u oti e e ist ar u rspu s la
ntrebarea Ce este X? pe tru ori e resurs e io at aza de u oti e
Per it i terogarea u ei liste o plete a resurselor folosite aza de u oti e
*nu i pe tru valorile si ple, dar u pe tru a estea u ar fi resurse, i pe tru u pot
2
apare a su ie te afir aii!

rdf:Property
=

uli ea tuturor proprietilor relaii+atri ute

Din:
:Anna :isMotherOf :Peter.
...se va genera:
:isMotherOf a rdf:Property.
(ori e ter e di
ijlo ul u ei afir aii e o proprietate)
Per ite i terogarea u ei liste u toate proprietile
3

rdfs:Class, rdf:type
rdfs:Class =

uli ea tuturor

uli ilor laselor

Not: ai i lasele tre uie elese a uli i de i sta e ,


i u se s o ie tual, a seturi de atri ute de i sta iat/ ote it

rdf:type (abreviat "a" n Turtle) = relaia de aparte e a u ui i di id/u ei


i sta e la o uli 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 relaiei rdf:type e o las)

rdfs:subClassOf
Not:

ai

= relaia de i luziu e tre

uli i lase

ulte astfel de relaii 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 ete toate tipurile poziio ate ierarhie deasupra
clasei sale declarate)
:Man rdfs:subClassOf :Being.
(i luziu ea e tra zitiv
5

Propagarea tipului n sus pe ierarhie


a elai ti p, se vor dedu e relaiile
de incluziune indirecte, ce reies din
tranzitivitate
da o i sta pri ete u tip,
pentru ea se vor deduce toate tipurile
de deasupra n ierarhie

rdfs:Resource

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

rdfs:subClassOf

rdf:type

:Human

rdf:type
rdfs:subClassOf

rdfs:subClassOf

rdfs:subClassOf

:Man
6

Incluziunea ntre mai multe clase duce


la o ierarhie (taxonomie)

Muli e de reu iu e
i trodus forat pe tru a
unifica alte clase)
Muli e de
:Person
i terse ie u ai
multe supraclase)
:Student

:Employee

Muli ea
u iversal

rdfs:Resource / owl:Thing

:Location

:Object

:Computer

:Furniture

:Lab

:Office

:EmployedStudent
rdf:type

:Admin

:Master

:Bachelor
:L201

:Teaching
rdf:type
:Andrew
rdf:type

owl:Nothing

Muli ea vid o eptul


exist doar OWL!

:Alain

I sta "clasificat"
(primete a "tip" toate lasele de deasupra elei

are e adrat i iial

Eroare fre e t: ierarhia plat


Ie a hie plat = o ierarhie are fie are las e o e tat doar la uli ea u i ersal i uli ea
id, fr a a ea relaii u alte lase relaiile 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 ai s ierarhizai t ai detaliat lasele reate de oi:


Ide tifi ai 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 ai i su lase o ple e tare, da su t utile i terogrilor
I trodu ei lase de i terse ie a olo u de e ist i sta e o u e ai ultor lase
I trodu ei lase de reu iu e a olo u de dorii s u ifi ai lase fr a le lega dire t la
rdfs:Resource

Pri ipii ale ierarhizrii


efortul de ierarhizare, ghidai- dup:

I terogri e tre uie progra ate apli aii reate de oi e tipuri rei s se poat dete ta pe tru i di izi

I terogri pro a ile di partea altor lie i i altor apli aii

Posi ilitile de e te sie pre o izate pe tru iitor adugare de lase oi


Cu alte u i te, u e o ligatoriu s a ei o uli e de i terse ie tre ori are dou lase, doar a olo u de se
pre o izeaz i terogri. e e plul de ai jos a e ti s ierarhia plat di
oti ele i di ate:

Su uli e o ple e tar


i trodus pe tru a i di a e su t
stude ii are u su t astera zi

:Employee

:EmployeeStudent

I terse ie i trodus pe tru a


per ite i terogarea fa il a elor
are su t i stude i i a gajai

Reu iu e i trodus pe tru a per ite


interogarea inventarului complet de
e hipa e te i piese de o ilier
defi irea pe viitor i a altor tipuri de
o ie te e sufleite tr-un mod
are s le disti g uor de elelalte
clase (ca subclase ale lui Object)

rdfs:Resource / owl:Thing

:Student

:BachelorStudent

:Object

:MasterStudent

owl:Nothing

:Lab

:Equipment

:Furniture

Relaie de i luziu e ide tifi at


tre dou lase di ierarhia plat

Incluziunea permite echivalarea de clase


defi ite de orga izaii diferite,
aze de u oti e diferite
(cu prefixe diferite)
rdfs:subClassOf
:Human

Organizaia A
(cu prefixul :)

U
u

alt:HomoSapiens
rdfs:subClassOf

Afirmaiile ce asigur maparea


conceptelor formeaz o
"ontologie de aliniere"
(n forma cea mai simpl, un
dicionar de echivalene)

Organizaia B
(cu prefixul alt:)

eori u a e e hi alare, dar pute a ea totui relaii tre o epte rudite trfel sau altul, defi ite de orga izaii diferite:
Relaia 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


apri ai sofisti ate de t
e hi alrile
Mulime de reuniune

:Employee

rdfs:subClassOf

rdfs:subClassOf

alt:Manager

:Researcher
rdfs:subClassOf

rdfs:subClassOf

:ManagingResearcher

Organizaia A

Organizaia B
Mulime de intersecie
11

rdfs:subPropertyOf
= relaia de ge eralizare a proprietilor, 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 proprieti

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 relaii tre a eiai i divizi
:directed rdfs:subPropertyOf :workedOn.
(i ge eralizarea proprietilor e tra zitiv)
12

Ge eralizarea proprietilor
owl:topObjectProperty

(relaia universal care


"conecteaz toate lucrurile")
rdfs:subPropertyOf

:workedOn

rdfs:subPropertyOf
rdfs:subPropertyOf

rdfs:subPropertyOf
rdfs:subPropertyOf

:created
rdfs:subPropertyOf
:directed
:JamesCameron

:Terminator

Principala utilizare e deducerea


de relaii multiple (tot mai vagi)
ntre aceia i indivizi

Ca i incluziunea de clase,
i generalizarea proprietilor
e tranzitiv

13

Ge eralizarea proprietilor du e la
dou ierarhii de proprieti:
u a pe tru relaii, u a pe tru atri ute
(pentru a fi taxonomii complete, ambele se pot nchide cu termeni OWL)
Atributul universal
(l are oricine, poate lua orice valoare)

Relaia universal
(exist ntre orice resurse)

owl:topDataProperty

owl:topObjectProperty

:RelativeTo

:worksWith
:knownAs

:hasIncome
:ParentOf
:MarriedTo

:BossOf

:Coworker

:hasName

:hasNickname
"Andy"

:BossAndRelativeTo

(relaie de intersecie)

:Peter

:Andrew

Instane a cror relaie


se generalizeaz n sus
:Anna

owl:bottomObjectProperty

owl:bottomDataProperty

Relaia imposibil
(nu poate exista ntre dou resurse)

Atributul imposibil
(nu l poate avea nimeni)
14

Pute du la i i ersa relaia pe tru a


e hi ala proprieti "sinonime"
folosite de orga izaii diferite
rdfs:subPropertyOf
alt:isAcquaintedTo

:knows
rdfs:subPropertyOf

Organizaia A

i aceste echivalri in tot de


"ontologiile de aliniere"

Organizaia B
15

Ca i la lase, o tologiile de ali iere u


o i eaprat e hi alri
Relaie de reuniune
:citizenInSameCity

rdfs:subPropertyOf

rdfs:subPropertyOf

alt:Neighbour

:livesNear
rdfs:subPropertyOf

rdfs:subPropertyOf

:livesInTheSameBuildingWith

Organizaia A

Relaie de intersecie

Organizaia B

rdfs:domain, rdfs:range
rdfs:domain = do e iul u ei relaii tipul pe are l or pri i su ie tele
rdfs:range = odo e iul u ei relaii tipul pe are l or pri i o ie tele
Exemplu:
:directed rdfs:domain :Director; rdfs:range :Movie.
A alogie cu fu ciile di
ate atic:
f:A->B (fu ia f aso iaz ele e telor di A ele e te di B
directed: Director -> Movie (relaia dire torOf aso iaz regizori u fil ele lor
Disti cie fa de fu ciile 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 pui o relaie u u fil
pute

i trodu e

a ual X a :Dire tor fr s a e

afir aii 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 erri de afir aii :
da u X apare a su ie t relaia dire torOf, se a dedu e e regizor X a :Dire tor
da u Y apare a o ie t relaia 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 relaiile la care
parti ip
E principalul mecanism prin care se genereaz de rspu suri la tre rile de tip Ce este X?

u o diia a ori e proprietate s i ai defi it do e iul i odo e iul, iar


diferit de rdfs:Resource

ar u ul di tre a estea s fie

e a is ul are leag ierarhiile de proprieti u ierarhiile de lase


pra ti u o a ular tre uie s o i
ajutorul do e iului i odo e iului

i i

o ierarhie de lase+o ierarhie de proprieti+legturi tre ierarhii u

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 fr a ge era i i . Altele pot
s apli e validri de tip pe aza XML S he a pe tru a se ala o tradi ii.
I difere t de situaie, pri a li ie tre uie totui i lus ar a de laraie i e util pe tru i terogri
lie ii vor putea afla e tipuri de valori ar tre ui s gseas la u atri ut i eve tual pe aza lor pot realiza
validri odul apli aiei lie t, for ulare et .
18

Domeniul i odo e iul i flue eaz


ierarhia de clase
Da
se

o proprietate are u do e iu sau odo e iu ai larg sau ai restr s de t lasele e iste te ierarhie,
or 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 att a gajailor t i stude ilor, u alori de tip stri g
Defi i proprietate lo atedI , apli a il att al ulatoarelor t i o ilierului, u alori i sta e de tip
Room
De i e esare lase oi ele u o tur groat :
rdfs:Resource / owl:Thing

:Employee

rdfs:Resource / owl:Thing

rdfs:domain

rdfs:domain

:Employee

:Student

:Furniture

rdfs:range

rdfs:range

:Person

:Computer

owl:Nothing

:locatedIn
:hasName

:Room

:Student

:InventoryObject

rdfs:Literal

xsd:string

:Room

owl:Nothing

:Computer

:Furniture

Te de g dire:
De e s u defi i dou do e ii?
:locatedIn rdfs:domain :Computer,
:Furniture.

rdfs:label, rdfs:comment,
rdfs:isDefinedBy, rdfs:seeAlso
rdfs:label = ataarea 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 terfaa apli aiilor lie t:
:Anna rdfs:label "Smith Anna".
U eori dori s disti ge tre ai ulte astfel de proprieti 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/ ri, u ele doar la fii e . a est az,
a ele proprieti or fi de larate a su proprieti ale lui rdfs:la el
:titlu rdfs:subPropertyOf rdfs:label; rdfs:domain :CreatieArtistica.

rdfs:comment = ataarea u ui o e tariu li aj atural:


:ProABC rdfs:comment "acest URI e identificatorul companiei Prosperitas".
rdfs:seeAlso = ataarea de URL-uri ale unor site-uri We sau aze de u oti e rele a te pe tru resursa-subiect
se pot orpora a li kuri i terfaa apli aiilor 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 aia u ui ter e de o i ei o proprietate sau o las :
:eSotiaLui rdfs:isDefinedBy :vocabularPentruRelatiiSociale.
Se folosete 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 aii RDF u proprieti 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
complexe (ce grupeaz ai ulte proprieti/ alori

relaii

Reminder: Relaiile n-are (complexe, sau "cu aritate mare") apar atunci cnd la o relaie 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 ogi se ifi aia
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 proprietilor, do e iile i odo e iile pe tru a elege
disti ia tre u eroasele proprieti 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 oti e e mai redus u rul de proprieti are tre uie defi ite u do e iu i
codomeniu e mai mic)

Clie ii pot folosi i terogri u l uiri :grades/rdf: alue, : eather/rdf: alue pe tru toate relaiile -are.
Tre uie doar s afle are relaii foloses a east stru tur, aspe t pe tru are e ist u ele pra ti i uzuale:

Clie ii pot folosi i terogri preala ile pe tru a erifi a ai ti u de s-a folosit rdf:value (cu ASK sau clauza
OPTIONAL)
Baza de u oti 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 relaiile legate la u astfel de od a o i

21

rdf:value
ntr-o alt aria t (mai pui efi ie t putem asigura att disti ia ntre proprietile i iiale ct i marcarea
acelor proprieti 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 inferenial 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 aii are tre uie eaprat 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, conectnd la acesta
aloarea si pl e e tual i alte proprieti 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
[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 ptratul 1

u r pri

Sau, atunci c d u ei proprieti i ata


ai ulte alori difere iate pri relaii -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 ataat u od de li de o i ei u apare
delo afir aii, a estea fii d re u os ute/filtrate dup preze a odului li
E e plu u i for aii 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 oti e frag e te de do u e te HTML i/sau XML gata pregtite pe tru
i serare i terfaa fi al de e . pri AJAX sau alte tipuri de pro esri 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 relaii tre ele 23

rdfs:Datatype, rdfs:Literal
rdfs:Datatype = muli ea tuturor tipurilor de date
rdfs:Literal = uli 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 ataat u ei alori si ple e u tip de date i o su

uli e a

uli ii tuturor alorilor)

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


:Anna :hasName "ANNA SMITH"^^:StringCuMajuscule.
Atenie, a easta e doar o de laraie, 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.
B.

Cu ajutorul OWL (vom reveni ulterior)


Ata du-i codul XML Schema care definete restri iile respe ti e i ls 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 relaii "part-of", ntre un obiect complex ("container") i "componentele" sale
rdf:Container = uli ea "containerelor"; un container e un grup de "componente" i fu ie de relaia di tre o tai er i
componente, avem mai multe variante (subclase):
rdf:Bag = uli 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 = uli ea o tai erelor ordo ate lie ii ar putea fi i teresai de ordi ea o po e telor, o e tate u relaii de
forma rdf:_1,2,3...):
:DocumentFolder a rdf:Seq.
:DocumentFolder rdf:_1 :birthCertificate; rdf:_2 :diploma; rdf:_3 :salaryStatement.
rdf:Alt = uli ea o tai erelor de alter ati e; da ordi ea u o teaz se folosete rdfs:member, da ordi ea o teaz o
e pri a ai sus. Mai jos alternativele de cltorie su t ordo ate dup preferi :
:MyTravelAlternatives a rdf:Alt;
:MyTravelAlternatives rdf:_1 :Automobile; rdf:_2 :Plane; rdf:_3 :Bike.
Relaiile 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 proprieti ale lui rdfs:member de i se poate dedu e relaia rdfs:member di relaiile 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 = uli ea tuturor listelor
rdf:first = relaia e leag o list de apul a esteia pri ul ele e t
rdf:rest = relaia 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 utete de a folosi a eti 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 oate
de exemplu:

stru tura di spate i a eti ter e i, pe tru a-i folosi i terogri,

Cnd soli it toate ele e tele listei fr 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
rdf:List o alt aria t ar fi a filtrul s erifi e a ?p s fie diferit de rdf:rest .

od de tip

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 elai 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 pstreaz 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 terogri 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

:hasChildren

:birthCertificate
:Ana

rdf:first

_:X

:Peter
rdf:_2
rdf:type
rdf:type

rdf:rest
_:Y

:diploma

rdf:first

rdf:type

:Mary

rdf:List
rdf:rest

rdf:_3
rdf:Seq
rdf:type

rdf:first
_:Z
:George

:salaryStatement
rdf:rest

rdf:nil
28

Dife e e t e df:List i df:Se


Att listele rdf:List t i o tai erele rdf:Seq per it e u erri 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 terogrile
Listele sea ai ult u lasele, fii d adesea o e u erare de i sta e
de a elai tip OWL per ite hiar o ersia list-> las)
Containerele sunt de regul grupuri de elemente (componente) de diferite
tipuri.

liste este

ai uor 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 uor de adugat u ele e t, fr a


afir aii existente
n liste adugarea u ui ele e t e esit
o inserare)

odifi a alte

utarea lui rdf: il de i o tergere i

rdf:Statement,
rdf:subject, rdf:predicate, rdf:object
rdf:Statement = uli ea tuturor afir aiilor reifi ate
rdf:subject = relaia di tre o afir aie reifi at i su ie tul su
rdf:predicate = relaie di tre o afir aie reifi at i proprietatea sa
rdf:object = relaia di tre o afir aie reifi at i o ie tul su

Se apli la afir aii reifi ate de e e plu la afir aii su ie ti e :


Anna thinks that Peters age is 30.
URI sta dardizai pe tru reifi area:
:Anna :thinks [a rdf:Statement; rdf:subject :Peter; rdf:predicate :hasAge; rdf:object 30].
S-a artat deja grafurile identificate sunt preferabile reificrii, da a e
ai ulte
afir aii e tre uie supuse reifi rii de e . ai ulte afir aii su ie ti e ale a eluiai
su ie t . Altfel, rearea u ui graf pe tru o si gur afir aie e i efi ie t i a a ea
perfor a ai sla de t reifi area.
30

Avertisment

Nu o fu dai rdf:type cu rdfs:subClassOf, rdfs:subPropertyOf sau relaii part-of:


rdf:type=aparte e a la las u ele e t apari e u ei uli i :
:Shakespeare rdf:type :Writer .
:Writer rdf:type :Profession .
rdfs:subClassOf=i luziu e ori e ele e t al u ei su uli i apari e i uli ii are o
include):
:Writer rdfs:subClassOf :Profession . greit! ori e s riitor ar de e i o profesie!)
:Writer rdfs:subClassOf :Artist . corect!
rdfs:subPropertyOf=ge eralizarea proprietilor o supraproprietate are lo tre
a eleai i sta e a i su proprietile sale
:isBrotherOf rdf:type :isRelativeOf . greit! isRelati eOf u e o las
:isBrotherOf rdfs:subPropertyOf :isRelativeOf . corect da A i B su t frai, ei su t i
rude)
rdfs:member=relaii part-of:
:CPU rdfs:subClassOf :Computer greit! procesoarele nu sunt calculatoare)
:Computer rdfs:member :CPU corect!
Co fuzia apare di auz toate a este relaii du la o struirea de ierarhii
31

Sumar
Terminologia RDF/S permite:
Declaraii:

Care URI su t resurse, lase, proprieti et .;

Taxonomii:

Taxonomia (ierarhia) claselor, incluznd tipuri de date;


Ta o o ia proprietilor;

Mapri ntre ierarhiile de clase i proprieti:


Domenii
Codomenii

Adnotri:

Etichete, comentarii, adrese URL asociate termenilor

Structuri de date complexe:


Liste, o tai ere, relaii -are

32

Terminologia standard OWL


= colecie 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 oiu ea de egaie, de i posi ilitatea
de a dete ta o tradi ie o tradi ia apare atu i d o afir aie i egaia sa
apar si ulta a eeai az de u oti 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 = uli ea tuturor resurselor (sinonim cu rdfs:Resource n majoritatea
otoarelor i fere iale*
owl:NamedIndividual = uli ea tuturor i sta elor ea o i e
owl:Class = uli ea tuturor laselor OWL si o i u rdfs:Class
ajoritatea
otoarelor i fere iale*
owl:ObjectProperty = muli ea tuturor relaiilor su las a lui rdf:Propert
owl:DataProperty = uli 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; totui 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
uli ea tuturor lu rurilor e hi ale t u rdfs:Resour e, supra las pe tru o l:Class
owl:Nothing
uli ea id, ori e aparte e la a east las tre uie s de la eze o tradi ie, ea
si e o su las pe tru ori e alt las
owl:topObjectProperty
- relaia 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
- relaia 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 proprieti
(s-a zut deja la terminologia RDF/S)
35

Tipuri de proprieti OWL


owl:ObjectProperty
- Muli ea tuturor relaiilor su las a lui rdf:Propert
owl:DataProperty
- Muli ea tuturor atri utelor su las a lui rdf:Propert
owl:AnnotationProperty
- muli ea proprietilor de ad otare rdfs:la el, rdfs:comment, rdfs:isDefinedBy,
rdfs:seeAlso, owl:versionInfo)
owl:OntologyProperty
- muli ea relaiilor tre o tologii de e ., de laraii 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 proprieti 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 .
:Anna :knows :Anna .

37

Tipuri de proprieti 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 ogi 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 alri OWL


Din:
:Anna :isA :Woman.
alt:Ann a alt:Woman.
:Anna owl:sameAs alt:Ann.
:Woman owl:equivalentClass alt:Woman.
:isA owl:equivalentProperty rdf:type.
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.

E hi ale tre i sta e


E hi ale tre lase
E hi ale tre proprieti

40

Disti ia
Fie are od de e hi alare are o aria t egat a sa disti ia e se folosete 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 pui pro a il a astfel de afir aii o tradi torii s fie
i troduse a ual a eeai az de u oti e.
Fie au pro e ie e diferite u a e i portat di tr-o alt az de u oti e
Fie ar u a di tre ele a fost dedus di alte afir aii slideurile ur toare
41

Moduri de dedu ere a disti iei


Di disju cie de uli i:
:Anna a :Woman.
:George a :Man.
:Woman owl:disjointWith :Man.
ge ereaz:
:Anna owl:differentFrom :George.
Di
uli 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 proprieti disju te utual e lusi e, u pot a ea lo tre a eiai


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

43

Moduri de dedu ere a e hi ale ei


P op ietile fu cio 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 ietile i ve s-fu cio 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 ietile cheie su t ersiu i ai a a sate ale proprietilor fu io ale:


Pot o i e o o i aie de proprieti
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 elai ID a eeai i stituie:


: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 relaii 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 pri te ardi alitate a i 1 apli at relaiei
hasParent):
:MonoparentalChild owl:onProperty :hasParent; owl:maxCardinality 1 .
:Peter a :MonoparentalChild; hasParent :Anna, alt:Mary.
deoare e s-au de larat doi pri i, se a dedu e e hi ale a lor i a ia
azul tl 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 relaiile 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 diie
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 relaiile 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 relaiile 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 aii u relaii 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 ieti ireflexive relaii pe are u i di id u le poate a ea u el sui:
:isMarriedTo a owl:IrreflexiveProperty .
:Anna :isMarriedTo :Anna .
P op ieti asi et ice relaii e u pot a ea lo a
a eiai i di izi:

ele se suri tre

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

52

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