Documente Academic
Documente Profesional
Documente Cultură
A u i porta t:
Program nou de Master E glez
Business Modeling and Distributed Computing
Structur examen
Interoperabilitatea si ta ti i se a ti n
Web
I teropera ilitatea si ta ti
Secretariat
Profesor
Rspu s serializat*:
S110DS10 2DS1 10DS1 3510
Nu eleg i i !
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
la DS _10.
ite ote?
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!
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>
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 !
Software
ANAF
Serviciu Web
Compania A
(din Romnia)
Serviciu Web
Compania B
(din Austria)
Serviciu Web
Evide a populaiei
Austria
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
Da dorii s a esai
i for aii despre a east
persoa , a esai la ser i iul
nostru adresa
http://anaf.ro#PopIoan1
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
13
CAPITOLUL 1.
INTEROPERABILITATEA SINTACTIC:
XML I VOCABULARE XML
Care din u
Care din u
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)
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:
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>
1.
2.
3.
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!
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.
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 .
Verifi are de o i ut
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
Se pot ea do u e te XML f
vocabulare?
DA, atunci c d e ist u ele ga a ii:
Sunt ele:
Programe?
Baze de date?
Documente text ce trebuie formatate pentru un cititor uman?
aie di e se
a sla :
{ "produse":
[{"denumire":"Televizor","pret":100},
{"denumire":"Calculator","pret":200}]
}
Crearea nodurilor
$fiu1=$radacina->appendChild($fiu1);
$fiu2=$radacina->appendChild($fiu2);
$continut1=$fiu1>appendChild($continut1);
$continut2=$fiu2->appendchild($continut2);
$radacina=$xml->appendChild($radacina);
Crearea documentului
print $xml->saveXML();
Salvarea documentului
HTML DOM
At i utele se pot
element.atribut
a ipula
ai uo
a ipula
ai uo
u si ta a o ie tual
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=URLvocabular
ise
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
<DatePersonale>
<varsta>
16
</varsta>
</DatePersonale>
(invalid!!!)
valid!!
<DatePersonale>
<profesie>
Medic
</profesie>
<varsta>
25
</varsta>
</DatePersonale>
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"/>
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
i i
a a te oa e a e
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
Blo a ea de i ii
Tipul o ple
u o i ut si plu
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.
2.
3.
Co str ge
ixat
Co str ge
ise , eli i
at i ute
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
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>
XML he a
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 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>
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">
<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!
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 .
</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!
O o
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)
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:
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()"/>
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)
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 //*
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).
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
as ad. E e plu:
<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
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 !
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:
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 .
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
Cu
u oti ele We ?
sto
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
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.
E oluia
Tabele BD relaio ale
Mod de interogare:
SQL
Tehnologii de stocare:
MySQL, MS Access
odelelor de date
Mod de interogare:
XPath/DOM (pt. XML),
JSONiq/metode obiectuale (JSON)
Tehnologii de stocare:
eXistDB (XML), MongoDB (JSON)
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
:worksAt
:hasHairColor
:likes
:hasChild
:hasChild
:UniVie.
:Black.
:Beer.
:Robert.
:Razvan, :Patrik.
(Subiecte)
(Predicate)
(Obiecte)
hasChild
Razvan
hasChild
Black
Robert
worksAt
UniVie
hasHairColor
hasChild
Patrik
likes
Beer
Cu
au lo
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
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
Varianta A:
interogri dire te
Baz de date
se a ti
Cod HTML
semantic
Interogare direct
u rspu s dire t
(ceva de genul
?x :fatherOf :BradPitt)
Cutare de
cuvinte cheie
n corpul unor
pagini
Se pot deschide pagini
p se gsete
i for aia dorit
=> navigare de pagini
Na igare de u oti e
COOKIE/SESSION:
Cinpoeru Mihai
[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
De u de pro i s
denumirile proprietilor
recunoscute de Google?
ur torul slide
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
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
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
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 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
ai rigizi
ajul atural, e a
ai rigid
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
ogi re ipro
Co paraie u li
ajul atural
Cu
Faza 1. Un termen "se creeaz" pri a dat d e folosit tr-o afir aie:
Am mncat mere.
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.
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
@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
@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>
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 "
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?
RDF
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
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.
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:
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
*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
ter e i:
subiect,
predicat
obiect
Mai
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
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
20
_:X
21
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
Sintaxa Turtle:
@prefix : <http://expl.at#> .
:Anna :isMotherOf :Andrew, :Peter.
:Peter :hasAge 40; :isFatherOf [:hasAge 20].
Proprietile odului a o i
se i lud para teze ptrate
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
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
http://expl.at#Mary
http://expl.at#Cluj
http://expl.at#CompanyABC
http://expl.at#worksAt
http://expl.at#location
http://expl.at#Cluj
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].
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]
http://expl.at#City
rdf:type
http://expl.at#locatedIn
http://expl.at#Cluj
http://expl.at#Mary
http://expl.at#worksAt
http://expl.at#CompanyABC
TriG:
@prefix : <http://expl.at#>.
:Cluj {:Mary :worksAt :CompanyABC}
{:Cluj a :City; :locatedIn :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
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
URI
pe baza propriei adrese de domeniu, un termen e creat ad-ho la pri a apariie tr-o afir aie
Co trolai = reai de diverse orga izaii Fa e ook, Mi rosoft et . , se urajeaz adoptarea lor
Ge erai = apar atu i ge er
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)
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
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
eadresa il
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
http://anaf.ro#PopMaria
http://univie.ac.at#PopMaria
ifi aie
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:
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.)
iguitate:
2.
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
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
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
http://expl.at#Anna
http://expl.at#has
http://expl.at#theAgeOf20
Probleme cu varianta B.
Presupu e
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
Co se i : Varia ta C. e re o a dat
A u
A u
A u
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...
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
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
http://expl.at#hasResidenceCity
http://expl.at#hasResidenceNr
http://expl.at#Wien
200
http://expl.at#hasResidenceStreet
20
http://expl.at#Brunner
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
Stringuri
(denumiri, etichete)
Persoa e diferite u a elai u e
26
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
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
e poate
<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
_:y
:primaSotie
:aDouaSotie
:Mary
:copilulLui
:JohnSmith
:locuiesteIn
:ClujNapoca
ai
:Mary
:copilulLui
:dinPrimaCasatorie
:JohnSmith
:locuiesteIn
:ClujNapoca
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
http://other.at#Johnny
Se
ifi aie
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
Br at Om ........? Specie
John i sta
Miner={John, Peter, ...} (clas i i sta
Profesie={Miner, Medic, ...} (clas
John i sta
Miner={John, Peter, ...} (clas
Muncitor={Joh , Peter, A dre , } (clas
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
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
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)
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
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:
http://expl.at#Anna
http://expl.at#address
http://expl.at#livesAt
rdf:type
_:x
http://expl.at#City
http://expl.at#Wien
http://expl.at#Nr
http://expl.at#Str
20
http://expl.at#Ap
200
http://expl.at#Brunner
13
odel
14
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
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
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
http://expl.at#hasSon
http://expl.at#Andrew
17
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
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
U
e
ou
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
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
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
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
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
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
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
26
: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
ai
s i ii .
s i ii
Nu uitai u ele odurilor
anonime se pierd, deci nu ne putem
baza pe numerotarea lor!
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
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
30
Tipuri de i terogri
I terogri de itire = i terogri are u
aza de u oti e:
SELECT, ASK, DESCRIBE, CONSTRUCT
odifi
odifi aza
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
<#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.
40
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"
44
}
45
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
lo uiete
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
Documentaie:
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
Fiiere RDF
publice
Cereri HTTP neconfigurate spre URL-ul unui
fiier RDF static sau di a ic
adresa poate fi i u te
ulat p i
etode o ie tuale
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
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.)
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)
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
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
i ate
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
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
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")
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.
5.
*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.
[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
De u irile proprietilor
sunt preluate din
terminologia Schema.org
Rezultat:
@prefix : <http://expl.at#>.
:P1 :Name "TV set"; :Price 1000 .
:P2 :Name "Mouse"; :P2 :Price 10 .
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>
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
.mystyle {color:blue}
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 :
Transformare
XSLT
Microformate
U
izitator u a
a edea
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
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
Exemplu cu microdate
Cod HTML + atribute Microdata + terminologie Schema.org
@prefix : <http://expl.at#> .
@prefix s: <http://Schema.org/> .
:Avatar
a s:Movie.
s:name "Avatar";
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:
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"].
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;
RDFa:
Terminologii
Se pot i a
fr prefi
ai
<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
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>
a i proprietate hasChildre :
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
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)
<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#">
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#">
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#">
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";
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 .
32
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 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
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)
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.}
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.
37
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
{"@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
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"
18 mil
"Terminator"
"Avatar"
<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:
: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
: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
rdf:subject
rdf:predicate rdf:object
:motherOf
:contrazice
:Mary
:Contradictie
:motherOf
rdf:predicate rdf:subject
a
rdf:object
Not: De
esaje de eroare
_:x
ajul SPARQL
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
: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
:Andrew
:locatedIn
:isMotherOf
:Wien
:Andrew
:Anna
:Austria
:hasRelativesIn
:Anna
:Wien
:livesIn
:isMotherOf
:Matt
:Austria
:hasRelativesIn
:Anna
:locatedIn
:isMotherOf
:Andrew
:Wien
Reguli
Varianta B. Reguli stocate (ncorporate n baza de u oti e i exe utate de
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:
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
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
s per it generarea auto at a afir aiilor "X a Y", pe baza acelei se ifi aii
Vocabularul:
are forma unei ole ii de afir aii despre clase i proprieti (axiome)
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
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
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.
rdfs:Class
a
rdf:Property
rdfs:domain
:Persoana
:Femeie
a
rdfs:domain
rdfs:range
a
:Anna
Di a est
:mamaLui
:Andrew
SELECT ?x
WHERE {:Anna ?x ?y. ?x a owl:AsymmetricProperty}
14
ai
aza de u oti e i
ulte tipuri
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
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.
:Anna a :Femeie.
: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 .
Fapte
deduse
Axiome
deduse
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.
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
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 .
Fapte
deduse
Axiome
deduse
alarea situaiilor
are apar o
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:
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:
rdfs:Resource
=
sau
rdf:Property
=
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
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
uli i lase
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
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
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
:Alain
I sta "clasificat"
(primete a "tip" toate lasele de deasupra elei
:Employee
:Student
:MasterStudent
:Lab
:Computer
:Furniture
owl:Nothing
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
:Employee
:EmployeeStudent
rdfs:Resource / owl:Thing
:Student
:BachelorStudent
:Object
:MasterStudent
owl:Nothing
:Lab
:Equipment
:Furniture
Organizaia A
(cu prefixul :)
U
u
alt:HomoSapiens
rdfs:subClassOf
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
: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
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
:workedOn
rdfs:subPropertyOf
rdfs:subPropertyOf
rdfs:subPropertyOf
rdfs:subPropertyOf
:created
rdfs:subPropertyOf
:directed
:JamesCameron
:Terminator
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
owl:bottomObjectProperty
owl:bottomDataProperty
Relaia imposibil
(nu poate exista ntre dou resurse)
Atributul imposibil
(nu l poate avea nimeni)
14
:knows
rdfs:subPropertyOf
Organizaia A
Organizaia B
15
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
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?
i i
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.
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
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 !
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
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)
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
od de tip
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
liste este
ar at u rdf:nil
odifi a alte
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
Avertisment
Sumar
Terminologia RDF/S permite:
Declaraii:
Taxonomii:
Adnotri:
32
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
36
37
39
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.
43
45
Noi
Noi
48
Noi
49
Noi
50
51
:isMotherOf a owl:AsymmetricProperty .
:Anna :isMotherOf :Mary .
:Mary :isMotherOf :Anna .
52