Documente Academic
Documente Profesional
Documente Cultură
Interoperabilitatea si ta ti ă şi se a ti ă în
Web
• Si ta ti ă: Gara ţia ă structura i for aţiei pe care o
pri eşte un destinatar este a eeaşi cu cea pe care şi-a
propus-o expeditorul
• Altfel spus: gara ţia ă două apli aţii Web,
indiferent de limbajul în care au fost scrise, pot
schimba între ele date complexe şi le pot accesa
în a elaşi mod
• Se a ti ă: Gara ţia ă se ifi aţia i for aţiei pe
care o pri eşte un destinatar este a eeaşi cu
se ifi aţia pe care i-a atribuit-o expeditorul
• Altfel spus: gara ţia ă două apli aţii Web,
indiferent de limbajul în care au fost scrise, îşi
pot "da seama" da ă deţi i for aţii despre
a elaşi lucru şi, în caz afirmativ, îşi pot î ogăţi
reciproc " u oaşterea" despre acel lucru sau pot
lua decizii pe baza acelei u oaşteri
I teropera ilitatea si ta ti ă
Secretariat Profesor
Solicit lista notelor din această sesiu e! Răspu s serializat*:
S110DS10 2DS1 10DS1 3510
Nu î ţeleg i i ! Răspu s: Codurile stude ţilor î ep u S,
Codurile disciplinelor încep cu DS, restul sunt notele!
Aha! Deci studentul S1 a luat nota 10 la disciplina
Răspu s: Nu! E vorba de studentul S110! Nota apare după dis ipli ă!
DS10!
Daţi- i oie să retri it datele u o deli itare lară:
Ok! Deci studentul S110 a luat nota 2 la disciplina S110 DS10 2 DS1 10 DS1 3 5 1 0
DS10!
Răspu s: Nu! Studentul S110 a luat 5 la disciplina DS10_2.
Notele apar chiar la sfârşit, î a eeaşi ordi e u dis ipli ele!
Aha! Deci a luat un 5 la DS10_2 şi u la DS _10.
Răspu s: Nu! A luat 1 la disciplina DS1_ şi a fost a se t la DS1_3,
De aceea am pus 0 în dreptul acesteia.
Vă rog să i di aţi lar are su t dis ipli ele şi are otele
Răspu s:
S=110; DS=10_2,1_10,1_3; N=5,1,absent
Acum se î ţelege! Tri iteţi şi otele elorlalţi stude ţi!
Răspu s:
S=110,123,124; DS=10_2,1_10,1_3; N=5,1,absent,4,4,10,10
Nu lipses işte ote?
Răspu s:
Nu, ultimii 2 studenţi su t î s rişi doar la di dis ipli e!
Nu puteţi tri ite otele astea astfel î ât să se î ţeleagă fără să Puteţi erifi a asta î ataloage!
o sultă şi alte surse? Ne-ar ajuta să lu ră ai efi ie t!
Răspu s:
Ok, ai a işte ote de la doi olegi! Să- i o fir aţi că e lar
ci e e otă a luat:
Mesaj1:
Am primit un program care extrage automat notele şi ge erează <Prof Nume="Tomai">
cataloage, pe baza structurii pe care ne-aţi propus-o! <D ID="1_1"> <S N="110" Note="5"/> </D>
<D ID="1_2"> <S N="110 124" Note="8 8"/> </D>
A e î să pro le e u otele olegilor: </Prof>
• Î azul dlui To ai, î atri utul N găsi u ere atri ole, u ote! Mesaj2:
• Î azul dlui Silaghi, u găseşte delo atri utul N! Şi i i atri utul ID <Prof Nume="Silaghi">
Vă rugă să folosiţi î totdeau a atri utul N pe tru a i di a otele şi <D Cod="2_1">
î totdeau a atri utul ID pe tru oduri de stude t şi de dis ipli ă! <S Cod="110">4</S>
<S Cod="123">6</S>
</D>
<D Cod="2_2"><S Cod="110">5</S></D>
</Prof>
I teropera ilitatea si ta ti ă
Secretariat Profesor
Răspu s:
A o u i at eri ţa olegilor şi au folosit a eleaşi atri ute şi
a eiaşi ar atori! :
Mesaj1:
<Prof Nume="Tomai">
<S ID="110"> <D ID="1_1 1_2" N="5 8"/> </S>
<S ID="124"> <D ID="1_2" N="8"/> </S>
</Prof>
Mesaj2:
<Prof Nume="Silaghi">
<D ID="2_1"> <S ID="110 123" N="4 6"/> </D>
Acum e clar care sunt notele şi are su t odurile de ide tifi are! Mai
<D ID="2_2"> <S ID="110" N="5"> </D>
a e totuşi o pro le ă:
</Prof>
• La dl Tomai otele su t ataşate dis ipli elor şi dis ipli ele su t
i luse î stude ţi;
• La dl Silaghi otele su t ataşate stude ţilor şi stude ţii i luşi î
discipline. Varia ta de Răspu s:
Programul nostru nu poate să extragă note decât da ă sunt ataşate
A i pus tuturor olegilor să foloseas ă a eeaşi stru tură!
disciplinelor, aşa cum ni le-aţi trimis prima dată. Trebuie să plăti
S-a reat hiar u progra are să alideze stru tura pe tru a gara ta
furnizorul de software da ă soli ită modificarea programului. Vă rog
ă pri iţi de la toată lu ea otele î stru tura adoptată!
să o u i aţi colegilor ca toată lumea să foloseas ă a elaşi mod de
Astfel apare un vocabular XML!
încadrare a datelor. Varia ta de Răspu s:
Am comunicat eri ţa, î să dl Silaghi foloseşte la râ dul său u
soft are are exportă otele şi u are se poate odifi a!
Veţi fi e oiţi să soli itaţi odifi area progra ului d s., î să
pro ite ă pe iitor u or apare alte ex epţii: otele or fi
î totdeau a tri ise î u a di ele două aria te!
Din nou se impune un vocabular, dar unul mai flexibil, care permite
două oduri de structurare a aceloraşi date!
=================================== Au apărut o a ularele ! =============================================
Concluzie
INTEROPERABILITATEA SINTACTICĂ
se o ţi e â d u există a iguitate î si taxa şi stru tura datelor,
fără a e esita i terve ţie u a ă expli aţii supli e tare
Mecanismele
interoperabilităţii si ta ti e
• UNICODE = setul u i ersal de ara tere exti s faţă de ASCII e per ite
i ter aţio alizarea şirurilor de ara tere =serializare î ori e li ă
• XML* = model de date standardizat prin care se pot reprezenta în calculator orice
stru turi i for aţio ale: aze de date, do u e te, progra e et .
• Regulile de u ă for are XML = reguli sintactice minimale, standardizate, ce
gara tează ă toată lu ea deli itează î a elaşi fel datele
• Parsere XML = progra e e erifi ă / gara tează u a for are, oferind acces la
elementele XML
• DOM, XPath etc. = metode standardizate prin care programatorii pot accesa orice
i for aţie di tr-u do u e t i e for at, i difere t de li ajul î are lu rează
• Vocabulare XML = seturi de reguli prin care mai multe organizaţii se pu de a ord
asupra structurii documentelor XML pe care le vor schimba între ele în viitor
• Validare XML = operaţia pri are se testează da ă u do u e t XML re epţio at de
la u parte er respe tă regulile a terior sta ilite pri tr-un vocabular
• HTTP = proto olul pri are orga izaţiile pot s hi a date şi o a ulare
Ce se foloseşte î lo de
Social Security Number CNP în Austria?
SSN=10001
Care este SSN pentru
persoana cu CNP=12345?
INTEROPERABILITATEA SEMANTICĂ
se o ţi e â d u există a iguitate î
Ide titatea "lu rurilor" şi Ter i ologia folosită î des rierea a estora,
Iar î depărtarea a iguităţii u e esită i terve ţie u a ă
Mecanismele interoperabilităţii
semantice
• URI = sistem standardizat prin care se pot atribui identificatori universali ("chei")
ori ărui lu ru/concept
• RDF = model de date standardizat prin care se poate descrie semnificaţia pe are o
dă u ui lu ru/concept
• Regulile de u ă for are RDF = reguli sintactice standardizate, ce garantează ă toate
apli aţiile pot pro esa î a elaşi od des rieri de lu ruri/concepte
• Parsere RDF = progra e e erifi ă / gara tează u a for are, oferind acces
standardizat la elementele unei descrieri
• SPARQL = metode standardizate prin care programatorii pot accesa orice i for aţie
dintr-o descrierea unui lucru/concept (ceea ce este Xpath pentru XML!)
• Ontologii/vocabulare RDF = seturi de reguli prin care mai multe organizaţii se pu de
acord asupra terminologiei folosite în descrieri
• Raţio are i fere ţe = operaţia pri are se î ogăţeşte des rierea existe tă a u or
lucruri/concepte sau pri are se dete tează o tradi ţii î tre des rieri diferite ale
a eluiaşi lu ru/concept
• HTTP = proto olul pri are orga izaţiile pot s hi a î tre ele des rieri de
lucruri/concepte
The Semantic Web is what we will get if we
perform the same globalization process to
Knowledge Representation that the Web
initially did to Hypertext. We remove the
centralized concepts of absolute truth, total
knowledge, and total provability, and see what
we can do with limited knowledge.
[Tim Berners-Lee, What the Semantic Web can represent, 1998]
13
CAPITOLUL 1.
INTEROPERABILITATEA SINTACTICĂ:
XML ŞI VOCABULARE XML
Care din u ătoa ele documente sunt
XML?
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?
<StudentiiMei>
<Student Nume="Ienciu" Nota="5" />
<Student Nume="Turdasan" Nota="10" />
<Student Nume="Lung" Nota="8" />
<Student Nume="Cinpoeru" Nota="1" />
</StudentiiMei>
În ce limbaj e scris acest document?
În ce limbaj e scris acest document?
1. Buna formare
= espe tă doar egulile de u ă fo a e
= cine verifică u a fo a e? un parser
= câ d se e ifi ă? î totdeau a, altfel XPath şi fu ţiile DOM u
fu ţio ează!
2. Validitatea
= espe tă egulile u ui o a ula
= cine verifică aliditatea? un validator
= â d se e ifi ă? când primim cod XML dintr-o su să e te ă şi
do i să e asigu ă ă are structura de marcatori/atribute aşteptată
<Catalog>
<Produs ID="P1" Pret="300"> Catalog
Ipod
</Produs>
<Produs ID="P2" Pret="100"> Produs[2]
Produs[1]
Frigider
</Produs>
</Catalog> ID:P2
ID:P1
Pret:300 Ipod Pret:100 Frigider
Ce este un vocabular?
• Vocabular = Limbaj = Tip de document = un set de Reguli care impun:
– ce marcatori se pot folosi într-un document XML
– e at i ute pot să ai ă a ei marcatori
– e tipu i de date pot a ea alo ile at i utelo şi o ţi utu ile te tuale ale
marcatorilor
– cum se pot îmbina marcatorii între ei a e poate o ţi e pe a e, de âte o i,
în ce ordine...)
=> vocabularele impun o anumită stru tură
• Re i der: A estea su t reguli SUPLIMENTARE faţă de ele de u ă
formare, care impun:
– ca ori e atri ut să ai ă o aloare î tre ghili ele
– a atri utele să apară doar î des hiderea u ui ar ator, u şi î î hidere
– a atri utele să fie separate de ar ator şi atri utele alăturate pri spaţii
– a ori e ele e t să fie o ţi ut î tr-u si gur alt ele e t, u ex epţia u ui
element-rădă i ă are să fie u i
– a ori e ele e t des his să se şi î hidă
– ca ar atorii şi atri utele să u o ţi ă a u ite ara tere precum >
=> u a for are i pu e o si taxă are să per ită for area
arborelui DOM
Exemple de reguli ale
vocabularului (X)HTML
• IMG să ai ă a at i ut o ligato iu SRC şi a at i ute opţio ale ALT, HEIGHT
etc.
• Valo ile at i utelo HEIGHT, WIDTH să fie u e i e
• TD să apa ă o ligato iu î i te io ul lui TR, şi a esta î i te io ul lui TABLE
• HTML să o ţi ă HEAD şi BODY, e a t î a eastă ordine
Sunt ele:
• Programe?
• Baze de date?
• Documente text ce trebuie formatate pentru un cititor uman?
Ce sunt documentele XML
(dpdv al utilizatorului)?
Document XML = Document formatat pentru cititori umani?
• Da, dacă olul a ato ilo e să i di e odul î a e t e uie să a ate dife ite
pă ţi ale u ui do u e t:
<P ALIGN="right">A venit vara</P>
• În acest caz, vo a ularul oferă i stru ţiu ile de for atare (cazul HTML)
• U i te p eto a a esa a o ele DOM şi a fo ata/poziţio a ele e tele
pe t u afişa e sau lista e:
Exemplu: browserele, care pot interpreta mai multe vocabulare - nu doar
HTML, i şi SVG pe t u ele e te g afi e!
Ce sunt documentele XML?
Document XML = Bază de date ?
• Da, dacă olul a ato ilo este să i di e p op ietăţile u o e tităţi i lusi o
" heie p i a ă" :
<Studenti>
<Student ID="1" Nume="Pop Ioana" Nota="2" />
<Student ID="2" Nume="Marian Andrei" Nota="5" />
<Student ID="3" Nume="Badea Maria" Nota="10" />
</Studenti>
• În acest caz, vo a ularul joa ă rolul stru turii u ei aze de date (de exemplu
eXistDB este un sistem de baze de date formate exclusiv din XML!)
• Un SGBD va folosi a o ele DOM a etodă de sto a e a datelo î ede ea
i te ogă ilo din partea unor clienţi
Astfel de aze de date i t ă î atego ia baze de date NoSQL ă i
folosesc alte limbaje de interogare decât SQL, de exemplu: XPath, XSLT,
XQuery)
Ce sunt documentele XML?
Document XML = Program ce descrie un algoritm de executat?
• Da, dacă olul a ato ilo e să des ie u algo it :
<variable name="a" value="5"/>
<for i="0" to="N">
<if condition="a!=10">
<then><print string="Hello"/></then>
<else><call function="f()"/></else>
</if>
</for>
• În acest caz, vo a ularul oferă sintaxa limbajului
• Un compilator a a esa a o ele DOM şi a e e uta algo it ul o fo u
ordinea elementelor
Exemplu: XSLT, limbaj de programare pentru generarea de pagini HTML
din surse de date XML
XML poate ep eze ta a eeaşi
i fo aţie î di e se st u tu i:
• Modelul bazat pe elemente vide cu atribute (recomandat în documente
data-heavy):
<Produs ID="P1" Pret="300 RON" Denumire="Ipod" />
Beneficii: pe fo a ţa ea ai u ă atât la ea e ât şi la i te oga e, apa e fa ilă pe o
ază de date, posi ilitatea de a lu a u u o a ula si plu e i pu e doa lista de
at i ute şi tipu ile de date pe t u fie a e
Dezavantaj: difi il de afișat a te t fo atat, p esupu e p elu ă i o ple e pentru a
compune un mesaj human-readable din aceste date
{ "produse":
[{"denumire":"Televizor","pret":100},
{"denumire":"Calculator","pret":200}]
}
Construirea si trimiterea unui string
JSON din PHP (la server)
$date=array("oras"=>"Cluj Napoca",
"judet"=>"Cluj",
"adresa"=>"Azuga");
print json_encode($date);
Construirea ca arbore DOM în PHP
$xml=new DOMDocument();
$radacina=$xml->createElement("detalii");
$fiu1=$xml->createElement("oras"); Crearea nodurilor
$fiu2=$xml->createElement("judet");
$continut1=$xml->createTextNode("Cluj Napoca");
$continut2=$xml->createTextNode("Cluj");
$fiu1=$radacina->appendChild($fiu1); Lipirea nodurilor fiu
$fiu2=$radacina->appendChild($fiu2);
$continut1=$fiu1>appendChild($continut1);
$continut2=$fiu2->appendchild($continut2); Lipirea nodurilor text
*o i iţiati ă e e tă este JSON S he a jso -s he a.o g, jso s he a. et , a e se do eşte o etodă de i pu e e şi alida e a st ucturilor JSON
si ila ă u XML S he a da fă ă a ato i, se e ifi ă doa odul de g upa e a "at i utelo " şi tipu ile de date .
Deo a dată u a e o e siu e defi iti ă şi sta ilă, validatoarele existente având g ade dife ite de espe ta e a spe ifi aţiei teo eti e
(care la râ dul său se află î ă î dis uţii .
Formatarea de cod XML în browser
• CSS poate fi folosit pentru a formata XML, cu ajutorul selectorilor
• Documentul XML va trebui sa apeleze foaia CSS cu:
<?xml-stylesheet type="text/css" href="stiluri.css"?>
(echivalentul lui LINK din HTML)
E arborele elementelor unui document XML, indferent de E arborele elementelor unei pagini HTML, multe din
tip. Se poate apli a atât pe od XML sosit pri AJAX, ât şi fa ilităţile sale u se pot apli a pe alt tip de od XML!
pe pagini HTML
Nu supo tă î ge e al getEle e tB Id. Sele ţia ele e telo Supo tă sele ţie ai uşoa ă u getElementById,
se face getElementsByClassName, getElementsByName
• prin XPath Supo tă a iga e ai uşoa ă u e to ul children o ţi e
• prin navigarea de elemente DOM (childNodes, doar marcatori, nu orice tip de nod!)
parentNode, nextSibling)
• supo tă totuşi getElementsByTagName
Co ţi utul ele e telo XML se a ipulează doa u etode Co ţi utu ile ele e telo se pot a ipula ai uşo u
DOM standard: appendChild, removeChild, insertBefore, innerHTML
replaceChild, cloneNode, nodeValue
At i utele se a ipulează u etode DOM standard: At i utele se pot a ipula ai uşo u si ta a o ie tuală
attributes, getAttribute, setAttribute element.atribut
Ofe ă metode de acces direct la elemente standard din
HTML: document.body, document.links[],
document.anchors[], document.images[],
document.forms[], document.forms[0].elements[],
tabel.rows[], tabel.rows[1].cells[]
O servaţie:
DTD nu poate impune tipuri de date (integer, boolean etc.)! În schimb XML Schema
poate.
Be efi ii XML “ he a faţă de DTD
• XML S he a este el î suşi u vo a ular XML DTD a e o si ta ă p op ie, e u espe tă
egulile de u ă fo a e :
Vocabularele XML Schema sunt tot fişie e XML de e . egulile o a ula ului pot fi i te ogate u
Xpath, pot fi ele însele validate)
• XML S he a oferă tipizare DTD u ofe ă tipiza e
Tipuri de date + expresii regulate pot fi i puse asup a at i utelo şi odu ilo te t
• XML Schema permite modularitatea documentelor
Elemente diferite din acelaşi do u e t pot aparţi e u o o a ula e dife ite u DTD, u do u e t
t e uie să se supu ă i teg al u ui a elaşi o a ula ; de e e plu î pagi i HTML pute a ea şi od
SVG (elemente grafice)
• XML Schema permite modularitatea vocabularelor:
Se pot crea vocabulare noi prin reunirea regulilor din vocabulare existente
• XML Schema are caracteristici obiectuale, posi ilităţi de eutiliza e
Se pot crea "clase de elemente", ce vor deveni reutilizabile (pot fi "moşte ite" pe t u a ea
structuri înrudite)
• XML Schema permite chei mai sofisticate decât atributele ID:
Chei multivaloare = câ d u i itatea se i pu e pe o o i aţie de at i ute şi/sau noduri text
Chei cu unicitate limitată = alo i e t e uie să fie u i e doa î i te io ul u ui a ato se pot
repeta în afara sa)
A este fa ilităţi pe it odela ea u ei î t egi aze de date, u ai ulte ta ele, î a elaşi
document
Exemplu de reguli XML Schema
<xs:element name="DatePersonale">
<xs:complexType>
<xs:sequence>
<xs:element name="profesie" type="xs:string" minOccurs="1" />
<xs:element name="varsta" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="18" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element> valid!!
</xs:sequence>
</xs:complexType>
</xs:element>
<DatePersonale> <DatePersonale>
<DatePersonale> <profesie>
<profesie> <varsta> Medic
<medic /> 16 </profesie>
</profesie> </varsta> <varsta>
</DatePersonale> 25
</DatePersonale>
(invalid!!!) </varsta>
(invalid!!) </DatePersonale>
Tipurile de date din XML Schema
Tipuri XML Schema
• U o a ula XML “ he a se o st uieşte p i definirea unor TIPURI
("clase de elemente") ce pot fi derivate " oşte ite" pe t u a
construi alte TIPURI
– Elementele prezente în documente vor fi i sta ţe ale TIPURILOR
p e ăzute de o a ula
– Derivarea tipurilor duce la o "ierarhie de tipuri" (similară
ierarhiilor de clase create prin moşte i e î p og a a ea
o ie tuală . De i a ea se poate fa e pe două ăi:
• Constrângere = pornind de la un TIP existent, i se elimină opii sau at i ute
opţio ale, i se o st â g alo ile at i utelo sau u ă ul de apa iţii ai
copiilor
– Ai i t e uie ţi ut o t de li ita ea a i sta ţele tipului o ţi ut p i o st â ge e să ă â ă alide şi faţă de tipul i iţial
• Extindere = po i d de la u TIP e iste t, se adaugă ele e te opil sau
atribute
Exemplu de reguli XML Schema
<xs:element name="DatePersonale">
<xs:complexType>
<xs:sequence>
<xs:element name="profesie" type="xs:string" minOccurs="1" />
<xs:element name="varsta" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="18" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence> Acesta e un element de tip complex
</xs:complexType>
</xs:element>
Exemple de i sta ţe valide e pot apare î do u e te:
<DatePersonale> <DatePersonale>
<profesie>Profesor</profesie> <profesie>Sofer</profesie>
<profesie>Cercetator</profesie> <varsta> 32 </varsta>
</DatePersonale> </DatePersonale>
Tipuri XML Schema
• TIPURILE pot fi:
– Simple (predefinite sau derivate) = vor sta la baza atributelor sau marcatorilor
simpli a e u au at i ute şi i i ele e te fiu
Exemplu marcator simplu: <Nume>Pop Ioan</Nume>
– Co ple e u o ți ut si plu = stau la baza marcatorilor cu atribute + conţi ut
textual, dar fără ele e te opil
Exemplu: <Student Nota="10">Pop Ioan</Student>
– Co ple e u o ți ut id = stau la baza ar atorilor u atri ute + fără
o ţi ut
Exemplu: <Student Nume="Pop Ioan" Nota="10" />
– Co ple e u o ţi ut o ple
• Complexe u o ți ut mixat = stau la baza marcatorilor u sau fără atri ute e pot o ţi e
alţi marcatori, i ter alaţi î od eî grădit cu noduri text
Exemplu: <DIV ID="d1">Studentul<Nume>Pop Ioan</Nume>are nota<Nota>10</Nota></DIV>
• Co ple e u o ți ut e i at = stau la baza ar atorilor u sau fără atri ute e pot o ţi e
doar alţi ar atori, u şi oduri text i ter alate
Exemplu: <Student ID="S1"><Nume>Pop Ioan</Nume><Nota>10</Nota></Student>
Tipurile simple
A. Tipuri predefinite = tipuri de date oferite de XML Schema pentru valori simple. Sunt
ai sofisti ate de ât tipu ile de date di p og a a ea lasi ă:
– textuale: string, Name " u e XML", u st i g a e a ată a u u e, î epe
u lite ă et . , token listă de " u i te", sepa ate u a i u spaţiu
– numerice: integer, float, short, byte
– temporale: date, time, duration
– oște ite de la DTD: ID, IDREF, ENTITY, NMTOKEN etc.
– alte tipuri: anyURI (identificatori sau adrese URL), base64Binary (pt i fo aţii
non-text serializate ca text)
Defi i ea u ui tip de ele e t si plu, folosi d u tip p edefi it pe t u o ţi utul său:
<xs:element name="profesie" type="xs:string"/>
Definirea unui tip de atribut, folosind un tip predefinit:
<xs:attribute name="varsta" type="xs:integer"/>
Exemple:
<xs:pattern value="[A-Z][0-9].+"/>
– Va permite doar stringuri formate dintr-o lite ă, o if ă și i i î ău a a te oa e a e
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
– Va permite doar stringuri care, î u a edu e ii spaţiilo al e su esi e la âte u ul si gu , au
lungimea 5
P eze ţa at i utului mixed="true" va permite în plus mixarea (intercalarea) de text printre elementele copil,
de i şi u ăto ul e u e e plu alid:
<Televizor>
Modele cu diagonala<Diagonala>22</Diagonala>la produse<Producator>Samsung</Producator>
</Televizor>
• Î plus, pe t u fie a e ele e t opil se poate sta ili de âte o i să apa ă, u atributele minOccurs și
maxOccurs (valoarea unbounded pe ite u ă eli itat de apa iţii
• Pe t u a pe ite o i e o i aţie posi ilă a opiilo , u o i âte epetiţii, o ea un choice în care
fiecare ele e t poate apărea de i i 0 ori şi axi unbounded
Reutilizarea tipurilor
• Tipurile pot fi reutilizate dacă p i es u e:
<xs:complexType name="DescriereTelevizor">
<xs:attribute name="Diagonala" type="xs:integer"/>
<xs:attribute name="Producator" type="xs:string"/>
</xs:complexType>
<xs:element name="Televizor" type="DescriereTelevizor"/>
Exemplu de element valid (Diagonala lipseşte deoa e e e oşte ită de la Des ie eTele izo , u de e
opţio ală! :
<TelevizorPeStoc Pret="1000" Producator="Samsung"><StocCurent>200</StocCurent></TelevizorPeStoc>
"Chei primare" în XML Schema
• Î o a ula e DTD e istă u od si plu de a defi i hei
primare: atribute de tip ID, e o t e ui să ai ă alo i
u i e î do u e tul î a e se află
– Ca şi î azele de date, la heile p i a e se pot fa e efe i ţe
di sp e heile st ăi e aflate altu de a atribute de tip IDREF)
– Hyperlinkurile din HTML nu sunt altceva decât astfel de
efe i ţe sp e hei p i a e HREF e un atribut de tip IDREF,
iar ID e un atribut de tip ID)
• XML “ he a î ogăţeşte a este posi ilităţi p i :
– Chei multivaloare = Câ d u i itatea se apli ă u ei o i aţii
de at i ute şi odu i te t
– Chei u u i itate li itată = Când unicitatea trebuie
espe tată doa î i te io ul u ui a ato , u eapă at î
tot documentul
Exemplu cheie multivaloare
<xs:element name="CatalogProduse" type="Catalog">
<xs:unique name="cheie"> "Ta elul" î a e t e uie asigu ată
unicitatea
<xs:selector xpath="produs"/>
<xs:field xpath="denumire"/> "Î egist ă ile" e t e uie să ai ă fie a e
co i aţia u i ă
<xs:field xpath="@model"/>
</xs:unique"> Co i aţia de alo i a e t e uie să fie u i ă
Pentru fiecare "înregistrare"
</xs:element>
• S-a creat o heie p i a ă unique), cu numele cheie;
• U i itatea sa se e ifi ă doa î i te io ul ele e tului CatalogProduse
• Cheia se apli ă tutu o ele e telo produs şi e fo ată di pe e hea
(denumire, model), unde denumirea apare în produs ca element-copil, iar
modelul ca atribut (s-au folosit ăi Xpath relative!)
E e plu de i sta ță alidă:
<CatalogProduse>
<produs model="M1">
Pe e hea t e uie să fie
<denumire>yyyyyyyy</denumire> u i ă, u fie a e di ele
</produs> două alo i luată sepa at!
<produs model="M1">
<denumire>zzzzzz</denumire> Unicitatea e impusă doar în
</produs> CatalogProduse, î afa ă
……………………………. perechea se poate repeta
</CatalogProduse>
<produs model="M1">
<denumire>yyyyyyyy</denumire>
</produs>
...............................
E e plu de hei st ăi e
între tabele XML
<xs:element name="Produse"> “e defi eşte u "ta el" a e o ţi e o
<xs:element name="ProduseCatalog"> listă de p oduse p eze te î atalog,
……..aici undeva e definit elementul-copil produs fiecare produs are un cod unic sub
are are la râ dul său opilul cod forma unui element copil
</xs:element>
“e defi eşte î a elaşi do u e t! al
<xs:element name="ProdusePeStoc"> doilea "tabel" cu produse pe stoc,
……..aici undeva e definit elementul-copil produs fiecare identificat de un atribut codItem
care are atributul codItem
</xs:element> “e de la ă ă p odusele di
atalog au heia p i a ă î
<xs:unique name="cheie"> copilul cod
<xs:selector xpath="ProduseCatalog/produs"/>
<xs:field xpath="cod"/> “e de la ă ă p odusele di al
</xs:unique"> doilea "ta el", au heia st ăi ă
<xs:keyref name="referinta" refer="cheie"> atributul codItem (deci valorile
<xs:selector xpath="ProdusePeStoc/produs"/> acestui atribut trebuie alese
<xs:field xpath="@codItem"/> dintre valorile cheii primare,
</xs:keyref> evitând astfel repetarea tuturor
</xs:element> i fo aţiilo desp e p oduse!
Exemplu valid
<Produse>
<ProduseCatalog>
<produs producator="Samsung" tip="Televizor"><cod>P1</cod></produs>
<produs producator="Samsung" tip="Frigider"><cod>P2</cod></produs>
<produs producator="Apple" tip="Telefon"><cod>P3</cod></produs>
</ProduseCatalog>
<ProdusePeStoc>
<produs codItem="P1" bucati="10" pret="100"/>
<produs codItem="P3" bucati="1" pret="50"/>
</ProdusePeStoc>
</Produse>
Nu putem avea pe stoc produse pe care nu le avem în catalog!
Î s hi u o i e p odus di atalog t e uie să fie pe sto
Valorile cheii străi e t e uie alese di t e ele ale heii p i a e
Nu ai su te e oiţi să epetă detaliile p oduselo p odu ato , tip !
Modularizarea documentelor
XML Schema permite ca un do u e t să o ţi ă ar atori di ai ulte vo a ulare
eea e du e la alida e ultiplă, faţă de ai ulte o a ula e si ulta .
<v1:catalog xmlns:v1="http://organizatie1.com/vocabular1">
<v1:produs v1:denumire="Ipod" v1:pret="300 RON"/>
</v1:catalog>
Prefixul poate lipsi pentru UNUL din vocabularele folosite în document (considerat
"p i ipal", default . De e e plu î HTML puteţi î tâl i adesea de la a ea
o a ula ului, fă ă a-i ai aso ia u p efi pe t u a u fi e oiţi să p efi ă totul!
<html xmlns="http://www.w3.org/1999/xhtml">
Crearea identificatorilor de vocabular
Câ d se eează u o a ula u XML “ he a, t e uie să i se defi eas ă a est
identificator:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://organizatia-mea.com/vocabularul-meu">
.....regulile vo a ularului….
</xs:schema>
Tehnici consacrate:
• Frag e tare după e tităţi:
– Aşa u la azele de date elaţio ale se eează u ta el pe e titate, se poate
ea şi u o a ula XML pe t u fie a e e titate
• Frag e tare după fre ve ţa folosirii:
– Un vocabular cu toate elementele/atributele o ligato ii di fa tu ă şi altul a e
le adaugă şi pe ele opţio ale
– Do u e tele o putea fi alidate faţă de p i ul sau faţă de al doilea, î
fu ţie de ât de detaliate su t!
• O o i aţie î tre ele două teh i i:
– Un vocabular cu elementele/atributele sintetice (structura generală, totalu i şi
altele pe t u detalii o espu zătoa e fie ă ei e tităţi u ul pe t u lista de
p oduse, altul pe t u i fo aţiile desp e lie t/vâ zăto
– Dife ite f ag e te ale u ui do u e t se o alida după o a ula e dife ite.
Ce i ţe pe t u o a ula e
În general în proiectarea vocabularelor trebuie să ţi e o t de:
• posibilele utiliză i ale do u e telo , u o fi ele p o esate ai depa te da ă o fi
preluate de alte sisteme ce au nevoie de un anumit grad de detaliere)
• pe fo a ţă
Î a est se s, a dis utat la î eput disti ţia î t e dife ite st u tu i de ele e te:
<Produs>
<Denumire>Televizorul <Denumire> costa <Pret>300</Pret><Moneda>RON</Moneda>
</Produs>
Date uşor de găsit, dar perfor a ţă sla ă şi vo a ular o pli at datorită u ărului are
de elemente
Toate egulile de su stitui e se e u e ă î t -o ădă i ă sl:st lesheet (deci XSLT este un vocabular XML!):
<xsl:stylesheet>
<xsl:template>…regula1...</xsl:template>
<xsl:template>…regula2...</xsl:template>
<xsl:template>…regula3...</xsl:template>
</xsl:stylesheet>
Reguli de şte ge e
• “u t a ele eguli a e u o ţi i i î i te io ul lo p a ti e
o a de su stitui e u şi ul id
• Şterge toate nodurile text din document:
<xsl:template match="text()"/>
• Şte ge toate odu ile i izi ile fo ate di spaţii, Ta , E te :
<xsl:template match="text()[normalize-space(.)='']"/>
se poate ealiza şi altfel, u i st u ţiu ea dedi ată xsl:strip-space)
• Şte ge toate elementele produs din document:
<xsl:template match="//produs"/>
• Ate ţie: adesea u t e uie să eă eguli de şte ge e, di
cauza regulilor implicite care aplică u ele şte ge i slide-ul
u ăto
Reguli implicite
R1. Dacă mai multe reguli a esează a elași nod, se apli ă regula cea mai spe ifi ă
(cu interogarea XPath cea mai ţi tită . De exemplu...
//produs[@pret!=''] e mai ţi tită decât //*
R2. Toate nodurile care NU su t afe tate de i io egulă de su stitui e sunt
eliminate, u ex epția odurilor text!
• Din a elaşi motiv, un fişie XSLT care îşi o ţi e DOAR ădă i a, fă ă nicio
egulă defi ită....
<xsl:stylesheet></xsl:stylesheet>
... va extrage din documentul su să tot textul, eliminând marcatorii şi atributele lor!
Aşada prin regula i pli ită XSLT ne ofe ă un mecanism rapid de extragere a
o ţi utului textual dintr-un document.
Reguli de conservare
Di auza egulilo i pli ite, t e uie să spe ifi ă e pli it â d do i să păst ă
a u ite po ţiu i di do u e tul o igi al, p i ea ea u o reguli de conservare:
• xsl:copy-of se foloseşte pe t u a ea opia ide ti ă a u ui ele e t di su să
• xsl:copy se foloseşte pe t u a ea o opie goală fă ă at i ute şi o ţi ut a u ui
ele e t, ă eia să i se apli e apoi diverse odifi ă i
Regula de conservare cea mai ge e ală, care ealizează o copie a întregului document
original (de fapt o copie a ădă i ii, cu tot ce o ţi e aceasta):
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
Regula de conservare a unui singur element, cu tot o ţi utul şi atributele sale:
<xsl:template match="produs">
<xsl:copy-of select="." />
</xsl:template>
Regula de conservare a u ui a ato , da fă ă o ţi ut şi at i ute a estea pot fi
redefinite sau filtrate în interiorul lui xsl:copy!):
<xsl:template match="produs">
<xsl:copy/>
</xsl:template>
Reguli î as adă
Cu xsl:apply-templates egulile pot apela alte eguli î as adă. E e plu:
<xsl:template match="/comanda">
Pas1. “e ealizează o opie goală a ădă i ii o a da,
<xsl:copy> la a e se eează u at i ut ou
<xsl:attribute name="AtributNou">ValoareaNoua</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy> Pas2. xsl:apply-te plates aută e alte reguli ai e istă
</xsl:template> pe t u opiii o e zii. “e găseşte a doua.
Sursa: Rezultat:
<comanda client="Pop Ioan"> <comanda AtributNou="TextNou">
<produs pret="100"><nume>Telefon</nume></produs> <produs><CopilNou>TextNou</CopilNou>Telefon</produs>
<produs pret="200"><nume>Frigider</nume></produs> <produs><CopilNou>TextNou</CopilNou>Frigider</produs>
</comanda> </comanda>
Reguli recursive
A estea su t eguli a e se apelează pe si e, di sp e ădă i ă sp e f u ze. Regula de ai jos ealizează
o opie a do u e tului o igi al, di a e eli i ă at i utele de i a e o egulă de o se a e
pa ţială!
<xsl:template match="node()"> Aici xsl:apply-te plates aută e alte eguli ai su t dispo i ile
pe t u opiii odului u e t şi eapli ă e u si a eeaşi egulă, deoa e e şi
<xsl:copy> opiii o espu d i te ogă ii node(). Pe t u fie a e od găsit se ealizează o
<xsl:apply-templates/> opie goală => atributele se pierd, î să o ţi utu ile o ă â e dato ită
</xsl:copy> copierii treptate (recursive) a tuturor nodurilor
</xsl:template>
<xsl:value-of select="@pret"></li>
IF-ul se poate e ita da ă punem în
</xsl:if> select-ul ciclului FOR direct
</xsl:for-each> produs[@pret], pasând astfel
</ol> espo sa ilitatea testă ii e iste ţei
p eţului sp e Xpath!
</xsl:template>
Versatilitatea XSLT
• Fu ția de ază: generarea de documente noi din
datele prezente într-un arbore DOM
=> poate juca rolul limbajului PHP, dacă se ge e ează od
HTML dintr-o " ază de date" XML
• Fu ție se u da ă: li aj de i te oga e:
=> da ă, în loc de substituiri are loc doar copierea unor
fragmente după a u ite o diții), avem un mod de a
ealiza i te ogă i, ai sofisti at de ât e poate XPath!
Ce sunt bazele de u oşti ţe?
(o iziu e foarte si plifi ată)
Bază de Cu oşti ţe = Fapte + Reguli + Axio e
Regulă = o o stru ţie IF… THEN… care stabileşte um se pot deduce fapte noi din
cele existente. Exemple:
DACĂ x e rudă u y, ATUNCI y e rudă u x
DACP x are vârsta sub 18, ATUNCI x este minor
Aplicate pe faptele de mai sus, aceste reguli vor genera fapte noi ("concluzii"):
Joe e rudă u Andrew.
Andrew e minor.
• A u ite i stru e te soft are " otoare i fere ţiale" vor converti axioma în regula de mai jos (scutind
utilizatorul de defi irea expli ită a regulii)...
DACĂ x e rudă u y, ATUNCI y e rudă u x
• ... apoi vor executa regula, ge erâ d a eeaşi o luzie a slide-ul precedent:
Joe e rudă u Andrew.
O ser aţii:
• Pe tru a a est e a is să fie posi il, axio a tre uie for ulată u ajutorul u or terminologii standard
exe plu: ter i ologia OWL e oferă ter e ul sta dard owl:SymmetricProperty pe tru oţiu ea de
"relaţie re ipro ă"
• Axiomele pot fi ăzute a "reguli as u se î fapte", sau "fapte e pot fi interpretate ca reguli" (interpretarea
lor se azează pe ter e i sta dard re u os uţi de ătre otoarele i fere ţiale
• Axio ele u ei aze de u oşti ţe for ează u vocabular sau o ontologie, deoare e ele fixează se ifi aţia
u or o epte ai i, o eptul de "rude ie" pe tru toţi ei are le or utiliza î propriile afir aţii
• Axio ele sta iles ât a "î ţelege" al ulatorul di afir aţiile sto ate, deci ce " o luzii" poate trage fără
i ter e ţie u a ă
2
Ce e i teresează î We . ?
• Cum reprezentă u oşti ţele î al ulator?
– Răspu s: RDF
• Cum interogă u oşti ţele?
– Răspu s: SPARQL
• De u de luă ter e ii sta dard pe tru axio e?
– Răspu s: din terminologii standardizate (RDF/S, OWL)
• Cu sto ă u oşti ţele î We ?
– Răspu s: pe servere de cunoşti ţe/grafuri (Sesame)
• Cum se pot executa reguli pentru a produce noi cunoşti ţe?
– Răspu s : Motoare i fere ţiale exte sii ale ser erelor de u oşti ţe, e pot
interpreta axiomele ca reguli)
– Răspu s : SPARQL (unele tipuri de i terogări pot î orpora reguli
• Cu se alidează u oşti ţele?
– Răspu s: Nu se validează. O afir aţie u poate fi "ero ată", i doar o tradi torie
faţă de alte afir aţii. Contradicţiile se dete tează pri dedu ţii logi e. Dedu ţiile
se auto atizează u ajutorul axio elor şi/sau regulilor.
Variante sintactice pentru
repreze tarea afir aţiilor
• Progra are o ie tuală:
JohnDoe.Salary=200
• XML: Stru tura o u ă = Tripletul!
<JohnDoe Salary="200"/> (subiect, predicat, obiect)
• Prolog:
Salary(JohnDoe,200)
• Sisteme de tip frame-slot (sisteme expert):
JohnDoe:
Salary: 200
• Limbaj natural:
John Doe has a salary of 200
4
E oluţia odelelor de date
*RDF u e si gura teh ologie pe tru aze de date de tip graf, dar este sta dardul propus pe tru Se a ti We . E istă
şi tehnologii non-standard, de ex. Neo4J ce se interoghează u propriul li aj, u it C pherQL.
5
În RDF, "faptele" iau forma unor
afir aţii de tip "triplet"
:Robert :worksAt :UniVie.
:Razvan :hasHairColor :Black.
:Patrik :likes :Beer.
:Susana :hasChild :Robert.
:Robert :hasChild :Razvan, :Patrik.
hasChild hasHairColor
hasChild Razvan
Black
Robert
worksAt hasChild
Exe ple de i terogări SPARQL:
UniVie Patrik
- Retur ează toţi pări ţii (Susana, Robert)
likes
SELECT ?x
WHERE
Beer {?x :hasChild ?y}
7
Cu au lo ăutările î We -ul clasic?
Varianta A:
Căutare oferită de site-uri (ex., caseta Search a
unui magazin virtual)
Dezavantaje:
• Va ăuta doar î aza de date a site-ului
curent, conform unei i terogări
preprogramate
• Va ăuta doar î aza de date, u şi î textul
paginilor site-ului Baza de
• Căutarea u a ţi e o t de alte i for aţii date
relevante care sunt disponibile în diverse Interogare
surse pu li e, dar u şi î aza de date a locală
site-ului (de ex., detalii suplimentare despre
produsele magazinului)
Cu au lo ăutările î We -ul clasic?
Varianta B.
Căutare oferită de otoare de ăutare
Dezavantaje:
• Va ăuta î orpul HTML al pagi ilor i dexate, u î aze de date existe te î We
• Va ăuta doar î pagi ile e se POT i dexa
• Co ţi utul i serat di a i u Ajax u i erHTML, appe dChild et . u e
indexat, nefiind vizibil la accesarea paginii cu un web crawler
• Va ăuta u i te heie, u proprietăţi ale u or lu ruri
HTML Site A
keyword
scraping
HTML Site B
keyword
scraping
HTML Site C
keyword
scraping
Ce propune Web 3.0?
Varianta A: Site Web
interogări dire te Bază de date = ază de u oşti ţe des hisă
se a ti ă
Serviciu public de interogare
("endpoint")
Varianta B:
knowledge scraping Cod HTML = od HTML u u oşti ţe i luse
semantic
Extra tor de u oşti ţe
din cod HTML
("distiller")
Căutările î site-uri...
• ...să se poată exti de şi spre alt a k-end decât al site-ului curent; cel are aută î tr-un
agazi irtual să poată ăuta şi după alte riterii de ât ele sto ate î aza de date
de exe plu, ordo ează ărţile di li rărie după ota de pe A azo are u există î
aza de date lo ală
• ...să poată a ea lo şi î o ţi utul HTML al site-ului, nu doar în baza de date
Originea ideii:
Tim-Berners Lee, James Hendler, Ora Lassila. "The Semantic Web". Scientific American. May,
2001
Pri ii paşi: Google K o ledge Graph
Răspu s dire t di partea otorului de ăutare la soli itarea de
proprietăţi ale u ui su ie t:
Interogare directă
u răspu s dire t
(ceva de genul
?x :fatherOf :BradPitt)
Căutare de
Se pot interoga detalii
cuvinte cheie
supli e tare proprietăţi
ale persoa ei găsite în corpul unor
=> navigare de cunoştinţe pagini
[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
<div itemtype="http://schema.org/Movie" itemscope="">
Afir aţii extrase <h1 itemprop="name">Maleficent</h1>
("distilate") <div itemtype="http://schema.org/AggregateRating" itemprop="aggregateRating">
din cod HTML, având <span itemprop="ratingValue">7.0</span>
/
ca su ie t pagi a ure tă <span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>
Acest cod HTML este prezent în pagina Maleficent, asigurând simultan
afişarea (prin CSS) şi des rierea se ifi aţiei pri alorile itemprop, De u de pro i î să
recunoscute de Google) denumirile proprietăţilor
recunoscute de Google?
ur ătorul slide
Valorile itemprop din
Terminologii reutilizabile
slide-ul precedent
provin din
terminologia
Schema.org!
(surse de termeni): Schema.org
S he a.org e o ole ţie de ter e i
pri are se pot des rie i for aţii
fre e t ăutate î We :
fil e, ărţi, persoa e, orga izaţii,
eve i e te, lo aţii et .
Faza 3 (Web 2.0) = o reţea de apli aţii apa ile să uleagă i put de la utilizator
- scop: producerea de conţi ut We , i teropera ilitatea si ta ti ă î tre apli aţii
- mijloace: CMS-uri, reţele so iale, XML/JSON
Faza 4 (Web 3.0) = o reţea de u oşti ţe i teroga ile ("Semantic Web", "Linked Data")
- scop: interogarea se a ti ă pe ază de proprietăţi şi dedu ţii auto ate
- mijloace: aze de u oşti ţe des hise, ter i ologii reutilizate
Faza 5 (Web 4.0) = o reţea de agenţi soft are ("Pragmatic Web", "Internet of Things")
- scop: i terogarea prag ati ă delegarea de sar i i
- mijloace: procese automatizate consumatoare de servicii Web
Exe plu de i terogare prag ati ă
"Cu pără-mi ----> sarcina " u pără" ( o u i ată u ui age t soft are)
Codul lui Da Vinci în hardcover, ----> obiectul sarcinii ("Codul lui Da Vinci"), cu tipul " arte" dete tat di preze ţa
proprietăţii "hard o er"
u preţ axi 15 USD, ----> restri ţie pe proprietatea "pret"
livrabil într-o săptă â ă" ----> restri ţie pe proprietatea "timp"
Co diţii pe tru a fa e posi ilă exe utarea auto ată a sar i ii:
• Age tul de ăutare să ai ă a es dire t la ataloage de produse i teroga ile, u doar la pagi i î are pot
să apară sa u! u i tele heie rele a te
– Cataloagele de produse tre uie să fie aze de u oşti ţe i teroga ile, î are să fie lară disti ţia di tre arte şi fil , pe baza
proprietăţilor fie ăreia, î tr-u od i depe de t de li ă RDF!
– Age tul de ăutare tre uie să fa ă disti ţia î tre arte şi fil , pe ază de i terogări
– Age tul de ăutare tre uie să poată efe tua ăutarea î ai ulte agazi e irtuale, toate a â d atalogul de produse des his
i terogărilor
• Age tul de ăutare să u retur eze doar "rezultate", i să efe tueze u părarea să exe ute "sar i a"
– Age tul de ăutare tre uie să fie o ştie t are su t paşii şi de iziile are tre uie par urşi î ti pul u părării des rieri de procese
de afaceri cu BPMN!)
– Age tul de ăutare tre uie să ai ă a es protejat la resursele elui are a i iţiat sar i a ard a ar, adresă de li rare
– Magazi ele irtuale tre uie să ofere u ser i iu We la are să se plaseze o a da fără i ter e ţie u a ă
- ...limbajul natural
- ...XML
1
Co paraţie u li ajul atural
:Robert :worksAt :UniVie.
:Razvan :hasHairColor :Black.
:Patrik :likes :Beer.
:Susana :hasChild :Robert.
:Robert :hasChild :Razvan, :Patrik.
2
Co paraţie u li ajul atural
• Termenii di RDF su t ase ă ători " u i telor" di li ajul atural, dar e a ai rigizi
– nu au reguli gra ati ale, orfologi e, ti puri, de li ări, a orduri et .
– au o for ă rigidă i pusă de regulile de u ă for are RDF şi de stru tura URI
– for a u ui ter e RDF u ariază, pe tru a per ite al ulatoarelor să for eze grafuri pe aza
reutilizării su t per ise totuşi si o i ele!
– u su t legaţi de o li ă a u e, nu se supun gramaticii vreunei limbi
• O descriere se for ează di ai ulte afir aţii u pri ire la a elaşi lu ru a elaşi
ter e , sau si o i e ale a eluiaşi ter e
– ori i e poate fa e ori e şi ori âte afir aţii u pri ire la u a elaşi lu ru, sto ate oriu de
– des rierile e oluează î ti p, pe ăsură e se fa oi afir aţii
– o des riere a o ţi e di erşi ter e i, are la râ dul lor au propriile des rieri
– descrierile din surse diferite se pot completa reciproc sau pot fi contradictorii
• descrierile complementare se pot o e ta şi î ogăţi re ipro
– e or a ai i de " aze de u oşti ţe distri uite"
– i terogările "federati e" or ole ta afir aţii di surse diferite, de pe ser ere diferite
• descrierile contradictorii pot coexista în Web
– " lie ţii" i terogărilor or de ide asupra redi ilităţii sau a pu tul de edere preferat
Co paraţie u li ajul atural
• Unele descrieri sunt "controlate" (stocate într-un
vocabular/ontologie/terminologie) pentru a fixa
semnificaţia unor termeni. Un astfel de vocabular
e ase ă ător u u "di ţio ar e pli ati " care
fi ează se ifi aţia u i telor:
• sti ulează adoptarea pe s ară largă a u ui ter e , cu o
a u ită se ifi aţie
• o ţi e des rieri pu li e şi o trolate, e tre uie să poată fi
interogate de oricine
• e format din axiome afir aţii e i di ă proprietăţile
definitorii ale unui termen)
• axiomele folosesc ter e i sta dardizaţi şi alţi ter e i ărora
li s-a fixat î preala il se ifi aţia î a elaşi o a ular sau î
altele!)
Cu e oluează ter e ii?
Faza 1. Un termen "se creează" pri a dată â d e folosit î tr-o afir aţie:
Am mâncat mere.
– Cum s-a reat u â tul " ăr"?
– Ate ţie, cuvintele limbii române nu a fost create de di ţio arul li ii ro â e! Di ţio arele doar ole tează u i te
care s-au reat deja, pe tru a per ite şi altora să le reutilizeze î a elaşi od, u a eeaşi se ifi aţie!
Faza 2. Ulterior reării, diverse persoa e pot adopta a el ter e fă â d diverse afir aţii u a esta:
A ăzut işte ere. Merele su t roşii. Merele res î opa . Merele ostă lei/kilogram...
– O ulţi e de afir aţii despre a elaşi lu ru for ează o descriere (altfel spus, o "descriere" = o enumerare de
proprietăţi . Fie are ouă afir aţie contribuie la î ogăţirea descrierii acelui lucru
Faza 3. Persoa e diferite pot fa e des rieri diferite, u ter e i preluaţi di surse diferite:
Merele su t roşii. Merele su t erzi. Merele res î opa . Merele res î apă.
– Des rierile se pot o pleta re ipro , dar pot fi şi o tradi torii!
Faza 4. Când mai multe persoane se pun de acord asupra unei descrieri stabile, acea descriere devine
se ifi aţia ter e ului şi, pe tru a putea fi reutilizată, tre uie să i lusă î tr-u di ţio ar o a ular,
ter i ologie, o tologie . Aşadar se ifi aţia e o des riere for ată di proprietăţi defi itorii:
Merele sunt fructe, rotunde, comestibile, cresc în copaci din familia rozacee etc.
a estea su t exe ple de proprietăţi defi itorii, are î preu ă dau se ifi aţia o eptului de
Mere; da ă eli i ă u a, e posi il să u ai vor i de Mere!
astfel de afir aţii su t o siderate axiome şi î RDF se azează pe ter e i sta dardizaţi)
Merele ostă lei/kilogram.
(aceasta e o proprietate nedefinitorie - î ogăţeşte des rierea, dar u o tri uie la se ifi aţia
conceptului de "Mere";
astfel de afir aţii u tre uie să apară î tr-un vocabular, dar pot apare într-o ază de u oşti ţe
pentru a fi interogate!)
Co paraţie RDF-XML
• Aşa cum XML nu impune ce marcatori şi atribute să folosim, RDF nu impune ce termeni
să folosim în afir aţii. Putem utiliza orice termeni, dar (deosebire de XML!) trebuie să
i di ă obligatoriu prove ie ţa fie ărui termen
– "pro e ie ţa"="spaţiul de nume"= o adresă de domeniu pe care o deţi e creatorul termenul
– în a eeaşi afir aţie putem îmbina termeni de pro e ie ţă diferită:
@prefix : <http://johnsmith.ro#>.
@prefix b: <http://buchmann.ro#>.
:Mary b:daughterOf :John.
pri asta a i di at ă ter e ii prefixaţi u b: au fost reaţi de deţi ătorul adresei de do e iu buchmann.ro,
iar ter e ii prefixaţi u : au fost reaţi de deţi ătorul adresei johnsmith.ro; deoarece adresele de domeniu
su t u i e î I ter et, ele oferă o gara ţie de ide tifi are a reatorilor u oşti ţelor
Beneficiu major: Preluarea de ter e i di alte surse per ite o e tarea grafurilor di aze de u oşti ţe
diferite!
Observaţii:
– În exemplele din curs/seminar, se va presupune că deţi e adresa http://expl.at (iar când sunt
necesare mai multe, http://other.at, poate şi altele)
– Î diverse ărţi şi tutoriale, se foloseşte adresa http://example.org (sau o adresă u părată de
autorul ărţii
– Î exe plele voastre i lusiv proie t folosiţi o adresă pe are o deţi eţi deja sau folosiţi u a fi tivă,
cu numele vostru de familie
• pe tru a realiza exer iţiile, adresa u e o ligatoriu să existe, i doar să i di e fără a iguitate
"proprietarul ter e ilor" pe are îi folosiţi
Co paraţie RDF-XML
• Ca şi în cazul XML, termenii se scriu cu caractere UNICODE, deci pot fi scrişi în orice li ă. Prin
urmare este ore tă şi afir aţia:
:Mary :fiicaLui :John .
totuşi, e recomandat să folosim mereu a elaşi termen când ne referim la a elaşi lucru... deci să nu
scriem :fiicaLui într-o afir aţie, apoi :daughterOf în alta, ă i conectarea afir aţiilor în grafuri şi
interogarea lor se azează pe reutilizarea o siste tă a termenilor!)
• Ca şi în XML, termenii nu sunt "cuvinte" direct preluate din limbajul natural. Important e ca
termenul din mijloc să exprime o relaţie între primul şi al treilea. Uneori un termen e construit
din mai multe cuvinte, pentru a uşura î ţelegerea de ătre un cititor uman. Exemplu:
:Mary :fiicaDinPrimaCasatorieALui :JohnSmithDinClujNapoca .
totuşi, pe cât posibil trebuie să si plifi ă afir aţiile; acest exemplu ar trebui descompus în mai
multe afir aţii, pentru a permite separarea oraşului Cluj Napoca pentru i terogări!
• Ca şi în XML, termenii nu trebuie să fie inteligibili de ătre un cititor uman şi nu sunt cuvinte
cheie impuse. La fel de corect ca exemplele de mai sus este şi ur ătorul:
:MMM :fff :JJJ .
(calculatorul e interesat doar de reutilizarea o siste tă a termenilor, pentru a putea forma grafuri
din afir aţii; se re o a dă totuşi ca afir aţiile să fie uşor de citit şi de ătre cititori umani, pentru a
putea crea cât mai uşor i terogările fără expli aţii suplimentare!)
Co paraţie RDF-XML
• Ca şi XML, RDF u e u li aj i u set de reguli de u ă formare. Spre deosebire de
XML, RDF oferă ai ulte si taxe alter ative, fie are u propriile reguli de u ă
formare.
• Exemple:
Sintaxa Turtle:
@prefix : <http://expl.at#>.
:Mary :daughterOf :John.
Sintaxa N-triples:
<http://expl.at#Mary> <http://expl.at#daughterOf> <http://expl.at#John>.
Sintaxa RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://expl.at#">
<rdf:Description rdf:about="http://expl.at#Mary">
<ex:daughterOf rdf:resource="http://expl.at#John">
</rdf:Description>
</rdf:RDF>
(iată hiar un vocabular XML specializat pe afirmaţii RDF!
Co paraţie RDF-XML
• Aşa cum vocabularele XML permit unor orga izaţii să
se pu ă de acord asupra unor structuri XML, mai
multe orga izaţii se pot pune de acord asupra
se ifi aţiilor unor termeni prin definirea unui
vocabular RDF (ontologie, terminologie) :
– Termenii unui vocabular vor indica prin prefix nu doar
creatorul, ci şi vocabularul în care li s-a fixat se ifi aţia
– Se ifi aţia se fi ează prin afir aţii definitorii cu
termeni sta dardizaţi ("axiome")
– Termenii sta dardizaţi se preiau din terminologiile
standard oferite de W3C (OWL, RDF/S). Exemple de
termeni sta dardizaţi:
rdf:type (verbul "a fi")
owl:SymmetricProperty oţiu ea de "relaţie re ipro ă"
Exe plu de fixare a se ifi aţiei
(pentru termenul :rudăCu)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix b: <http://buchmann.ro/vocabularul-meu#>.
b:rudăCu rdf:type owl:SymmetricProperty.
– Relaţia de "rudenie" e defi ită aici ca fiind o relaţie re ipro ă, deci are întotdeauna loc în
ambele sensuri (în mod implicit relaţiile RDF sunt u idire ţio ale!
– Aceasta e o se ifi aţie agă, ar trebui î ogăţită şi cu alte axiome pentru a detalia ă relaţia
de rudenie poate însemna frate, pări te, bunic etc... păstră totuşi exemplul minimal, ă i
trebuie să studiem mai întâi toţi termenii sta dardizaţi
– Axioma trebuie sto ată într-un vocabular on-line pe care oricine să îl poată consulta, la adresa
i di ată prin prefix (http://buchmann.ro/vocabularul-meu)
– Prefixele rdf: şi owl: corespund terminologiilor standardizate de ătre W3C
Oricine va adopta termenul astfel definit va indica prin prefix vocabularul în care s-a fixat se ifi aţia:
@prefix b: <http://buchmann.ro/vocabularul-meu#>.
@prefix : <http://organizatie-oarecare.ro#>.
:Mary b:rudăCu :John.
• Pe baza vocabularului, orice calculator va deduce în mod automat şi afir aţia re ipro ă (:John
b:rudăCu :Mary.)
• Concluzie i porta tă: spre deosebire de vocabularele XML (folosite la validare), vocabularele RDF
au rolul de a permite "î ţelegerea" termenilor şi folosirea lor în dedu ţii automate
Cum se folosesc
vocabularele/ontologiile?
• Clie ţii vor o sulta vo a ularul pe tru a o strui i terogări
– fii d or a de aze de u oşti ţe distri uite î We , tre uie să per ite i terogarea lor de ătre ori i e, nu doar de
către ei are le-au creat
– clie ţii u su t eapărat u a i, pot fi otoare de ăutare, ro sere, apli aţii desktop sau We , age ţi soft are
i telige ţi
– analogie cu MySQL: u poţi i teroga preţurile u or produse da ă u ştii u se u eşte â pul î are su t sto ate
• Axiomele unui vocabular per it al ulatoarelor să realizeze dedu ţii logi e auto atizate
– dedu ţiile auto ate or î ogăţi azele de u oşti ţe fără i ter e ţie u a ă
– unele deducţii per it dete tarea de o tradi ţii afir aţii e o tra i u se ifi aţia fi ată a u or ter e i
– afir aţiile o tradi torii pot fi tolerate, dar tre uie dete tate
Co se i ţă: Adăugarea de ele e te oi e ai difi ilă, e esită o Co se i ţă: Adăugarea u ei afir aţii oi se fa e si plu, fără să e
poziţio are pre isă. Adăugarea de atri ute oi e ai si plă, dar pese de poziţio area. Adăugarea de ter e i oi la o afir aţie u e
tre uie ataşate u ui ele e t. per isă, ă i afe tează stru tura de triplet.
Vocabularele XML se folosesc la validare erifi area stru turii şi Vocabularele RDF nu se folosesc la validare, ci la fixarea se ifi aţiei
tipurilor de date) termenilor di afir aţii î s opul auto atizării dedu ţiilor logi e
Vocabularele XML sunt formate din reguli de validare construite cu Vocabularele RDF sunt formate din axiome, are su t tot afir aţii RDF,
li aje spe ializate, are u su t eapărat tot de tip XML ezi DTD î să u ele e foloses ter e i sta dardizaţi
Relaţiile î tre ele e te XML su t vagi relaţii pări te- opil a ăror Relaţiile î tre ter e ii RDF sunt explicite, pot fi la rândul lor descrise
se ifi aţie e i terpretată de o ) într-u od î are se ifi aţia să poată fi i terpretată de al ulator
Ele e tele XML pot a ea proprietăţi u valori simple, numite atribute Ter e ii RDF pot a ea proprietăţi u alori si ple, u ite tot atribute
(cu tipuri impuse prin vocabulare, de obicei prin XML Schema) (cu tipuri preluate de la XML Schema)
Marcatorii şi atri utele u tre uie să ai ă prove ie ţa e pli ită Orice termen RDF tre uie să ai ă prove ie ţă, u u ele e epţii (de
ex., termeni anonimi)
XML se foloseşte ai des a format de transferare a datelor între RDF se foloseşte ai des a ază de date NoSQL des hisă spre
apli aţii, dar poate fi folosit şi i terogat a ază de date NoSQL i terogări î We , dar poate fi folosit şi pe tru a tra sfera frag e te
de grafuri î tre aze de u oşti ţe sau apli aţii diferite
RDF
• Resource Description Framework = o fa ilie de spe ifi aţii pentru
descrierea a ORICE (descrieri de "resurse")
• În RDF, resursă = orice lucru/persoană/aspect despre care se poate face
o afir aţie de i, ORICE
– Axioma fundamentală: Ori e este o resursă
Tipuri de resurse
• Resurse adresabile = orice se poate accesa în Web printr-u URL fişiere,
conturi e-mail, servicii Web, paragrafe din pagini HTML);
• Resurse neadresabile = orice altceva (persoane, concepte, locuri etc.),
e a e e istă î afara We -ului, fiind identificabil printr-un URI
• Resursele neadresabile pot fi "reprezentate" în Web de unele adresabile:
• O persoa ă eadresa ilă) poate avea un cont de e- ail, o pagi ă Fa e ook, u CV
(adresabile)
• U oraş neadresabil poate a ea u site, o pagi ă Wikipedia, o i agi e et .
(adresabile)
• Noţiu ea de "frate" eadresa ilă poate a ea o pagi ă Wikipedia, o pagi ă de
di ţio ar e pli ati et . adresabile)
13
Resurse
• Tre uie să fie lar â d or i despre o resursă adresa ilă şi
â d despre u a eadresa ilă:
@prefix : <http://buchmann.ro#>.
:MichaelJackson :frateCu :JanetJackson. (afirmaţie despre persoa ă
<http://www.michaeljackson.com> :creatCu :PHP. afir aţie despre site
<http://www.michaeljackson.com> :paginaLui :MichaelJackson. (afir aţie e conectează persoana cu site-ul)
Presupu â d ă site-ul e istă şi u putem modifica URL-urile fişierelor, vom realiza disti ţia în unul din modurile:
a) La nivel de termen:
@prefix : <http://www.michaeljackson.com#>.
:MichaelJackson :paginaLui :persoanaMichaelJackson.
b) La nivel de prefix:
@prefix : <http://www.michaeljackson.com#>.
@prefix t: <http://www.michaeljackson.com/termeni#>.
:MichaelJackson t:paginaLui t:MichaelJackson.
14
Relaţia URL-URI
Ate ţie la posi ila o fuzie î tre URI şi URL! A ele încep u u proto ol şi o adresă de
domeniu sau IP):
• URL sunt adrese, ele i di ă u de s-a găzduit u a u it fişier şi u poate fi a esat
în Web:
http://buchmann.ro/cv#experienta
(a se î ţelege: există pe site-ul u h a .ro o pagi ă v cu un paragraf cu ID="experienta", ce poate
fi deschis cu browserul)
• URI sunt identificatori (ca CNP-urile din buletin sau ISBN-urile la ărţi , ei i di ă doar
ide titatea u ui lu ru şi pro e ie ţa ide tifi atorului:
http://buchmann.ro/voc#frate
(a se î ţelege: proprietarul do e iului u h a .ro a defi it ter e ul "frate", a ărui se ifi aţie e
des risă în vocabularul "voc" şi poate fi folosit î ori e afir aţii de ătre ei are îl adoptă
Dileme:
16
RDF
• RDF oferă*:
–U odel de date, u se a ti ă for ală şi si ta ă a stra tă
(bazat pe grafuri)
– Multiple sintaxe concrete (pentru serializarea grafurilor)
– Un limbaj de interogare a grafurilor (SPARQL)
– O terminologie standard de utilizat în axiome
– Bune practici pentru publicarea grafurilor în Web
• La origi i, RDF a fost o teh i ă de ataşare de etadate
la diverse resurse Web (similar tagului META pentru
pagini Web)
– A evoluat într-u odel pe tru repreze tarea u oşti ţelor
*http://www.w3.org/2001/sw/wiki/Main_Page
*http://www.w3.org/standards/techs/rdf#w3c_all 17
• RDF are
Sintaxele RDF
– o si taxă a stra tă pe tru proie tarea u oşti ţelor = se referă la stru tura ge erală a grafurilor,
u la deli itatori, de a eea e e plele a stra te se dau adesea î for ă grafi ă
– mai multe sintaxe concrete pe tru serializare, adi ă s rierea u oşti ţelor a te t = se referă la
deli itatori, iar u ele si ta e i pu şi âte a u i te heie
http://expl.at#isMotherOf http://expl.at#isFatherOf
20
http://expl.at#Andrew
_:x
http://expl.at#hasAge
http://expl.at#isMotherOf http://expl.at#years
http://expl.at#Anna
http://expl.at#Peter
http://expl.at#isMotherOf http://expl.at#measuredIn
http://expl.at#Andrew http://expl.at#isFatherOf
http://expl.at#years
http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter
http://expl.at#isMotherOf http://expl.at#measuredIn
http://expl.at#Andrew http://expl.at#isFatherOf
http://expl.at#believes http://expl.at#hasAge
20
http://expl.at#Mary _:X
http://expl.at#isMotherOf http://expl.at#isFatherOf
20
http://expl.at#Andrew
_:x
http://expl.at#hasAge
Sintaxa Turtle:
@prefix : <http://expl.at#> .
:Anna :isMotherOf :Andrew, :Peter.
:Peter :hasAge 40; :isFatherOf [:hasAge 20].
Sintaxa N-triples:
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> . 22
<http://expl.at#Peter> <http://expl.at#hasAge> "40"^^<http://www.w3.org/XMLSchema#integer> .
Exemple în sintaxe concrete
Sintaxa N-triples:
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> .
<http://expl.at#Peter> <http://expl.at#hasAge> "40"^^<http://www.w3.org/XMLSchema#integer> .
@prefix : <http://expl.at#> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> .
:Peter :hasAge 40; :isFatherOf [<http://expl.at#hasAge> 20].
Exemplu cu graf identificat în sintaxa
a stra tă
Mary believes that Anna is the mother of Andrew and Peter.
http://expl.at#years
http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter
http://expl.at#isMotherOf http://expl.at#measuredIn
http://expl.at#Andrew http://expl.at#isFatherOf
http://expl.at#believes http://expl.at#hasAge
20
http://expl.at#Mary _:X
25
Exemple cu graf identificat în sintaxe
Sintaxa TriG:
concrete
extensie Turtle ce permite gruparea afirmaţiilor î grafuri u sau fără ide tifi ator
@prefix : <http://expl.at#> .
{:Mary :believes :someBeliefs. Graf implicit, neidentificat
:Peter :fatherOf [:hasAge 20].
:hasAge :measuredIn :years.}
:someBeliefs {:Anna :isMotherOf :Andrew, :Peter.} Graf identificat
Sintaxa N-quads:
extensie N-triples ce permite gruparea afirmaţiilor î grafuri (cu sau fără identificator)
<http://expl.at#Peter> <http://expl.at#isFatherOf> _:x .
_:x <http://expl.at#hasAge> "20"^^<http://www.w3.org/XMLSchema#integer> . Graf implicit,
<http://expl.at#hasAge> <http://expl.at#measuredIn> <http://expl.at#years> . neidentificat
<http://expl.at#Mary> <http://expl.at#believes> <http://expl.at#someBeliefs> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Andrew> <http://expl.at#someBeliefs> .
<http://expl.at#Anna> <http://expl.at#isMotherOf> <http://expl.at#Peter> <http://expl.at#someBeliefs> .
1
Ce sunt afirmaţiile o te tuale?
Afirmaţii contextuale = afirmații pentru care prezumția de adevăr e limitată la
un context (la anumite condiţii)
http://expl.at#Mary http://expl.at#CompanyABC
http://expl.at#worksAt
http://expl.at#location
http://expl.at#Cluj
http://expl.at#Mary
http://expl.at#worker
_:workRelation
http://expl.at#location
http://expl.at#employer
http://expl.at#Cluj
http://expl.at#CompanyABC
Turtle:
@prefix : <http://expl.at#>.
[:worker :Mary; :employer :CompanyABC; :location :Cluj].
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția2. Reificarea ("afirmaţii despre afirmaţii"): seamănă cu relaţiile de aritate mare, dar
foloseşte nişte termeni standardizaţi pentru a descrie afirmaţia despre care se fac afirmaţii.
rdf:Statement
rdf:type http://expl.at#Cluj
http://expl.at#hasLocation
_:x
rdf:subject
rdf:object
http://expl.at#Mary rdf:predicate
http://expl.at#CompanyABC
http://expl.at#worksAt
Turtle:
@prefix : <http://expl.at#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
[a rdf:Statement; rdf:subject :Mary; rdf:predicate :worksAt; rdf:object :CompanyABC; :hasLocation :Cluj]
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția3. Grafurile identificate permit gruparea de afirmaţii într-un graf ce devine apoi termen în
alte afirmaţii (avantaj: mai concis decât reificarea sau relațiile de aritate înaltă)
http://expl.at#City http://expl.at#Romania
http://expl.at#Cluj
http://expl.at#worksAt
http://expl.at#Mary http://expl.at#CompanyABC
TriG:
@prefix : <http://expl.at#>.
:Cluj {:Mary :worksAt :CompanyABC}
{:Cluj a :City; :locatedIn :Romania} 6
Soluţii de repreze tare a afir aţiilor
contextuale
Soluția3. Eventual, graful identificat poate primi un identificator lipsit de semnificaţie, care să fie
apoi ataşat mai multor contexte separate de conţinutul grafului:
http://expl.at#City http://expl.at#Romania
rdf:type http://expl.at#locatedIn
http://expl.at#Cluj http://expl.at#Past
TriG:
@prefix : <http://expl.at#>. http://expl.at#place
:graph1 {:Mary :worksAt :CompanyABC} http://expl.at#time http://expl.at#Robert
{:graph1 :place :Cluj; :time :Past; :source :Robert.
:Cluj a :City; :locatedIn :Romania} http://expl.at#source
http://expl.at#graph1
http://expl.at#worksAt
http://expl.at#Mary http://expl.at#CompanyABC
7
E e plu u afir aţii su ie tive
Afirmaţii subiective: când dorim ca anumite afirmaţii să fie caracterizate ca aparţinând unei
anumite surse/persoane subiective şi dorim să permitem clienţilor să filtreze rezultatele
interogărilor după sursă (de ex. în funcţie de credibilitatea sursei):
Mary believes that Anna is the mother of Andrew and Peter, but does not believe that Peter is the
father of George.
http://expl.at#graph1
http://expl.at#isMotherOf
http://expl.at#Anna http://expl.at#Peter
http://expl.at#graph2
http://expl.at#isMotherOf
http://expl.at#Andrew http://expl.at#isFatherOf
http://expl.at#believes http://expl.at#doesNotBelieve
http://expl.at#George
http://expl.at#Mary 8
… despre ter e ii folosiţi î afir aţii…
9
Ter e ii afir aţiilor pot fi
• URI ajoritatea şi, î fu ţie de prove ie ţă, pot fi de ur ătoarele tipuri:
– Proprii = reaţi de reatorul azei de u oşti ţe
• pe baza propriei adrese de domeniu, un termen e creat ad-ho la pri a apariţie î tr-o afir aţie
– Sta dardizaţi = reaţi de W C, se re o a dă adoptarea lor
• pe tru a per ite ori ui să e i terogheze u oşti ţele
• pe tru a per ite dedu ţii auto ate fără i terve ţie u a ă
– Co trolaţi = reaţi de diverse orga izaţii Fa e ook, Mi rosoft et . , se î urajează adoptarea lor
• pe tru a e efi ia de diverse fu ţio alităţi de e ., i portarea u ui site î lista de preferi ţe Fa e ook u
butonul Like)
– Ge eraţi = apar atu i ge eră auto at grafuri RDF di surse tradiţio ale
• de ex., generarea de grafuri din tabele MySQL va produce URI din numele coloanelor concatenate cu
u ele ta elelor şi u o adresă de do e iu
• VALORI SIMPLE
– Pot fi numere, booleene, date calendaristice etc.
• se folosesc tipurile predefinite din XML Schema, plus tipul suplimentar rdf:XMLLiteral pentru cod XML
oarecare (dar bine format conform XML)
– Pot apare doar pe poziţie de o ie t
• de i NU se pot fa e afir aţii despre valori si ple
• NODURI ANONIME
– Su t lo ţiitori te porari sau per a e ţi pe tru u URI
• Pot fi la evoie su stituiţi u u URI, dar de o i ei u prezi tă i teres ide titatea lor, doar poziţia î graf
– Pot apare doar pe poziţie de su ie t sau o ie t
• Proprietăţile NU pot fi a o i e
De ce termenii afirmaţiilor se azează
pe URI?
1. URI au un caracter universal
– pot identifica orice lucru, adresabil sau neadresabil
– sunt mai generali decât alte sisteme de identificare (de ex. CNP se aplică doar la oa e i şi doar î
Ro â ia, ISBN doar la ărţi et .
. URI i di ă pro e ie ţa într-un mod controlabil
– î ep u o adresă de do e iu u i ă î I ter et, deţi ută de i eva a u e
. URI su t stru turaţi şi flexi ili
– proprietarul adresei de do e iu poate defi i u u ăr i fi it de ter e i, folosind extensiile
permise de un URI (unul sau mai multe slash-uri, maxim un hash):
http://buchmann.ro/Maria
http://buchmann.ro#Maria Hash doar o dată, la ulti a parti ulă!
http://buchmann.ro/persoane/Maria
http://buchmann.ro/relatii/frate
http://buchmann.ro/vocabular1/relatii#frate
– ate ţie la prefixare în ultimul exemplu! doar ulti a parti ulă ră â e după prefix:
@prefix : <http://buchmann.ro/vocabular1/relatii#>. va permite să folosi ter e ul :frate
...în schimb...
@prefix : <http://buchmann.ro/>. nu va permite să folosi ter e ul :vocabular1/relatii#frate
– da ă tre uie să folosi toţi URI de mai sus, definim mai multe prefixe!
De ce termenii afirmaţiilor se azează
pe URI?
. URI asigură disti ţia î azul o fli telor de termeni
– ter e i si ilari se pot difere ţia după prefi /provenienţă:
http://expl.at#Maria Două persoa e Maria au pri it ide tifi atori si ilari de la orga izaţii
http://other.at#Maria diferite, di oi ide ţă, dar se pot difere ţia după pro e ie ţă!
http://buchmann.ro#sugar Co eptele "zahăr" şi "sugar" au pri it ide tifi atori si ilari deri aţi di
http://expl.at#sugar li i diferite, dar se pot difere ţia după pro e ie ţă!
http://anaf.ro#PopMaria O persoa ă poate pri i ide tifi atori diferiţi î aze de u oşti ţe diferite,
http://univie.ac.at#PopMaria aparţi â d u or orga izaţii diferite!
• Un URI ide tifi ă ori e, u URL ide tifi ă o resursă adresa ilă fişier, paragraf
etc.)
– Un URI este un "cuvânt" ter e al u ei afir aţii RDF
– Teoretic pentru orice cuvânt din limbajul natural se poate inventa un URI
15
De e să u folosi URL-uri existente
pe post de URI?
• Teoretic Web-ul oferă u eroase surse de ide tifi atori lipsiţi de a iguitate:
• Wikipedia alo ă o pagi ă de i u URL disti t pe tru u eroase o epte şi i sta ţe;
• Reţelele so iale (Facebook, LinkedIn) alo ă o pagi ă disti tă fie ărei persoa e,
orga izaţii, eve i e t et .;
• Totuşi se re o a dă să se evite reutilizarea de URL-uri pe post de URI. Motiv: o
persoa ă şi pagi a sa We NU su t a elaşi lu ru.
• Persoana e eadresa ilă şi are a u ite proprietăţi u e, data aşterii et . ;
• Pagina Web e adresa ilă şi are u totul alte proprietăţi autor, data pu li ării et .
• Două resurse disti te u tre uie ide tifi ator! Două resurse e hivale te tre uie să ai ă
e a t a eleaşi proprietăţi!
• Concluzie: vom utiliza URL-uri pe post de URI doar câ d fa e afir aţii chiar
despre resurse adresabile despre fişiere, servicii Web etc.)
– E istă e epţii: Fa e ook foloseşte URL-ul contului (http://facebook.com/PopIon) şi a
ide tifi ator al persoa ei. Asta pe tru ă FB u doreşte să asigure disti ţia di tre oa e i şi
conturi (vezi FB terms and conditions: You will not create more than one personal account)
16
Ce se î tâ plă da ă e ista deja URI
pe tru lu rurile are apar î afir aţii?
1. Dacă află la ti p, e i e să-i reutiliză pe tru a per ite şi altora să
i terogheze afir aţiile oastre
– Nu e o eroare să folosi doar URI proprii, dar atu i doar oi reatorul a elor URI poate
rea i terogări şi apli aţii lie t are să-i interogheze)
– Utilizarea de URI sta dardizaţi sau o trolaţi vor adu e o serie de e eifi ii
2. Da ă află târziu,şi u ai pute odifi a URI deoare e ar afe ta apli aţii
aflate deja î fu ţiu e , pute i lude î aza de u oşti ţe o ontologie de
aliniere:
– De o i ei e vor a de u "di ţio ar de e hivale ţe" = afir aţii are de lară î tr-un mod
sta dard e hivale ţa ai ultor URI are s-au reat pe tru a elaşi lu ru/resursă
– U astfel de di ţio ar va per ite i terogărilor să a u uleze u oşti ţe di ai ulte surse,
despre a elaşi lu ru
3. Posi ile surse de URI e iste ţi:
– Terminologii standardizate (RDF/S, OWL)
– Terminologii controlate (FOAF, Facebook OpenGraph, DBPedia)
– Baze de cunoşti ţe ale u or orga izaţii parte ere u are dori să o e tă grafurile oastre
17
Granularitatea URI
Cât de apropiat tre uie să fie u URI de uvi tele di li ajul atural?
Cât de detaliat?
Exemplu:
Anna has the age of 20.
http://expl.at#hasAge
http://expl.at#theAgeOf20
20
B.
http://expl.at#Anna http://expl.at#has
http://expl.at#Age
http://expl.at#value
20
18
Probleme cu varianta A.
Tre uie să e gâ di la posi ilii lie ţi, la posi ilele i terogări e or e i de la a eştia.
http://expl.at#Anna http://expl.at#has
http://expl.at#theAgeOf20
Î a eastă varia tă, i iu ul di a este s e arii u e posi il fără u efort supli e tar di partea
lie tului ar fi e esară o versia URI î stri g, apoi e tragerea u ărului 0 pri pro esare de
stri guri ş.a. .d.
19
Probleme cu varianta B.
Presupu e ă î viitor vor tre ui de larate ai ulte vârste
Prin reutilizarea termenului Age, afir ațiile vor fuzio a într-un mod care nu mai permite
al ulatorului să dis ear ă are vârstă este a ui:
40
http://expl.at#Anna http://expl.at#value
http://expl.at#has
http://expl.at#Age
http://expl.at#has
http://expl.at#value 20
http://expl.at#John
Î o eperea azelor de u oşti ţe tre uie să e pu e și î tre area: care noduri din
afir ații or tre ui reutilizate?
20
Co se i ţă: Varia ta C. e re o a dată
A u se poate reutiliza proprietatea vârstă fără a rea a iguitate
A u se pot i teroga valorile vârstelor separat de restul i for aţiei
A u se poate des rie proprietate vârstă separat de valoarea sa
http://expl.at#John 40
http://expl.at#hasAge
http://expl.at#measuredIn
http://expl.at#Anna http://expl.at#years
http://expl.at#hasAge http://expl.at#measuredIn
20
O ser aţie: afir aţia despre proprietatea hasAge, deşi î imagine apare de două ori, î si taxele o rete se a s rie o
si gură dată o afir aţie se s rie o si gură dată î tr-un graf):
@prefix : <http://expl.at#>.
:John :hasAge 40. :Anna :hasAge 20. :hasAge :measuredIn :years.
Cu alte cuvinte:
• Descrierea unei proprietăţi e i depe de tă de afir aţiile î are se foloseşte a ea proprietate î se sul ă
utilizarea proprietăţii tre uie să ţi ă o t de se ifi aţia sa, u i ers!
• Des rierea u ei proprietăţi e separată de afir aţiile î are se foloseşte a ea proprietate î se sul ă o proprietate
e des risă o dată, apoi se ifi aţia sa e ala ilă peste tot u de se reutilizează a ea proprietate!
• De i u se a fa e disti ţie î tre proprietatea hasAge a lui Joh şi ea a lui A a. Da ă dori disti ţie, î sea ă
ă dori să a e proprietăţi diferite, u se ifi aţii diferite, şi pri ur are tre uie să le dă URI diferiţi! 21
Granularitatea termenilor
Nu trebuie să e ageră cu granularitatea. De exemplu...
Anna was born on 12.12.2000.
...ar putea lua forma: http://expl.at#Anna
http://expl.at#hasBirthyear http://expl.at#hasBirthday
http://expl.at#hasBirthmonth
2000 12 12
Totuşi, deoare e ajoritatea ediilor de progra are pot să des o pu ă uşor o dată
ale daristi ă şi e istă deja u tip XML S he a pe tru a est ge de valori, u e evoie să o
descompunem atât de mult.
Pute păstra o si gură valoare si plă, deci o singură proprietate:
:Anna :birthDate "2000-12-12"^^xsd:date.
22
Granularitatea termenilor
Alteori î să are se s des o pu erea, pe tru a per ite i terogarea separată a ai
multor câmpuri dintr-o stru tură de date o ple ă. E e plu:
Anna lives in Wien, Brunnerstr. 72, Ap. 200.
http://expl.at#Anna
http://expl.at#hasResidenceAp
http://expl.at#hasResidenceCity
http://expl.at#hasResidenceNr
http://expl.at#Wien http://expl.at#hasResidenceStreet 200
20
http://expl.at#Brunner
23
Granularitatea termenilor
Spre deosebire de slide-ul pre ede t, ai i ave o si gură proprietate:
• se va fa e efort ai puţi la des rierea se ifi aţiei proprietăţilor e u a si gură
de descris, :livesAt)
• î s hi la i terogare u ai pute disti ge î tre oraș, stradă et . de ât da ă
adăugă işte afir aţii supli e tare despre Wie , Bru er et .
http://expl.at#Anna
http://expl.at#livesAt
http://expl.at#livesAt
http://expl.at#livesAt
http://expl.at#Wien http://expl.at#livesAt 200
20
http://expl.at#Brunner
24
Re o a dări privi d URI
Se re o a dă a URI de proprietăţi...
• să fie uşor de difere ţiat faţă de o -proprietăţi
• să sugereze ititorului u a dire ţia î are are lo relaţia
26
Re o a dări privi d URI
URI se supun unor principii mai rigide:
• Tre uie să ai ă for a i pusă de URI u prefi şi e te siile per ise, dis utate deja, dar şi u ele li itări privi d
caracterele permise)
• Asigură ide titatea glo ală a lu rurilor u tre uie să e iste două lu ruri disti te u a elaşi URI
• Nu su t legaţi de o li ă a u e, su t doar işte oduri de ide tifi are se re o a dă totuşi să poată fi itiţi şi de
utilizatori umani)
• Pot exista ai ulţi URI pe tru a elaşi lu ru u posi ilitatea de e hivalare î astfel de situaţii
• Apar adesea a su ie te î afir aţii RDF
• Nu tre uie să fie izi ili î i terfaţa u utilizatorul fi al a esta u tre uie să îşi dea sea a da ă apli aţia sa
foloseşte î spate RDF sau M SQL sau alt tip de a k-end)
• Sunt înrudite cu URL-urile şi de ai i derivă u ele o se i ţă posi ilitatea de derefere ţiere URI, posi ilitatea de a
folosi URL-uri ca URI pentru resurse adresabile)
Stringurile în schimb se supun unor principii mai relaxate, fiind considerate "nume" sau "etichete":
• Pot o ţi e ori e ara tere, fără să ai ă o stru tură i pusă u e o ligatoriu să se e e u URI ărora le su t
ataşate
• Nu asigură ide titate glo ală de e e plu pot e ista ai ulte persoa e u a elaşi u e
• Pot fi legate de o li ă a u e, az î are li se ataşează oduri de li ă a elaşi lu ru poate avea de u iri diferite
în limbi diferite)
• Pot exista ai ulte u e pe tru a elaşi lu ru, dar u se pot sta ili e hivalări î tre u e
• Nu pot ser i a su ie te î afir aţii RDF u se pot fa e afir aţii despre valori si ple!
• Tre uie să fie izi ili î i terfaţa u utilizatorul fi al de i i terogările tre uie să ur ăreas ă î spe ial o ţi erea de
stri guri, hiar da ă URI su t ei are asigură o e tarea afir aţiilor î graf 27
• Nu au i io legătură sau depe de ţă faţă de URL-uri
Re o a dări privi d URI
Se re o a dă a u URI să ai ă ataşat ă ar u URL al u ei pagi i We e poate
oferi detalii supli e tare despre a ea resursă
• Aşa u stri gurile devi i porta te la afişarea rezultatelor i terogărilor î i terfaţa utilizatorului
final, astfel de URL-uri pot sta la aza afişării de h perli kuri
• Se asigură astfel o disti ţie lară î tre resursele adresa ile şi ele eadresa ile, î tre URL şi URI,
păstrâ d totodată relaţii i teroga ile î tre a estea
Scenariu:
• Andrew are o pagi ă perso ală cu propriul domeniu (http://www.andrew.at)
• Andrew dorește să publice o descriere RDF cu afir aţii despre el î suși
• Pentru a asigura disti ţia între site şi persoa ă, Andrew va evita să reutilizeze URL-ul existent, va crea
un URI puţi diferit şi va crea o relaţie i teroga ilă între cele două:
<http://www.andrew.at#Andrew> <http://www.andrew.at#isRepresentedBy> <http://www.andrew.at> .
(identificatorul persoanei Andrew) (relația URI-URL) (pagina Web a lui Andrew)
• Şi invers, codul HTML al paginii lui Andrew va trebui să încorporeze a eastă afir aţie
Beneficii: Oricine i teroghează baza de u oşti ţe a lui Andrew va putea o ţi e uşor un hyperlink spre
site-ul acestuia. Oricine izitează site-ul acestuia, va putea o ţi e uşor acces la afir aţiile RDF despre
Andrew.
28
Re o a dări privi d URI
Se re o a dă a URI să fie sufi ie t de detaliaţi î ât să se poată i teroga ât ai
uşor i for aţii rele a te:
:Mary :eCopilDinPrimaCasatorieALui :JohnSmithDinClujNapoca.
Avem aici un exemplu corect (bine format) dar dificil de interogat.
Variante recomandate (am omis prefixele):
A. Variantă u ă, per ite i terogări rafi ate pri B. Variantă ai puţi u ă dar ai u ă de ât ea
i luderea u or oduri a o i e* are u erau e ţio ate, i iţială :
dar su t i pli ite RDF u are rolul de a "tradu e" propoziţii • oferă o disti ţie şi o relaţie lară î tre Joh S ith şi
di li aj atural, i de a le refle ta se ifi aţia! oraş
• per ite o ţi erea opiilor pe aza relaţiei : opilulLui ,
_:x â d u o tează di e ăsătorie su t
:primaSotie _:y
:copilulLui
:aDouaSotie
:Mary :copilulLui
:JohnSmith :Mary :JohnSmith
:copilulLui
:locuiesteIn :dinPrimaCasatorie
:locuiesteIn
*există şi alte oduri de a expri a
ordi ea di tre soţii, o re e i! :ClujNapoca :ClujNapoca
URI o trolaţi şi sta dardizaţi
Diverse orga izații stabilesc identificatori care nu sunt eapărat sta dardizați, dar devin populari în
anumite domenii sau aduc beneficii când sunt re u os uţi de unele apli aţii. A eştia sunt "termeni
o trolaţi".
W3C a propus o serie de URI sta dardizaţi pe tru concepte fundamentale (clasă, resursă, proprietate) şi
pentru relații fu da e tale (e hi ale ță, disti ție, re ipro itate etc.):
• Exemple de terminologii standard: RDF/S (exemplu de termen - rdf:type), OWL (exemplu de termen -
owl:sameAs)
• Ter e ii sta dardizaţi au prefi e sta dardizate:
– rdf: (http://www.w3.org/1999/02/22-rdf-syntax-ns#)
– rdfs: (http://www.w3.org/2000/01/rdf-schema#)
– owl: (http://www.w3.org/2002/07/owl#)
• Be efi iile adoptării ter e ilor sta dardizaţi:
• toată lu ea îi u oaşte şi poate realiza i terogări pe aza lor;
• pute să-i folosi î a io e e or per ite al ulatorului să realizeze dedu ţii auto ate 2
ge erarea de afir aţii oi, dete tarea de o tradi ţii
Exe ple de URI sta dardizați
http://expl.at#Class
http://expl.at#isOfType
http://expl.at#Human
http://expl.at#isOfType
http://expl.at#isAKindOf
http://expl.at#Man
http://expl.at#isOfType
http://expl.at#equivalentTo
http://expl.at#John http://other.at#Johnny
http://expl.at#Man
http://expl.at#John
http://expl.at#Anna http://andrew.at#Andrew
http://expl.at#isMotherOf
http://other.at#worksAt
http://andrew.at#Andrew
http://other.at#ABC
http://expl.at#hasAge
20
6
Co se i ță
Chiar da ă grafurile su t sto ate pe ser ere diferite, u adrese de do e iu diferite, i terogările or putea
par urge o e iu ile di tre ele datorită reutilizării ide tifi atorului lui A dre .
Graful pe are îl ăd i terogările are ur ătoarea for ă, hiar da ă părţi ale lui su t sto ate pe ser ere
diferite:
http://expl.at#Anna
http://expl.at#isMotherOf
Pe serverul
http://other.at#worksAt
EXPL http://other.at#ABC
http://andrew.at#Andrew
http://expl.at#hasAge
Pe serverul OTHER
20
http://other.at#Andy
http://expl.at#Anna
http://expl.at#isMotherOf
owl:sameAs
http://other.at#worksAt
http://expl.at#Andrew
http://other.at#ABC
http://expl.at#hasAge
20
Co se i ță
• Se pot rea i terogări are să tra erseze relaţia owl:sameAs pe tru a ole ta i for aţiile o ple e tare despre
Andrew din cele 2 surse;
• Se or putea rea reguli are să tra sfere tot e se ştie despre A dre la A d , pre u şi i ers, ezi figura:
http://expl.at#Anna
http://expl.at#isMotherOf
http://expl.at#isMotherOf http://other.at#Andy
owl:sameAs
http://other.at#worksAt
http://expl.at#Andrew
http://other.at#ABC
http://other.at#worksAt
http://expl.at#hasAge http://expl.at#hasAge
20
Ate ţie, da ă e hi alarea e de larată î tre URI di a eeaşi ază de u oşti ţe, e e utarea regulii are
opiază afir aţiile î tre ei doi i di izi are a efe t o dupli are puter i ă a i for aţiei redu da ţă!)
De a eea u ele siste e i ple e tează "sa eAs opti izatio " ge erarea afir aţiilor dupli ate doar â d
sunt solicitate de o interogare, apoi distrugerea lor)
Ate ţie, nici reutilizarea, nici echivalarea nu sunt posibile
la oduri a o i e di aze de u oşti ţe diferite
http://expl.at#Anna
_:Andrew
http://expl.at#isMotherOf
http://other.at#worksAt
_:Andrew
http://other.at#ABC
http://expl.at#hasAge
20
10
Ate ţie, nici reutilizarea, nici echivalarea nu sunt
posibile la oduri a o i e di aze de u oşti ţe
diferite
http://expl.at#Anna _:u989898
http://expl.at#isMotherOf
http://other.at#worksAt
_:u1213133 http://other.at#ABC
http://expl.at#hasAge
20
http://expl.at#livesAt rdf:type
_:x
http://expl.at#City
http://expl.at#Wien
http://expl.at#Nr
http://expl.at#Str
20 http://expl.at#Ap
http://expl.at#Brunner
200
13
Utilizarea nodurilor anonime
Reifi are = afir ații despre afir ații
14
Utilizarea nodurilor anonime
=> 2: odurile a o i e per it o pu erea de fraze o plexe di afir ații
simple.
http://expl.at#believes
rdf:Statement
rdf:type
_:belief
rdf:subject rdf:object
rdf:predicate
http://expl.at#Peter
http://expl.at#Andrew
http://expl.at#isBrotherOf
15
Utilizarea nodurilor anonime
"Fraze complexe" pot î se a și propoziții o e tate pri operatori logi i
http://expl.at#Peter
rdfs:member
http://expl.at#Mary _:x
http://expl.at#hasSon
rdfs:member
rdf:type
http://expl.at#Andrew
rdf:Alt
*operatorul AND e i pli it apli at î tre afir ații dar i pli area, egația, disju ția
tre uie e pri ate pri astfel de o stru ții
16
Utilizarea nodurilor anonime
"Fraze complexe" pot î se a și propoziții o e tate pri operatori logi i
rdf:Alt rdf:type
_:x
rdfs:member
rdfs:member
_:y
_:z rdf:type
rdf:type rdf:subject
rdf:subject
rdf:Statement http://expl.at#John
http://expl.at#Mary
rdf:predicate
rdf:predicate
rdf:object rdf:object
2
http://expl.at#has
http://expl.at#grade
_:x
rdf:type
http://expl.at#course
http://expl.at#ComplexRelation http://expl.at#Math
18
Utilizarea nodurilor anonime
Peter, Andrew and Anna are colleagues.
A putea apli a o rețea de relații i are: Dezava taj: fie are ou e ru va atrage după
si e rearea u ui u ăr tot ai are de afir aţii!
http://expl.at#colleagueWith http://expl.at#Mary
http://expl.at#Anna
http://expl.at#colleagueWith
http://expl.at#colleagueWith
http://expl.at#colleagueWith
http://expl.at#colleagueWith
http://expl.at#colleagueWith
http://expl.at#Peter http://expl.at#Andrew
19
Utilizarea nodurilor anonime
Dar de e i ai fle i ili da ă grupă toți i di izii su u od a o i are
reprezi tă grupul de la parti ipa ți î sus o a ea ai puți e afir ații de
adăugat
=> 4: odurile a o i e pot repreze ta o tai ere, grupări et .
http://expl.at#Mary rdf:Bag
rdfs:member
rdf:type
rdfs:member
_:group
rdfs:member
rdfs:member
http://expl.at#Peter http://expl.at#Andrew
20
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
http://expl.at#Anna
http://expl.at#hasThirdChild
http://expl.at#hasFirstChild
http://expl.at#hasSecondChild
21
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
http://expl.at#Peter
http://expl.at#Andrew
http://expl.at#index
http://expl.at#index http://expl.at#index
3
1
2
22
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
http://expl.at#Anna
http://expl.at#hasChild http://expl.at#hasChild
http://expl.at#index
http://expl.at#hasChild
1 http://expl.at#Mary
http://expl.at#Peter
http://expl.at#Andrew
23
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
Acum e OK: Noduri a o i e sta iles o relație de aritate î tre A a, fie are opil al său
și i de ul e dă ordi ea opilului, de i u ai e istă o fuzii legat de ordi e. A eiaşi opii
pot fi i pli aţi î alte relaţii ordo ate, u alte u ere de ordi e!
=> 5: nodurile anonime pot exprima ordonarea
http://expl.at#StudentGroup
http://expl.at#Anna
http://expl.at#contains
http://expl.at#hasChild
24
Utilizarea nodurilor anonime
Anna has 3 children, born in the following order: Peter, Andrew, Mary.
Alter ativă: Nodurile a o i e pot rea o stru tură re ursi ă de tip listă î hisă a î
Prolog). Ca şi î azul pre ede t, a eiaşi opii pot fi i pli aţi şi î alte liste, u alte ordi i şi
alte se ifi aţii!
rdf:List
*URI oloraţi î roşu su t
http://expl.at#Anna
sta dardizaţi
rdf:type
rdf:type
http://expl.at#hasChildren
rdf:type
_:z rdf:nil
_:x _:y rdf:rest
rdf:rest
rdf:rest
rdf:first
rdf:first
rdf:first
http://expl.at#Peter http://expl.at#Andrew
http://expl.at#Mary
25
Utilizarea nodurilor anonime
Anna is the mother of someone who works in a city from Austria.
I for ația i o pletă e totuși aloroasă – e per ite să ge eră o relație î tre A a și
Austria.
=> 6: odurile a o i e î lă țuie ai ulte afir ații, per ițâ d ge erarea de oi relații
Relația ge erată*
http://expl.at#hasRelativesIn
http://expl.at#Anna http://expl.at#Austria
http://expl.at#locatedIn
http://expl.at#isMotherOf
_:x
_:y
http://expl.at#worksIn
_:x 1 2
_:y _:x _:y
:copilulLui :primaSotie :index
:aDouaSotie :sotie :index
:sotie
_:a
:Mary _:b
:JohnSmith
:copilulLui :aAvutSotia
:aAvutSotia
:copilulDinCasatoria
:Mary :JohnSmith
Ate ţie la î i area ai ultor
ordo ări
Mar S ith a fost pri a soţie a lui Joh S ith di ăs i ii .
1 2 3
:MarySmith _:sotia2 _:sotia3
_:b
rdf:first rdf:first rdf:first
_:x _:y
rdf:rest rdf:rest _:z
rdf:first
:casniciiCu
Atenţie, toate listele se
rdf:rest
:JohnSmith rdf:rest o e tează la a elaşi
apăt!
rdf:nil
…interogarea grafurilor RDF…
Documentație:
SPARQL: http://www.w3.org/TR/sparql11-update/
30
Tipuri de i terogări
• I terogări de itire = i terogări are u odifi ă
aza de u oşti ţe:
– SELECT, ASK, DESCRIBE, CONSTRUCT
• I terogări de s riere = i terogări e odifi ă aza
de u oşti ţe:
– Modifi ări gra ulare (pot avea loc la nivelul unei
si gure afir aţii : INSERT, DELETE, DELETE/INSERT
– Modifi ări la ivel de graf (afectează u graf î treg :
LOAD, ADD, MOVE, COPY, DROP
32
E e ple de i terogări
Exemplu de graf RDF scris în Turtle
Am folosit @base în loc de @prefix!
cu @base, toţi ter e ii vor fi " ăi relative" la o a eeaşi "adresă de ază"
=> se foloseşte â d toţi ter e ii au a eeaşi prove ie ţă (deci nu e nevoie de
diferenţierea prefi elor
=> URI nu mai au prefix, dar trebuie î adraţi u para teze u ghiulare a î N-triples)
@base <http://expl.at>.
<#JamesCameron> <#directed> <#Avatar>, <#Terminator>.
<#Arnold> <#playedIn> <#Terminator>;
<#governed> <#California>.
<#Terminator> <#hasTitle> "Terminator".
<#California> <#hasName> "California".
<#Arnold> <#hasName> "Arnold Schwarzenegger".
<#JamesCameron> <#hasName> "James Cameron".
<#Avatar> <#hasTitle> "Avatar".
*Resursele ar tre ui să ai ă eti hete atașate, iar i terogările ar tre ui să soli ite astfel de eti hete î vederea
afișării spre utilizatorul fi al. E e plele oastre u vor fa e î totdeau a asta, pe tru a e e plifi a diverse33
situaţii
E e ple de i terogări
BASE <http://expl.at>* ?m
SELECT ?m <#Avatar>
WHERE {<#JamesCameron> <#directed> ?m} <#Terminator>
= retur ează toate fil ele regizate de James Cameron
SELECT ?p ?o ?p ?o
WHERE {<#Arnold> ?p ?o}
<#playedIn> <#Terminator>
= retur ează toate afir ațiile despre Ar old
<#governor> <#California>
SELECT ?x
WHERE {<#JamesCameron> <#directed> ?mov.
?x <#playedIn> ?mov. ?x
?x <#governed><#California>} <#Arnold>
= ce guvernator din California a jucat într-un film regizat de James Cameron?
*Ca și î Turtle, base sau prefix trebuie declarate (dar fără @ și fără pu t fi al). Vom omite aceste
de larații î a este e e ple pe tru a u î ăr a slide-urile
34
E e ple de i terogări
?mov
SELECT ?mov
<#Terminator>
WHERE {<#JamesCameron> <#directed> ?mov.
?mov <#hasTitle> ?t.
FILTER regex(?t,"^T")}
= ce film regizat de James Cameron are un titlu ce începe cu T? (filtrare după e presie regulată)
SELECT ?mov
?mov
WHERE {<#JamesCameron><#directed>?mov.
<#Terminator>
<#Arnold><#playedIn> ?mov}
= ce film regizat de James Cameron îl are pe Arnold în el?
35
E e ple de i terogări
SELECT ?x ?mov
WHERE { <#JamesCameron>
{?x <#directed> <#Terminator>}
<#Arnold>
UNION
{?x <#playedIn> <#Terminator>}
}
= retur ează pe ei are "au ju at î " SAU "au regizat" Ter i ator (reuniune de
rezultate di două şa loa e)
SELECT ?x ?x
WHERE {
?x <#directed> <#Terminator>.
?x <#playedIn> <#Terminator>
}
= retur ează pe are "au ju at î " ȘI "au regizat" Terminator (i terse ție de
rezultate)
36
E e ple de i terogări
?n ?mov
SELECT ?x ?y ?x ?y
WHERE
<#JamesCameron> <#Arnold>
{?x <#directed>/^<#playedIn> ?y}
= retur ează titlurile perechile regizor-actor care au lucrat la acelaşi fil (di ou î lă ţuire,
dar ţi e o t de faptul ă de la fil la a tor se aju ge î se s opus relaţiei)
37
E e ple de i terogări
I terogări oolee e:
ASK {?x <#directed> ?movie. YES
?y <#playedIn> ?movie}
= a e regizori și a tori are au lu rat la a elași fil ?
(răspu s oolea : Yes sau No)
38
E e ple de i terogări
I terogări oolee e:
ASK {?x <#directed> ?movie. YES
?y <#playedIn> ?movie}
= a e regizori și a tori are au lu rat la a elași fil ?
(răspu s oolea : Yes sau No)
39
Reguli SPARQL: ge erarea de oi afir ații
" o luzii" u ajutorul i terogărilor
CONSTRUCT
{?x <#workedWith> ?y}
WHERE
{?x <#directed> ?movie. ?y <#playedIn> ?movie}*
= ge erează afir ații e conectează dire t regizorii și a torii are au lu rat î a elași fil
<#JamesCameron> <#directed> <#Terminator>.
<#Arnold> <#playedIn> <#Terminator>.
Deoare e CONSTRUCT NU e o operație de s riere, rezultatul u e adăugat la graful origi al, i retur at
lie tului pe e ra sau î e orie pe tru prelu răuri ulterioare ; lie tul va de ide da ă să le salveze
permanent sau nu.
"James Cameron"
"James Cameron"
44
Formatul standard SPARQL Results în
varianta JSON
{
"head": { "vars": [ "movie", ....aici se enumeră u ele aria ilelor retur ate...] } ,
"results":
{"bindings":
[ {
{"movie": { "type": "uri" , "value": "http://expl.at#Terminator" } } ,
{…},
…aici se enumeră â purile u tipul şi aloarea lor, pe tru o î registrare...
},
…ai i se e u eră î registrările retur ate...
]
}
}
45
I terogări de s riere SPARQL Update
SPARQL Update extinde SPARQL u operații de s riere:
• LOAD – î ar ă afir ații de la o sursă e ter ă;
• INSERT DATA – adaugă afir ații e pli ite la u graf, i depe de t de afir aţiile
existente;
• INSERT WHERE – adaugă afir ații pe aza u ui şa lo e le o e tează la
afir aţiile e iste te;
• DELETE DATA – șterge afir ații e pli ite;
• DELETE WHERE – șterge afir ații pe aza u ui patter ;
• INSERT/DELETE – se o i ă pe tru operații de a tualizare ( u e istă o a da
UPDATE!);
• ADD – fuzio ează două grafuri;
• MOVE – rede u ește u graf altfel spus, ută tot o ți utul di tr-un graf în
altul, î lo ui d o ți utul grafului desti ație şi ştergâ d graful origi al);
• COPY – opiază afir ații di tr-u graf î altul, î lo ui d o ți utul grafului
desti ație dar păstrâ d şi graful origi al;
• DROP – șterge u graf.
46
SPARQL Update:
operaţii la i el de graf
LOAD <http://myserver.com/facts.ttl>
INTO GRAPH :g1
= adaugă î g afir ații a esate de pe We (dintr-u fișier Turtle stati dispo i il o -line
pe serverul myserver.com)
DROP GRAPH :g
= ștergere unui graf integral
47
SPARQL Update:
i terogări gra ulare
WITH :network
DELETE {?x ?y ?z} WHERE {:Anna :knows ?x.?x ?y ?z}
= eli i ă di graful network toate afir ațiile despre
u os uții lui A a ai î tâi are lo u SELECT pe şa lo ul
WHERE, apoi varia lele a estuia se foloses pe tru ştergere
WITH :network
DELETE {:Anna ?x ?y} INSERT {:Anette ?x ?y} WHERE {:Anna ?x ?y}
= o aută pe A a î graful et ork și o su stituie u Anette
( u e istă o a da UPDATE, se folosește a eastă
o i ație de DELETE și INSERT a o si gură o a dă!)
48
SPARQL Update:
i terogări gra ulare
INSERT DATA
{
GRAPH :g1
{
:Mary :isRelativeOf :George.
:George :isRelativeOf :Aneta,:Peter.
}
}
= adaugă două afir ații oi î g1, indiferent de ce mai există î el
WITH :g1
INSERT {?y :isFatherOf ?x} WHERE {?x :isChildOf ?y}
= reează î g1 relații de opil a olo u de găsește relații de tată* WITH e per ite să evită folosirea lauzei
GRAPH de ori: o dată î şa lo ul INSERT, apoi î şa lo ul WHERE
*A easta e o altă teh i ă de e e utare a REGULILOR u ajutorul i terogărilor, alter ati ă la CONSTRUCT:
• CONSTRUCT ge erează afir aţii oi şi le li rează lie tului i terogării, fără a le sal a î aza de u oşti ţe
lie tul tre uie să le sal eze
• INSERT WHERE ge erează afir aţii oi şi le sal ează, fără a le li ra lie tului lie tul tre uie să le i terogheze
apoi cu SELECT) 49
…interogarea grafurilor RDF la
dista ţă…
Documentaţie:
1
Metode de accesare a grafurilor RDF dintr-o apli aţie We
Apli aţie proprie
Bază de u oşti ţe p op ie
Varia ta rudi e tară: se e ul e ote ofe ă u fişie RDF stati sau di a i de e . ge e at u u s ipt
PHP . Ad esa fişie ului sau a s iptului a e îl ge e ează poate fi a esată p i o a da LOAD ofe ită de
SPARQL:
LOAD <http://remoteserver.com/facts.ttl> INTO GRAPH :g1
LOAD <http://remoteserver.com/script.php> INTO GRAPH :g1
Interogările federative nu sunt suportate în orice libră ie/li aj de p og a a e. Alte ati a e să des o pu e
interogarea într-o su esiu e de i te ogă i si ple şi să pasă a ia ilele o u e î t e a estea. Exemplu (bazat
pe slide-ul precedent):
Diferenţe:
• Variabila a e u g af i sta ţiat î p eala il p i dfli
• Variabila b va fi de tip string => se poate converti în graf rdflib (cu parse),
ă i p o esa ea a st i g e ai a e oioasă
• Se i iul ea ţio ează dife it la dife iţi parametri HTTP e se pot ataşa ad eselo
URL t e uie o e tiţi p i t -o fu ţie de oda e URL pe t u a su stitui
caractere nepermise)
• Se i iul ea ţio ează dife it la dife ite metode HTTP (GET, POST, PUT, DELETE
etc.)
• Se i iul poate a epta sau ăspu de u dife ite si ta e. Clie tul îşi a e p i a
p efe i ţa u ajuto ul â pu ilo di antetul HTTP (Accept, Content-Type etc.)
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte stru tura adreselor:
• Protocolul Graph Store: pe ite ope aţii la i el de g af afe tează u g af î t eg: ea ea u ui g af,
şte ge ea u ui g af, upload de g af et .
Adresele oferite de protocol au de obicei forma
http://AdresaServiciului/LocatiaBazeiDeCunostinte/rdf-graphs/service?graph=IdentificatorulGrafului
http://AdresaServiciului/LocatiaBazeiDeCunostinte/rdf-graphs/service?default da ă se a esează
graful i pli it, fără ide tifi ator
E posi il a u se i iu să ofe e şi o adresă de bază, la care se pot face cereri neconfigurate (prin metoda
GET) pentru care s-a p egătit u ăspu s i pli it
=> astfel de ad ese o putea fi a esate şi p i metodele directe menţio ate (comanda
LOAD, fu ţii p e u pa se , u lope sau hia p i tasta ea ad esei î t -un browser)
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte stru tura adreselor:
În general serverele RDF a eptă ambele protocoale, eventual extinse cu adrese suplimentare (pentru a
o ţi e u ă ul de afi aţii, p efi ele et . . De e e plu Sesa e a eptă e e i la ad ese o puse
o fo u ăto ului ghid*:
Adresa de ază Sesa e, la are se pot tri ite ereri e o figurate pe tru a o ţi e o ţi utul i tegral al
u ei aze de u oşti ţe este: http://localhost:8080/repositories/BazaDeCunostinte/statements
*http://rdf4j.org/sesame/2.7/docs/system.docbook?view#Protocol_summary
Metoda3: Cereri HTTP configurate conform protocolului
oferit de un serviciu de interogare
Î e priveşte para etrii:
I dife e t de p oto olul folosit, toţi pa a et ii graph, query, update t e uie t e uţi p i t -o
fu ţie de "codare URL" pentru a substitui caracterele nepermise sau ambigue dintr-un URL (în
P tho e fu ţia urlencode())
• Î a ele situaţii, sintaxa trebuie i di ată p i odul său MIME (pentru Sesame,
codurile MIME pot fi consultate la
http://rdf4j.org/sesame/2.7/docs/system.docbook?view#Content_types)
Metoda4: De efe e ţie ea URI
Derefere ţiere URI = u e a is i ple e tat pe se e pe t u a ăspu de la e e i HTTP
e î ea ă să a eseze u URI de e e plu â d u utilizato u a tastează u URI î a a
de ad esă URL a o se ului . Nu e istă u sta da d î e p i eşte ea ţia aşteptată se
poate etu a o e oa e , da e istă o se ie de e o a dă i p i i d a o dă i posi ile:
Abordare 1:
• Se e ul a edi e ta lie tul sp e u site sau o pagi ă We u i fo aţii utile desp e
a el lu u. Pe t u a easta, se e ul t e uie să găseas ă î p op ia ază de u oşti ţe
afir aţii e i di ă î tr-un mod standard resurse adresabile relevante pentru fiecare URI,
de exemplu:
:MichaelJackson rdfs:seeAlso <http://michaeljackson.com>.
:MichaelJackson foaf:page <http://michaeljackson.com>.
Abordare 2:
• Se e ul a etu a u fişie u afi aţii RDF desp e URI-ul soli itat, î si ta a do ită de
client. Pentru aceasta, serverul trebuie:
– să deţi ă u s ipt a e ge e ează di a i u fişie u toate afi aţiile desp e u a u it te e de
e e plu să e e ute o i te oga e DESCRIBE i te ă pe t u URI-ul solicitat)
– să i iţieze o negociere HTTP p i a e să de idă si ta a î a e să ofe e ăspu sul şi u doa si ta a,
se pot ofe i şi opţiu i legate de li ă, set de a a te e o i alte opţiu i dispo i ile î a tetul HTTP
În cadrul mecanismului de derefere ţiere URI, se e ul t e uie să de idă u doa CE să ăspu dă, i şi î e FORMĂ
si ta ă, li ă, set de a a te e . Î fu ţie de u se ia de izia, a e tipu ile de ego ie e:
A. Negociere pe ază de o ţi ut, cu decizia clientului: Se e ul etu ează afi aţii î t -u fo at default sau ăspu s
gol , î să u odul HTTP 300 (Multiple Choices). Răspu sul a o ţi e li ku i la alte fo ate dispo i ile . Clie tul a i te oga
a ele li ku i şi a t i ite o a doua e e e sp e u ul di t e ele, o fo p efe i ţei de i su t e esa e i i 2 e e i HTTP).
Exemple de linkuri ce se pot include într-u ăspu s de tip Turtle, pe t u a i di a faptul ă a eleaşi u oşti ţe su t
dispo i ile şi î alte si ta e de ât fişie ul u e t e e tual hia şi a pagi i HTML :
:MichaelJackson rdfs:seeAlso <http://expl.at/MichaelJackson/statements/xml>, <http://michaeljackson.com>.
Exemple de linkuri ce se pot include într-u ăspu s de tip HTML, pe t u a i di a faptul ă di e se si ta e RDF su t
dispo i ile la u a sau ai ulte ad ese poate fi a eeaşi ad esă, î soţită de u od MIME la a e ad esa poate ăspu de u
si ta a do ită :
<link rel="alternate" type="application/rdf+xml" href="http://expl.at/MichaelJackson/statements"/>
<link rel="alternate" type="application/x-trig" href="http://expl.at/MichaelJackson/statements"/>
12
Tipuri de negociere HTTP
B. Nego iere pe ază de protocol, cu decizia clientului: Serverul ăspu de cu codul HTTP 303 (See Other) î soţit de â pul
de antet HTTP Location p i a e i di ă o listă u ad ese u de su t ofe ite fo ate alternative.
Clientul o sultă lista di a tetul HTTP, apoi i iţiază o a doua e e e sp e u a di ad esele di listă.
C. Negociere cu decizia serverului: Clie tul spe ifi ă de la u î eput fo atul p efe at, folosi d â pu ile de a tet HTTP
Accept (Accept, Accept-Language, Accept-Charset etc.), plus parametrul q pentru prioritizare. Exemplu de antet HTTP:
13
Ate ţie, de efe e ţie ea e afe tată de
tipul de URI
Varianta1: Se a esează u URI de tip slash
• P esupu e ă esu sa soli itată a e ide tifi ato ul http://expl.at/George
• Mai multe URL-uri se pot p egăti p i p elu gi ea sa, pe t u di e se fo ate dispo i ile:
http://expl.at/George/html, http://expl.at/George/rdf, etc.
A elaşi URI a oferi a es la ai ulte URL-uri
14
…pagini HTML semantice…
Documentaţie:
Microformate: http://microformats.org/
Microdate: https://www.w3.org/TR/microdata/
Terminologia Schema.org: http://schema.org/
RDFa: http://www.w3.org/TR/xhtml-rdfa-primer/
JSON-LD: http://json-ld.org/
1
Ce sunt paginile HTML semantice?
• E vorba de acele pagini Web care au afirmaţii î glo ate dire t î odul lor sursă.
– Clie ţii u au e oie de a es la aza de u oşti ţe, i pot e trage u oşti ţe dire t di odul sursă
al paginii
– Progra ele are asigură e tra ţia poartă u ele de distiller sau gleaner sau, în mod generic, parser
• Beneficii: afir aţiile u afe tează odul î are se ede pagi a HTML, dar "des riu"
lu rurile e ţio ate î a easta e e tual şi altele, e e ţio ate
– Un vizitator uman va vedea o pagină o iş uită, preze tată î ro ser
– Un "agent software" (clientul unei cereri HTTP, un add-o de ro ser, o apli aţie o ilă, u otor
de ăutare a edea afir aţii despre lu rurile e ţio ate î pagi ă
– Motoarele de ăutare se azează pe a eastă teh i ă pe tru a î ţelege "despre e" este o pagi ă
Web (=> e vorba deci despre "SEO semantic")
[a :Movie; :name "Maleficent" :aggregateRating [a :AggregateRating; :ratingValue 7.0; :bestRating 10; :ratingCount 242302]].
<div itemtype="http://Schema.org/Movie" itemscope="itemscope">
Afir aţii extrase <h1 itemprop="name">Maleficent</h1>
("distilate") <div itemtype="http://Schema.org/AggregateRating" itemprop="aggregateRating">
din cod HTML, având <span itemprop="ratingValue">7.0</span>
/
ca su ie t pagi a ure tă <span itemprop="bestRating">10</span>
<span itemprop="ratingCount">242,320</span>
</div>
</div>
Acest cod HTML este prezent în pagina Maleficent, asigurând simultan
afişarea (prin CSS) şi des rierea se ifi aţiei pri alorile itemprop, De u irile proprietăţilor
recunoscute de Google) sunt preluate din
terminologia Schema.org
A ordarea rudi e tară: glea i g
Principiu: reatorul u ui site We î ţelege i for aţia pe are a dorit să o
prezi te şi poate oferi î preu ă u site-ul şi u o ertor "glea er" are
poate ge era afir aţii RDF di di erse stru turi î tâl ite î fişierele site-ului.
Exemplu:
Presupu e ă î tr-o pagi ă a site-ului avem codul HTML al unui tabel:
<table>
<th><td>ID</td><td>Name</td><td>Price</td></th>
<tr><td>P1</td><td>TV set</td><td>1000</td></tr>
<tr><td>P2</td><td>Mouse</td><td>10</td></tr>
</table>
Se poate construi un gleaner (o transformare XSLT) pe ur ătoarele pri ipii:
• "Cheile primare" de pe coloana ID devin subiecte
• Numele coloanelor devin proprietăţi
• Restul datelor devine obiecte
• Se a ge era şi u prefi o e a il, pe aza adresei site-ului
Rezultat:
@prefix : <http://expl.at#>.
:P1 :Name "TV set"; :Price 1000 . Tra sfor ări si ilare se pot o epe şi
:P2 :Name "Mouse"; :P2 :Price 10 . • pe tru stru turi XML de ex., atri utele pot de e i proprietăţi ale
ar atorului pări te sau ale u ui ID ,
• pe tru stru turi HTML de alte tipuri o i aţii de DIV-uri, SPAN-uri)
A ordarea rudi e tară: glea i g
Neaju sul a ordării este ă gleanerul nu e reutilizabil – se reează doar pe tru stru turi de tag-uri
existente în site-ul respe ti pro a il u şi î altele! . Di a est oti :
• glea erul tre uie pu li at u de a pe site şi o e tat la do u e tele pe are le poate o erti pri
aşa-numitele linkuri GRDDL
• clie ţii or tre ui să ai ă apa itatea de a e e uta tra sfor area
Exemplu de link GRDDL inclus într-o pagi ă HTML pe tru a i di a spre glea erul XSLT pregătit pe tru a
e trage afir aţii di a easta:
<head>
<link rel="profile" href=" http://www.w3.org/2003/g/data-view" />
<link rel="transformation" href="http://myserver.com/myRDFgleaner.xsl" />
</head>
Totuşi, CLASS poate fi folosit şi î a se ţa stilurilor CSS! Valoarea lui CLASS poate i di a proprietăţile lu rurilor despre are
se or eşte î pagi ă:
7
Microformate
U izitator u a a edea î ro ser i for aţia:
@prefix : <http://www.w3.org/2006/vcard/>
[a :org ; *Adresa la care e disponibil convertorul se include în pagina
fn "ABC Inc. "; HTML tot prin linkuri GRDDL.
"Profilul" (identificatorul URI al terminologiei folosite) se ia de
:url <http://www.ABCinc.net>;
pe site-ul unde sunt centralizate toate microformatele:
:adr [:type :work; http://microformats.org/wiki/profile-uris
:street-addresss " 160 Brunnerstr. ";
:locality :Wien;
:postal-code " 1210";
:country-name " Austria "];
:tel [:type :work;
:value "+43-650-289-4040" ];
:email <mailto:info@abc.net> ]
Microformate
Add-on-ul (de browser) Operator extrage
automat dintr-o astfel de pagi ă datele de o ta t
şi le oferă spre exportare î Outlook
Aşadar:
– Paginile despre alte persoane cu numele "Bara k O a a" tre uie o ligatoriu să spe ifi e propriul ITEMID pe tru a nu
primi identificatorul existent în Google
– Google poate e ita o fuzia e a i â d şi alte proprietăţi e ţio ate î pagi ă de ât u ele proprietăţi heie are,
combinate cu numele, ar putea clarifica identitatea: un link spre site-ul ofi ial al lui O a a, e ţio area soţiei, a
profesiei etc.)
Output RDF:
@prefix x: <http://expl.at#>.
x:Shakespeare x:hasPortrait <Shakespeare.jpg> ;
x:hasWikiPage <http://en.wikipedia.org/wiki/William_Shakespeare>;
x:bornIn x:Stratford
x:wrote x:Tempest.
19
RDFa:
gruparea afir aţiilor
Afir aţii u a elaşi su ie t Shakespeare :
<body prefix="x: http://expl.at#">
……………….
<div about="x:Shakespeare" property="x:hasFirstName" content="William">
<img rel="x:hasPortrait" src="Shakespeare.jpg"/>
<a rel="x:hasWikiPage" href="http://en.wikipedia.org/wiki/William_Shakespeare">
click here to read about Shakespeare</a>
<span rel="x:bornIn" resource="x:Stratford"></span>
<span rel="x:wrote"><span about="x:Tempest"></span></span>
</div>
Afir aţii u a elaşi su ie t A a şi proprietate hasChildre :
<body prefix="x: http://expl.at#">
………………
<div about="x:Anna" rel="x:hasChildren">
<span resource="x:Peter"></span>
<span resource="x:George"></span>
</div>
20
RDFa:
prefixe multiple,
valori de diferite tipuri sau în diferite limbi
<body prefix="x: http://expl.at# xsd: http://www.w3.org/XMLSchema#">
spaţii
…………
<span about="x:Andrew" rel="x:hasBrother" resource="x:Peter" />
<span about="x:Andrew" property="x:hasAge" content="20" datatype="xsd:integer" />
<span about="x:England" property="x:hasName" content="England" xml:lang="en" />
………..
Output:
21
RDFa:
cod HTML/XML ca obiecte RDF
Dacă o aloare de tip stri g tre uie să o ţi ă şi od HTML sau XML i se apli ă tipul
rdf:XMLLiteral (altfel se a păstra doar te tul, u şi ar atorii! :
Output:
@prefix x: <http://expl.at#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
x:Anna x:hasName "<strong>Anna Smith</strong>"^^rdf:XMLLiteral .
22
RDFa:
i ersarea relaţiilor
Se sul u ei relaţii u o resursă eadresa ilă poate fi i ser at u REV (în loc de REL) :
<body prefi =" : http://e pl.at#">……………….
<div about="x:Peter" rel="x:hasParent" rev="x:hasChild" resource="x:George"></div>
Output:
@prefix x: <http://expl.at#> .
x:George x:hasChild x:Peter .
x:Peter x:hasParent x:George .
Se sul u ei relaţii u o resursă adresa ilă se i ersează da ă lipseşte ABOUT (adresa din SRC sau HREF
devine subiect!) :
<body prefi =" : http://e pl.at#">……………….
<img src="Shakespeare.jpg" property="x:description" content="a portrait of Shakespeare"/>
<a href="http://en.wikipedia.org/wiki/William_Shakespeare" property="x:description" content="a
wikipedia page about Shakespeare">click here...</a>
Output:
@prefix x: <http://expl.at#> .
<Shakespeare.jpg> x:description "a portrait of Shakespeare".
<http://en.wikipedia.org/wiki/William_Shakespeare> x:description "a wikipedia page about Shakespeare"
23
.
RDFa:
afir aţii î lă ţuite
Varianta 1. Î a se ţa lui ABOUT, su ie tul RDF e oşte it de la ele e tul pări te (din
precedentul ABOUT sau RESOURCE)
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter .
x:Peter x:isFatherOf x:George . 24
RDFa:
afir aţii î lă ţuite
Varia ta . Î a se ţa lui RESOURCE, obiectul RDF devi e su ie tul ur ătorului ele e t opil
(din ABOUT)
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter .
x:Peter x:isFatherOf x:George . 25
RDFa:
afir aţii î lă ţuite
Varia ta . Separare o pletă î tre su ie t, proprietate şi o ie t, evitâ d repetarea odului
o u î tre afir aţii (fu ţio ează şi u ABOUT, şi u RESOURCE):
<body prefix="x: http://expl.at#">
……………………………………
Pri a afir aţie
<div about="x:Andreea">
<div rel="x:isMotherOf">
<div about="x:Peter"> A doua afir aţie
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf x:Peter . 26
x:Peter x:isFatherOf x:George .
RDFa:
afir aţii î lă ţuite u oduri a o i e
Se poate apli a ori are di varia tele pre ede te, da ă eli i ă odul o siderat a o i
(de i da ă ave două REL fără ABOUT sau RESOURCE între ele)
Varianta 1:
<body prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea">
<div rel="x:isMotherOf">
<span rel="x:isFatherOf" resource="x:George" />
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .
27
RDFa:
afir aţii î lă ţuite u oduri a o i e
Varianta 2:
<html prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea" rel="x:isMotherOf">
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .
28
RDFa:
afir aţii î lă ţuite u oduri a o i e
Varianta 3:
<html prefix="x: http://expl.at#">
……………………………………
<div about="x:Andreea">
<div rel="x:isMotherOf">
<div>
<div rel="x:isFatherOf">
<span about="x:George" />
</div>
</div>
</div>
</div>
Output:
@prefix x: <http://expl.at#>.
x:Andreea x:isMotherOf [x:isFatherOf x:George] .
29
RDFa:
noduri anonime explicite
Se pot folosi şi oduri a o i e, u ide tifi atori lo ali:
<html prefix="x: http://expl.at#">
……….
<div about="_:y">
<h1 property="x:title">The Tempest</h1>
<h2 property="x:author">William Shakespeare</h2>
</div>
Output:
@prefix x: <http://expl.at#>.
_:y x:title "The Tempest"; x:author "William Shakespeare" .
30
RDFa:
caz de utilizare
A e două paragrafe afişate î două siteuri:
Site1: <p> Mary lives in Wien </p>
Site2: <p> Peter is a chess champion </p>
Creatorii site-urilor ai ştiu ă Mar e a a lui Peter şi or să ofere a eastă i for aţie
otoarelor de ăutare, are ar putea fi i teresate de a eastă relaţie. Pentru asta, vor marca
paragrafele cu RDFa:
Site1:
<body vocab="http://Schema.org/" prefix="x: http://expl.at#">
<p> <span about="x:Mary" rel="parent" resource="x:Peter" property="name">Mary</span>
lives in Wien </p>
Site2:
<body vocab="http://Schema.org/" prefix="x: http://expl.at#">
<p> <span about="x:Peter" property="name">Peter</span> is a chess champion</p>
Beneficiu: Un motor de căutare a putea dete ta relaţia de fa ilie, atâta re e ât a ele site-
uri foloses a elaşi ide tifi ator pe tru i di idul o u :Peter şi a eeaşi ter i ologie de
31
proprietăţi ai i S he a.org .
Alte o ser aţii
• REL şi REV pot a ea u ele alori predefi ite, oşte ite di HTML-ul clasic:
– "stylesheet" relaţia u ei pagi i u u fişier de stiluri CSS
– "license" relaţia u u do u e t de li e ţiere
– "help" relaţia u u do u e t help
– "cite" relaţia u o sursă itată
• CONTENT are prioritate faţă de o ţi utul HTML izi il â d a ele apar la
a elaşi ele e t
• La detectarea subiectelor/obiectelor ABOUT şi RESOURCE au prioritate faţă
de SRC şi HREF
32
JSON-LD: sintaxa pentru încorporarea
de grafuri în obiecte JavaScript
Beneficii:
• Oferă o alter ati ă pe tru î glo area de afir aţii î pagi i HTML, î tr-o a ieră e u alterează odul HTML
• E e tual, se poate î i a u elelalte a ordări distilatoarele i rodata/RDFa pot genera grafuri JSON-LD care să fie
ulterior inserate în alte pagini Web sau stocate în baze de date NoSQL de tip JSON)
• Grafurile JSON-LD se pot a esa î a ieră JSON, u are ulţi progra atori su t fa iliarizaţi (de e e plu, pri si ta ă
o ie tuală de for a obiect.proprietate sau array[index] etc., adesea ai ușor de folosit de ât SPARQL sau fu țiile oferite
de di erse li rării)
• Grafurile JSON-LD se pot sto a şi gestio a u ajutorul azelor de date NoSQL de tip JSON Mo goDB, Cou hDB et .
• La ora a tuală RDFa, i rodatele şi i rofor atele u suportă gruparea afir aţiilor î "grafuri ide tifi ate", î s hi
JSON-LD le suportă
• Google Knowledge Graph oferă u ser i iu pu li de i terogare https://kgsearch.googleapis.com/v1/entities:search) ce
răspu de în format JSON-LD
Exemplu TriG:
@prefix x: <http://expl.at#>.
x:BeliefsOfMary {x:Andrew x:isBrotherOf x:Peter. x:Peter x:hasAge 20}
Echivalent JSON-LD este u arra aso iativ u se țiu i i di ate de iște eti hete heie e î ep u @ :
{ În secțiunea @context se definesc, printre
"@context":{"x":"http://expl.at#"}, altele, prefixele* (a nu se confunda cu noțiunea
"@id":"x:BeliefsOfMary", de context discutată la afirmații contextuale!)
"@graph":
[{ Un @id înainte de @graph va fi
"@id":"x:Andrew", considerat identificator de graf
"x:isBrotherOf":{"@id":"x:Peter","x:hasAge":20}
}] O secțiune @graph e un array ce include toate
} afirmațiile unui graf, de obicei grupate după33
subiecte (indicate tot cu @id)
I for ațiile grupate î se țiu ea
@context indică di erse teh i i de
abreviere a termenilor
{"@context": @base (similar cu Turtle) stabilește o adresă de
bază ce se va aplica tuturor termenilor cărora nu li
{ se aplică niciuna din celelalte tehnici de abreviere
"@base":"http://otherdomain.at/", => aici se aplică la CompanyABC
{"@context":
@base <http://otherdomain.at/>.
{
@prefix x: <http://expl.at#>.
"@base":"http://otherdomain.at/",
@prefix : <http://Schema.org/>.
"@vocab":"http://Schema.org/",
"x":"http://expl.at#",
x:Peter a :Person;
"br":{"@id":"x:isBrotherOf","@type":"@id"},
x:isBrotherOf x:George;
"name":"x:hasName"
x:hasName "Peter Smith";
},
:gender "male";
"@id":"x:Peter",
x:worksAt <CompanyABC>.
"@type":"Person",
"br":"x:George",
"name":"Peter Smith",
"gender":"male",
"x:worksAt":{"@id":"CompanyABC"}
}
35
JSON-LD:
Gruparea afirmațiilor, liste, tipuri de date
Exemplu JSON-LD:
{"@context": într-o secțiune @graph se includ afirmațiile
unui graf, grupate după subiecte (@id);
{"x":"http://expl.at#", @graph poate lipsi, caz în care secțiunea
"xsd":"http://www.w3.org/2001/XMLSchema#", @context e valabilă doar pentru primul
"x:isBrotherOf":{"@type":"@id"}, subiect!
"x:hasChildren":{"@type":"@id"}},
"@graph": când mai multe afirmații au același subiect și
[ aceeași proprietate, obiectele se enumeră într-
{"@id":"x:Peter", un array simplu
"x:isBrotherOf":["x:George","x:Anna"],
array-ul poate fi declarat ca fiind listă
"x:hasChildren":{"@list":["x:Mary","x:John"]}}, ordonată (rdf:List) cu cuvântul cheie @list
{"@id":"x:John",
"x:bornOn":{"@value":"2002-10-10","@type":"xsd:date"}}
]}
valorile simple pot primi tipuri XML Schema cu
Echivalent TriG: @type (sau coduri de limbă cu @language)
@prefix x: <http://expl.at#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
{x:Peter x:isBrotherOf x:George, x:Anna;
x:hasChildren (x:Mary x:John).
x:John x:bornOn "2002-10-10"^^xsd:date.} 36
JSON-LD:
Per ite și gruparea după o ie tul afir ației, prin
definire de relații i erse!
37
JSON-LD: noduri anonime
Exemplu JSON-LD:
{"@context":
{
"x":"http://expl.at#", Lipsa lui @id între cele două proprietăți va
"xsd":"http://www.w3.org/2001/XMLSchema#", crea un nod anonim
"x:isSonOf":{"@type":"@id"}
},
"@id":"x:Peter", Un obiect prefixat cu _: la o proprietate
pentru care în @context s-a declarat tipul
"x:isFatherOf":{"x:hasAge":20}, @id va deveni nod anonim
"x:isSonOf":"_:a",
"x:livesAt":{"@id":"_:b","x:city":"Wien","x:street":"Brunnerstr."}
} Un subiect care e introdus cu @id și
Echivalent Turtle: totodată e prefixat cu _: devine nod
anonim
@prefix x: <http://expl.at#>.
x:Peter x:isFatherOf [x:hasAge 20];
x:isSonOf _:a;
x:livesAt [x:city "Wien; x:street "Brunnerstr."]. 38
JSON-LD:
u eori dori să i lude arra -uri asociative ale
ăror hei să u fie i terpretate a ter e i RDF
Exemplu JSON-LD:
{ "@context": Dacă o proprietate ia ca valoare un array
{"x": "http://expl.at#", asociativ (dicționar), iar etichetele (cheile) acelui
"x:hasSubsidiaries": {"@container": "@index"} array dorim să fie ignorate la conversia în RDF,
declarăm proprietatea ca având valori de tip
}, "@container":"@index"
"@id": "x:CompanyABC",
"x:hasSubsidiaries": { Cheile "france", "austria" nu vor mai deveni
"france": {"@id": "x:ABCFrance", proprietăți RDF, dar vor fi totuși utile
"x:address": "DeGaulle 22, Paris"}, programatorilor, care vor putea crea cicluri
FOR de tipul
"austria": {"@id": "x:ABCAustria",
for i in (obiect["x:hasSubsidiaries"])
"x:address": "Brunner Strasse 21, Wien"} proceseaza(i["x:address])
} sau extrageri de date prin sintaxa
} obiect["x:hasSubsidiaries"].france
DATE
"James Cameron" 11 vizibile
:vinde doar în
:Amazon :DVD1
:JC IMDB
:DVD2
"Arnold
DATE Schwarzenegger" :AS
vizi ile şi î
IMDB şi î :LH
237 mil
Amazon
:Avatar
"Linda Hamilton" :Predator
:Terminator
6.4 mil
CUNOŞTIN E: "Predator"
18 mil
graf o u e oferă "des rieri"
pentru date vizibile în mai multe site-uri "Terminator"
• dpdv tehnic "graful comun" va fi distribuit "Avatar"
între mai multe servere
• por iu i din graf pot fi înglobate în HTML
Stru tura i for aţiei î Se a ti We
Regulile pot fi i ple e tate a i terogări CONSTRUCT sau INSERT WHERE
sau sto ate per a e t î aza de u oşti ţe a io e, li aje pe tru reguli
<http://amazon.com>
În schimb graful poate
reşte î "de sitate", 10
pri ge erare de relaţii
noi (cu ajutorul
regulilor) "James Cameron" 11
:Amazon :vinde
:JC :DVD1
:DVD2
"Arnold
Schwarzenegger" :AS
:LH
237 mil
:Avatar
"Linda Hamilton" :Predator
:Terminator
6.4 mil
"Predator"
18 mil ....
"Terminator"
Datele sunt noduri terminale!
"Avatar"
u se pot fa e afir aţii are
au valori simple ca subiecte)
Reguli
REGULILE ge erează afir ații noi ("implicite", "concluzii") din afir ații existente ("explicite","premise"),
per iţâ d automatizarea dedu ţiilor logice. Beneficii:
• Î ogăţirea auto ată a bazelor de u oşti ţe;
• Detectarea auto ată a o tradi ţiilor între afir aţii.
Concluzie
relație ouă
:isMotherOf :locatedIn
REGULILE u ge erează doar relații oi î tre oduri e iste te, i pot ge era ori e afir ații u oduri oi, hiar
și afir ații u oduri a o i e sau afir ații o plet de o e tate de ele e iste te :
Concluzii
afir ații oi,
cu noduri noi)
a :Movie a
:Terminator :Batman
:directedBy :directedBy
a :Director a
:JamesCameron :TimBurton 4
Reguli
:relatieContradictorie
REGULILE pot să caute și să marcheze o tradi ții
în vederea i terogării și a alizării lor ulterioare:
:motherOf
:Ana :Mary
For ă rudi e tară de ar are:
da ă e istă ai ulte relații î tre A a și Mar , u e lar :motherOf
care se contrazice cu care)
_:y
_:x
Notă: De ulte ori o tradi țiile u se ar hează, i doar se afișează î esaje de eroare
Cum definim reguli?
Regulile se pot defini în mai multe moduri, dintre care cele mai uzuale sunt (folosim primul exemplu din slide-urile
precedente, cu rudele din Viena):
Avantaj: Nu e esită i stalarea u ui otor i fere ţial "reaso er" , e sufi ie t li ajul SPARQL
:isMotherOf :locatedIn
:Andrew :Wien
:livesIn
:Andrew :Wien
:livesIn
În felul acesta, apar premise lipsite de concluzie! Motoarele i fere țiale evită a este ris uri deoare e ți
:Mar :hasRelativesI :Austria lipsește evide ța regulilor, a afir ațiilor ge erate și le pot re al ula
Tre uie ree e utată regula la fie are odifi are î aza de u oști țe
Reguli
Varianta B. Reguli stocate (încorporate în baza de u oşti e și exe utate de otoare i fere țiale)
B1. Axiome (=afir aţii RDF s rise u ter e i sta dardizaţi, avâ d a su ie t o lasă sau o proprietate .
A elași e e plu, s ris a a io ă u ter i ologia OWL a se o serva ă a io ele su t tot afir aţii RDF :
:hasRelativeIn owl:propertyChainAxiom (:isMotherOf :livesIn :locatedIn).
B2. Limbaje dedicate pentru stocarea de reguli (SWRL, SPIN, RIF, RuleML, Horst etc.)
A elași e e plu, scris în limbajul SPIN a se o serva ă regulile SPIN su t tot afir aţii RDF, structurate cu ajutorul
nodurilor anonime):
[a sp:Construct;
sp:templates
([sp:subject spin:_x; sp:predicate :isRelativeOf sp:object spin:_y]);
sp:where
([a sp:TriplePath;
sp:subject spin:_x;
sp:path [a sp:SeqPath; sp:path1 :isMotherOf; sp:path2 :livesIn; sp:path3 :locatedIn];
sp:object spin:_y])]
A elași e e plu, scris în sintaxa Horst u ai e o pati ilă u RDF, e esită u parser separat :
X <:isMotherOf> A
A <:livesIn> B
B <:locatedIn> Y
----------------------------
X <:hasRelativeIn> Y
Reguli
Avantajele regulilor stocate:
• Concluziile generate se salvează auto at î aza de u oşti ţe
• Regulile stocate în format RDF (axiome, SPIN) pot fi la rândul lor interogate sau transferate între servere
diferite, folosi d a eleași teh i i RDF
• Regulile sto ate se ree e ută auto at de âte ori e a e i țată o siste ța ge erală a o luziilor
generate:
– La ştergeri de afir aţii, să u ră â ă afir aţii ge erate fără pre isele di are au fost ge erate
– La adăugări, să u apară pre ise oi fără a ge era și o luziile e se pot ge era di a estea
*la i terogări, o luziile ge erate refle tă doar afir aţiile preze te î o e tul i terogării!
Vocabularul:
• Poate fi stocat separat de restul bazei de u oști țe (scopul e să ofere o terminologie
pu li ă, reutiliza ilă și de ătre alții
• Poate fi un vocabular existent pe care decidem să îl adoptă (Schema.org, FOAF)
• Poate fi un vocabular creat de noi, caz în care:
• are forma unei ole ții de afir ații despre clase și proprietăți (axiome)
• axiomele se construiesc cu termeni sta dardizați din RDF/S sau OWL da ă se
folosește OWL, vocabularul se u ește "ontologie")
• axiomele se pot folosi pentru a genera automat afir ații noi (inclusiv afir ații de
tip "X a Y", dar nu numai)
Proprietăţile se Clasele se
ierarhizează ( u ierarhizează (cu
rdfs:subPropertyOf) rdfs:subClassOf)
Vocabular/Ontologie
= descrieri de clase + proprietă i
:aLucratLa
:Persoana
(folosind ter e i sta dardizaţi)
:Regizor
<http://amazon.com>
10
:Actor
"James Cameron" 11
:Amazon :vinde
:aJucatIn :JC :DVD1
:DVD2
"Arnold
Schwarzenegger" :AS
:aRegizat
:LH
237 mil
:Avatar
"Linda Hamilton" :Predator
:Terminator
6.4 mil
:Film
"Predator"
Proprietăţile se o e tează la clase 18 mil
(cu rdfs:domain şi rdfs:range) pentru a "Terminator"
i di a e SUNT lu rurile e parti ipă la "Avatar"
a ele relaţii
* u uitaţi ă proprietăţile pot deve i
su ie te î u ele afir aţii
Prefix pentru
Exemplu
i sta țe @prefix : <http://expl.at#>.
Prefix pentru @prefix voc: <http://expl.at/vocabularul-meu#>.
ter i ologia ou reată @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
Prefixe standard @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Anna a voc:Femeie .
Baza de
Fapte :Andrew a voc:Persoana . cunoştin e
(au ca subiect :Anna voc:mamaLui :Andrew .
i sta țe voc:Femeie a rdfs:Class.
voc:Persoana a rdfs:Class. Vocabular
Axiome voc:mamaLui a rdf:Property. (axiome cu termeni Ontologie
RDF/S) (axiome cu termeni
(au ca subiect voc:mamaLui rdfs:domain voc:Femeie.
clase sau RDF/S+OWL)
voc:mamaLui rdfs:range voc:Persoana.
proprietăți
voc:mamaLui a owl:AsymmetricProperty .
rdfs:Class owl:AsymmetricProperty
a
a
a
rdf:Property
:Femeie :Persoana
rdfs:domain
a a
rdfs:range
rdfs:domain
a
:mamaLui
:Anna :Andrew
Preze ța afir ațiilor X a Y permit calculatorului să î țeleagă e su t lu rurile despre are se vor ește î aza de u oști țe și
asigură răspu suri pe tru u ele i terogări fundamentale:
• Retur ează resursele despre are u se știe e su t î tr-o ază de u oști țe o pletă, u ar tre ui să ai ă răspu s
SELECT ?x WHERE {?x a ?y. FILTER (!BOUND(?y))}
Răspu s pe e e plul ostru: rdfs:Class, owl:AsymmetricProperty, rdf:Property
*pe tru a a operi și ter e ii sta dard, otoarele i fere țiale pot genera afir ații de tipul ?x a rdfs:Resource pentru orice (cu alte
uvi te, e e ută a io a fu da e tală "ORICE este o resursă"); pentru a exclude astfel de răspu suri i pli ite și vagi , refor ulă
interogarea astfel:
• Retur ează resursele despre are u se știe alt eva de ât ă su t resurse ai pre is: despre are u e istă afir ații ? a ? î
are ? să fie alt eva de ât rdfs:Resour e :
SELECT ?x WHERE {?x a ?y. FILTER NOT EXISTS {?x a ?y. FILTER (?y!=rdfs:Resource))}
Cu fa e să ave afir ația
X a Y pentru orice X
• Abordare 1. I lude a ual astfel de afir ații î aza de u oști țe, î preu ă u toate elelalte afir ații
Poate fi un proces anevoios, cu risc de erori de tastare u URI tastat greșit va de o e ta afir ații! sau o tradi ții
logice da ă de lară pe tru a elași i divid ai ulte tipuri o tradi torii
• Abordare 2. E e ută o regulă su for ă de i terogare e e plu: Da ă X este a a uiva, atu i X este fe eie)
2a.Regula poate fi spe ifi ă pe tru o proprietate az î are tre uie e e utată separat pe tru alte proprietăți
2 .Regula poate e efi ia de preze ța a io elor, az î are e apli a ilă și altor proprietăți e au rdfs:do ai .
• Abordare 3. Apelă la u otor i fere țial are să realizeze dedu ții auto ate pe aza a io elor vezi și
ava tajele dis utate față de regulile î orporate î i terogări . U otor i fere țial i terpretează fie are a io ă
a pe o regulă și o e e ută o for sta dardelor RDF/S și OWL are prevăd și ge erarea u or afir ații "implicite",
pe tru a gara ta o pletitudi ea azei de u oști țe .
:Anna a :Femeie.
voc:mamaLui rdfs:domain voc:Femeie. Motor inferențial RDFS
:Anna voc:mamaLui :Andrew. :Anna a rdfs:Resource.
:Andrew a rdfs:Resource.
Afir ații i pli ite
:Femeie a rdfs:Resource, rdfs:Class.
voc:mamaLui a rdfs:Resource, rdf:Property.
A elași e e plu, a u e efi ii d de
u otor i fere țial RDFS
Baza de u oști țe di e e plu poate fi ult redusă da ă lu ră u u otor
i fere țial – acesta va putea genera o parte din exemplul discutat prin dedu ții
automatizate:
:Anna a rdfs:Resource.
:Andrew a rdfs:Resource.
voc:Femeie a rdfs:Resource.
voc:Persoana a rdfs:Resource.
voc:mamaLui a rdfs:Resource. Co se i țele axio ei fu da e tale:
rdfs:Class a rdfs:Resource. Ori e este o resursă,
rdf:Property a rdfs:Resource. inclusiv termenii standard,
owl:AsymmetricProperty a rdfs:Resource. inclusiv ulți ea tuturor resurselor
rdfs:domain a rdfs:Resource.
rdfs:range a rdfs:Resource.
rdf:type a rdfs:Resource.
rdfs:Resource a rdfs:Resource.
Cu oști țe i pli ite
A ia după e afir ațiile i pli ite su t i luse ave u răspu s la î tre area "Ce
este X?" pentru orice X:
• U otor i fere țial va ge era afir ațiile i pli ite, dar ele pot fi i luse și î
a se ța u ui otor, pe ăile discutate (manual sau prin reguli încorporate în
i terogări
• Dacă e ază doar pe afir ațiile i pli ite, răspu sul la î tre area "Ce este
X?" poate fi prea vag pentru a fi util
• rdfs:Resour e e u răspu s vag, ajută doar la i terogări ge eraliste: "Returnează lista tuturor
ter e ilor folosiți î aza de u oști țe (URI și oduri a o i e "
• Pe tru ori e X ar tre ui să e iste ă ar u răspu s în plus față de rdfs:Resour e la a eastă
întrebare
• Pentru termenii standard, motoarele inferențiale ai ge erează ă ar rdf:Propert sau rdfs:Class
• Pe tru ori e i divid i sta ță reat de oi ar tre ui să e iste ă ar u răspu s care nu e un termen standard (deci o
lasă defi ită de oi, î adrul propriului ostru vo a ular
• Pe tru lasele reate de oi e a epta il a si gurele răspu suri să fie rdfs:Class și rdfs:Resour e
• Pe tru proprietăți e a epta il a si gurele răspu suri să fie rdf:Propert și rdfs:Resour e. Pe tru o proprietate
o tează ai ult e tipuri de i divizi poate o e ta de i rdfs:do ai și rdfs:ra ge, î tradu ere "domeniu" și
"codomeniu")
• Ori e proprietate reată de oi tre uie să ai ă lar spe ifi at do e iul și odo e iul, și ă ar u ul di tre a estea
tre uie să fie diferit de rdfs:Resour e, altfel proprietatea e prea vagă u va per ite dedu erea tipului i divizilor e
parti ipă la a ea relație
A elași e e plu, a u e efi ii d de
u otor i fere țial RDFS
Baza de u oști țe di e e plu poate fi ult redusă da ă lu ră u u otor
i fere țial – a esta va putea ge era o parte di e e plul dis utat pri dedu ții
automatizate:
Principiu general: Dete tarea o tradi țiilor se azează pe terminologia OWL - unele axiome cu termeni
OWL sunt i terpretate a și o strâ geri ter e ii RDF/S nu permit definire de constrângeri!)
1
rdfs:Resource
= ulți ea tuturor resurselor "clasa universală"), conți e ori e URI, od a o i sau
aloare si plă de ori e tip
Notă: ter i ologia OWL oferă și u si o i , ter e ul owl:Thing
Declarațiile de resurse su t afir ații agi, de utilitate redusă. Totuși, ele adu u ele
beneficii:
• Gara tează o pletitudi ea azei de u oști țe e istă ă ar u răspu s la
întrebarea Ce este X? pe tru ori e resursă e țio ată î aza de u oști țe
• Per it i terogarea u ei liste o plete a resurselor folosite î aza de u oști țe
*nu și pe tru valorile si ple, dar u pe tru ă a estea u ar fi resurse, i pe tru ă u pot
apare a su ie te î afir ații! 2
rdf:Property
= ulți ea tuturor proprietăților relații+atri ute
Din:
:Anna :isMotherOf :Peter.
...se va genera:
:isMotherOf a rdf:Property.
(ori e ter e di ijlo ul u ei afir aţii e o proprietate)
Din:
:Anna a :Human. (sau :Anna rdf:type :Human.)
...se va genera:
:Human a rdfs:Class. (sau :Human rdf:type rdfs:Class.)
(ori e o ie t al relaţiei rdf:type e o lasă)
4
rdfs:subClassOf
= relația de i luziu e î tre ulți i lase
Notă: ai ulte astfel de relații vor o strui o ierarhie de lase taxo o ie
Din:
:Andrew a :Man.
:Man rdfs:subClassOf :Human.
:Human rdfs:subClassOf :Being.
…se a ge era:
:Andrew a :Human, :Being.
o i sta ță pri ește toate tipurile pozițio ate î ierarhie deasupra
clasei sale declarate)
:Man rdfs:subClassOf :Being.
(i luziu ea e tra zitivă
5
Propagarea tipului în sus pe ierarhie
î a elași ti p, se vor dedu e relațiile
de incluziune indirecte, ce reies din
tranzitivitate
da ă o i sta ță pri ește u tip,
pentru ea se vor deduce toate tipurile rdfs:Resource
de deasupra în ierarhie
rdfs:subClassOf
:Being
rdf:type
rdfs:subClassOf
rdf:type rdfs:subClassOf
rdf:type
rdfs:subClassOf
rdfs:subClassOf rdfs:subClassOf
:Man
6
Incluziunea între mai multe clase duce
la o ierarhie (taxonomie) Mulţi ea
Mulți e de reu iu e
i trodusă forțat pe tru a rdfs:Resource / owl:Thing
u iversală
unifica alte clase)
Mulți e de
i terse ţie u ai :Person :Object :Location
multe supraclase)
:EmployedStudent
rdf:type
:Admin :Master :Bachelor
:Teaching :L201
rdf:type
:Andrew
rdf:type
owl:Nothing
Mulţi ea vidă o eptul
:Alain
există doar î OWL!
I sta ță "clasificată" 7
(primește a "tip" toate lasele de deasupra elei î are e î adrată i ițial
Eroare fre e tă: ierarhia plată
Ie a hie plată = o ierarhie î are fie are lasă e o e tată doar la ulți ea u i ersală și ulți ea
idă, fără a a ea relații u alte lase relațiile u rdfs:Resour e și u o l:Nothi g ori u se ge erează
auto at de ătre otorul i fere țial, pe tru ori e lasă
Neajuns: Nu a per ite dedu ții utile doar dedu ții de tipul X a rdfs:Resource)
rdfs:Resource / owl:Thing
owl:Nothing
U eori u a e e hi alare, dar pute a ea totuși relații î tre o epte î rudite î tr-
u fel sau altul, defi ite de orga izații diferite:
• Relaţia poate fi reată și î tr-un singur sens
• Alter ati , se pot rea lase de reu iu e sau i terse ţie (vezi slideul urmator) 10
O tologia de ali iere poate o ți e
apări ai sofisti ate de ât
e hi alările
Mulțime de reuniune
:Employee
rdfs:subClassOf rdfs:subClassOf
:Researcher alt:Manager
rdfs:subClassOf
rdfs:subClassOf
:ManagingResearcher
Organizaţia A Organizaţia B
Mulțime de intersecție
11
rdfs:subPropertyOf
= relația de ge eralizare a proprietăților, pri are o proprietate e
de larată a fii d o ersiu e ai agă a alteia
Notă: a și rdfs:su ClassOf, per ite o struirea de ierarhii de proprietăți
Din:
:JamesCameron :directed :Terminator.
:directed rdfs:subPropertyOf :created.
:created rdfs:subPropertyOf :workedOn.
…se a ge era:
:JamesCameron :created :Terminator.
:JamesCameron :workedOn :Terminator.
se dedu ai ulte relații î tre a eiași i divizi
:directed rdfs:subPropertyOf :workedOn.
(şi ge eralizarea proprietăţilor e tra zitivă)
12
Ge eralizarea proprietăţilor
(relația universală care
owl:topObjectProperty "conectează toate lucrurile")
rdfs:subPropertyOf
:workedOn rdfs:subPropertyOf
rdfs:subPropertyOf rdfs:subPropertyOf
rdfs:subPropertyOf
:created
rdfs:subPropertyOf
Ca i incluziunea de clase,
:directed
:JamesCameron :Terminator i generalizarea proprietăților
e tranzitivă
Principala utilizare e deducerea
de relații multiple (tot mai vagi)
între aceia i indivizi
13
Ge eralizarea proprietăţilor du e la
două ierarhii de proprietăţi:
u a pe tru relaţii, u a pe tru atri ute
(pentru a fi taxonomii complete, ambele se pot închide cu termeni OWL)
Relația universală Atributul universal
(există între orice resurse) (îl are oricine, poate lua orice valoare)
owl:topObjectProperty owl:topDataProperty
:RelativeTo :worksWith
:knownAs
:hasIncome
:ParentOf
:BossOf :Coworker :hasName :hasNickname
:MarriedTo
"Andy"
rdfs:subPropertyOf
:knows alt:isAcquaintedTo
rdfs:subPropertyOf
Organizaţia A Organizaţia B
15
Ca și la lase, o tologiile de ali iere u
o ți eapărat e hi alări
Relație de reuniune
:citizenInSameCity
rdfs:subPropertyOf rdfs:subPropertyOf
:livesNear alt:Neighbour
rdfs:subPropertyOf
rdfs:subPropertyOf
:livesInTheSameBuildingWith Organizaţia B
Organizaţia A
Relație de intersecție
rdfs:domain, rdfs:range
rdfs:domain = do e iul u ei relații tipul pe are îl or pri i su ie tele
rdfs:range = odo e iul u ei relații tipul pe are îl or pri i o ie tele
Exemplu:
:directed rdfs:domain :Director; rdfs:range :Movie.
:locatedIn owl:Nothing
owl:Nothing
rdfs:label, rdfs:comment,
rdfs:isDefinedBy, rdfs:seeAlso
rdfs:label = ataşarea u ei alori de tip stri g u rol de de u ire/titlu/et . eti hetă are să fie i terogată și
î orporată î i terfața apli ațiilor lie t:
:Anna rdfs:label "Smith Anna".
U eori dori să disti ge î tre ai ulte astfel de proprietăți u e, titlu, pore lă et . de e e plu pe tru a le
da diferite do e ii/ odo e ii e : titlurile să fie folosite doar la fil e/ ărți, u ele doar la fii țe . Î a est az,
a ele proprietăți or fi de larate a su proprietăți ale lui rdfs:la el
:titlu rdfs:subPropertyOf rdfs:label; rdfs:domain :CreatieArtistica.
rdfs:seeAlso = atașarea de URL-uri ale unor site-uri We sau aze de u oști țe rele a te pe tru resursa-subiect
se pot î orpora a li kuri î i terfața apli ațiilor lie t :
:MichaelJackson rdfs:seeAlso <http://en.wikipedia.org/wiki/Michaeljackson>;
rdfs:seeAlso < http://dbpedia.org/resource/Michael_Jackson>.
rdfs:isDefinedBy = indicarea locului (de obicei un vocabular/ontologie) în care s-a descris în mod definitoriu
se ifi ația u ui ter e de o i ei o proprietate sau o lasă :
:eSotiaLui rdfs:isDefinedBy :vocabularPentruRelatiiSociale.
Se folosește rdfs:isDefinedBy și pe tru a i di a site-ul ofi ial al u ei i sta țe î ti p e u rdfs:seeAlso se de lară
diverse siteuri "secundare")...
:MichaelJackson rdfs:isDefinedBy <http://www.michaeljackson.com>.
… sau adresa URL la care se pot o ți e afir ații RDF u proprietăți defi itorii, de e . pagina de pe DBPedia:
:MichaelJackson rdfs:isDefinedBy <http://dbpedia.org/page/Michael_Jackson>.
20
rdf:value
= i di ă "valoarea principală" aloarea ea ai pro a il să fie i terogată de lie ți atu i â d a e relații
complexe (ce grupează ai ulte proprietăți/ alori
Reminder: Relațiile n-are (complexe, sau "cu aritate mare") apar atunci când la o relație parti ipă mai multe valori
sau i sta țe conectate printr-un nod anonim. În astfel de cazuri, dorim uneori să i di ă ă una dintre valori
reprezi tă "valoarea pri ipală" (mai i porta tă în calcule) în timp ce restul au doar rol de a î ogăți se ifi ația
valorii principale (eventual pentru filtre).
Î pri ul az, lie ții tre uie să o sulte o a ularul lista proprietăților, do e iile și odo e iile pe tru a î țelege
disti ția î tre u eroasele proprietăți și pe tru a afla di are pot să e tragă otele sau te peraturile.
În al doilea caz:
• Vo a ularul azei de u oști țe e mai redus u ărul de proprietăți are tre uie defi ite u do e iu și
codomeniu e mai mic)
• Clie ții pot folosi i terogări u î lă țuiri :grades/rdf: alue, : eather/rdf: alue pe tru toate relațiile -are.
Tre uie doar să afle are relații foloses a eastă stru tură, aspe t pe tru are e istă u ele pra ti i uzuale:
– Clie ții pot folosi i terogări preala ile pe tru a erifi a ai î tâi u de s-a folosit rdf:value (cu ASK sau clauza
OPTIONAL)
– Baza de u oști țe poate i lude o lasă pe tru toate odurile a o i e e î depli es a eastă fu ție sau o
supraproprietate pe tru toate relațiile legate la u astfel de od a o i
21
rdf:value
Într-o altă aria tă (mai puți efi ie tă putem asigura atât disti ția între proprietățile i ițiale cât și marcarea
acelor proprietăți care trebuie să indice "valoarea principală":
Mai putem folosi această teh i ă pe tru afir ații î are tre uie eapărat a su ie tul să fie o aloare si plă.
Deoarece acest lucru nu e permis în RDF, vom folosi un nod anonim pe post de subiect, conectând la acesta
aloarea si plă e e tual și alte proprietăți rele a te, pre u tipul XML S he a al a esteia :
[rdf:value 7] a :NrPrim. sau [] rdf:value 7; a :NrPrim. sau [rdf:value 7; a :NrPrim] este u u ăr pri
[rdf:value 7; a xsd:integer] a :NrPrim. este o aloare de tip î treg și este u u ăr pri
[rdf:value 4] :arePatratul 16. (4 are pătratul 1
Sau, atunci câ d u ei proprietăți îi atașă ai ulte alori difere țiate pri relații -are:
:John :hasPhoneNumber [rdf:value "0724888888"; :phoneType :PersonalMobile],
[rdf:value "0263333333"; :phoneType :Work].
22
rdf:HTML, rdf:XMLLiteral,
rdf:langString
A estea su t si gurele tipuri de date i troduse de RDF î rest, se azează pe tipurile
XML Schema):
rdf:XMLLiteral = stri guri ale ăror alori su t frag e te de od XML
rdf:HTML = stri guri ale ăror alori su t frag e te de od HTML
rdf:langString = stri guri ale ăror alori au atașat u od de li ă de o i ei u apare
delo î afir ații, a estea fii d re u os ute/filtrate după preze ța odului li ă
Din:
:Anna :hasAge "20"^^xsd:integer.
...se va genera:
xsd:integer a rdfs:Datatype; rdfs:subClassOf rdfs:Literal.
(ori e resursă ataşată u ei alori si ple e u tip de date și o su ulți e a ulți ii tuturor alorilor)
rdf:Bag = ulți ea o tai erelor eordo ate u o tează ordi ea o po e telor, a estea fii d o e tate u rdfs:member):
:Computer a rdf:Bag.
:Computer rdfs:member :CPU, :motherboard, :disk.
rdf:Seq = ulți ea o tai erelor ordo ate lie ții ar putea fi i teresați de ordi ea o po e telor, o e tate u relații de
forma rdf:_1,2,3...):
:DocumentFolder a rdf:Seq.
:DocumentFolder rdf:_1 :birthCertificate; rdf:_2 :diploma; rdf:_3 :salaryStatement.
rdf:Alt = ulți ea o tai erelor de alter ati e; da ă ordi ea u o tează se folosește rdfs:member, da ă ordi ea o tează o
e pri ă a ai sus. Mai jos alternativele de călătorie su t ordo ate după preferi ță:
:MyTravelAlternatives a rdf:Alt;
:MyTravelAlternatives rdf:_1 :Automobile; rdf:_2 :Plane; rdf:_3 :Bike.
E i porta t să u oaște stru tura di spate și a ești ter e i, pe tru a-i folosi î i terogări,
de exemplu:
Când soli ită toate ele e tele listei fără să ști âte su t:
SELECT ?x
WHERE { :Anna :hasChildren/rdf:rest*/rdf:first ?x}
26
rdf:List, rdf:first, rdf:rest, rdf:nil
Alte exe ple de i te ogă i pe liste:
:Peter
rdf:_2
rdf:type rdf:rest
rdf:type
:diploma _:Y rdf:first
rdf:type
:Mary
rdf:List
rdf:_3 rdf:rest
rdf:Seq rdf:first
rdf:type _:Z
:George
:salaryStatement
rdf:rest
rdf:nil
28
Dife e țe î t e df:List și df:Se
Atât listele rdf:List ât și o tai erele rdf:Seq per it e u erări ordo ate, dar
e istă difere țe i porta te:
• Structura este cu totul alta și a easta i flue țează odul î are arată
i terogările
• Listele sea ă ă ai ult u lasele, fii d adesea o e u erare de i sta țe
de a elași tip OWL per ite hiar o ersia listă-> lasă)
– Containerele sunt de regulă grupuri de elemente (componente) de diferite
tipuri.
• Î liste este ai ușor de i terogat ulti ul ele e t, fii d ar at u rdf:nil
– În o tai ere tre uie să le u ără cu o interogare cu COUNT î ai te să
pute i teroga ulti ul ele e t de a eea zi e ă listele su t ordo ări
î hise, î ti p e se e țele su t ordo ări des hise
• Î o tai ere este ai ușor de adăugat u ele e t, fără a odifi a alte
afir ații existente
– În liste adăugarea u ui ele e t e esită utarea lui rdf: il de i o ștergere și
o inserare)
rdf:Statement,
rdf:subject, rdf:predicate, rdf:object
30
Avertisment
• Nu o fu daţi rdf:type cu rdfs:subClassOf, rdfs:subPropertyOf sau relaţii part-of:
– rdf:type=aparte e ţa la lasă u ele e t aparţi e u ei ulţi i :
:Shakespeare rdf:type :Writer .
:Writer rdf:type :Profession .
– rdfs:subClassOf=i luziu e ori e ele e t al u ei su ulţi i aparţi e şi ulţi ii are o
include):
:Writer rdfs:subClassOf :Profession . – greşit! ori e s riitor ar de e i o profesie!)
:Writer rdfs:subClassOf :Artist . – corect!
– rdfs:subPropertyOf=ge eralizarea proprietăţilor o supraproprietate are lo î tre
a eleaşi i sta ţe a şi su proprietăţile sale
:isBrotherOf rdf:type :isRelativeOf . – greşit! isRelati eOf u e o lasă
:isBrotherOf rdfs:subPropertyOf :isRelativeOf . – corect da ă A şi B su t fraţi, ei su t şi
rude)
– rdfs:member=relaţii part-of:
:CPU rdfs:subClassOf :Computer – greşit! procesoarele nu sunt calculatoare)
:Computer rdfs:member :CPU – corect!
Co fuzia apare di auză ă toate a este relaţii du la o struirea de ierarhii 31
Sumar
Terminologia RDF/S permite:
– Declaraţii:
• Care URI su t resurse, lase, proprietăţi et .;
– Taxonomii:
• Taxonomia (ierarhia) claselor, incluzând tipuri de date;
• Ta o o ia proprietăţilor;
– Mapări între ierarhiile de clase și proprietăți:
• Domenii
• Codomenii
– Adnotări:
• Etichete, comentarii, adrese URL asociate termenilor
– Structuri de date complexe:
• Liste, o tai ere, relații -are 32
Terminologia standard OWL
= colecție de ter e i sta dard cu care se pot crea ontologii
= rolul o tologiilor e si ilar u al o a ularelor dedu ții auto ate
= i lude ter i ologia RDF/S și îi adaugă oi ter e i de i ori e o tologie o ți e și
un vocabular)
= pri ipala fa ilitate î plus față de RDF/S e oțiu ea de egație, de i posi ilitatea
de a dete ta o tradi ție o tradi ția apare atu i â d o afir ație și egația sa
apar si ulta î a eeași ază de u oști țe
= are ai ulte ersiu i și su seturi, per ițâ d otoarelor i fere țiale să
i ple e teze diferite frag e te ale ter i ologiei OWL i ple e tarea o pletă
are perfor a ță sla ă și u ele dedu ții ede ida ile
33
owl:Thing,
owl:NamedIndividual, owl:Class
owl:ObjectProperty, owl:DataProperty
owl:Thing = ulți ea tuturor resurselor (sinonim cu rdfs:Resource în majoritatea
otoarelor i fere țiale*
owl:NamedIndividual = ulți ea tuturor i sta țelor ea o i e
owl:Class = ulți ea tuturor laselor OWL si o i u rdfs:Class î ajoritatea
otoarelor i fere țiale*
owl:ObjectProperty = mulți ea tuturor relațiilor su lasă a lui rdf:Propert
owl:DataProperty = ulți ea tuturor atri utelor su lasă a lui rdf:Propert
Din:
:Anna rdf:type :Woman, :hasAge 30.
…u otor i fere țial OWL a ge era:
:Anna a owl:NamedIndividual, owl:Thing.
rdf:type a owl:ObjectProperty, owl:Thing.
:Woman a owl:Class, owl:Thing.
:hasAge a owl:DataProperty, owl:Thing.
*există otoare i fere țiale are re u os doar a u ite frag e te ale ter i ologiei OWL, î are se dă i terpretare diferită termenilor OWL
față de ei RDFS; totuși u vo a aliza la a est urs disti ția î tre diferitele versiu i de OWL și vo o sidera doar varianta si plă, de
o pati ilitate totală î tre OWL și RDFS
34
Co epte u i ersale şi i posi ile
owl:Thing
- ulţi ea tuturor lu rurilor e hi ale tă u rdfs:Resour e, supra lasă pe tru o l:Class
owl:Nothing
- ulţi ea idă, ori e aparte e ţă la a eastă lasă tre uie să de la şeze o tradi ţie, ea
î săşi e o su lasă pe tru ori e altă lasă
owl:topObjectProperty
- relaţia u i ersală: e istă î tre ori e două lu ruri resurse
owl:topDataProperty
- atri utul u i ersal: îl are ori e resursă, şi poate lua ori e aloare
owl:bottomObjectProperty
- relaţia i posi ilă, u tre uie să apară i iodată da ă se produ e, a e o tradi ţie
owl:bottomDataProperty
- atri utul i posi il, u tre uie să pri eas ă i iodată aloare î az o trar, o tradi ţie
35
Tipuri de proprietăți OWL
owl:ObjectProperty
- Mulţi ea tuturor relaţiilor su lasă a lui rdf:Propert
owl:DataProperty
- Mulţi ea tuturor atri utelor su lasă a lui rdf:Propert
owl:AnnotationProperty
- mulţi ea proprietăţilor de ad otare rdfs:la el, rdfs:comment, rdfs:isDefinedBy,
rdfs:seeAlso, owl:versionInfo)
owl:OntologyProperty
- mulţi ea relaţiilor î tre o tologii de e ., de laraţii de i port sau o pati ilitate
- su ie tul şi o ie tul a estora or fi î totdeau a o tologii
36
Tipuri de proprietăți OWL
Din:
:isParentOf owl:inverseOf :isChildOf .
:Peter :isParentOf :Andrew .
...se va deduce:
:Andrew :isChildOf :Peter .
Din:
:isRelativeOf a owl:SymmetricProperty .
:Anna :isRelativeOf :Peter .
...se va deduce:
:Peter :isRelativeOf :Anna .
Din:
:knows a owl:ReflexiveProperty .
:Anna a :Woman .
...se va deduce:
:Anna a owl:NamedIndividual .
37
:Anna :knows :Anna .
Tipuri de proprietăți OWL
Din:
:isBrotherOf a owl:TransitiveProperty.
:Peter :isBrotherOf :Andrew.
:Andrew :isBrotherOf :Michael.
...se va deduce:
:Peter :isBrotherOf :Michael.
Din:
:isNephewOf owl:propertyChainAxiom (:isSonOf :isBrotherOf).
:Peter :isSonOf :Andrew.
:Andrew :isBrotherOf :Michael.
...se va deduce:
:Peter :isNephewOf :Michael.
38
Noi oduri de a î ogăți ierarhia de
clase (cu clase de reuniune sau de
i terse ție
:AustrianWriter owl:intersectionOf (:Writer :Austrian).
:Human owl:unionOf (:Man :Woman).
:Andrew a :AustrianWriter, :Man.
…ge erează:
:AustrianWriter rdfs:subClassOf :Writer. di i terse ție
:AustrianWriter rdfs:subClassOf :Austrian.
:Man rdfs:subClassOf :Human. (din reuniune)
:Woman rdfs:subClassOf :Human.
…apoi:
:Andrew a :Writer, :Austrian, :Human.
39
Tipuri de e hi alări î OWL
Din:
:Anna :isA :Woman.
alt:Ann a alt:Woman. E hi ale ță î tre i sta țe
:Anna owl:sameAs alt:Ann. E hi ale ță î tre lase
:Woman owl:equivalentClass alt:Woman.
:isA owl:equivalentProperty rdf:type. E hi ale ță î tre proprietăți
…se va deduce:
:Anna :isA alt:Woman.
:Anna a alt:Woman.
:Anna a :Woman.
alt:Ann :isA alt:Woman.
alt:Ann :isA :Woman.
alt:Ann a :Woman.
40
Disti ția
Fie are od de e hi alare are o aria tă egată a sa disti ția e se folosește la
dete tarea de o tradi ții. Toate azurile de ai jos su t e e ple de o tradi ții și
pot fi dete tate de u otor i fere țial OWL:
:Anna owl:sameAs :Ann.
:Anna owl:differentFrom :Ann.
Î azuri realiste, e puți pro a il a astfel de afir ații o tradi torii să fie
i troduse a ual î a eeași ază de u oști țe.
• Fie au pro e ie țe diferite u a e i portată di tr-o altă ază de u oști țe
• Fie ă ar u a di tre ele a fost dedusă di alte afir ații slideurile ur ătoare
41
Moduri de dedu ere a disti ției
Di disju cție de ulți i:
:Anna a :Woman.
:George a :Man.
:Woman owl:disjointWith :Man.
…ge erează:
:Anna owl:differentFrom :George.
Di ulți i co ple e ta e:
:Anna a :Woman.
_:x owl:complementOf :Woman.
:George a _:x.
…ge erază:
_:x owl:disjointWith :Woman.
…apoi:
:Anna owl:differentFrom :George.
42
Moduri de dedu ere a disti ției
Enumerare de i di izi disti ți:
:StudentGroup owl:members (:Anna :Ann :Andrew); a owl:AllDifferent.
sau
:StudentGroup owl:distinctMembers (:Anna :Ann :Andrew).
Enumerare de lase disju te u pot a ea i sta țe o u e :
:Gender owl:members (:Woman :Man); a owl:AllDisjointClasses.
Reniune de clase disjuncte:
:Human owl:disjointUnionOf (:Woman :Man).
43
Moduri de dedu ere a e hi ale ței
P op ietățile fu cțio ale = u pot aso ia u su ie t u ai ulte o ie te da ă o
fa , o ie tele su t o siderate e hi ale te; o tradi ția apare a ia da ă u pot fi
e hi ale te datorită u ei disti ții de larate altu de a :
:Peter :hasMother :Anna.
:Peter :hasMother :Aneta.
:hasMother a owl:FunctionalProperty.
…ge erează:
:Anna owl:sameAs :Aneta.
Similar, p op ietățile i ve s-fu cțio ale nu pot asocia un obiect cu mai multe
subiecte:
:Anna :hasEmail <mailto:Anna@expl.at>.
alt:Aneta :hasEmail <mailto:Anna@expl.at>.
:hasEmail a owl:InverseFunctionalProperty.
…ge erează:
:Anna owl:sameAs alt:Aneta.
44
Moduri de dedu ere a e hi ale ței
P op ietățile cheie su t ersiu i ai a a sate ale proprietăților fu țio ale:
• Pot o ți e o o i ație de proprietăți
• U i itatea heii e li itată la o lasă de su ie te
• A țio ează a și heile pri are di aze de date
45
Moduri de dedu ere a e hi ale ței
Cardinalitatea li itează u ărul de relații pe are le pot a ea i sta țele u ei
clase.
47
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Dedu erea tipului su ie tului di relațiile î are e i pli at:
:Playwright owl:onProperty :wrote; owl:someValuesFrom :Play .
:Will :wrote :Tempest .
:Tempest a :Play .
…ge erează:
:Will a :Playwright.
:Playwright a owl:Restriction, owl:Class.
(ori i e s rie i i o piesă de teatru de i e i sta ță a lasei Pla right => e o
versiune mai sofisticată a a io elor rdfs:do ai , ă i se i pu e o o diție
legată de lasa o ie telor
48
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Deducerea tipului obiectului di relațiile î are e i pli at:
:Vegetarian owl:onProperty :eats;
owl:allValuesFrom :VegetarianFood.
:Peter a :Vegetarian; :eats :Salad.
…ge erează:
:Salad a :VegetarianFood.
:Vegetarian a owl:Restriction, owl:Class.
(ori e lu ru â at de u egetaria de i e i sta ță a lasei Vegetaria Food
=> variantă ai sofisti ată a a io elor rdfs:ra ge
49
Noi oduri de lasifi are a i sta țelor,
u ajutorul restri țiilor OWL
Deducerea tipului o ie tului di relațiile î are e i pli at di u ărul
acestora):
:Parent owl:onProperty :hasChild; owl:minCardinality 1 .
:Peter :hasChild :Andrew .
…ge erează:
:Peter a :Parent.
:Parent a owl:Restriction, owl:Class.
(ori i e are ă ar u opil, de i e i sta ță a lasei Pare t
=> variantă ai sofisti ată la rdfs:do ai , ă i pute odifi a pragul de
cardinalitate)
50
Alte moduri de detectare a
o tradi țiilor
Preze ța de afir ații u relații eper ise pe tru i sta țele u ei a u ite lase:
51
Alte moduri de detectare a
o tradi țiilor
P op ietăți ireflexive – relații pe are u i di id u le poate a ea u el î suși:
:isMarriedTo a owl:IrreflexiveProperty .
:Anna :isMarriedTo :Anna .
:isMotherOf a owl:AsymmetricProperty .
:Anna :isMotherOf :Mary .
:Mary :isMotherOf :Anna .
52