Sunteți pe pagina 1din 96

1.

ALGORITMI

1. Ce este un algoritm?
Un algoritm este un instrument de rezolvare a unei probleme, fiind o succesiune bine precizata de
prelucrari care aplicate asupra datelor de intrare permit obtinerea in timp finit a solutiei acesteia. Un
algoritm este compus dintr-o multime finita de pasi, fiecare necesitand una sau mai multe operatii.

2. Ce este un program?
Un program este o descriere precisa si concisa a unui algoritm intr-un limbaj de programare. Un
program nu trebuie sa satisfaca conditia de finitudine precum un algoritm.

3. Care este diferenta dintre un algoritm si un program?


Program=exprimarea intr-un limbaj de programare a unui algoritm;
Algoritm=exprimarea intr-un limbaj de reprezentare a unui rationament.

4. Care sunt caracteristicile unui algoritm?


- generalitatea
- claritatea
- finitudinea
- corectitudinea
- performanta
- robustetea

5. Care sunt modalitatile de reprezentare a unui algoritm?


- in limbaj natural
- pseudocod
- scheme logice
- diagrame arborescente
- tabele de decizie

6. Ce este limbajul pseudocod?


Limbajul pseudocod are o sintaxa si semantica asemenatoare limbajelor de programare moderne, avand
o anumita flexibilitate in ceea ce priveste sintaxa, in ideea ca prin codificarea unui algoritm intr-un limbaj
de programare, operatia sa fie cat mai comoda. Practic pseudocodul este un compromis intre precizia
unui limbaj de programare si usurinta in exprimare a unui limbaj natural.

7. Ce este o schema logica?


Prin schema logica se intelege o reprezentare grafica a unui algoritm in care fiecarui pas i se ataseaza un
simbol denumit bloc. Ordinea de parcurgere a blocurilor schemelor logice se precizeaza cu ajutorul
sagetilor
8. Ce tipuri de blocuri se utilizeaza intr-o schema logica?
- blocul delimitator (elipsa alungita START, STOP)
- blocul de intrare/iesire (paralelogram/trapex EXPRESIE)
- blocul de calcul (dreptunghi CALCUL EXPRESIE)
- blocul de decizie (romb CONDITIE)
- blocul conector (cerc CONECTARE SECVENTE)

9. Care sunt cele 3 structuri de baza dintr-un algoritm?


- structura secventiala (liniara)
- structura alternativa
- structura repetitiva

10. Definiti structura secventiala:


Aceasta structura (cea mai simpla) reprezinta un proces de calcul format dintr-o operatie elementara,
cum este citirea unei valori sau o operatie de atribuire. Indica executia succesiva a operatiilor de baza si
a structurilor de control in ordinea in care apar in schema logica.

11. Definiti structura alternativa:


In functie de valoarea de adevar a conditiei, se executa una din secvente, dupa care se trece la
prelucrarea urmatoare; cele 2 ramuri se exclud mutual; este posibil ca una din ramuri sa fie vida.

12. Definiti structura repetitiva cu conditionare anterioara.(WHILE-DO)


Secventa se executa ciclic, cat timp conditia este adevarata; daca la prima evaluarea a conditiei, aceasta
esta falsa, corpul nu se executa niciodata.

13. Definiti structura repetitiva cu conditionare posterioara. (DO-UNTIL)


Conditia se evalueaza dupa o prima executie a secventei (deci secventa se executa cel putin o data); se
revine la executia secventei, daca nu este adevarata. Daca conditia este adevarata se incheie aceasta
secventa.

14. Definiti structura repetitiva cu un numar cunoscut de pasi. (DO-FOR)


O variabila numita generic control, controleaza ciclarea; controlul se initializeaza cu o valoare
initiala (valI), iar ciclarea se realizeaza cat timp contor<=valF, o valoarea finala; la sfarsitul
corpului ciclului, variabila contor este actualizata, fiind marita valoarea cu un pas;

15. Ce este sortarea?


Sortarea este o operatie des intalnita in rezolvarea problemelor de natura algoritmica. Problema sortarii
unei multimi de obiecte se poate reduce la problema sortarii cheilor asociate acestora. Dupa ce cheile
sunt sortate, folosind informatia de asociere, se pot rearanja obiectele in ordinea in care au fost aranjate
cheile lor.
16. De cate tipuri pot fi algoritmii de sortare?
- algoritmi interni (unde secventa de sortare este pastrata in memoria interna)
- algoritmi externi (unde secventa de sortare este pastrata pe un suport extern)

17. In ce conditii o metoda de sortare este stabila?


O metoda de stocare este stabila daca dupa sortare, ordinea relativa a elementelor cu chei egale
coincide cu cea initiala, element esential in special in cazul in care se executa sortarea dupa mai multe
chei.

18. Principiul metodei de sortare prin selectie (Selection Sort)


Principiul acestei metode este urmatorul: sirul este impartit in 2 parti: o “Parte stanga” sortata si o
“Parte dreapta” nesortata. Initial “Partea stanga” este vida iar “Partea drepta” contine tot sirul. Se cauta
minimul din “Partea dreapta” si se adauga la sfarsitul “Partii stanga”. Algoritmul se incheie in momentul
in care “Partea dreapta” mai contine un singur element. Acest ultim element este maximul din sir, deci,
in final “Partea stanga” va contine toate elementele sirului sortate, iar “Partea dreapta” devine vida.

19. Principiul metodei de sortare prin insertie. (Insertion Sort)


Analog ca la sortarea prin selectie, sirul este impartit in 2 parti: o “Parte stanga” sortata si o “Parte
dreapta” nesortata. Initial “Partea stange” este vida iar “Partea dreapta” contine tot sirul. La sortarea
prin insertie se ia primul element din “Partea dreapta”, care se insereaza la locul sau in “Partea stanga”.

20. Principiul metodei de sortare prin diminuarea incrementului (Shell Sort)


Algoritmul Shell Sort defineste notiunea de vector h sortat. Un vector h este sortat daca luand tot al h-
lea element pornind din orice pozitie obtinem o secventa sortata. Algoritmul incepe cu valori mai mari
ale lui h, continuand apoi cu valori din ce in ce mai mici ale lui h. In momentul in care h=1 (vectorul este
1 - sortat) sirul este sortat in intregime.

21. Principiul metodei de sortare rapida. (Quick Sort)


Principiul acestei metode este urmatorul: se alege un element pivot din tabloul ce trebuie sortat.
Tabloul este partitionat in 2 subtablouri, alcatuite de o parte si de alta a acestui pivot, astfel: elementele
mai mare decat pivotul sunt mutate in dreapta pivotului, iar elementele mai mici sunt mutate in stanga
pivotului. Cele 2 subtablouri sunt sortate in mod independent prin apeluri recursive ale algoritmului.

22. Principiul metodei de sortare prin interclase. (Merge Sort)


Algoritmul Merge Sort se bazeaza pe 3 pasi esentiali:
- separarea tabloului in 2 parti de marimi cat mai apropiata
- sortarea acestor parti prin apeluri recursive, pana la atingerea unor valori mici ale lui n pentru
care se aplica sortarea prin insertie sau pana la atingerea unor subsiruri de 1 element (cazul
banal)
- interclasarea partilor sortate obtinandu-se un sir ordonat crescator.
23. Principiul sortarii prin metoda ansamblelor. (Heap Sort)
- cea in care generarea heapului se face prin retrogradari succesiva
Heapul se construieste de jos in sus (de la dr la stg). La fiecare pas i, elementul a[i] trebuie sa fie mai
mare decat oricare din elemente a[2*] si a[2*i+1] (daca acesta din urma exista, doar in cazul in care
norul ar avea 2 succesori si doar unul). Daca aceasta conditie nu este indeplinita, pe pozitia e este adus
elementul maxim, urmand sa se verifice ca succesorii elementului interschimbat sa indeplineasca in
continuare conditia de heap. Dupa crearea secventei heap, elementul cu cheia cea mai are din secventa
se va gasi pe prima pozitie si va fi apoi mutata in spatele secventei (extremitatea stanga), fiind ignorat de
pasii urmatori, care vor continua cu restul secventei.
- cea in care generarea heapului se face prin inserari repetate.
In cazul acestei, se considera pentru inceput un heap format dintr-un singur element , dupa care
celelalte vor fi inserate in acest heap.

24. Principiul sortarii prin compartimentare. (Bin Sort)


Se parcurge tabloul a, verificandu-se daca elementul a[i] are cheia egala cu i. Daca nu, se interschimba
elementele a[a[i]] cu a[i]. Daca dupa fiecare interschimbare, elementul a[k] se gaseste la un indice i<>k,
se va interschimba din nou a[i] cu a[k]. Odata ce un element isi ocupa pozitia buna (adica a[i]=i), el nu va
mai fi deplasat de pe acea pozitie.

25. Principiul sortarii prin numarare. (Count Sort)


Principiul aceste metode se bazeaza pe urmatoarea afirmatie: intr-o multime formata cu elementele
unui vector, pozitia finala a unui element din multime este egala cu numarul de elemente mai mici decat
el. Sortarea prin numarare se aplica in cazul in care avem de sortat un sir de numere naturale care se
gasesc in intervalul [v min, v max]. Se foloseste un sir auxiliar avand vmax-vmin pozitii in care se
memoreaza la pozitia i numarul de aparitii in sirul original al numarului i+vmin. In final se genereaza un
nou sir din sirul auxiliar, care va fi sirul initial sortat.

26. Ce este recursivitate?


Recursivitatea este una din notiunile fundamentale ale informaticii. Recursivitatea, folosita cu multa
eficienta in matematica, s-a impus in programare odata cu aparitia unor limbaje de nivel inalt, care
permit scirerea de module ce se autoapeleaza. Astfel, PASCAL, LISP, C etc. sunt limbaje recursive, spre
deosebire de FORTRAN, BASIC, COBOL care sunt nerecursive.

27. Exemplificati recursivitatea directa si indirecta.


In cazul recursivitatii directe procedura (sau functia) se autoapeleaza (in corpul sau).
Recursivitatea indirecta are loc atunci cand o procedura (functie) apeleaza o alta procedura (functie),
care la randul ei o apeleaza pe ea.

28. Ce sunt tehnicile de programare?


Tehnicile de programare sunt modalitati generale de elaborare a algoritmilor. Ele reprezinta doar niste
tipare de organizare a actiunilor (“scheme” de algoritmi)., nu garanteaza si succesul acestora.Pt a avea
succes trebuie indeplinite niste conditii suplimentare, care sunt specifice si se studiaza separat pentru
fiecare problema in parte.

29. In ce conditii se utilizeaza metoda backtracking?


In cazul in care se intalnesc un numar mare de probleme care au un numar mare de soltii dar doar o
parte din ele indeplinesc conditiile specifice problemei.

30. Principiile metodei backtracking.


In cazul metodei backtracking se aplica strategia depth-first. Astfel pentru e-nodul curent se identifica un
descendent care devine nod e-nod curent, procesul continuand recursiv pana la epuizarea tuturor
nodurilor vii. Aceasta tehnica are un principiul destul de simplu:
- se construieste solutia pas cu pas: x1,x2...xn
- dace sa constata ca, pentru o valoare aleasa, nu avem cum sa ajungem la solutie, se renunta la
acea valoare si se reia cautatea din punctul in care am ramas.

31. Algoritmul metodei backtracking. (vezi pag. 28)

32. Principiile metodei Branch and Bound:


- branch: construirea sau determinarea prin ramificare a drumurilor de continuat.
- bound: eliminarea continuarilor (ramurilor) ineficiente sau eronate.

33. Algoritmul metodei Branch and Bound:


- multimea starilor activite Sa se initializeaza cu {s0}
- pentru o multime de stari active obtinuta la un moment dat se alege o stare sc de continuare (stare
curenta)
- daca printr-o astfel de transformare (ramificare) am ajuns la starea finala sf E T(sc) atunci problema e
rezolvata.

34. Asemanari si deosebiri intre medota backtracking si metoda Brach and Bound:
Metoda Branch and Bound este asemanatoare cu metoda backtracking insa difera in primul rand prin
ordinea de parcurgere a spatiului solutiilor posibile (spatiul de stari). Daca in cazul metodei backtracking
arborele solutiilor se parcurge in adancime (depth first), in cazul metodei Branch and Bound traversarea
se face in latime (breadht first).

35. In ce conditii se poate utiliza metoda Divide et Impera?


Divide et Impersa se aplica in rezolvarea unei probleme ce indeplineste urmatoarele conditii:
- se poate descompune in 2 sau mai multe subprobleme
- aceste subprobleme sunt independente una fata de alta (o subproblema nu se rezolva pe baza
alteia si nu foloseste rezultatele celeilalte)
- aceste subprobleme sunt similare cu probleme initiala.
- la randul lor subproblemele se pot descompune (daca este necesar) in alte subprobleme mai
simple.
- aceste subprobleme simple se pot solutia imediat prin algoritmul simplificat.

36. Etapele rezolvarii unei probleme folosind metoda Divide et Impera:


- descompunerea pr initiale in subprobleme independente
- descompunerea treptata a subproblemelor in subprobleme din ce in ce mai simple, pana cand se pot
rezolva imediat, prin algoritmul simplificat.
- rezolvarea subprobelemelor simple
- combinarea solutiilor gasite pentru construirea solutiilor subproblemelor de dimensiuni din ce in ce
mai mari
- combinarea ultimelor solutii determina obtinerea solutiei problemei initiale.

37. In ce conditii se poate aplica metoda Greedy?


Aceasta metoda se aplica problemelor in care se da multimea A si se cere sa se determine o submultime
B inclusa in A care sa indeplineasca anumite conditii pentru a fi acceptata.

38. Etapele rezolvarii unei probleme folosind metoda Greedy:


- se initializeaza multimea solutiilor (B) cu multimea vida (B={})
- se alege un element x E A, care , conform functiei de selectie, este cel mai promitator candidat.
- se verifica daca elementul ales poate fi adaugat la multimea solutiilor, daca da, atunci va fi adaugat
(B=B U{x}). Daca, dupa o astfel de adaugare, multimea de candidati selectati nu mai e fezabila, eliminam
ultimul candidat adaugat iar acesta nu va mai fi niciodata luat in considerare. Daca, dupa adaugare,
multimea de candidati selectati este fezabila, ultimul candidat adaugat va ramane de acum incolo in ea.
- procedeul continua repetitiv cu pasul 2, pana cand au fost determinate toate elementele din multimea
solutiilor.

39. Asemanari si deosebiri intre medota Backtracking si metoda Greedy.


- la tehnica Greedy se renunta la mecanismul de intoarcere.
- ambele ofera solutii sub forma unor vectori
- in timp ce backtracking ofera toate solutiile unei probleme, tehnica Greedy, ofera o singura solutie, nu
obligatoriu cea optima. Aplicarea unui anumit algoritm utilizand tehnica Greedy impune si demonstrarea
ca acesta conduce la solutia optima.
- Greedy are un timp de calcul polonomial.

40. In ce conditii se utilizeaza un algoritm euristic?


Se foloseste un algoritm euristic atunci cand se doreste sa se rezolve o problema mult mai repede, cu un
efort cat mai mic,cu riscul de a nu furniza obligatoriu cea mai buna solutie (optima), ci doar solutii
acceptabile, care eventual pot fi imbunatatite.

41. Ce este o structura de date?


O structura de date este o colectie organizata de date peste care s-a definit un set de operatii car pot fi
efectuate cu datele respective. In cadrul unei structuri este necesar sa se defineasca relatiile structurale
existente in cadrul multimii datelor de prelucrat pecum si metodele de prezentare si manipulare a unor
asemenea structuri.

42. Clasificarea structurilor de date in functie de organizare:


- structuri de date de tip standard (sau predefinite)
-structuri de date de nivel inalt

43. Clasificarea structurilor de date in fuctie de modalitatile de acces:


- cu acces direct (putem referi o anumita componenta fara a tine cont de restul comp)
- cu acces secvential (la care accesul la o componenta se face prin traversarea unor componente din
structura)

44. Operatiile care se pot executa asupra unei structuri de date:


- crearea
- actualizarea
- consultarea
- sortarea
- ventilarea
- fuzionarea

45. Ce este un tablou si ce caracteristici prezinta acest tip de structura de date?


Un tablou este o colectie omogena de date in care fiecare element poate fi identificat pe baza unui
index, colectia asigurand acces direct si timp de acces constant pentru fiecare element al ei.
Caracteristicile acestui tip de structura sunt:
- este o structura ordonata
- este o structura statica
- tabloul poate fi vazut ca si o multime de perechi de forma (index,valoare) unde index apartine
unei multimi a indecsilor iar valoare unei multimi a volorilor.

46. Tabela de dispersie; modalitati de rezolvare a coliziunilor:


Principala diferenta dintre o tabela de dispersie si un vector consta in modul in care se determina pozitia
unde se introduce un nou element. O valoare noua nu se adauga in prima pozitie libera ci intr-o pozitie
care sa permita regasirea rapida a acestei valori , fara a fi necesara o cautare prin vector. Pentru
rezolvarea coliziunilor exista 2 metode:
- calcularea unei noi adrese in acelasi vector pentru sinonimele care gasesc ocupata pozitia
rezultata din calcul.
-metode care plaseaza coliziunile in afara vectorului principal.

47. Ce este o lista liniara si prin ce se deosebeste de un tabel unidimensional?


O lista liniara (lista inlantuita) este o colectie n>=0 elemente x[1],...,x[n] toate de un tip oarecare,
numite noduri intre care exista o relatie de ordine determinata de pozitia lor relativa. Deosebiri:
- nr variabil de elemente care constituie lista liniara, dimensiunea acesteia nu trebuie declarata
si deci cunoscuta anticipat
- un vector ocupa in memorie un spatiu continuu de memorie, pe cand elementele unei liste
simplu inlantuite se pot gasi nu neaparat consecutive de memorie.
- accesul la elementele unei liste liniare se face secvential, pornind din capul listei pe cand,
referirea unui element dintr-un vector se face prin specificarea nr de ordine al resp elem.
- pt o lista liniara este obligatoriu sa existe o variabila, declarata in timpul compilarii, denumita
cap de lista, care sa pastreze adresa primului element al listei.

48. Liste liniare simplu inlantuite si dublu inlantuite – principii:


Listele inlantuite cu un singur camp de legatura se numesc liste simplu inlantuite (legatura indica
urmatorul element din lista) iar cele cu 2 campuri de legatura liste dublu inlantuite (o legatura indica
nodul precedent iar cealalta nodul succesor).
Listele dublu inlantuite sunt tot liste liniare, cu deosebirea ca fiecare element al listei are doua referinte:
una spre elementul precedent si una spre elementul succesor.
Operatia de parcurgere a unei liste liniare simplu sau dublu inlantuite are o complexitate de tipul O(n).
Insertia inaintea primului element al listei si stergerea primului element al listei au complexitatea O(1).
In rest, insertia si stergerea sunt operatii de complexitate O(n) pe cazul cel mai defavorabil (este nevoie
de o parcurgere partiala a listei pentru accesarea pozitiei in care urmeaza a se face insertie sau
stergere).

49. Ce este o stiva si cum se opereaza cu o astfel de structura?


O stiva este o structura de tip LIFO (Last In First Out) si este un caz particular al listei liniare in care toate
inserarile (depunerile) si stergerile (extragerile) sunt facute la unul din capetele liste, numit varful stivei.
Pt intelegerea mecanismului unei sitve, se poate folosi reprezentarea manevrarii intr-u depou de
vagoane de cale ferata .

50. Ce este o coada si cum se opereaza cu o astfel de structura?


O coada este o structura de tip FIFO (First In First Out), in care toate inserarile se fac la un capat al ei
(numit capul cozii) iar stergerile (extragerile) se fac la celalalt capat (numit sfarsitul cozii). In cazul cozii,
avem nevoie de doi pointeri, unul catre primul element al cozii (capul cozii), iar ultimul catre ultimul sau
element (sfarsitul cozii). Se poate face o analogie cu o cale ferata pe un singur sens sau cu obisnuita
coada la un ghiseu oarecare la care primul venit este si primul servit.

51. Ce este un graf neorientat, un graf partial si un subgraf al grafului?


Se numeste graf neorientat o pereche ordonata de multimi (X,U), X fiind o multime finita si nevida de
elemente numite noduri sau varfuri, iar U o multime de perechi neordonate (submultimi cu 2 elemente)
din X, numite muchii. G=(X,U).
Un graf partial al grafului G=(X,U) este un graf G p=(X,V) astfel incat V include U, adica G p are aceeasi
multime de varfuri ca G iar multimea de muchii V este chiar U sau o submultime a acesteia. Un graf
partial al unui graf se obtine pastrand aceasi multime de varfuri si eliminand o parte din muchii.
Un subgraf al unui graf G=(X,U) este un graf H=(Y,V) astfel incat Y include X iar V contine toate muchiile
din U care au ambele extremitati in Y.

52. Definiti urmatoarele notiuni:


Gradul unui varf intr-un graf neorientat = este numarul muchiilor incidente cu acel varf (sau numarul de
noduri adiacente cu acesta). Gradul unui varf x se noteaza cu d(x).
Varf izolat = este acel varf care are gradul 0.
Varf terminal = este acel varf care are gradul 1.
Graf regulat = este acel graf cu toate varfurile avand acelasi grad.
Graf complet = este acel graf care are proprietatea ca orice doua noduri diferite sunt adiacente (deci
exista muchie intre oricare doua noduri)

53. Definiti urmatoarele notiuni:


Drum intr-un graf neorientat = este o multime ordonata de noduri ale grafului: (x 1,x2....xk), cu
proprietatea ca exista in graf toate arcele de forma (x i, xi+1) cu i=1...k-1.
Drum elementar = este un drum in care fiecare nod apare o singura data.
Drum simplu = este un drum in care fiecare arc apare o singura data.
Lant intr-un graf G=(X,U) este succesiunea de muchii (x 1,x2),(x2,x3),...,(xi-1,xi) unde x1,x2
...xi apartin lui X. x1 si xi reprezinta extremitatile acestui lant. Un lant este de fapt un drum in care
arcele nu au neaparat acelasi sens de parcurgere.
Un lant este elementar daca, cu exceptia eventual a extremitatilor, celelalte varfuri difera.
Un lant pentru care extremitatile coincid (x 1=xi) se numeste ciclu.
Un ciclu este elementar daca este format dor din noduri distincte, exceptie facand primul si ultimul nod.
Circuit = este un drum pentru care extremitatile coincid.

54. In ce conditii un graf este conex si ce este o componenta conexa a unui graf.
Un graf este conex daca admite o singura componenta conexa.
O componenta conexa a unui graf este un subgraf al grafului de referinta, maximal in raport cu
proprietatea de conexitate (intre oricare 2 varfuri exista lant si nu exista un alt subgraf al grafului de
referinta care sa indeplineasca prop de mai sus si sa contina acest subgraf).

55. Modalitati de reprezentare a grafelor neorientate.


- matricea de adiacenta
- listele de adiacenta
- vectorul muchiilor

56. Modalitati de parcurgere a grafelor neorientate.


- parcurgerea in latime (Breadth First) [presupune parcurgerea tuturor vf grafului incepand de la
un varf dat]
- parcurgerea in adancime (Depth First) [presupune dupa alegerea si traversarea varfului de
pornire, traversarea primului vecin nevizitat inca, pentru acest vecin se traverseaz primul sau
vecin nevizitat si tot asa]
57. Ce este un graf neponderat si cum se reprezinta el?
?????

58. Definiti urmatoarele notiuni:


Lant hamiltonian
Ciclu hamiltonian
Graf hamiltonian
Lant eulerian
Ciclu eulerian
Graf eularian

59. Ce este un graf orientat? Exemplificati notiunile de:


Un graf orientat este o pereche ordonata de multimi G=(X,U) unde X este o multime finita si nevida
numita multimea nodurilor (varfurilor) iar U este o multime formata din perechi ordonate de elemente
ale lui X, numita multimea arcelor.
Extremitate initiala -> primul element
Extremitate finala -> ultimul element
Nodul y se numeste succesorul lui x, iar nodul x se numeste predecesor a lui y.
Gradul exterior al unui varf x, notat d*(x), reprezinta numarul arcelor care ies din nodul x, adica numarul
arcelor de forma (x,z) E U.
Gradul interior al unui varf x, notat d-(x), reprezinta numarul arcelor care intra in nodul x, adica numarul
arcelor de forma (y,x) E U.
Gradul total al unui varf x, dintr-un graf orientat, este un nr natural ce reprezinta suma gradelor interior
si exterior si este egal cu numarul arcelor incidente cu varful.

60. Definiti urmatoarele notiuni:


Se numeste drum in graful G, un sir de noduri D={x 1,x2....xk} unde x1,x2...xk E x cu proprietatea ca oricare
doua noduri consecutive sunt adiacente, adica exista arcele [x 1,x2] [x2,x3].... [xk-1,xk] care apartin lui U.
Un graf este tare conex daca intre oricare doua noduri exista cel putin un drum.
Un graf este simplu conex daca intre oricare doua noduri exista cel putin un lant.
O componenta tare conexa a unui graf G=(X,U) este un subgraf al lui G este tare conex si nu este
subgraful nici unui alt subgraf tare conex al lui G.

61. Modalitati de reprezentare a grafelor orientate:


- matricea de adiacenta
- matricea de incidenta
- matricea varfuri-arce
- listele vecinilor
62. Algoritmul lui Dijkstra de determinare a drumurilor minime de la un nod al unui graf la
celelalte noduri din graf:
???
63. Definiti urmatoarele notiuni:
Arbore: este o multime de noduri avand urmatoarele proprietati:
- exista un nod special numit radacina
- celelalte noduri sunt partitionate in n(>=0) seturi disjuncte T 1,T2....Tn, fiecare din aceste seturi
fiind arbori la randul lor. Aceste seturi se numesc subarbori ai nodului de radacina.
Adancimea unui nod reprezinta lungimea drumului dintre radacina si acest nod.
Inaltimea unui nod este lungimea celui mai lung drum dintre acest nod si un nod terminal.
Inaltimea arborelui este inaltimea radacinii.
Nivelul unui nod este intaltimea arborelui, minus adancimea acestui nod.
Gradul unui nod reprezinta numarul de descendenti din nod.
Gradul unui arbore reprezinta maximul din multimea gradelor tuturor nodurilor.

64. Reprezentarea statica si dinamica a unui arbore binar:


figura pag 50.

65. Exemplificati cele 3 modalitati de traversare a unui arbore binar:


- traversarea in preordine (nodul radacina, subarborele St, subarborele Dr)
- traversarea in inordine (subarborele Stg, nodul radacina, subarborele Dr)
- traversarea in postordine (subarborele Stg, subarborele Dr, nodul radacina)

66. Arborele binar de cautare


Un arbore binar se numeste de cautare daca satisface urmatoarea proprietate: orice cheie din
subarborele stg al unui nod x este mai mica decat cheia din nodul x iar orice cheie din subarborele drept
al unui nod x este mai mare sau egala cu cheia din nodul x.

67. Definiti urmatoarele notiuni:


Arbore binar complet = daca fiecare nod care nu este frunza are exact 2 descendenti (deci gradul
oricarui nod este 0 sau 2)
Arbore binar echilibrat = daca inaltimile subarborilor drept si stang ai nodului radacina difera prin cel
mult 1
Arbore binar total echilibrat = este un arbore binar care indeplineste urmatoarea conditie: nr nodurilor
oricarui subarbore stg difera cel mult cu 1 in plus fata de nr nodurilor subarborelui drept corespunzator.
2. Sisteme de operare

1.Care sunt functiile de baza ale sistemelor de operare?


Sistemele de operare realizeaza doua functii de baza: extinderea functionalitatii masinii si
gestionarea resurselor.

2.Ce este un proces?


Procesul reprezinta un program in executie. Este o grupare de resurse inrudite si are
spatiu de adrese ce contine textul programului si date, precum si alte resurse.

3.Ce este un fir de executie?


3.Firul de executie are un contor de program care tine evidenta urmatoarei instructiuni de
executat, totodata detine si registre care tin variabilele curente de lucru. Are de asemenea
o stiva care contine istoricul executiei, cu un cadru pentru fiecare procedura apelata din
care nu s-a revenit inca.

4.Care sunt diferentele intre sistemul de fisiere FAT32 vs NTFS?


4.NTFS este sistemul de fisiere standard pentru Windows NT si predecesoarele sale
Windows 2000 , Windows Xp si Windows 7. Are capacitatea de a recupera automat dupa
anumite erori legate de disc, ceea ce FAT32 nu poate realiza. Prezinta suport imbunatatit
pt hard disk-uri mai mari. Are securitate mai buna, deoarece aveti posibilitatea sa utilizati
permisiuni si criptare pentru a restrictiona accesul la anumite fisiere numa la utilizatorii
autorizati.

5.Cate tipuri de memorie exista?


5. -putina memorie cache foarte rapida, scumpa si volatila
-mult RAM de viteza medie, nu foarte scumpa si volatila
-foarte mult spatiu de stocare pe disc lent, ieftin si nevolatil

6.Ce este memoria interna?


Este memoria în care se „ţin minte" instrucţiunile & datele necesare rezolvării problemei
(internă sau memorie operativă).

7.Cate tipuri de RAID sunt si care anume?


7. Sapte tipuri: RAID 0, RAID 1, RAID 5, RAID 6, RAID 10, RAID 50, RAID 60
(INTR-UN TABEL SCRIE SI RAID 3)

8.Definiti RAID1.
8.Este oglindirea dispozitivelor(mirroring). Daca se folosesc doua discuri in Raid1
informatia va fi stocata pe ambele, in oglinda.

9.Definiti RAID5.
9.Prezinta o redundanta de nivel N+1. Este viabil de la mai mult de 3 discuri/partitii intr-
o matrice. Scrierea informatiilor de paritate se face pe toate discurile. Este cea mai
eficienta metoda pentru un nr. mare de discuri. Capacitatea de stocare este data de
(capacitatea unui disc) X (numarul de discuri - 1)
10.Care sunt tipurile de atacuri?
10.Atacuri DOS (Denial of Service), atacuri prin inundare (flooding) si atacuri prin
pachete modificate

11.Ce este un firewall?


11.Un firewall este numele generic al unei componente de reţea ce are ca rol validarea
traficului (între reţea şi exterior) pe baza unei politici de securitate prestabilite. Scopul
acestuia este de a proteja reţeaua (sau un singur calculator personal) de eventualele
atacuri ce vin din exterior şi pot compromite datele/informaţiile stocate.

12.Protocoale folosite in cazul IMAP si IMAPs?


12. Protocolul IMAP permite accesul la mesaje din foldere de mail de pe un server. Spre
deosebire de POP‧, care este proiectat pentru a transfera şi şterge e-mail-urile de pe
server, scopul IMAP este de a le stoca pe toate pe server şi să poată fi accesate din orice
loc. Mesajele pot fi stocate pe server, transferate sau mutate între foldere IMAPS este
protocolul IMAP criptat cu SSL

13.Protocoale folosite in cazul POP3/POP3s?


13.

14.Ce este un DNS?


14. este un sistem distribuit de păstrare și interogare a unor date arbitrare într-o structură
ierarhică. Cea mai cunoscută aplicație a DNS este gestionarea domeniilor în Internet.

Caracteristicile sistemului de nume (DNS) sunt: folosește o structură ierarhizată; deleagă


autoritatea pentru nume; baza de date cu numele și adresele IP este distribuită.

15.Care este numarul maxim de utilizatori al unui DNS?


15.

16.Ce este un server WEB?


16. Serverul web sau web server este serverul care stochează (găzduiește) pagini web și le
pune la dispoziția solicitanților prin protocolul HTTP. Și de dată aceasta relația server-
client se bazează pe o aplicație care este instalată pe server și care este programată să
transfere paginile web găzduite. Putem observa aici că ideea de web server presupune și
noțiunea de hosting (găzduire), asta deoarece serverul trebuie să dețină datele pe care
urmează să le returneze la cerere.

17.Ce este BIOS-ul?


17.Bios-ul este un program de marime mica (<2MB) fara de care computerul nu poate
functiona. Acesta reprezinta interfata intre componentele din sistem si sistemul de
operare.
18.Cum se activeaza Domain Controler-ul din linie de comanda?
18. run DCPROMO.exe

19.Cum se editeaza registrii?


19.Apesi pe start si scrii in RUN REGEDIT.

20.Ce este un Proxy server ?


20. Un server proxy este un computer care funcționează ca intermediar între un browser
Web (cum ar fi Internet Explorer) și Internet. Serverele proxy ajută la îmbunătățirea
performanței Web, stocând câte o copie a paginilor Web utilizate frecvent. Atunci când
un browser solicită o pagină Web stocată în colecția (cache) serverului proxy, pagina este
furnizată de serverul proxy, mai rapid decât deplasarea pe Web. De asemenea, serverele
proxy ajută la îmbunătățirea securității, filtrând unele tipuri de conținut Web și software-
urile rău intenționate.

3. Definitia si Clasificarea Bazelor de date. Baze de date relationale.

1.Care sunt dezavantajele utilizarii sistemelor clasice de fisiere?


1.Redundanta, inconsistenta, validarea datelor, disponibilitatea si securitatea datelor.

2.Definiti notiunea de baza de date!


2.O baze de date reprezinta un sistem integrat, coerent si partajat de fisiere.

3.Ce este schema (intensia) si continutul (extensia) unei baze de date?


3. Schema bazei de date (intensia) reprezinta structura datelor impreuna cu legaturile dintre
entitati si restrictiile de integritate. Continutul bazei de date (extensia) reprezinta totalitatea
informatiilor stocate in baza de date la un moment dat.

4.Definiti notiunea de SGBD.


4.SGBD reprezinta un ansamblu de programe pentru gestiunea datelor sau un mediu de
programare destinat gestiunii datelor din baza de date.

5.Care sunt componentele unui SGBD?


5. - sistemul de gestiune a fisierelor si suporturilor la nivel fizic
- sistemul de gestiune a fisierelor la nivel logic
- limbajul de manipulare a datelor (LMD)
- limbajul de descriere a datelor (LDD)
- limbajul de consultare sau interogare (Query Language) si procesorul aferent
- componente de interfata cu programele de aplicatii
- componente de serviciu, legate de jurnalizari, securitate etc.

6.Care sunt functiile unui SGBD?


6. - functia de descriere date
- functia de manipulare date
- functia de utilizare
7.Ce deosebiri exista intre baze de date si banci de date?
7.Bazele de date contin informatii directe, in timp ce bancile de date contin informatii
referentiale.Astfel, interogand o baza de date referitor la numarul PI, acesta va returna valoarea
3.14 sau faptul ca informatia nu a fost introdusa. Adresand acceasi cerere unei banci de date,
aceasta va indica bibliografia care ar trebui consultata.

8.Ce este nivelul intern din arhitectura bazelor de date?


8.Nivelul intern (BDD-fizica) defineste BDD ca fiind o colectie de fisiere, continand datele din
cadrul bazei de date, la care se adauga si alte structuri auxiliare de date si un set de programe
care interactioneaza cu sistemul de operare pentru imbunatatirea managementului bazei de date.
La acest nivel structura BDD se concretizeaza in schema interna. Aici apare independenta fata de
caile de acces, adica utilizatorul nu trebuie sa fie preocupat de organizarea si modul de acces la
date la nivel fizic.

9.Ce este nivelul conceptual si ce deosebiri exista intre entitati si relatii?


9.Nivelul conceptual este nivelul imediat superior celui fizic, datele fiind privite prin prisma
semanticii lor, respectiv a continutului si relatiilor cu alte date. In acest scop entitatiile sunt
legate prin relatii care exprima semantica organizarii datelor.

10.Ce este nivelul extern din arhitectura unei baze de date?


10.Nivelul extern este ultimul nivel de abstractizare la care se poate descrie o baza de date.
Nivelul extern contine o parte din unitatiile logice descrise la nivelul conceptual si care nu au
corespondent direct in baza de date fizica, obtinute de exemplu prin calcule.

11.Ce sunt vederile si care este rolul lor?


11.Unitatile logice folosite la nivel extern se numesc unitati logice virtuale, imagini sau vederi si
formeaza o baza de date virtuala. Acestea se pot obtine prin modificarea unor unitati logice reale
sau prin combaterea a doua sau a mai multor unitati logice reale. Vederile asigura printre altele,
urmatoarele functii in cadrul BDD: securitatea BDD, definirea modului de acces la date si ofera
utilizatorului o viziune simplificata si personalizata asupra BDD.

12.Ce nivele de independente cunoasteti in cazul bazelor de date?


12.Independenta fata de caile de acces, adica utilizatorul nu trebuie sa fie preocupat de
organizarea si modul de acces la date la nivel fizic.Independenta fizica- In acest sens, nivelului
conceptual i se ataseaza o transformare prin care se defineste modul in care structura conceptuala
se transpune in structura fizica de memorare a datelor si care reprezinta interfata dintre cele doua
nivele. Independenta logica se refera la imunitatea modelului propriu extern si deci a
programelor de aplicatie fata de modificarile din structura globala a bazei de date.

13.Ce este un model si ce parti are?


13.Un model reprezinta un ansamblu de instrumente conceptuale, care permit descrierea datelor,
a relatiilor dintre ele, a semanticii lor, cat si a restrictiilor la care sunt supuse aceste date. Un
model de date include urmatoarele componente: 1.un set de reguli de structurare a datelor,
numite si reguli generatoare si 2.un set de reguli de manipulare a datelor.
14.Care sunt modelele bazate pe obiecte si care sunt cele orientate pe inregistrari?
14. Modelele bazate pe obiecte sunt:
a)modelele entitate-asociatii (E-A), entitate-relatie (E-R) sau obiect-entitate-relatie (OLE)
b)modelul semantic
c)modelul functional
d)modelul orientat pe obiecte
Modelele orientate pe inregistrari sunt:
a)modelul ierarhic
b)modelul retea
c)modelul relational

15.Ce generatii de SGBD-uri cunoasteti si prin ce se caracterizeaza ele?


15.Prima generatie de BDD a fost cea bazata pe structuri arborescente, adica relatii de tip 1:n. A
doua generatie de BDD a fost cea bazata pe retele sau relatii de tip n:m. A treia generatie de
BDD este modelul relational, adica de tip n:1, al carui obiectiv este acela de simplificare a
accesului la date de catre utilizatorii finali.

16.Care sunt diferentele dintre entitati si tipuri de entitati?


16.Entitatea reprezinta unul dintre conceptele de baza cu care se opereaza in cadrul modelelor de
organizare a datelor in baza de date. Entitatiile la randul lor sunt reprezentate prin tipuri de
entitati. Un tip de entitate este o reprezentare a unei categorii de obiecte din lumea reala sau a
unei multimi de entitati de accelasi fel si atributele sale reprezinta caracteristicile generale ale
acelei categorii.

17.Ce este o baza de date relationala?


17.O baza de date relationala este definita ca fiind un ansamblu de tabele sau relatii intre care
exista anumite legaturi, fiecare tabela fiind alcatuita din coloane denumite atribute si linii
denumite si tuple.

18.Care sunt conceptele cu care se opereaza in domeniul relational?


18. 1.linia sau tuplul
2.atributul sau caracteristica
3.domeniul
4.inregistrarea logica
5.cardinalitatea relatiei
6.rangul relatiei
7.cheia relatiei

19.Definiti notiunile de tuplu, atribut si domeniu.


19.Tuplul reprezinta o succesiune de valori de diferite tipuri si contine informatii referitoare la
un obiect sau la o entitate cum ar fi: o carte dintr-o biblioteca, un angajat din tabelul angajati sau
o facultate din tabela facultati si cuprinde notiuni de inregistrare folosita la organizarea datelor in
fisiere. Atributul reprezinta o caracteristica sau o proprietate a unui tip de entitate sau clase de
entitati si defineste ansamblul valorilor de accelasi tip din cadrul unei coloane a tabelului.
Domeniul reprezinta totalitatea valorilor acceptate sau autorizate pentru un atribut al relatiei.
20.Cum se defineste matematic o relatie si care-i legatura intre tabele si relatiile finite?
20.Din punct de vedere matematic, prin relatie se intelege o submultime a produsului cartezian al
unor domenii. Avand domeniile D1D2….Dn, produsul lor cartezian se defineste astfel:
V=D1xD2X…..xDn={(d1,d2,…..,dn)} si reprezinta o asociere intre elementele fiecarui
domeniu, sau mai exact este multimea tuturor combinatiilor sau tuplelor de forma {d1,d2,….dn}
unde di apartine lui Di.

21.Ce este antetul si ce este corpul unei relatii?


21.Antetul relatiei reprezinta o multime de atribute definite pe cate un domeniu(nu neaparat
distinct) astfel: {A1: D1,A2:D2…An:Dm}. Corpul relatiei reprezinta o multime de tuple, fiecare
tuplu continand o multime de valori aferente atributelor definite in antetul relatiei astfel: {t1,t2,
….,tk,……tm} multime de tuple, ti={di1,di2,…….,din} multime de valori aferente unei tuple
pentru i=1,2,…,m;

22.Enuntati proprietatiile relatiilor.


22. 1.Ordinea atributelor in cadrul unei relatii este nesemnificativa
2.Atributele unei relatii trebuie sa fie distincte, chiar daca pe accelasi domeniu sunt
definite mai multe atribute
3.Orice atribut are valori atomice, adica la intersectia dintre o linie si o coloana se afla o
singura valoare si nu o colectie de valori sau grupuri repetitive
4.In cadrul corpului relatiei, tuplele nu sunt ordonate in mod obligatoriu
5.Intr-o relatie nu exista tuple duplicate

23.Cum se defineste o cheie?


23.O cheie reprezinta un atribut sau o multime de atribute cu urmatoarele proprietati
1.identificare unica, ceea ce inseamna ca multimea de atribute K identifica in mod unic
fiecare tuplu din relatie
2.ireductibilitatea, ceea ce inseamna ca nu exista nici o submultime proprie a multimii K,
care sa identifice in mod unic un tuplu al multimii R
3.valorile atributului sau ale ansamblului de atribute care definesc cheile candidat sunt
intotdeauna specificate, adica nu pot fi nule

24.Ce este o cheie primara, una candidat si una straina?


24.Daca intr-o relatie exista mai multe atribute sau combinatii de atribute care permit
identificarea unica a tuplelor, acestea sunt denumite chei candidat. O entitate poate contine mai
multe chei candidat, dar numai una dintre ele se alege pentru a fi folosita la identificarea tuplelor.
Aceasta cheie se numeste cheie primara. Cheia straina se utilizeaza la stabilirea legaturilor dintre
doua tabele, numite tabela principala sau parinte si tabela secundara sau copil. Valoarea cheii
straine trebuie sa se regaseasca in multimea cheilor primare ale tabelei principale.

25.Cum se definesc legaturile 1:n, m:n si n:1?


25. Legatura 1:n - prin care unei entitati din multimea M1 sau din tabelul M1 ii corespund
mai multe entitati in multimea sau tabelul M2, iar unei entitati din M2 ii corespunde o singura
entitate in M1.
Legatura m:n – prin care unei entitati din M1 ii corespund mai multe entitati in M2 si
reciproc
Legatura n:1 – NU EXISTA IN CARTE SAU E ACCEASI CU 1:N

26.Ce este integritatea referentiala?


26.Integritatea referentiala se defineste ca fiind un ansamblu de reguli impuse tabelelor intre care
s-au stabilit anumite legaturi.

27.Cum se reflecta integritatea referentiala in cazul tabelei principale?


27.In tabela principala(tabela parinte)
a.operatia de adaugare se va face fara nici un fel de restrictii din punct de vedere
al conditiilor de integritate referentiala
b.operatia de stergere - deoarece prin stergerea unui tuplu din relatia sau tabela
principala, in relatia secundara pot ramane tuple care fac referire la tuplul sters, pt a mentine
integritatea referentiala se poate introduce stergerea restrictionata sau in cascada.
-in primul caz nu se poate sterge un tuplu din tabela principala daca acesta
are corespondent tuple in tabela secundara, deoarece tuplele din tabela secundara raman orfane.
-in al doilea caz, stergerea unui tuplu din tabela principala va fi urmata de
stergerea tuturor tuplelor din relatia secundara care fac referire la tuplul sters
c.operatia de modificare poate fi privita ca si in cazul operatiei de stergere, iar
restrictiile referentiale sunt cele folosite la operatia de stergere
28. Cum se reflecta integritatea referentiala in cazul tabelei secundare?
28.In tabela secundara (tabela copil)
a.operatia de adaugare se poate face numai daca valorile cheii straine pt articolele
adaugate se regasesc printre valorile cheii primare din tabela principala, altfel operatia de
adaugare este interzisa
b.operatia de stergere se poate realiza fara nici o restrictie din punct de vedere al
conditiilor de integritate referentiala
c.operatia de modificare se poate realiza cu conditia sa nu apara inregistrari fara
corespondent in tabela principala.

29.Ce este schema relationala si cum se poate reprezenta?


29.Schema relationala poate fi definita ca un ansamblu de relatii asociate semantic prin domeniul
de definitie si prin restrictii de integritate. Schema relationala poate fi reprezentata grafic prin
mai multe metode. Una dintre ele se bazeaza pe urmatoarele reguli:
a. o tabela se reprezinta pe doua linii, unde prima linie contine numele tabelei, iar a doua
linie numele atributelor
b.cheia primara este plasata in stanga tabelei, reprezentata de primul atribut
c.numele atributului sau atributelor care formeaza cheia primara se subliniaza
d.o restrictie se indica printr-o sageata care pleaca de la numele coloanei de referinta spre
coloana referentiata.

30.Cum se realizeaza legatura intre elementele unei entitati si ale unei tabele?
30. 1.In timp ce relatia este o multime teoretica, tabela este un obiect concret cu o anumita
reprezentare(tablou bidimensional)
2.In timp ce intr-o relatie ordinea atributelor sau tuplelor nu este semnificativa, intr-o
tabelaexista o ordonare atat a coloanelor, data de ordinea acestora la creare, cat si a
inregistrarilor, data de ordinea in care au fost introduse in tabela sau ca urmare a indexarii
tabelei.
3.In timp ce o relatie teoretica este formata intotdeauna din tuple distincte, in practica o
tabela poate contine si linii duplicat.
In acest context, notiunea de relatie se identifica cu cea de tabela sau fisier, atributele, cu
denumirea coloanelor unei tabele sau cu campurile unui fisier, iar tuplele, cu liniile tabelei sau cu
articolele unui fisier.

31.Care este schema generala a unei baze de date?


31.Fig 4.2 pag 143

4. FORME NORMALE SI MECANISMUL NORMALIZARII

1. Definiti notiunile de:


Intreprindere: este o structura organizata in vederea realizarii unor produse sau servicii. (Ex: o
fabrica, o universitate)
Model: este un ansamblu de reguli pentru formalizarea intreprinderii. In practica exista: modele
matematice, economice, contabile, de date.
Modelul conceptual: fiind primul nivel si cel mai general de abstractizare a intreprinderii, se
realizeaza fara utilizarea calculatorului si poate lua diferite forme cum ar fi: modelele de tip E-R
sau OLE. Imaginea intreprinderii prin modelul conceptual este schema conceptuala, care este
formata din obiecte si relatii sau legaturi intre acestea.

2. Ce modele de date cunoasteti?


- conceptuale
- logice
- fizice
- externe

3. Ce este schema sau structura unei baze de date?


Schema de date este imaginea la nivel relational a schemei conceptuale si deci, a intreprinderii.
Baza de date poate fi considerata, in aceasta acceptiune, ca fiind schema de date impreuna cu
datele care populeaza schema respectiva.

4. Ce este redundanta si inconsistenta?


Redundanta este proprietatea unei informatii de a se repeta nejustificat;
Inconsistenta este legata de aparitia distorsionata a unor informatii in diferite contexte; una din
cauzele inconsistentei este redundanta, deoarece este suficient ca la o aparitie (copie) a
informatiei redundante, aceasta sa fie introdusa gresit si informatia poate deveni inconsistenta.

5. Care sunt anomaliile de stocare?


???

6. In ce consta anomalia de reconexiune?


Tabele pag. 146
7. Care este scopul si definitia normalizarii?
Normalizarea este o operatie prin care se urmareste:
- transformarea tabelelor in relatii
- inlaturarea redundantelor
- inlaturarea dependentelor interne intre atreibutele unei relatii
- inlaturarea diferitelor anomalii (de inserare, modificare sau stergere)
- asigurarea descompunerilor fara pierderi
Normalizarea este procesul iterativ prin care baza de date se aduce la o forma standard in care
dispare fenomenul de redundanta, nu exista anomalii si fiecare tabel contine o singura entitate
semantica (nu exista dependente intre atribute)

8. Definiti notiunea de:


Dependenta functionala, fiind o dependenta univoca, seamana cu functia din matematica,
deoarece uneia sau mai multor valori ale primului atribut ii corespunde 0 sau 1 valoare din al
doilea atribut. Deosebirea dintre cele doua este ca in timp ce functia matematica este atemporala,
dependenta functionala depinde de timp.
Fie R o relatie, A si B doua multimi de atribute ale ei. Se spune ca intre A si B exista o
dependenta functionala totala si se noteaza cu DFT: A->B, daca si numai daca au loc
urmatoarele conditii:
(i) Exista DF: A->B
(ii)Nu exista nici o submultime proprie A’ a lui A astfel sa existe DF:A’->B
O dependenta functionala care nu este totala este o dependenta partiala.

9. Enuntati axiomele lui Armstrong:


Fie R o relatie si A,B,C trei multimi de atribute ale ei. Pentru dependente functionale au loc
urmatoarele axiome:
A1: Reflexivitatea A->A, sau mai general, daca A’ este o parte a lui A, rezulta A->A’
A2: Cresterea determinantului:
- daca exista DF:A->B
-A este o submultime a lui C, rezulta ca are loc si DF: C->B
A3: Tranzitivitatea:
- din A->B
- si B->C, rezulta A->C

10. Ce este un sistem complet si ce este un sistem inchis de axiome?


O multime de axiome este completa daca si numai daca pornind de la o multime de dependente E
se pot obtine pe baza axiomelor toate dependentele inchiderii lui E.
O multime de axiome este inchisa, daca si numai daca, pornind de la multimea E a dependentelor
nu se pot deduce, cu ajutorul axiomelor, dependente care nu fac parte din E.

11. Enuntati teorema lui Ulman:


Multimea axiomelor lui Armstrong este completa si inchisa.
12. Ce este inchiderea tranzitiva a unei dependente, respectiv inchiderea unei multimi de
dependente?
Fie E o multime de dependente. Multimea E+ a tuturor dependentelor tranzitive obtinute din E se
numeste inchiderea lui E.

Din tranzitivitate:
- din A->B
- si B->C
rezulta A->C
DF: A->C se mai numeste inchiderea tranzitivaa primelor doua dependente, respectiv se spune ca
C depinde tranzitiv de A.

13. Ce este o acoperire si ce este o acoperire minimala a unei multimi de dependente?


Fie acum doua multimi de relatii E si E’, unde E’ contine dependente din E precum si unele
dependente obtinute din E aplicand proprietatile acestor dependente. E’ se numeste acoperire a
lui E daca si numai daca, E si E’ au aceasi inchidere.
E’ se numeste o acoperire minimala a lui E daca si numai daca este o acoperire a lui E si nicio
parte a lui E’ nu are aceasta proprietate. Referitor la acoperirea minimala trebuie remarcate
urmatoarele:
- acoperirea minimala joaca un rol important in descompunerea relatiilor
- o multime de aplicatii poate avea mai multe acoperiri minimale.

14. Ce este o relatie ireductibila? Dar o descompunere atomica?


O descompunere se spune ca este reversibila daca, recompunand relatiile obtinute prin
descompunere, se obtine relatia initiala.
O relatie se numeste ireductibila daca nu mai poate fi descompusa in mod reversibil.
Se numeste o descompunere atomica a unei relatii R, o descompunere reversibila a lui R in relatii
ireductibile.

15. Dati definitia unei relatii in 1NF:


O relatie este in prima forma normala (1NF) daca fiecare atribut (camp) este atomic si nu contine
grupuri repetitive.

16. Cum se transforma o tabela intr-o relatie 1NF?


Trecerea unui tabel la prima forma normala se realizeaza astfel:
- atributele care nu sunt atomice se transforma in campuri atomice prin proiectare
(descompunere) si eventual redenumire.
- pentru campurile repetitive se introduc atatea tuple cate aparitii are campul respectiv, fiecare
tuplu continand o aparitie a campului.

17. Dati definitia unei relatii in 2NF:


O relatie se considera in a doua forma normala (2NF), daca este in prima forma normala si orice
atribut care nu face parte din cheia primara, depinde functional total de cheia primara; cu alte
cuvinte, niciun atribut care nu face parte din cheia primara nu depinde functional de o parte a
cheii primare.
18. Cum se aduce o relatie din 1NF in 2NF?
fig. pag. 151

19. Care sunt cele 3 definitii pentru 3NF?


O relatie este in 3NF daca este in 2NF si intre doua atribute care nu sunt cheie nu exista o
dependenta tranzitiva.
O a doua definitie pentru forma a 3-a normala a fost data de Boyce si Codd, ea se numeste forma
BCNF sau Boyce-Codd Normal Form si se defineste astfel: o relatie R este in BCNF daca pentru
orice multime de atribute A pentru care exista un atribut din C(A), unde C(A) este multimea
atributelor din R care nu fac parte din A si care depind functional de A, are loc proprietatea ca
orice atribut din R depinde functional de A.
O a treia definitie a formei a 3-a normale este cea data de Sharman si se enunta astfel: O relatie
este in 3NF daca orice determinant este o cheie (prima sau candidat).

20. Cum se trece de la 2NF la 3NF?


Putem deci spune ca trecerea de la 2NF la 3NF se realizeaza prin izolarea DF trazitive si
aplicand teorema de descompunere. Schematic fenomenul se reprezinta astfel (pag 153).

21. Ce este BCNF si cum se aduce o relatie din 3NF la BCNF?


Vezi raspunsul la intrebarea 19.
Cum se aduce o relatie din 3NF la BCNF (pag. 152)

22. Dati definitiile dependentelor multivoce intre doua grupuri de atribute ale unei relatii:
Se spune ca intre A si B exista o dependenta multivoca (DM) A=>B, daca si numai daca:
- orice valoare a lui A determina o multime de valori din B
- daca A,B,C reprezinta o partitionare a multimii atributelor lui R, imaginile lui A in
raport cu B si a lui (A,C) in raport cu B sunt identice.
Fie ai,bi,ci subtuple din R facand parte din A,B,C. Se spune ca intre A si B exista o dependenta
multivoca, daca din faptul ca n-tuplele (a1,b1,c1) si (a2,b2,c2) apartin lui R, rezulta ca si n-tuplele
(a1,b1,c1) si (a2,b2,c2) apartin de asemenea lui R>

23. Dati definitiile lui DM simple:


O dependenta multivoca DM este simpla daca exista in relatia de pornire.

24. Ce tipuri de anomalii pot aparea din cauza acestora?


- anomalii de inserare
- anomalii de modificare
- anomalii de stergere

25. Ce este o dependenta multivoca imbricata sau incuibarita?


Anumite DM pot sa nu apara in relatia initiala dar sa apara in urma descompunerilor. Acestea se
numesc dependente incuibarite sau imbricate (definite de Ullman si Delobel).

26. Definiti 4NF si enuntati teorema lui Cassey si modul de trecere de la BCNF la 4NF:
Utilizand dependentele multivoce, teorema lui Delobel se poate scrie si sub forma teoremei lui
Cassey: Fie R o relatie definita pe multimea atributelor Ω, R(Ω) si fie A,B,C o partitionare a lui
Ω, astfel ca sa existe DM:A=>B. Atunci R(Ω) poate fi descompus fara pierderi, in doua relatii
R(Ω1) si R(Ω2), unde:
Ω1=A U B – este reuniunea atributelor lui DM
Ω2=A U B – este reuniunea lui A cu atributele care nu fac parte din DM
O relatie R este in 4NF daca este in BCNF si daca exista o dependenta multivoca netriviala
A=>B in R, atunci exista si o dependenta univoca A->B in R; cu alte cuvinte, orice determinant
al unei Dm trebuie sa fie determinant pentru o DF.

27. Definiti descompunerea fara pierderi a relatiilor si enuntati teorema lui Ullman.
O relatie R care are o descompunere in relatiile R1,R2.........Rn este fara pierdere, daca este
reversibila. Aceasta este o conditie necesara de descompunere si se refera la extensia bazei de
date (datele ei) nu si la intensia (structura) ei.
Teorema lui Ullman: Fie o descompunere al lui R in doua relatii R1 si R2. Daca se noteaza cu D
multimea tuturor dependentelor DM si DF din R, descompunerea este fara pierderi, deci
reversibila, daca si numai daca dependentele DM si DF de la R1 intersectat cu R2 la R1-R2,
respectiv R2-R1, fac parte din inchiderea lui D.

28. Definiti descompunerea care conserva dependentele si enuntati teorema lui Rissanen:
Teorema lui Rissanen: Fie R1 si R2 o descompunere a lui R si F multimea dependentelor din R.
Descompunerea este reversibila si conserva dependentele din F daca si numai daca:
(i) F poate fi dedus din F(R1) si F(R2) (conserva dependentele)
(ii) Atributele comune ale lui R1 si R2 formeaza o cheie cel putin in una din relatiile R1 si R2,
adica exista o dependenta de la R1 intersectat cu R2 la R1-R2, respectiv R2-R1,
Descompunerea care conserva dependentele (ex. pag 158)

29. Ce este dependenta fata de asociere si care este relatia ei cu dependenta mutuala si cu cea
multivoca?
Fie R o relatie si A1,A2 ....An un ansamblu de submultimi ale domeniului lui R, nu neaparat
disjuncte, astfel ca reuniunea lor sa coincida cu domeniul lui R. Spunem ca R satisface
dependenta fata de asociere pe A1,A2 ....An daca si numai daca:
R=R1(A1)∆ R2(A2)∆..... ∆ Rn(An) unde Ri(Ai) este proiectia lui R pe Ai, iar prin
∆ s-a notat operatia de asociere (join).
Dependenta fata de asociere este o generalizare a celorlalte depedente de pana acum. Astfel, in
cazul n=2 avem de a face cu dependenta multivoca.
In cazul n=3 avem de a face cu dependenta mutuala.

30. Ce este a 5-a forma normala si de ce este ea ultima forma normala posibila?
O relatie R este in a 5-a forma normala (5NF), denumita forma normala de proiectie/asociere
(PJ/NF), daca si numai daca dependenta fata de asociere a lui R este indusa de chei candidat.

31. Ce alte forme normale, in afara de cele clasice, cunoasteti?


Forma normala de tipul 3,3.

1. Ce este o baza de date distribuita?


O baza de date distribuita reprezinta o colectie de date integrate logic,insa repartizate
fizic pe siturile unei retele de calculatoare.Asadar este un ansamblu de baze de date
administrate de diferite situri dar care apar pentru utilizator ca o baza unica.Acestea sunt
proiectate sub forma unor colectii de date integrate , imprastiate cu discernamant intr-o
retea de calculatoare.

2. Care sunt elementele care caracterizeaza sistemele distribuite si la care fac referire
in general definitiile?
Definitiile surprind doua aspecte ale bazelor de date distribuite si anume integrarea logica
si repartizarea fizica. Integrarea logica se refera la faptul ca datele inmagazinate nu sunt
simple colectii de fisiere ci reprezinta o structura bine organizata pe care utilizatorul o
percepe ca o singura baza de date.
Repartizarea fizica se refera la faptul ca baza de date nu este stocata intr-o singura locatie
fizica ci este impartita pe mai multe statii de lucru.Dispersarea poate sa se faca depasind
bariera unui birou sau a unei cladiri.

3. Ce este un SGBDD?
Reprezinta sistemul software care permite gestiunea bazelor de date distribuite facand
distribuirea fizica transparenta pentru utilizatori.

4. Ce se intelege prin fragmentarea bazelor de date si de cate tipuri este aceasta?


Fragmentarea este procesul de spargere a relatiilor utilizate intr-un sistem de baze de date
distribuir prin operatiuni de proiecttie si selectie in vederea plasarii asa numitelor
fragmente in locul in care sunt cel mai frecvent solicitate datele pe care le contin.
Fragmentare orizontala, fragmentare verticala, fragmentare mixta, fragmentare derivata.

5. Care sunt argumentele in favoarea fragmentarii?


Uzanta- in aplicatiile proiectate pentru baze de date se folosesc frecvent tabelele virtuale
in detrimentul relatiilor intregi.De cele mai multe ori un operator nu are nevoie de toate
relatiile si informatiile pe care le ofera o relatie intreaga. Astfel unitatea atomica de
proiectare si utilizare nu va fi relatia ci o subdiviziune a acesteia.
Eficienta-Distribuirea unor relatii intregi pe diferite statii de lucru ar anula aspectul
semantic al siturilor in functionalitatea sistemului distribuit.
Paralelismul-mai multe fragmente ale unei baze de date sporesc accesul concurent. Mai
multe cereri la care sistemul raspunde in acelasi timp.
Securitatea-Un atac nu ar afecta functionarea intregului sistem ci poate doar un sit, care
oricum isi replica informatia.
Complexitatea proiectarii- este mult mai greu de proiectat decat un sistem nedistribuit.
Performanta-mult mai sporita datorita alocarii eficiente a fragmentelor.
Controlul integritatii- este aspectul primordial al oricarei baze de date.
6. Ce reguli stau la baza fragmentarii?
Completitudinea fragmentarii – fragmentele trebuie sa acopere intreaga relatie initiala.
Trebuie sa elimine pierderile de date .
Refacerea relatiei initiale – fragmentarea se face in asa fel incat in orice moment sa poata
fi refacuta relatia initiala.
Caracterul disjunct – fragmentele provenite din aceeasi relatie nu trebuie sa se suprapuna.

7. Descrieti fragmentarea orizontala.Exemplificati.


Dupa cum sugereaza si numele se face de-a lungul tuplelor unei relatii. Un fragment
orizontal este format dintr-o submultime a tuplurilor unei relatii.Predicatele pe baza
carora se face fragmentarea orizontala sunt cele minterm.Ele sunt conjunctii de predicate
simple sau negatii ale acestora.Daca sunt n predicate simple vor fi 2 la N predicate
minterm.

8. Ce sunt predicatele minterm?


Predicatele minterm sunt predicatele pe baza carora se abordeaza fragmentarea
orizontala.Sunt conjunctii de predicate simple sau negatii ale acestora.

9. Descrieti fragmentarea verticala.Exemplificati.


Reprezinta o descompunere de-a lungul atributelor unei relatii.Realizarea acesteia
presupune operatii de proiectie asupra atributelor prin includerea in cazul fiecarui
fragment al unei chei alternative a relatiei. Scopul acestei includeri este obtinerea unei
fragmentari fara pierderi de informatii.
Exista doua metode de abordare a fragmentarii verticale si anume : gruparea atributelor si
partitionarea tributelor. Gruparea presupune stabilirea unui fragment pentru fiecare
atribut. Partitionarea presupune ca pentru fiecare fragment se vor stabilii atribute care vor
face parte din acesta. Acest lucru se face pe baza identificarii cererilor ce actioneaza
asupra atributelor iar apoi se va utiliza algoritmul energiei de angajament.

10. Descrieti fragmentarea mixta.Exemplificati.


Mai este numita si fragmentare hibrida deoarece este o combinatie intre fragmentarea
orizontala si cea verticala.Exista doua tipuri de fragmentare mixta si anume:fragmente
orizontale partitionate vertical, fragmente verticale partitionate orizontal.

11. Ce este fragmentarea derivata?


Este un tip aparte de fragmentare, in practica cea mai des intalnita.Aceasta este o
fragmentare orizontala care se face intre doua relatii: una parinte si una fiu.Se porneste de
la relatia fiu care va fi fragmentata conform predicatului prestabilit.Aceasta fragmentare
este impusa de nevoia optimizarii accesului la date.

12. Cand se utilizeaza relatiile nefragmentate?


Relatiile cu un numar relativ mic de inregistrari nu necesita fragmentare deoarece in acest
caz ar fi mai degraba un disconfort decat un lucru care sa imbunatateasca performantele.
In acest caz se recomanda replicarea acestor informatii pe fiecare sit in parte.

13. Ce este replicarea?


Presupune copierea unor fragmente in mai multe locatii.

14. Care sunt nivelele de replicare pe care le cunoasteti?


Intr-o baza de date avem mai multe nivele ale replicarii:
-baze de date centralizate(o singura baza de date stocata pe nodul central, un singur
SGBD, securitatea , fiabilitatea si disponibilitatea sunt scazute.Cost de comunicatie
ridicat.)
-baze de date partitionate,fragmentate sau nereplicate(sunt acele baze de date in care toate
fragmentele apar o singura data. )
-baze de date replicate integral( orice sit contine cate o copie a intregii baze de date,
disponibilitatea, fiabilitatea si securitatea sunt maxime.Cost mare al echipamentelor de
stocare.)
-baze de date replicate partial( anumite fragmente sunt replicate altele nu. Sunt replicate
fragmentele utilizate cel mai des.Aceasta forma de replicare preia avantajele celor de mai
sus si incearca sa elimine dezavantajele.

15. Ce este alocarea si ce metode de alocare cunoasteti?


Alocarea este procesul de repartizare a fragmentelor pe situri. Alocarea poate sa fie
redundanta sau neredundanta. Cea neredundanta este cea mai ieftina si cea mai usor de
realizat.Unei statii pe care a fost plasat deja un fragment nu poate sa mai primeasca un
fragment inrudit. Alocarea redundanta este mult mai complexa , exista doua abordari:
metoda selectarii- identificarea siturilor pentru care beneficiul alocarii este mai mare
decat costul alocarii.
-metoda alocarii progresive: se face o alocare neredundanta apoi in functie de
profitabilitate se raspandesc replici ale fragmentelor deja alocate.

16. Desenati si descrieti arhitectura de referinta a sistemelor distribuite.


-Schemele externe globale care reprezinta viziunea fiecarui utilizator asupra sistemului.
-Schema conceptuala globala ,adica o imagine completa asupra bazei de date.
-Schema de fragmentare ce reprezinta ideea proiectantuluide partitionare a bazei de date.
-Schema de alocare se refera la modul de amplasare fizica a fragmentelor si replicilor.
-Schema de transformare: armonizare intre fragmentele amplasate conform schemei de
alocare si vederile utilizatorilor bazei de date locale.
-Schema conceptuala locala – descrierea logica a unei baze de date amplasate pe un sit.
-Schema interna locala – modalitatea de stocare a datelor locale.
17. Enumerati principiile lui Date referitoare la sistemele distribuite.
Pentru utilizator sistemul distribuit trebuie sa arate si sa se comporte ca unul nedistribuit.
Autonomia locala,absenta unei dependente de un sit central, operarea continua,
independenta de fragmentare, independenta de localizare, independenta de replicare,
prelucrarea distribuita a interogarilor, gestiunea distribuita a tranzactiilor,independenta de
hardware, independenta de sistemul de operare, independenta de retea , independenta de
SGBD.

18. Care sunt etapele de procesare a cererilor intr-un sistem distribuit?


Descompunerea interogarilor.
Localizare datelor.
Optimizarea cererilor globale.
Optimizarea cererilor locale.

19. Dati exemple de protocoale de gestiune a accesului concurent intr-un mediu


distribuit.
Protocolul 2PL centralizat .
Protocolul 2PL de copie primara.
Protocolul 2PL distribuit.
Protocolul 2PL de zavorare a majoritatii.

20. Care sunt avantajele si dezavantajele sistemelor distribuite?


Avantaje:
-Structura organizationala,Caracterul partajabil,autonomia locala, disponibilitate si
fiabilitate , performante imbunatatite,dezvoltare modulara,economie.
Dezavantaje:
-Complexitate,lipsa de standarde,securitate,dificultatea controlului integritatii si al
concurentei,lipsa de experienta,dificultatea de inlocuire sau de schimbare.

21. Ce este un sistem de baze de date federative? Dati exemple de situatii la care acestea
se preteaza.
Este o colectie de sistene de baze de date colaborative care sunt autonome si posibil
heterogene.Reprezinta unificarea logica a unor baze de date distincte ce ruleaza pe
servere independente, conectate prin intermediul unei retele. Internetul cel mai mare
sistem federativ.Exista trei calitati ce caracterizeaza sistemele federative: Autonomia,
Heterogenitatea, Distribuirea.

22. Ce sunt sistemele nefederative?


?????

23. Care sunt caracteristicile sistemelor federative?


Autonomia-fiecare baza de date a fost proiectata autonom si isi pastreaza libertateea de a-
si modifica sau nu design-ul , este libera sa decida ce date si cui le va partaja precum si
modul de gestiune al interogarilor si tranzactiilor provenite din exterior.
Heterogenitatea-se concretizeaza in diferente de hardware,sisteme de operare, SGBD,
modele de date , limbaje.Un sistem federativ poate avea nodurile formate din masini cu
tehnologii diferite(ex laptop,mac,mainframe,server,desktop).
Distribuirea-nu e vorba de doar o baza de date distribuita ci de un numar N de baze de
date separate ce pot fi localizate in diferite noduri ale unui sistem de baze de date
federativ.

24. Ce este Wrapper-ul?


Este cel mai popular concept atunci cand se vorbeste de interconectarea bazelor de date
heterogene, mai este cunoscut sub numele de mediator.Acestea sunt niste straturi
software intermediare ce transparentizeaza nivele ale heterogenitatii.

25. Ce este heterogenitatea semantica?Exemplificati.


Se refera la numele obiectelor ,valorile pe care pot sa le ia datele si structura conceptuala.
Ca si exemplu putem sa avem sisteme de notare diferite astfel in Romania sunt note de
la 1 la 10 in SUA este a,b,c,d iar in Ungaria de la 1 la 5.

26. Ce sunt depozitele de date?


Sunt colectii de date nevolatile orientate spre subiect ,integrate, variabile in timp care
sprijina managementul firmei in procedeul de luare a deciziilor.

27. Ce reprezinta pietele de date?


Sunt submultimi ale depozitelor de date ,particularizate in vederea indeplinirii nevoilor
unui departament sau care acopera un subiect. Sunt depozite de date cu caracter mai
specific care contin date sumarizate intr-o masura putand astfel sa raspunda unor
probleme furnizate de utilizatori.

28. Ce operatiuni presupune inmagazinarea datelor?


?????

29. Ce este OLAP?


Prelucrarea analitica online reprezinta sinteza , analiza si consolidarea dinamica a unor
volume vaste de date multidimensionale.Olap este o tehnologie ce suporta facilitati
analitice asupra uneia sau mai multor surse de date.In general implica analaiza datelor ce
isi au originea in baze de date traditionale transformate ulterior in structuri
multidimensionale.

30. Ce sunt cuburile de date?


In cadrul sistemelor multidimensionale ,reprezentarea intuitiva a datelor se face prin
intermediul cuburilor de date. Cand numarul de dimensiuni devine mai mare decat 3
avem de- a face cu cuburi n-dimensionale sau hipercuburi.Cuburile sunt date usor de
extins pentru noi dimensiuni, navigarea prin intermediul lor este facila.

31. Ce este datamining-ul?


Consta intr-o analiza automata a datelor electronice structurate precum in cadrul unui
depozit de date cu intentia de a descoperii tipare anterior necunoscute si relatii dintre date
pentru a putea fi folosite in adoptarea unor decizii importante , necesare eficientizarii
activitatii economice.

32. In ce domenii se poate aplica mineritul datelor?


-Comertul cu amanuntul/marketingul.
-Domeniul bancar.
-Asigurari.
-Medicina.

33. Care sunt principalele operatii de extragere a datelor?


-Modelarea predictiva.
-Segmentarea bazei de date.
-Analiza legaturilor.
-Detectarea deviatiilor.

34. Comentati integrarea bazelor de date.


Este unul dintre pasii importanti facuti de tehnologia moderna.Paginile sunt acum mai
atractive , mai dinamice si mai usor de administrat.Se reduce foarte mult redundanta chiar
daca accesarea unei pagini se face mai rapid decat prin interogarea unei baze de date.
Exista diverse modalitati de integrare a celor doua tehnologii dar niciuna nu este unanim
acceptata pentru rezolvarea problemelor de integrare.Aparitia limbajului XML este un
pas revolutionar in integrarea Web-SGBD , consideram ca intre web si domeniul bazelor
de date distribuite va exista o colaborare de lunga durata, viitorul urmand sa ofere solutii
din ce in ce mai fiabile si mai facile pentru utilizator.

5. INTELIGENȚĂ ARTIFICIALĂ
1. Cum se defineste logica?
LOGICA este ştiinţa demonstraţiei al cărui obiect este stabilirea condiţiilor
corectitudinii gândirii, a formelor şi legilor generale ale raţionării corecte, conforme
prin ordinea ideilor cu organizarea legică a realităţii obiective".
2. Dati exemple de utilizare a logicii in informatica economica si de afaceri.
principalele aplicaţii ale logicii din domeniul IE baze de date şi de cunoştinţe, a căror
interogare se bazează pe logică. SE, SSD, SSE, dar şi deciziile de zi cu zi ale
managerului sau omului de afaceri se bazează pe raţionamente logice. Practic nu există
domeniu de afaceri în care logica să nu joace un rol major.

3. Cum se defineste logica formala si prin ce se deosebeste de cea clasica


logica matematică, logica formală sau simbolică
Logica simbolică fundamentul raţionamentului uman - avantaje:
 asigură expresivitatea şi rigurozitatea în reprezentarea cunoştinţelor;
 asigură deducerea unor cunoştinţe noi pe baze altora deja existente.
Utilizează simboluri - reprezentarea obiectelor şi a operaţiilor executate asupra simbolurilor.
Pentru informatică şi pentru IE în special, logica formală prezintă un interes aparte. Dicţionarele
de informatică se mărginesc în general numai la acestea:"logica = substantiv, ştiinţa care se
ocupă cu gândirea şi raţionamentele; logica formală = tratarea formei şi structurii, ignorând
conţinutul";
4. Care este deosebirea esentiala intre tratarea logica si cea gramaticala a
propozitiilor?
În PL, valoarea de adevăr a propoziţiei este calitatea acesteia de a fi adevărată sau falsă în
întregul ei şi nu interesează obiectele constitutive ale sale. Exemplu: propoziţia „Ionescu este
managerul societăţii comerciale” sau „Ionescu manager”.

5. Ce este logica bivalenta si ce extensii ale ei cunoasteti?


PL clasic - orice propoziţie poate fi T sau F, dar nu amândouă deodată (legea terţului
exclus) - logică bivalentă
Nu gasesc extensii !!!!!
6. Ce este teoria logica si care sunt abordarile sale?
Teoria logică este în esenţă un limbaj de reprezentare a cunoştinţelor. Ca orice limbaj, are două
aspecte esenţiale:
 aspectul semantic sau abordarea semantică;
 aspectul sintactic sau abordarea sintactică.
7. Definiti notiunile de tautologie si de teorema.
Tautologie - Greșeală de limbă care constă în repetarea inutilă a aceleiași idei, formulată
cu alte cuvinte
Teorema reprezintă o afirmație al cărei adevăr se stabilește prin demonstrație.
8. Ce este abordarea semantica si care sunt elementele sale de baza?
Dupa cum se stie, semantica unui limbaj se ocupa de aspectele intime(interne) ale
universului problemei.
În cadrul abordării semantice trebuie fixate 5 elemente de bază :
 limbajul de descriere a formulelor logice (alfabetul limbajului);
 valoarea de adevăr a simbolurilor ataşate propoziţiilor (respectiv predicatelor);
 funcţiile de evaluare;
 mecanismul de raţionament reprezentat de consecinţele logice;
principiile teoriei logice

9. Ce simboluri propozitionale cunoasteti?


În PL - alfabetul este format din simboluri propoziţionale definite astfel:
 litere mici, p,q,r,…sau mari P,Q,R,... ataşate propoziţiilor;
 conectori logici:
~ sau ¬¿ ¿ - negaţia
^ - conjuncţia
V – disjuncţia
→ - implicaţia
↔ - echivalenţa
 alte simboluri, cum ar fi de exemplu: (, ).

10. Ce este un wff in PL?


PL - formulele corecte, corect formulate sau bine formulate, notate în literatură cu wff –
well formatted formulas
11. Care este semnificatia negatiei logice?
Negaţia – unei propoziţii, “non P” - [French91]: "not.P", P, P , sau ~P. Operaţiile
logice - cu ajutorul tablelor de adevăr (corespunzătoare tablelor operaţiilor aritmetice
elementare). Aceste table indică valoarea de adevăr a rezultatului în funcţie de valorile de
adevăr ale componentelor.

P ~P
F T
T F

Exemplu: P = “Bugetul trebuie aprobat anual”, care are valoarea T, negaţia ~P, “Bugetul nu
trebuie aprobat anual”, are valoarea F.

12. Care este semnificatia conjunctiei a doua propozitii?


Conjuncţia – propoziţiilor P şi Q - “P şi Q” - se notează cu P  Q. Notaţii [French91]: P.Q, P
.and. Q sau P&Q. Exemplu: P = “Pământul este rotund” şi Q= “impozitul este o datorie faţă
de stat”. P&Q va fi “Pământul este rotund” şi „impozitul este o datorie faţă de stat”.
13. Care este semnificatia disjunctiei a doua propozitii si prin ce se deosebeste disjunctia de
„sau exclusiv”?
Disjuncţia – “P sau Q” şi se notează cu “P  Q”. Notaţii şi cu: P+Q, P.or.Q sau P  Q. P  Q
= T dacă P=T, sau Q=T, sau ambele propoziţii sunt T. Sau exclusiv “sau Cezar sau nimic”.
“sau” logic trebuie interpretat în sensul limbajului curent astfel: dacă P este propoziţia
“Firma X practică comerţ en-gros” şi Q este propoziţia “Firma X practică comerţ en-detail”,
propoziţia “P sau Q” - “sau exclusiv” şi se notează cu xor.

14. Ce este o propozitie compusa si cum se determina valoarea sa de adevar?


Propoziţiile compuse sunt wff-uri care se realizează pe baza unor conectori sau operatori
logici. Principalii operatori logici, aşa după cum s-a prezentat mai sus, sunt: negaţia, conjuncţia
şi disjuncţia.
O propoziţie compusă care este adevărată dacă cele două propoziţii P şi Q sunt
concomitent adevărate sau false
15. Ce logici polivalente cunoasteti?
logica bivalentă
logica trivalenta
logicile neclasice
logicile fuzzy

16. Cum se clasifica wff-urile dupa domeniul de interpretare a functiilor de evaluare?


Pe baza domeniilor de interpretare şi a funcţiilor de evaluare, wff – urile se clasifică în:
 tautologii sau formule valide – T indiferent de interpretare;
 consistente – care iau valoarea T pentru unele interpretări;
 inconsistente (invalide) – F pentru unele interpretări;
 contradicţii - F pentru orice interpretare.

17. Ce sunt legiile algebrei Booleene?


Algebra booleană - cel mai important sistem logic bivalent
1.  - Axiomele de bază ale algebrei booleene sunt:
1 – comutativitatea:
P ^ Q = Q ^ P, respectiv P  Q = Q  P
2 – asociativitatea:
P ^ ( Q ^ R) = ( P ^ Q )^ R, respectiv P ( Q  R) = ( P  Q ) R
3 – proprietatea lui ^ şi , adică:
P ^ T = P şi P ^ F = F, respectiv P  T = T şi P  F = P
4 – proprietatea negaţiei, adică: P ^ ~P = F respectiv P  ~P=T
5 – distributivitatea lui ^ faţă de  şi a lui  faţă de ^, adică:
P^ ( Q  R) = ( P ^ Q )  ( P ^ R ),
respectiv P ( Q^ R) =( P  Q ) ^ ( P  R).
Axiomele - 5 legi de bază ale algebrei booleene.
18. Ce alte logici bivalente cunoasteti?
Logica propozitiilor
Logica predicatelor
Logica modala sau temporala
19. Enumerati principiul dualitatii si legile lui DeMorgen.
caracter dual: în orice teoremă din algebra booleană dacă se înlocuieşte  cu ^ şi invers,
teorema rămâne adevărată.

Legile deductibile: legile lui DeMorgan:


~( P ^ Q ) = ~P  ~Q, respective dualul, ~( P  Q ) = ~P ^ ~Q
20.
Prin inducţie completă -> generalizarea legilor lui DeMorgan la n propoziţii:
~ (P1 ^ P2 ^ … ^Pn ) = ~P1  ~P2  …  ~Pn, respectiv
21. ~ (P1  P2  … Pn ) = ~P1 ^ ~P2 ^ … ^ ~Pn
22.
-> ”Pentru a nega o formulă, schimbă semnul şi operatorul cu complementarul”. De
exemplu:
~(P~Q)=~P ~(~Q)= ~PQ.
21. Definiti forma normala conjunctiva si cea disjunctiva?
 forma normală conjunctivă - forma (C1C2 C3 …) unde Ci se numeşte clauză; fiecare
clauză - din propoziţii simple sau disjuncţii de propoziţii şi eventual negaţii ale acestora.
Forma normală conjunctivă - teoria demonstraţiei, deoarece propoziţia scrisă sub formă
clauzală este adevărată dacă şi numai dacă toate propoziţiile componente sunt adevărate
şi invers.
 forma normală disjunctivă – expresia sub forma unor disjuncţii de expresii, expresiile
din propoziţii simple sau conjuncţii de propoziţii şi eventual negaţii ale acestora. Această
formă este utilă în teoria circuitelor.

22. Cate functii logice binare se pot construi in logica bivalenta?


23. Cum se definesc implicatia si echivalenta?
 Implicaţia - inferenţa logică - operaţia principală în domeniul bazelor de cunoştinţe;
notată cu → şi are semnificaţia “dacă P, atunci Q”. Propoziţia P→Q ia valoarea fals
numai dacă din P „adevărat” rezultă Q „fals”. Avem, deci, următoarele situaţii posibile:
o dacă P este adevărată, atunci şi Q trebuie să fie adevărată;
o dacă P este falsă, Q poate fi adevărată sau falsă;

 echivalenţa logică – echivalenţa - notată cu ↔ - reprezentată de dubla implicaţie şi deci,


generează o propoziţie compusă care este adevărată dacă cele două propoziţii P şi Q
sunt concomitent adevărate sau false.

23. In ce consta principiul fixarii numarului de valori logice?


Teoriile logice - un număr fixat, n de valori logice distincte cu 2  n  . |V| cardinalul
mulţimii V - de cele mai multe ori acest cardinal are o valoare finită. Există însă şi logici
infinite.

Logică este cea bivalentă, în care

V = {T,F} şi deci |V|=2

În general se consideră 3 conectori de bază şi anume: ~, V, ^ cu tablele de adevăr:


P ~P P^Q T F PVQ T F
T F T T F T T T
F T F F F F T F

24. Ce logici trivalente cunoasteti?


Sistemu lui Klee cu V={T,F,U},
Sistemul Lukasiewicz, are V= {T,F,I}
Sistemul Bochvar
25. Ce este logica fuzzy?
logicile fuzzy în care pot exista o infinitate de valori de adevăr, logici bazate pe teoria
introdusă de Lotfi Zadeh

30. Enumerati propozitiile fundamentale?


31. Enuntati cele doua reguli inferentiale ale logicii propozitiilor?
1. „modus-ponens” sau „mod-pons”, care se enunţă astfel:
Fiind dat P adevărat P
din P→Q . notat şi cu P→Q
rezultă Q adevărat Q

2. regula de înlănţuire a inferenţelor sau închiderea tranzitivă a inferenţelor. Ea permite


ca pe baza a două implicaţii să se deducă o a treia. Astfel, această regulă se poate scrie:
dacă P→Q şi Q→R atunci P→R

33. Definiti notiunea de predicat?


Predicatele - simboluri prin care se notează relaţii sau funcţii definite pe elementele
domeniului discursului şi care iau valorile adevărat (T) sau fals (F).
34. Definiti notiunile de cuantificator universal si existential?
Mulţimea din care ia valori x se numeşte universul discursului sau domeniul discursului.  
indică faptul că valorile sunt variabile şi că predicatul se aplică tuturor valorilor din domeniul
discursului.

Cuantificatorul existenţial indică faptul că există valori în domeniul discursului pentru care
predicatul ia valoarea T, deci domeniul discursului nu este vid.
35. Ce sunt logicile de ordin superior si cum pot fi traduse formulele din aceste logici in FOPL?
În FOPL se foloseşte  între predicate pentru a evita trecerea la logici de ordin superior.
Exemplu:
(x) Student_economice(Căminist (Învaţă C++ (x)))
Este din teoria predicatelor de ordin superior deoarece avem 3 nivele de predicate
încuibărite. Se transcrie în:
(x) Student_economice (x)  Căminist (x)  Învaţă (x, c++)

6. PROIECTAREA PORTALURILOR WEB

1. Care este rolul unui client, in cadrul modelului Client-Server?


Modelul client-server sta la baza tuturor aplicatiilor electronice si serviciilor internet. Clientul, in
general, ruleaza pe calculatorul utilizatorului si este folosit pentru a accesa informatii sau alte aplicatii din
cadrul retelei internet. Exemplul de client este browser-ul care poate indeplini cu success urmatoarele
sarcini:
 Emite cererile si receptioneaza datele care se vor afisa
 Formateaza documentele pe baza tag-urilor HTML
 Afiseaza documentele
Clientul folosit pentru accesarea serverului web poate fi atat un browser cat si un alt program
capabil sa se conecteze la un port TCP (telnet, ftp etc.).
2. Ce se intelege prin server de web?
Serverul ruleaza, in general, pe un calculator, in cazul in care se utilizeaza mecanisme de
comunicatie locala, sau pe calculatoare diferite, atunci cand se folosesc mecanisme de comunicatie in
retea.
Un server web este unde program care ruleaza pe un calculator, asteapta pe un port o conexiune
TCP venita de la un client si serveste acestuia pagini web folosind protocolul HTTP.
Serverul web este un software, un program de sine statator, un executabil cu o functie bine
stabilita; aceea de a servi la cerere pagini de internet intr-un mod bine determinat. Acest software poate fi:
Apache HTTP Server, Microsoft Internet Information Services (IIS), iPlanet Web Server, Roxen
WebServer, Zeus WebServer etc. serverul web ruleaza pe un calculator.
3. Care este clientul in cadrul modelului client-server folosit in programarea web? Descrieti
caracteristicile acestui.
Clientul folosit pentru accesarea serverului web poate fi atat un browser cat si un alt program
capabil sa se conecteze la un port TCP (telnet, ftp etc.)
Browserul este un program folosit la afisarea de continut web. Acesta se impune sa poata sa
interpreteze pagini HTML, sa afiseze imagini si alte forma de continut multimedia, sa foloseasca referinte
(link-uri) etc. cea mai importanta caracteristica a sa este capacitatea lui de a se conecta prin protocolul
TCP la un server web. Metoda de conectare s-a prezentat anterior.
4. Enumerate activitatile indeplinite de browser cand joaca rolul de client.
 Browser-ul determina protocolul pe care il va folosi in dialogul cu serverul web
 Browser-ul determina adresa web a serverului (www.ubbcluj.ro)
 Browser-ul determina ce anume trebuie sa ceara de la serverul web, adica pagina html numita
exemplu.html
 Brwserul determina adresa IP a masinii pe care ruleaza serverul web prin interogari DNS pe
baza adresei web introdusa in address bar
 Pe baza adresei IP determinate anterior, brwserul va crea o conexiune TCP pe portul
specificat in URL sau implicit pe portul 80
 Browser-ul lanseaza cerere GET sau POST catre server specificand fisierul dorit: GET
/exemplu.html
 Serverul web raspunde trimitand fisierul dorit sau o eroare corespunzatoare in cazul in care
trimiterea nu este posibila (lipsa fisierului, drepturi de acces insuficiente etc.). aici conexiunea
dintre client si server se incheie
 Browser-ul analizeaza fisierul primit si il afiseaza corespunzator.

5. Descrieti arhitectura client-server

Client 1 Browser

raspuns
cerere

raspuns
Retea
Client 2 Browser
cerere Server BD
raspuns

cerere
6. Definiti notiunea de server web si exemplificati
Serverul ruleaza, in general, pe un calculator, in cazul in care se utilizeaza mecanisme de
comunicatie locala, sau pe calculatoare diferite, atunci cand se folosesc mecanisme de comunicatie in
retea.
Un server web este unde program care ruleaza pe un calculator, asteapta pe un port o conexiune
TCP venita de la un client si serveste acestuia pagini web folosind protocolul HTTP.
Serverul web este un software, un program de sine statator, un executabil cu o functie bine
stabilita; aceea de a servi la cerere pagini de internet intr-un mod bine determinat. Acest software poate fi:
Apache HTTP Server, Microsoft Internet Information Services (IIS), iPlanet Web Server, Roxen
WebServer, Zeus WebServer etc. serverul web ruleaza pe un calculator.
7. Definiti notiunea de browser si exemplificati
Browserul este un program folosit la afisarea de continut web. Acesta se impune sa poata sa
interpreteze pagini HTML, sa afiseze imagini si alte forma de continut multimedia, sa foloseasca referinte
(link-uri) etc. cea mai importanta caracteristica a sa este capacitatea lui de a se conecta prin protocolul
TCP la un server web. Metoda de conectare s-a prezentat anterior.
Browserele cele mai cunoscute si deci cele mai folosite sunt: Microsoft Internet Explorer,
Mozilla, Netscape, Opera, Lynx etc,
8. Enumerate limbajele de scripting invatate
C, C#, Java, JavaScript, PHP, Prolog, XHTML, SQL etc.
9. Ce se petrece pe server atunci cand se introduce in bara de adrese a browserului urmatoarea adresa
http://www.localhost/proiectphp/index.php?
 Browser-ul determina protocolul pe care il va folosi in dialogul cu serverul web
 Browser-ul determina adresa web a serverului
 Browser-ul determina ce anume trebuie sa ceara de la serverul web, adica pagina html numita
exemplu.html
 Brwserul determina adresa IP a masinii pe care ruleaza serverul web prin interogari DNS pe baza
adresei web introdusa in address bar
 Pe baza adresei IP determinate anterior, brwserul va crea o conexiune TCP pe portul specificat in
URL sau implicit pe portul 80
 Browser-ul lanseaza cerere GET sau POST catre server specificand fisierul dorit: GET
/exemplu.html
 Serverul web raspunde trimitand fisierul dorit sau o eroare corespunzatoare in cazul in care
trimiterea nu este posibila (lipsa fisierului, drepturi de acces insuficiente etc.). aici conexiunea
dintre client si server se incheie
 Browser-ul analizeaza fisierul primit si il afiseaza corespunzator.

10. Enumerati caracteristicile serverului Apache


Apache furnizeaza o implementare robusta a protocolului HTTP. Apache suporta o mare varietate
de module care ii extend functionalitatea, acestea variaza de la sserver side programming si pana la
scheme de autentificare si anume: mod_ssl ofera support SSL si TLS modulul proxyun, modul de
rescriere URL (cunoscut ca un motor de rescriere mod_reqrite), custom log files (mod_log_config) si
support de filtrare (mod_include si mod_ext_filter). Apache este virtual hosting (gazduirea virtuala), care
consta in posibilitatea de a gazdui mai multe site-uri simultan pe acelasi server. Apache ramane o
platform pe baza careia indivizii si institutiile pot sa construiasca sisteme in scopuri experimentale si nu
numai. Apache este o entitate organica, cei care beneficiaza de ea prin utilizare contribuie de cele mai
multe ori la dezvoltarea ulterioara a platformei. Daca cineva plateste pentru un produs software, nu va
dori dupa aceea sa ii repare defectele. Limbajele suportate de serverul Apache sunt: PHP, PERL,
PYTHON.
11. Ce reprezinta proiectul Apache?
Proiectul Apache reprezinta dezvoltarea unui soft colaborativ care urmareste cererea si utilizarea
unui Web Server puternic si robust. Proiectul era condus de catre voluntary din intreaga lume. Acest grup
de voluntary foloseste internet-ul pentru comunicare, planificari si dezvoltarea serverului si a
documentatiei de rigoare. Ei sunt cunsocuti sub denumirea de Grupul Apache. In plus, sute de utilizatori
au contribuit cu idei, coduri si documentatie la acest proiect.
12. Care sunt caracteristicile serverului Apache? Argumentati.
Apache furnizeaza o implementare robusta a protocolului HTTP. Apache suporta o mare varietate
de module care ii extend functionalitatea, acestea variaza de la sserver side programming si pana la
scheme de autentificare si anume: mod_ssl ofera support SSL si TLS modulul proxyun, modul de
rescriere URL (cunoscut ca un motor de rescriere mod_reqrite), custom log files (mod_log_config) si
support de filtrare (mod_include si mod_ext_filter). Apache este virtual hosting (gazduirea virtuala), care
consta in posibilitatea de a gazdui mai multe site-uri simultan pe acelasi server. Apache ramane o
platform pe baza careia indivizii si institutiile pot sa construiasca sisteme in scopuri experimentale si nu
numai. Apache este o entitate organica, cei care beneficiaza de ea prin utilizare contribuie de cele mai
multe ori la dezvoltarea ulterioara a platformei. Daca cineva plateste pentru un produs software, nu va
dori dupa aceea sa ii repare defectele. Limbajele suportate de serverul Apache sunt: PHP, PERL,
PYTHON. Argumentare personala?
13. Care este rolul unui server de web?
Serverul ruleaza, in general, pe un calculator centralizator sau aflat la distanta, furnizand sau
oferind informatii/servicii clientilor. Exemple de servere folosite in present sunt: Apache, IIS etc.
Serverul ruleaza, in general, pe un calculator, in cazul in care se utilizeaza mecanisme de
comunicatie locala, sau pe calculatoare diferite, atunci cand se folosesc mecanisme de comunicatie in
retea.
Un server web este unde program care ruleaza pe un calculator, asteapta pe un port o conexiune
TCP venita de la un client si serveste acestuia pagini web folosind protocolul HTTP.

14. Care este protocolul folosit de serverul web in furnizarea paginilor web? Descrieti caracteristicile
acestuia
Protocolul este http:// = HTTP – HyperText Transfer Protocol.
Este cel mai importantşi cel mai des folosit protocol al Reţelei Mondiale (Web). Este un
protocol rapid, special proiectat pentru mediul interactiv, hipermedia din Web. Este un protocol
de nivel aplicaţie, ce oferă uşurinţaşi viteza necesare dezvoltării aplicaţiilor hipermedia.  Este
un protocol generic, orientat obiect, care poate fi folosit cu uşurinţă de multe task-uri, cum ar fi
servere de numeşi sisteme de management distribuit, cu extensiile cerute de metodele sale.
Permite tipărireaşi negocierea reprezentării datelor, construirea de sisteme independente de
date care vor fi transferate. Este orientat pe conexiuneşi asigură recepţionarea sigură a
pachetelor de date, oferindşi o metodă de control al fluxului între hosturile sursăşi destinaţie.
Este construit peste serviciile protocolului TCP/IP, care garantează că datele au fost
recepţionate corect, nu au fost pierdute, duplicate sau recepţionate în altă ordine faţă de cea în
care au fost transmise. Procesul de recepţie are controlul asupra vitezei la care se recepţioneazăşi
se transmit datele, prin mecanismul de fereastră glisantă. Când se startează o aplicaţie, modulul
HTTP al calculatorului- clientşi modulul HTTP al calculatorului-server încep să comunice unul
cu altul. Aceste două module (clientşi server) conţin informaţii de stare care definesc un circuit
virtual. Acest circuit virtual consumă resursele atât ale serverului, câtşi ale clientului. Circuitul
virtual este full-duplex, datele pot circula în ambele direcţii simultan.
15. Ce este MySQL? Definiti acest concept.
MySQL este cel mai popular sistem de management pentru baze de date relationale deoarece este
open-source. MySQL Server a fost creat pentru a lucre cu baze de date mai rapid decat solutiile deja
existente la ora actual ape piata.
MySQL este un sistem de gestiune a bazelor de date. Pentru a adauga, insera si procesa datele
memorate pe un calculator este nevoie de astfel de sistem de gestiune a datelor. Avand in vedere ca toate
calculatoarele sunt destinate pentru memorarea informatiilor, managementul bazelor de date joaca un rol
decisive, atat in gestiunea datelor ca activitate de sine statatoare , cat si in cadrul aplicatiilor ample.
MySQL este un sistem multiuser (permite sa fie folosit concomitant de mai multi utilizatori) si
multithread (prezinta mai multe fire de executie). Utilizeaza SQL, limbajul standard de interogare a
bazelor de date.
MySQL este un sistem de gestiune a bazelor de date relationale. Tabelele sunt conectate prin
relatii predefinite, fapt ce face posibila combinarea datelor din mai multe tabele, la crere,. MySQL este un
produs open-source.
MySQL este un sistem client-server care este alcatuit dintr-un server SQL multithread care are
facilitate pentru mai multi utilizatori, mai multe programe si biblioteci client, instrumente de administrare
si un numar mare de interfete de programare. Avand in vedere ca MySQL suporta o gama variata de
produse software, exista posibilitatea ca multe din limbajele de programare deja folosite de anumiti
utilizatori sa suporte deja interfata cu acest produs.
16. Care este modul de functionare a unui server de baze de date pentru Web?
Functionarea unui server de baze de date pentru web, in cazul nostru MySQL, implica existenta a
doua elemente: un browser web si un server. Intre aceste doua elemente se impune sa existe un canal de
comunicare. Serverul de web functioneaza in moduri diferite in urmatoarele situatii:
 In cazul in care server-ul lucreaza cu pagini web statice, un browser web (clientul)
formuleaza cererea catre server, iar serverul trimite inapoi un raspuns
 In cazul in care server-ul lucreaza cu pagini web dinamice care preiau datele dintr-o baza
de date si le afiseaza se realizeaza urmatorii pasi:
 Browser-ul web al unui utilizator emite o cerere HTTP pentru o anumita pagina web
 Serverul web receptioneaza cererea si transfera fisierul catre motorul PHP, in cazul
nostrum pentru prelucrare
 Motorul PHP incepe analiza paginii. In interiorul unei pagini web dinamice exista o
comanda care realizeaza legatura la baza de date si executa interogarile pe care le trimite
serverului MySQL
 Serverul MySQL receptioneaza interogarea bazei de date si o prelucreaza, iar apoi trimite
rezultatele motorului PHP
 Motorul PHP afiseaza rezultatele furnizate de serverul MySQL, formatate intr-un cod
HTML pe care il returneaza serverului web, in cazul nostru Apache
Serverul web transmite codul HTML browserului unde utilizatorului I se afiseaza rezultatul dorit
de acesta.
17. Enumerati si descrieti facilitatile oferite de MySQL
 Posibilitatea accesului concurrent la date de catre un numar nelimitat de utilizatori
 Capacitatea de a gestiona pana la 50 milioane de inregistrari si chiar mai multe
 Executia foarte rapida a comenzilor, poate chiar cea mai rapida din cele existente pe piata
 Sistem usor si efficient de gestiune a drepturilor utilizatorilor
 Este gratuity, fapt ce a atras extinderea fara precedent a folosirii acestui server de baze de
date
18. Enumerati principalele motive pentru folosirea pe scara larga a MySQL
 Posibilitatea accesului concurrent la date de catre un numar nelimitat de utilizatori
 Capacitatea de a gestiona pana la 50 milioane de inregistrari si chiar mai multe
 Executia foarte rapida a comenzilor, poate chiar cea mai rapida din cele existente pe piata
 Sistem usor si efficient de gestiune a drepturilor utilizatorilor
 Este gratuity, fapt ce a atras extinderea fara precedent a folosirii acestui server de baze de
date
19. Explicate mecanismul de functionare a unui server web
Functionarea unui server de baze de date pentru web, in cazul nostru MySQL, implica existenta a
doua elemente: un browser web si un server. Intre aceste doua elemente se impune sa existe un canal de
comunicare. Serverul de web functioneaza in moduri diferite in urmatoarele situatii:
 In cazul in care server-ul lucreaza cu pagini web statice, un browser web (clientul)
formuleaza cererea catre server, iar serverul trimite inapoi un raspuns
 In cazul in care server-ul lucreaza cu pagini web dinamice care preiau datele dintr-o baza
de date si le afiseaza se realizeaza urmatorii pasi:
 Browser-ul web al unui utilizator emite o cerere HTTP pentru o anumita pagina web
 Serverul web receptioneaza cererea si transfera fisierul catre motorul PHP, in cazul
nostrum pentru prelucrare
 Motorul PHP incepe analiza paginii. In interiorul unei pagini web dinamice exista o
comanda care realizeaza legatura la baza de date si executa interogarile pe care le trimite
serverului MySQL
 Serverul MySQL receptioneaza interogarea bazei de date si o prelucreaza, iar apoi trimite
rezultatele motorului PHP
 Motorul PHP afiseaza rezultatele furnizate de serverul MySQL, formatate intr-un cod
HTML pe care il returneaza serverului web, in cazul nostru Apache
Serverul web transmite codul HTML browserului unde utilizatorului I se afiseaza rezultatul dorit
de acesta.
20. Enumerate tipul de date numerice cunoscute. Dati un exemplu de asociere a unui tip de date pentru
un camp al unui table
Tipuri de date numerice: TINYINT, SMALLINT, MEDIUMINT, INT sau INTEGER, BIGINT,
FLOAT, REAL sau DOUBLE, NUMERIC.
Exemplul: CREATE TABLE nume_tabela (nume_camp1 tip_camp1, nume_camp2 tip_camp2);
21. Enumerati tipurile de date calendaristice cunoscute
Tipuri de date calendaristice: DATETIME, DATE, TIMESTAMP, TIME, YEAR
22. Enumerati grupurile in care se impart de sirurile de caractere
Sirurile de caractere se impart in 3 grupuri si anume: siruri normale definite prin tipul CHAR
(fixed length character), respective VARCHAR (variable length character), siruri text definite prin tipul
TEXT respective BLOB (pentru siruri lungi sau date binare) si sirurile care folosesc SET respectiv
ENUM pentru valori predefinite.
23. Definiti conceptul de baza de date.
MySQL este cel mai popular sistem de management pentru baze de date relationale deoarece este
open-source. MySQL Server a fost creat pentru a lucre cu baze de date mai rapid decat solutiile deja
existente la ora actual ape piata.
MySQL este un sistem de gestiune a bazelor de date. Pentru a adauga, insera si procesa datele
memorate pe un calculator este nevoie de astfel de sistem de gestiune a datelor. Avand in vedere ca toate
calculatoarele sunt destinate pentru memorarea informatiilor, managementul bazelor de date joaca un rol
decisive, atat in gestiunea datelor ca activitate de sine statatoare , cat si in cadrul aplicatiilor ample.
MySQL este un sistem multiuser (permite sa fie folosit concomitant de mai multi utilizatori) si
multithread (prezinta mai multe fire de executie). Utilizeaza SQL, limbajul standard de interogare a
bazelor de date.
MySQL este un sistem de gestiune a bazelor de date relationale. Tabelele sunt conectate prin
relatii predefinite, fapt ce face posibila combinarea datelor din mai multe tabele, la crere,. MySQL este un
produs open-source.
MySQL este un sistem client-server care este alcatuit dintr-un server SQL multithread care are
facilitate pentru mai multi utilizatori, mai multe programe si biblioteci client, instrumente de administrare
si un numar mare de interfete de programare. Avand in vedere ca MySQL suporta o gama variata de
produse software, exista posibilitatea ca multe din limbajele de programare deja folosite de anumiti
utilizatori sa suporte deja interfata cu acest produs
24. Definiti conceputl de relatie intre tabele.
Crearea unnei baze de date relationale presupune crearea unuia sau mai multor tabele legate intre
ele. In procesul de creare a unui table are loc stabilirea numelor campurilor acestuia cat si a tipurilor de
date prin care unui utilizator I se indica ce date are voie sa introduca in acestea. In functie de tipurile de
date alese pentru fiecare coloana a tabelei se aloca pe disc un spatiu de memorie. In aceasta situatie este
indicate o cunoastere aprofundata a acestora, deoarece acest fapt va permite creatorului tabelei sa aleaga
tipul de date potrivit pentru fiecare coloana a tabelei astfel incat aceasta sa ocupe un spatiu de memorie
optim pe disc si in acelasi timp sa raspunda nevoilor utilizatorilor acesteia.
25. Enumerati si explicate tipurile de relatii ce se pot stabili intre doua sau mai multe tabele a unei
baze de date
Relatii
Exista 3 tipuri de relatii intr-o BD relationala:

Relatie una-la-una - Exista cate una/unul din fiecare in relatie (dcaca am fi pus adresele intr-o
tabela separata intre CLIENTI si ADRESE ar fi existat un corespondent pentru fiecare
inregistrare).
Relatie una-la-mai-multe - O linie dintr-o tabela e legata la mai multe linii din alta tabela (un client
ar putea face mai multe comenzi).
Relatie mai-multe-la-mai-multe - Mai multe linii din tabela 1 sunt legate la mai multe din tabela 2
(de exemplu, in cazul a doua tabele, CARTI si AUTORI, o carte ar putea fi scrisa de doi coautori,
fiecare dintre ei mai avand si alte carit scrise).

26. Enumerati operatile care se pot realiza asupra unei tabele dintr-o baza de date si exemplificati
CREATE TABLE nume_tabela(nume_camp tip_camp)
In procesul de creare a unui table activitatile sunt:
 Denumirea campurilor
 Alegerea unui tip de date potrivit pentru fiecare camp
 Definirea atributelor pentru fiecare camp in parte
 Stabilirea coloanei care va juca rolul de cheie primara sau secundara cu ajutorul careia se
va stabili legatura catre alte tabele ale bazei de date
Indexii pentru o tabela se pot crea astfel:
 Fie adaugand la sfarsitul instructiunii CREATE TABLE… comanda
INDEX(nume_coloana_index);
 Fie folosind comanda CREATE [UNIQUE\FULLTEXT] INDEX nume_index ON nume_tabela
(nume_coloana_index[(lungime)[ASC\DESC]],…)
Stergerea unui table, index, baza de date sau o coloana dintr-un table se face folosind comanda DROP
astfel:
DROP TABLE nume_tabel
DROP DATABASE nume_baza_de_date
Popularea tabelelor cu inregistrati se face prin comanda INSERT care are urmatoarea sintaxa
INSERT INTO nume_table (camp1, camp2, camp3) values (valoare1, valoare2, valoare3);
Comanda SELECT se foloseste pentru a afisa toate intregistrarile dintr-o tabela:
Mysql>SELECT*FROM nume_tabela
Modificarea continutului unei inregistrari se face utilizand comanda UPDATE care are sintaxa
UPDATE nume_table SET numa_coloana1=`noua valoarea a coloanei 1` WHERE conditii
Stergerea inregistrarilor dintr-o tabela se face prin DELETE
DELETE FROM nume_tabel WHERE conditii
27. Care sunt activitatile necesare pentru cearea unui table in MySQL

CREATE TABLE nume_tabela(nume_camp tip_camp)


In procesul de creare a unui table activitatile sunt:
 Denumirea campurilor
 Alegerea unui tip de date potrivit pentru fiecare camp
 Definirea atributelor pentru fiecare camp in parte
 Stabilirea coloanei care va juca rolul de cheie primara sau secundara cu ajutorul careia se
va stabili legatura catre alte tabele ale bazei de date
28. Care sunt principiile ce se impugn a fi respectate in procesul de proiectare a unei baze de date
O regula de baza in MySQL este ca majoritatea comenzilor testate in monitorul MySQL de client
pentru a fi transmise serverului se termina cu “;”. Acest character indica serverului de baze de date mysql
ca s-a terminat introducerea unei comenzi si deci o poate procesa si afisa rezultatul.
Crearea unei aplicatii Web dinamice, in marea majoritate a lor, implica crearea unei baze de date
alcatuita din una sau mai multe tabelle legate intre ele. Crearea unei astfel de baza de date in mysql,
pentru un magazine virtual care se ocupa cu comercializarea produselor IT, se realizeaza cu comanda:
Mysql> create database nume_baza_de_date;
29. Care sunt situatiile in care serverul de web functioneaza in moduri diferite?
Functionarea unui server de baze de date pentru web, in cazul nostru MySQL, implica existenta a
doua elemente: un browser web si un server. Intre aceste doua elemente se impune sa existe un canal de
comunicare. Serverul de web functioneaza in moduri diferite in urmatoarele situatii:
 In cazul in care server-ul lucreaza cu pagini web statice, un browser web (clientul)
formuleaza cererea catre server, iar serverul trimite inapoi un raspuns
 In cazul in care server-ul lucreaza cu pagini web dinamice care preiau datele dintr-o baza
de date si le afiseaza se realizeaza urmatorii pasi:
 Browser-ul web al unui utilizator emite o cerere HTTP pentru o anumita pagina web
 Serverul web receptioneaza cererea si transfera fisierul catre motorul PHP, in cazul
nostrum pentru prelucrare
 Motorul PHP incepe analiza paginii. In interiorul unei pagini web dinamice exista o
comanda care realizeaza legatura la baza de date si executa interogarile pe care le trimite
serverului MySQL
 Serverul MySQL receptioneaza interogarea bazei de date si o prelucreaza, iar apoi trimite
rezultatele motorului PHP
 Motorul PHP afiseaza rezultatele furnizate de serverul MySQL, formatate intr-un cod
HTML pe care il returneaza serverului web, in cazul nostru Apache
Serverul web transmite codul HTML browserului unde utilizatorului I se afiseaza rezultatul dorit
de acesta.
30. Definiti notiunea de limbaj PHP
PHP este un limbaj de scripting folosit pentru crearea paginilor web dinamice. PHP poate fi folosit
pentru scrierea unor programe stocate pe serer ce acceseaza baze de date. PHP este un limbaj efficient si
securizat. Aplicatiile PHP sunt usor de configurat pentru exploatare. PHP asigura timpi de raspuns
competitive la rularea aplicatiilor web, asigurand in acelasi timp securitatea informatiilor si transparenta
fata de utilizator.

30. Definiti notiunea de limbaj PHP.


PHP este un limbaj de scripting folosit pentru crearea paginilor web dinamice.PHP acronym e la (initial:
Personal Home Page; acum PHP: HypertextPreprocesor).Este un limbaj open-source si server-side.
31.Enumerati facilitatile oferite de limbajul PHP.
-manipularea continutului pagini web
-transmiterea headerelor HTTP pentru autentificare
-setarea cooki-urilor
-redirectionarea utilizatorilor
-asigurarea spargeri(parser) fisierelor XML (asigura transformarea fis XML)
-crearea si manipularea imaginilor, animatilor si a PDF-urilor
-conectarea la un server de email
(atat este in carte dar mai sunt facilitate importante cum ar fi: conectarea si manipularea unei baze de
date)
32. Enumerati caracteristicile limbajului PHP.
-este interpretativ
-executie rapida datorita interpretorului inclus in serverul web
-bogat in facilitati, contine multe functii utile
-are o sintaxa simpla(var nu trebuie declarate, sipul stabilit la initializare)
33. Descrieti principiul de functionare a limbajului PHP.
Clientul(browser-ul) trimite o cerere HTTP la server serverul lanseaza interpretatorul(parserul) PHP,
acesta prelucreaza tot ce este intre <?php ?> si trimite raspunsul la server care il trimite inapoi la
client pentru afisare.
34. Care este efectul comenzii echo();?
Afisarea parametrilor.
echo(“A”,”b”); va returna A b
35. Exista diferente intre echo si print?Enumeratile.
Da. Echo ruleaza mai repede decat print.
Echo nu are tip returneaza tip void pe cand print returneaza 1(deci poate fi folosit in expresii). Echo poate
primi mai multi parametri.
36. Ce sunt variabilele PHP?Scrieti sintaxa si exemplificati.
Variabila este o mărime care poate să aibă diferite valori, de la caz la caz, sau și în funcție de timp.
Variabilele se folosesc în formule și ecuații algebrice și matematice, unde se notează în general cu litere. 
$nume_variabila=valoare
$x,$_GET(variabila superglobala)
37.Care sunt structurile de control complexe prezente in PHP?
1. IF structura alternativa
2.while,for, foreach –str repetitiva conditionata anterior
3. Do-while str repetitiva conditionata anterior
4. Switch structura selectiva
5. Continue, break si return instructiuni folosite pt a da o flexibilitate mai mare ciclurilor
38. Definiti notiunea de constanta PHP.
Constanta PHP este o marime care nu se schimba.Ea este initializata la inceput si nu mai isi schimba
valoarea in timp.
39. Enumerati si explicate 2 functii PHP predefinite.
Max(x,y)- returneaza maximul dintre x si y
Count(string sir)- are rolul de a Numara elementele unui sir si a returneaza nr lor.
40. Care este rolul operatorilor relationali in programarea PHP?
Operatori relationali se folosesc in procesul de comparare a doua valorii,variabile,constant s.a.
41. Care este efectul functiei strcmp()?
Compara doua stringuri primite ca parametri. Strcmp(string s1, string s2). Valoarea returnata este <0 daca
s1<s2, =0 daca s1=s2 si >0 daca s1>s2
42. Care este efectul functiei substr()?
Returneaza un subsir incepand cu pozitia n pna la pozitia m. Substr(Sir s,int n,int m ).
43. Ce actiuni se pot realiza asupra fisierelor PHP?
Nu stiu sigur . Nu am gasit ceva clar in carte. Apelare, includere, editare, creare.
44. Care este mecanismul de creare a unei sesiuni?Exemplificati!
O sesiune este creata,deschisa,initializata sau reinitializata cu cu session_start().Daca nu exista o sesiune
ea este create daca exista este reinitializata.
45. Care este mecanismul de creare a unui cookie?Exemplificati!
setcookie(name, value, expire, path, domain);
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
46. Ce este un tablou bidimensional?Care este rolul unui tablou unidimensional?
Creati un tablou unidimensional.
Un tablou unidimensional este un sir.Un sir este creat folosind o constructive a limbajului PHP,
array().Un tablou unidimensional stocheaza mai multe elemente.$plante=array(‘flori’,’iarba’).
Tabloul unidimensional are un index. Daca acesta nu este folosit pozitia primului element va fi 0 si celui
de-al doile 1…. <?$sir=array(10=>’a’, 30=>’b’)?>
47. Care sunt operatiile ce se pot realiza cu un tablou unidimensional?Exemplificati.
Creareea tablourilor: .$plante=array(‘flori’,’iarba’).
Modificarea datelor: $nume_tablou[indice]=valoare sau $nume_tablou[]=valoare
Stergerea datelor:unset($plante)- sterge tabloul
<?$sir=array(10=>’a’, 30=>’b’)
unset($sir);?>
Unset($sir[10])- sterge valoare de pe pozitia 10
48.Care este rolul instructiuni FOR in programarea PHP? Exemplificati.
FOR este o constructie repetitiva conditionata anterior. Se foloseste doar cand se stie numarul de iterati
care vor fi facute.FOR($i=0;$i<30;$i++).
<?$sir=array(10=>’a’, 30=>’b’)
FOR($i=0;$i<30;$i++)
{echo $sir[$i];}
?>
49. Care sunt pasi de realizare a accesului la bazele de date relationale in pagini PHP?
Prima data se face conectarea la baza de date cu ajutorul lui
$con=mysql_connect(“nume_gazda”,”utilizator”,”parola”).
Apoi se selecteaza baza de date cu ajutorul lui mysql_select_db(“nume_db”,$con).
Pentru aplicarea interogarilor se foloseste mysql_query($sql); unde $sql= cu o interogare sql.
Pentru inchiderea conexiuni se foloseste mysql_close().
50. Enumerati si descrieti pasi de modificare a datelor in cadrulunei tabele a unei baze de date.
Exemplificati.
1Modificarea datelor dintr-o tabela a unei baze de date baze de date presupune conectarea la baza de date
si efectuarea unui SELECT in functie de o conditie pt a se obtine inregistrarea care se doreste modificata.
2 crearea unui formular in care sa se afiseze datele care urmeaza a fi modificate.
3 modificarea se va face cu ajutorul lui UPDATE; UPDATE nume_tabel SET coloana_1=’$val1’,
coloana_2=’$val2’…coloana_n=’$valn’
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {die('Could not connect: ' . mysql_error());}
mysql_select_db("my_db", $con);
mysql_query("UPDATE Persons SET Age=36
WHERE FirstName='Peter' AND LastName='Griffin'");
mysql_close($con);
?>
51. Enumerati si descrieti pasi de afisare a datelor in cadrul unei tabele a unei baze de date. Exemplificati.
1Afisarea datelor dintr-o tabela a unei baze de date conectarea la baza de date.
2 crearea unui formular in care sa se afiseze datele ;
3 afisarea se va face cu ajutorul lui SELECT;Sintaxa: SELECT coloana FROM nume_tabel
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))
  {echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }
mysql_close($con);
?>
52. Enumerati si descrieti pasi de stergere a datelor in cadrul unei tabele a unei baze de date.
Exemplificati.

1 stergerea datelor dintr-o tabela a unei baze de date presupune conectarea la baza de date si efectuarea
unui SELECT in functie de o conditie pt a se obtine inregistrarea care se doreste stearsa.
2 Stergerea se va face cu ajutorul lui DELETE. Sintaxa: DELETE FROM nume_tabel WHERE conditie.
<?php
$con = mysql_connect("localhost","peter","abc123");
mysql_select_db("my_db", $con);
mysql_query("DELETE FROM Persons WHERE LastName='Griffin'");
mysql_close($con);
?>
53. Enumerati si descrieti pasi de inserare a datelor in cadrul unei tabele a unei baze de date.
Exemplificati.
1Inserarea datelor intr-o tabela a unei baze de date baze de date presupune conectarea la baza de date
3 Inserarea se va face cu ajutorul lui INSERT;Sintaxa: INSERT INTO table_name
VALUES (value1, value2, value3,...)
<?php
$con = mysql_connect("localhost","peter","abc123");
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin',35)");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire',33)");
mysql_close($con);
?>
54. Descrieti metodele de baza pentru colectarea informatiei in formulare HTML folosind PHP.
Trimiterea informatiei din formele HTML in PHP se face cu ajutorul metodelor GET si POST.

!!! NU inteleg exact ce vrea aici L


55. Cum se transmit datele dintr-un formular existent intro pagina web catre server web?
Datele dintr-un formular existent se trimt spre server cu ajutorul atributelor ACTION unde se pune
numele fisierului php si METHOD care poate primi valorile “GET” sau “POST”. Fiecare obiect din
formular are un nume si valoarea lor va fi timisa in variabilele superglobale $_GET sau $_POST de unde
vor fi preluate.
56. Descrieti mecanismul de functionare a prelucrari datelor in cadrul unui formular.
Browserul trimite datele la server cu ajutorul metodelor get sau post. Serverul trimite la fisierul php
apelata in atributul ACTION , aceasta preia datele din variabilele superglobale $_POST sau $_GET ;
datele sunt prelucrate de scriptul PHP si trimise inapoi.
57. Care sunt metodele folosite in cadrul unei pagini PHP?
_construct(), _ destruct()
58. Care este rolul interfetelor CGI,Pearl, Asp si PHP in programare?
59. Care este rolul variabilelor superglobale $_POST si $_GET?
Rolul varibilelor este de a prelua datele trimise din formularele HTML. $_GET preia date din formulare
care au atributul method=”GET” iar post de la cele ceu method=”POST”.
60. In procesul de creare a unui proiect web este necesara o baza de date creata cu mysql?
NU este obligatoriu sepoate folosi si stocarea datelor in formular XML. Dar pentru proiectelor web
complexe care vor inregistra o cantitate mare de date este necesara crearea unei baze de date create cu
MYSQL.

7. PROIECTAREA SISTEMELOR INFORMATICE


1. Ce este un sistem, un sistem informationa, un sistem informatic?
Sistem ansamblu de elemente, care interrelaționează în interior și cu mediul înconjurător
și care acținează în comun sub un aspect unitar pentru a îndeplini obiective bine definite.
Orice sistem are un comportament specific, determinat de natura elementelor  din care
este compus și de relațiile dintre acestea.
Sistem informațional o restrângere a noțiunii de sistem=ansamblul elementelor de
structură organizatorică din secțiunea societatii umane (precum o organizație), împreună
cu legăturile funcțional-informaționale dintre ele și cu contextul în care se află, care
acționează în comun pentru îndeplinirea obiectivelor propuse. Rolul sistemului
informațional: obține, stoca, prelucra și livra informații factorilor de decizie din
organizație.
Sistem informatic partea automatizată a sistemului informațional (cu toate
componentele sale de tip hardware, software) responsabilă cu stocarea și prelucrarea
informațiilor utile factorilor de decizie.

2. Descrieti analiza de sistem


Pentru realizarea unui produs software este necesara parcurgerea mai multor etape.
Acestea formeaza ciclul de viata al produsului.in prima faza, analiza software, analistii
descriu spatiul problemei si elaboreaza un set de cerinte care descriu ce se doreste de la
noual sistem informatic. Analiza software este asadar faza initiala a ciclului de dezvoltare
al produsului. Scopul analizei este de a produce un document numit raport de analiza si
care sa contina specificatii complete cu privire la sistemul informatic dorit. Natura
informatiilor este de batura CE trebuie sa ofere viitorul sistem utilizatorilor sai si
ignorand complet CUM le va oferi acesta.

3. Ce contine un raport de analiza?


1 introducere – se prezinta scurt proiectul
2 Analiza problemei
2.1 Context - descrierea contextului in care va functiona sistemul, fatetele
2.2 Motivatie - digrama Fishbone, obiective
2.3 delimitarea sistemului de context – activitati, procese
2.4 activitati si procese – diagrame de flux, diagrame de activitate
3 Cerinte
3.1 Elicitatia cerintelor
3.1.1 Surse de cerinte - sursele de cerinte identificate, sunt descrise si se justifica d ece
au fost alese
3.1.2 Procesul de elicitatie a cerintelor – se descriu stakeholderii, metode: model de
business, cazuri de utilizare, metoda interviului; cazuri de utilizare + diagrame UML
4 Cerinte software – informatiile sunt TRADUSE aplicand metode de elicitatie in
trasaturi de sistem, cerinte functionale, cerinte non-functionale si constrangeri(limitari)
Glosar – definitii, explicatii, descriere (lista)

4. Descrieti structura de baza a unui raport de analiza


1 introducere – se prezinta scurt proiectul
2 Analiza problemei
2.1 Context - descrierea contextului in care va functiona sistemul, fatetele
2.2 Motivatie - digrama Fishbone, obiective
2.3 delimitarea sistemului de context – activitati, procese
2.4 activitati si procese – diagrame de flux, diagrame de activitate
3 Cerinte
3.1 Elicitatia cerintelor
3.1.1 Surse de cerinte - sursele de cerinte identificate, sunt descrise si se justifica d ece
au fost alese
3.1.2 Procesul de elicitatie a cerintelor – se descriu stakeholderii, metode: model de
business, cazuri de utilizare, metoda interviului; cazuri de utilizare + diagrame UML
4 Cerinte software – informatiile sunt TRADUSE aplicand metode de elicitatie in
trasaturi de sistem, cerinte functionale, cerinte non-functionale si constrangeri(limitari)
Glosar – definitii, explicatii, descriere (lista)

5. Ce este ciclul de viata al unui podus informatic?


Ciclul de viață al unui produs software este o structură care este urmată în vederea
realizării produsului informatic. Ciclul de viață cuprinde etape în care sunt realizate
acțiuni specifice.

6. Descreti modelul prototipizarii


Proces:-stabilirea cerințelor inițiale,-realizarea concepției (proiectarea)-implementarea
versiunii inițiale de sistem.-sistemul este supus evaluărilor -> feedback-revinea asupra
cerințelor-reluarea ciclului până rezultatele evaluării sunt satisfăcătoare (îndeplinește
performanța dorită)-trecerea sistemului în faza de dezvoltare propriu-zisă (în scopul
obținerii produsului software final)-Testare, mentenanță
Caracteristici: folosit în general în situațiile când sistemul vizat este complex, cerințele
sunt greu de identificat corect și în întregime în faza de analiză.
-folosit pentru sisteme cu grad mare de noutate fie din punct de vedere al
funcționalităților oferite, fie al tehnologiei adoptate.
-are o abordare de la simplu la complex, întrucât la fiecare iterație, versiune de prototip,
sunt adăugate funcționalități noi. Core + ...

7. Descreti modelul cascada


Parcurgere succesivă a fazelor: Analiza (specificarea cerințelor) Concepția (designul)
Implementarea și integrarea componentelor software Testarea Instalarea
Mentenanța(Întreținerea)
Caracteristici:fiecare etapă este parcursă complet, după care se trece la următoarea
etapă.
-în urma parcurgerii fiecărei etape pot apărea ajustări la rezultatul produs, însă cu toate
acestea modelul nu încurajează revenirea la etape anterioare pentru modificarea
rezultatelor.
-aplicat în general pentru sisteme simple în care cerințele pot fi formulate (corect și
complet) în faza de analiză.

8. Descreti modelul spirala


Caracteristici: -reprezintă o combinație a elementelor folosite de modelele în cascadă și
prototipului; + tratează riguros riscul la fiecare etapă de dezvoltare - utilizat în
dezvoltarea sistemelor informatice mari, complexe, realizate cu costuri semnificative, de
obicei soluții dedicate
Proces:-stabilirea obiectivelor pentru sistem, analiza cerințelor, identificarea surselor de
risc posibile.-pentru fiecare sursă de risc se realizează o analiză și se încearcă găsirea unei
metode de minimizare/ excludere a sa.-în funcție de rezultatul analizei de risc se consultă
clientul care poate alege între a opri proiectul sau a continua asumându-și riscurile
identificate. În această fază se poate construi un prototip (care presupune costuri mai
reduse) pentru a evalua riscul (simulări).

9. Descrieti activitatea de proiectare a sistemului informatic


Proiectarea = faza in care proiectantii hotarasc modul de realizare a cerintelor primite din
faza anterioara, stabilind tehnologiile ce urmeaza a fi folosite la nivell sistemului
informatic creat.

10. Ce este proiectare logica?


Activitatea prin care se stabilesc intrarile sistemului informatic, prelucrarile pe care
acesta le realizeaza si iesirile acestuia, pentru toate nivelurile de granularitate specificate
mai sus(subsisteme, aplicatii, unitati functionale, unitati de prelucrare-proceduri)
Baza informaţională: date de intrare şi ieşire pentru componentele unui sistem
informatic.
- sist. de gestiune a fişierelor/ bazelor de date

11. Ce rol are etapa de proiectare a unui sistm informatic?


Proiectarea = faza in care proiectantii hotarasc modul de realizare a cerintelor primite din
faza anterioara, stabilind tehnologiile ce urmeaza a fi folosite la nivell sistemului
informatic creat.

12. Cum interrelationeaza componentele unui sistem?


Relatiile dintre diverse componente ale unui sistem se bazeaza pe mecanismul de intrari-
prelucrari-iesiri. Daca o componenta A pentru a putea realiza functionalitatea sa are
nevoie de functionalitatea componentei B, o va apela(executa, rula) pe aceasta din urma
cu anumite date de intrare si va astepta de la aceasta un rezultat
date de intrare şi ieşire pentru componentele unui sistem informatic repr baza
informaţională.

13. Ce este proiectarea fizica sau tehnica?


= faza in care sunt cautate solutiile tehnice efective pt a obtine functionalitatile cerute
1. Structura fizica a programelor – algoritmii efectivi care prelucreaza datele
2. Structura fizica a datelor- colectii de date pe care componentele identificate sa le
foloseasca in procesare
3. Inlantuirea operatiilor
4. Tehnologii harware folosite
5. Documentatie cu specificatii de executie pt toate aspectele stabilite, care este utila
mai departe programatorilor, testerilor si celor care vor intretine sistemul

14. Enumerati aspectele pentru care un proiectant cauta in general solutii in cadrul
unui proiect informatic

15. Enumerati activitatile realizate de un proiectant in cadrul dezvoltarii unui proiect


informatic
Proiectarea logica (conceptuala) a sistemului informatic
Proiectarea tehnica (fizica) a sistemului informatic
Proiectarea implementarii a sistemului informatic
Proiectarea testarii sistemului informatic
Proiectarea intretinerii sistemului informatic

16. Cum se controleaza riscurile intr-un proiect informatic?


Parti afectate semnificativ de viitorul sistm informatic
- Identificarea partilor afectate semnificatic de viitor sistem informatic
- Identificarea persoanelor cu drept de decizie din partile afectate semnificativ
- Intalnirea in persoana a persoanelor afectate
- Obtinerea de informatii despre partile afectate de sistem – preferinte, obisnuinte,
antecedente, cultura organizationala, obiceiuri etc

17. Dati exemple de intrebari care ajuta la identificarea riscurilor pentur un proiect
informatic

18. Alegeti o categorie de riscuri pentru proiectul informatic si explicati impactul acestora
asupra proiectului
Frici, retineri, dorinte
-identificarea ideilor de care partile afectate se tem in general in legatura cu proiectul
informatic
-identificarea posibilelor grupari de persoane afectate de sistem in functie de temerile pe
care le au
-identificarea dorintelor partilor implicate in legatura cu proiectul
Produs informatic si cerinte de sistem
-scop, motivatie- clare
- identificarea partilor din proiect care nu pot fi schimbate pe parcursul excutiei
Procesul de business
-identificarea limitarilor legate de resurse: timp, bani, personal disponibil
-estimarea masurii in care aceste limitari pot fi influentate
Mecanisme de reactie si analiza
-asigurarea de mecanisme de reactie si analiza; lipsa acestora- disfunctionalitati

19. Prezentati o categorie de riscuri si dati exemple de actiuni care ajuta la evitarea lor
Frici, retineri, dorinte
-identificarea ideilor de care partile afectate se tem in general in legatura cu proiectul
informatic
-identificarea posibilelor grupari de persoane afectate de sistem in functie de temerile pe
care le au
-identificarea dorintelor partilor implicate in legatura cu proiectul
Produs informatic si cerinte de sistem
-scop, motivatie- clare
- identificarea partilor din proiect care nu pot fi schimbate pe parcursul excutiei
Procesul de business
-identificarea limitarilor legate de resurse: timp, bani, personal disponibil
-estimarea masurii in care aceste limitari pot fi influentate
Mecanisme de reactie si analiza
-asigurarea de mecanisme de reactie si analiza; lipsa acestora- disfunctionalitati

8. REȚELE
1. Descrieti tehnica CSMA/CD.
Aceasta tehnica rezulta din utilizarea tehnicii CSMA impreuna cu tehnica “asculta ce transmiti”.
Principiul de baza este ca dupa ce sursa transmite pachetul, asteapta un interval foarte scurt de timp, iar
mai apoi isi asculta propria transmisie. Avantajul essential al acestei tehnici consta in faptul ca ea permite
detectarea prompta a unei coliziuni, adica imediat ce ea apare si nu dupa un interval de timp, evitandu-se
transmiterea complete a pachetelor colizionate si se reduc nu numai intarzierile din retea datorate
coliziunilor, dar si canalul de difuzare devine disponibil mai repede.

2. Descrieti formatul pachetului Ethernet IEEE 802.3

3. Descrieti comparativ functionarea unui HUB si a unui comutator (SWITCH).

Hubul este cunoscut sub numele de repetor sau concentrator. Prima lui functiune este sa primeasca sis a
regenereze semnalele de la dispozitivele conectate, pe cand switchul face posibil ca fiecare statie sa obtina
in intregime banda alocata, fara a mai fi nevoie sa o imparta cu alte statii. Acest lucru este realizat prin
utilizarea unei magistrale de semnale extreme de rapide aflata in comutatorul Ethernet si poate avea viteze
de peste 2GB/s.
4. Enumerati si descrieti functiile nivelului retea.

Asigura dirijarea pachetelor de date intre nodurile sursa si destinatie, trecand prin noduri intermediare.
Decizia este luata astfel incat sa nu existe in acelasi timp legaturi supraincarcate si legaturi neutilizate,
evitandu-se deci congestionarea retelei. O alta functie importanta a nivelului retea este de interconectare a
retelelor cu arhitecturi diferite.

5. Desenati si descrieti suita de protocoale TCP/IP.

Seria de protocoale TCP/IP este publica si poate fi implementata pe orice tip de calculator, de la
calculatoare personale la supercalculatoare si se poate utilize atat pentru retele locale cat si pentru retele
pe arii extinse. De asemenea, este utilizat atat de agentii guvernamentale cat si de multe retele comerciale.
Aceasta serie s-a folosit la reteaua ARPANET din care s-a nascut o retea mai mare care conecteaza mai
multe retele individuale si care se numeste INTERNET. Functia primara consta in dirijarea pachetelor de
date de la sursa la destinatie.

6. Descrieti tipurile de adrese IP.

7. Desenati si explicati antetul unui pachet IP. (fig. 11.6)

8. Descrieti protocolul ICMP; la ce foloseste.

ICMP utilizeaza serviciile nivelului IP pentru a trimite mesaje ICMP, dar este vazut adesea ca parte a
nivelelor IP. Serviciile ICMP-ului sunt utilizate de catre nivelul IP pentru a mentine operarea corecta a
retelei IP.

9. Protocoalele ARP si RARP.

Protocoalele TCP/IP lucreaza numai cu adrese IP si cadrele Ethernet lucreaza numai cu adrese Ethernet.
Diversele tipuri de adrese reprezinta o problema a comunicatiei in retea. Protocolul de rezolutie
adresa(ARP) si Protocolul de rezolutie adresa inversa(RARP) rezolva aceasta problema prin conversia
adreselor. Acestea transforma adresa IP intr-o adresa a nivelului legatura de date si invers.

10. Functiile nivelului transport.

Nivelul transport este un strat important avand rolul de asigurare a unui transfer de date corect. Nivelul
transport realizeaza o comunicare sigura intre doua calculatoare gazda detectand si corectand erorile pe
care nu le trateaza nivelul retea. In functie de caracteristicile traficului generat utilizatorii nivelului
transport pot cere stabilirea unei conexiuni transport cu o anumita calitate a serviciului furnizat. Una din
functiile importante a nivelului transport este multiplexarea conexiunilor. La fel de important este
controlul fluxului datelor, aspect intalnit si la nivelul legaturii de date.

11. Desenati si descrieti antetul protocolului TCP. (fig. 11.7)

Portul sursa (16 biti) – impreuna cu adresa sursei formeaza soclul sursei
Portul destinatie (16 biti) – numarul portului destinatie selecteaza procesul din calculatorul destinatie cu
care s-a stability o conexiune.
12. Descrieti si desenati antetul protocolului UDP.

13. Enumerati si descrieti functiile sistemului de gestionare al retelelor.

Gestinea configuratiei – implica legarea prin punti si reconfigurarea sistemelor utilizator precum si a
subretelelor, incluzand punti si rutere, gestiunea folosirii numelor si asocierea acestora cu adresele de
retea.
Gestiunea defectelor – este implicate in intretinerea subretelelor prin detectarea defectelor, izolarea
cererilor, izolarea erorilor si corectarea defectelor de comunicatie.
Gestiunea performantei – trebuie sa urmareasca cresterea performantelor, astfel incat sa creasca eficienta
retelei prin evitarea gatuirilor in noduri si pe rute.
Gestiunea costurilor retelei – ajuta la definirea bugetului pentru retea. Utilizatorii sunt informati asupra
costurilor pentru resursele consummate precum si alocarea acestor costuri pe diverse departamente.
Gestiunea securitatii retelei – este necesara pt monitorizarea si controlarea mecanismelor de protective a
datelor.

14. Functia de gestiune a configuratiei la retelele de calculatoare.

Gestinea configuratiei – implica legarea prin punti si reconfigurarea sistemelor utilizator precum si a
subretelelor, incluzand punti si rutere, gestiunea folosirii numelor si asocierea acestora cu adresele de
retea. Acest bloc este fundamental pt buna functionare a sistemului si include urmatoarele functiuni:
- Gestionarea de attribute ale dispozitivelor, setarea si modificarea valorilor individuale, collective
sau predefinite ale acestora
- Gestionarea initializarii si a opririi in totalitate sau a anumitor parti din retea
- Actualizarea topologiei de gestionare prin identificarea tuturor relatiilor de interconectare

15. Modelul de organizare a gestiunii retelelor de calculatoare.

Functionarea gestiunii unei retele trebuie combinata cu organizarea la nivel informational privind situatia
actual si de perspectiva. Gestiunea retelei contine aplicatii care sunt distribuite in ambele sisteme si
anume: in sistemul de gestiune sunt urmarite procesele, iar in sistemul gestionat procesele agent si
obiectele. Activitatile de gestionare sunt realizate printr-un manager de procese care comunica cu
procesele din sistemul gestionat, astfel incat sa se controleze obiectele gestionate. Pt fiecare obiect
gestionat sunt definite atributele, operatiile valide asupra lor si notificarea obiectelor de iesire.

16. Enumerati provocarile principale si principalele standarde ale retelelor de calculatoare fara
fir(radio).

Unele dintre principalele provocari carora trebuie sa le faca fata retelele fara fir privitor la transmisie sunt:
deficitul latimii de banda, acces multiplu, pierderea de cale, directii multiple, diminuarea semnalului,
mobilitatea, securitatea si calitatea serviciului.
Principalele standard sunt: HiperLan II, HomeRF, IEEE802.16.

17. Desenati si explicati principalele topologii ale retelelor de calculatoare fara fir.

O retea fara fir poate fi formata dintr-o singura celula cu unul sau nici un punct de acces. Cele mai multe
topologii au mai multe celule unde toate punctele de acces sunt conectare printr-o magistrala denumita
DS(Distribution System) formata dintr-o retea cablata sau una fara fir ( wireless). Avem topologie
structurata atunci cand o retea wireless are cel putin un punct de acces conectat la o retea cablata si mai
multe statii conectate wireless. Modalitatea ad-hoc ( fig 11..16 ) apare cand un grup de statii de tip 802.11
wireless comunica direct unul cu altul fara sa foloseasca un punct de access sau conexiunea printr-o retea
cablata.

18. Desenati si explicati rolul nivelului fizic in cadrul retelelor de calc fara fir.

Nivelul fizic (PHY) acopera interfata fizica intre dispositive si este in legatura directa cu transmiterea
sirului de biti de-a lungul canalului de comunicare. Nivelul fizic este divizat in 2 subnivele:
-subnivelul PLCP pentru incapsularea datelor la nivel fizic;
-subnivelul PMD pt codificarea datelor si trnasmitarea lor pe canalele de cumunicatie;

19. Desenati si explicati rolul subnivelului MAC in cazul retelelor de calc fara fir.

La subnivelul MAC are loc incapsularea datelor ce vin de la nivelul retea in cadre. Subnivelul MAC
foloseste protocolul CSMA/CA si deasemenea este responsabil de fragmentare si de criptare. In
standardul 802.11 subnivelul MAC, pe langa functiile obisnuite, trebuie sa se ocupe de fragmentarea
pachetelor, retransmiterea lor si confirmarea primirii lor.

20. Desenati si explicati metoda CSMA/CA in cazul retelelor de calc fara fir. (fig. 11.18)

Detectarea coliziunilor nu poate fi folosita de catre protocoalele wireless din urmatoarele motive:
Detectarea coliziunilor solicita implementarea unui semnal radio full duplex capabil sa trimita sis a
receptioneze in acelasi timp. Aceasat implementare ar costa prea mult.
Premisa majora in detectarea coliziunilor este ca o statie poate sa asculte pe oricare alta. Aceasta premise
nu se aplica si in mediul wireless. Daca o statie detecteaza mediul liber aceasta nu inseamna ca in mod
necesar mediul din jurul receptorului este liber.

21. Desenati si explicati rolul nivelului fizic in cadrul retelelor de calc fara fir.

Nivelul fizic (PHY) acopera interfata fizica intre dispositive si este in legatura directa cu transmiterea
sirului de biti de-a lungul canalului de comunicare. Nivelul fizic este divizat in 2 subnivele:
-subnivelul PLCP pentru incapsularea datelor la nivel fizic;
-subnivelul PMD pt codificarea datelor si trnasmitarea lor pe canalele de cumunicatie;

22. desenati si explicate problema nodurilor ascunse in cazul retelelor de calc fara fir. (fig 11.20)

Cele 2 statii nu se aud, dar fiecare aude punctual de acces. (fig 11.20)
Cand o statie doreste sa transmita un pachet, ea trimite un pachet de control denumit RTS(Request To
Send) care include sursa, destinatia si durata urmatoarei tranzactii. Daca mediul este liber statia
receptoare raspunde cu un pachet de control denumit CTS(Clear To Send) care include acceasi durata a
informatiei.

23. Desenati si explicati modul cum se realieaza securitatea IEEE 802.11 in cazul retelelor de calc
fara fir.

IEEE 802.11 are doua subtipuri de autentificari: system deschis si cheie partajata. Autentificarea este
facuta intre doua statii. De aici rezulta ca se poate face numai in cazul cadrelor unicast dar nu si la cele
muticast. Pentru statiile care folosesc autentificarea cheilor partajate trebuie sa se implementeze WEP.
WEP este protocolul de incapsulare pentru 802.11 al cadrelor de date. Scopul este sa furnizeze securitate
datelor la nivelul unei retele cablate. WEP este un algoritm simetric in care acceasi cheie este folosita atat
pentru criptare cat si pentru decriptare.
24. Descrieti modul de lucru al protocolului de autentificare 802.1x in retelele fara fir.

Standardul de autentificare 802.1x este relativ simplu si initial nu a fost destinat comunicatiilor fara fir.
Pentru 802.1x autentificarea clientilor se face printr-un server de autentificare extern.
Autentificarea 802.1x este un dialog intre un system care doreste sa se conecteze la serviciile retelei si
retea. Acest dialog foloseste protocolul extensibil de autentificare EAP. 802.1x consta dintr-un PAE in
toate statiile(STA) si punctele de acces(AP), incapsularea EAP a retelei (EAPOL) si un server de
autentificare RADIUS (AS).

25. Descrieti sistemul de autentificare WPA ce foloseste TKIP, utilizat in retelele fara fir.

Protocolul de integritate cu cheie temporara (TKIP-Temporal Key Integrity Protocol) este folosit de WPA
pt recodificarea cheii de criptare a traficului unicast. Fiecare cadru de date transmis prin spatial fara fir
este recodificat de catre TKIP. TKIP sincronizeaza schimbul de chei intre client si AP. Cheile de criptare
globala sunt schimbate, printr-un anunt catre toti clientii conectati, de catre protocolul WPA.

26. Criptarea cu cheie simetrica si asimetrica.

In esenta exista doua tipuri de scheme de criptare. Cele mai vechi si cele mai folositoare pana in present
sunt criptarile simetrice. In aceste scheme, cheia folosita pt decriptarea textului cifrat este echivalenta cu
cea folosita pt criptarea textului initial. Algoritmii cu cheie secreta sunt simetrici, in sensul ca ambii
participant angajati in comunicatie partajeaza o singura cheie.
Algoritmii de criptare asimetrica sau de criptare cu chei publice sunt cele m ai recente unelte
criptografice. Din contra, pt sistemele asimetrice cheia folosita pt criptare sic ea folosita pt decriptare sunt
diferite. Astfel, fiecare dintre parteneri are 2 chei. Se tine o cheie secreta si cealalata se face publica.

27. Algoritmul DES si variante.

Obiectivul unui sistem criptografic este de a face extrem de dificila decripatarea unui mesaj pt care nu se
cunosc cheile potrivite. Pt atingerea acestui obiectiv, proiectarea este confruntata cu doua cerinte
contradictorii: sa asigure o criptoanaliza foarte dificila si sa certifice nivelul de securizare realizabil. In
prezent se prefer criptarea care opereaza in mod repetat, in multe runde, asupra unui bloc de simboluri din
mesajul de transmis. Aceste coduri sunt de tipul bloc cu iteratii. Folosirea unui numar redus de operatii
este de dorit si din punctt de vedere al componentelor hardware necesare implementarii unui algoritm de
codificare. Tot din motive de simplitate constructive (si implicit cost redus) se foloseste o acceasi
portiune de program sau un acelasi cip atat la codificare, cat si la decodificare.
28. Algoritmul RSA.

RSA este folosita in sute de produse software si poate fi folosita pt schimbul de chei, semnaturi digitale
sau criptarea unor blocuri mici de date. RSA foloseste un bloc de criptare de dimensiune variabila, iar
cheia este si ea de dimensiune variabila. Perechea de chei este derivata dintr-un numar foarte mare, n, care
este produsul a 2 numere prime alese dupa anumite reguli special, aceste numere pot avea fiecare mai
mult de 100 de cifre, numarul n avand mult mai multe cifre. Cheia publica contine numarul n si un derivat
al unuia dintre factorii folositi pt determinarea lui n; astfel un atacator nu poate determina factorii primi ai
lui n, (nu poate afla cheia privata) numai din aceste informatii din acest motiv, algoritmul RSA este atat
de sigur.

29. Protocolul de autentificare in 3 faze.


Un protocol simplu de autentificare este posibil cand cei doi participant care doresc sa se autentifice unul
pe celalalt, clientul si serverul, partajeaza o cheie secreta. Aceasta situatie este analoaga cazului in care
utilizatorul (clientul) are un cont pe un sistem (pe server) si atat clientul cat si serverul stiu parola pt acel
cont.
Clientul si serverul se autentifica unul pe celalalt folosind un protocol simplu “in 3 faze”. In continuare
vom folosi E(m.k) pentru a numi criptarea mesajului m cu cheia k iar D(m.k) pentru a numi decriptarea
mesajului m cu cheia k.

30. Protocolul de autentificare folosind increderea in a 3a persoana.

Un scenario mai plauzibil este ca cei doi participant nu stiu nimic unul despre celalalt, dar amandoi au
incredere intr-o terta persoana. Aceasta terta persoana este cateodata numita server de autentificare si
foloseste un protocol pt a ajuta cei doi participant sa se autentifice unul pe celalalt. Sunt dealtfel mai
multe variatiuni ale acestui protocol.

31. Protocolul de autentificare cu cheie publica.

Un alt protocol de autentificare foloseste cripatarea cu cheie public. El este mai utilizat deoarece cele
doua parti nu trebuie sa partajeze o cheie secreta, ele trebuie doar sa cunoasca cheia puplica a celeilalte
parti. Participantul A cripteaza un numar aleator x, folosind cheia publica a lui B, iar B demonstreaza ca,
cunoaste cheia private corespunzatoare decriptand mesajul si trimitand x inapoi lui A. A poate sa se
autentifice fata de Bz in acelasi mod.

32. Protocoale de asigurare a integritatii mesajelor.

Cateodata celor doi participant care comunica, nu le pasa daca cineva este capabil sa citeasca mesajele pe
care si le trimit unul celuilalt, dar sunt ingrijorati de perspective ca un impostor sa se dea drept unul din
ei. Mai pe scurt, participantii sunt interesati de integritatea mesajelor. Pentru asigurarea integritatii
mesajelor sunt folosite 3 metode: prima foloseste RSA pt a produce o semnatura digitala. RSA folosit
singur este destul de incet, dar folosit impreuna cu MD5 este mult mai efficient. A doua si a treia abordare
foloseste MD5 impreuna cu RSA, pt a garanta integritatea mesajului.

33. Semnatura digitala.

O semnatura digitala este un cod special, necesar pentru pastrarea integritatii mesajului, codul putand fi
generat de catre un participant unic. Algoritmul cel mai usor de inteles este cel ce creeaza o semnatura
RSA, care functioneaza in mod evident, deoarece participantul este unica persoana care isi cunoaste cheia
privata, si foloseste acea cheie pentru a produce acea semnatura. Oricare alt participant poate verifica acea
semnatura folosind cheia publica corespunzatoare.

34. Descrieti principalele protocoale de securitate a aplicatiilor.

Securizarea se poate face la diferite nivele. La nivel aplicatie se pot securiza mesajele e-mail folosind
sistemul PGP(pretty good privacy) care este standarul de facto in acest caz. La nivel transport avem
securizarea privind comertul electronic cu ajutorul protocoalelor:
SSL(Security socket layer) cu varianta mai noua TLS (Transport layer security) este utilizat intre
navigatoarele web si serverele pentru e-commerce. Serviciile de securitate ale protocolului SSL asigura:
autentificarea serverului, criptarea datelor, autentificarea clientului (optional).
Securizarea tranzactiilor electronice(SET-Secure electronic transactions)-protocolul a fost proiectat
pt tranzactii facute pe internet si platite cu carduri. Asigura servicii de securitate pt 2 participanti:
consumatorul, comerciantul si banca comerciantului.
Securitatea la nivel de retea(NLS-Network layer security) – trimite gazdei date criptate in pachete de
tip IP. Autentificarea la nivel retea se face de gazda destinatie care poate autentifica adresa sursa IP.

9. XML ȘI SEMANTIC WEB


1. Explicați principiul subiectivității în Web-ul Semantic - Principiul AAA (al
subiectivității)
Acronimul AAA înseamnă ”Anyone may state Anything about Anything” 7. Așa cum
oricine poate scrie orice în propriile pagini Web, oricine trebuie să poată stoca orice
afirmații într-o bază de cunoștințe. Așadar, principiul e puternic legat de cel precedent, al
validității implicite: orice afirmație e considerată validă până când intră în contact cu o
afirmație contradictorie. Motivele sunt legate de principiul precedent:
 WWW este un mediu liber, nimeni nu trebuie să cenzureze informația pe care o
conține. Consumatorii informației din Web trebuie să decidă singuri asupra
credibilității surselor de informație. Modelele de reputație (note acordate de cititori,
butoane Like/Dislike etc.) pot ajuta în aceste decizii. Ele se adresează atât cititorilor
umani, cât și agenților software autonomi care vor trebui să ia decizii în numele
oamenilor;
 Cunoștințele nu trebuie neapărat să reflecte realitatea, trebuie să poată exprima și
”realități alternative” (lumi fantastice din lucrări literare, mitologii, viziuni
alternative asupra istoriei sau pur și simplu opinii neconformiste);
 Nimeni nu este creditat cu deținerea adevărul absolut. În istoria umanității au fost
momente în care afirmația Pământul este plat avea valoare axiomatică, autoritativă.
Semantic Web trebuie să fie pregătit pentru orice ”răsturnări de situație”, când teorii
aparent general acceptate sunt brusc invalidate de noi evidențe și experiențe (sau pur
și simplu de interesul individual al unui creator de cunoștințe);
 Autoritățile ce controlează informație tind să o cenzureze, să o deformeze sau pur și
simplu aplică un anumit nivel de subiectivitate în mod involuntar. E preferabil ca
subiectivitatea să fie echitabil aplicabilă în tot Internetul.

2. Explicați principiul identității multiple în Web-ul Semantic.

E permisă posibilitatea ca un același concept să aibă mai mulți identificatori! Acesta e


principiul identității multiple, care îl completează pe cel al identității nonambigue: Un
identificator nu poate fi folosit pentru mai multe concepte diferite, dar un concept poate
avea mai mulți identificatori!
Acest principiu permite ca diferiți creatori de cunoștințe să poată stoca afirmații despre
aceleași concepte fără a se pune de acord în prealabil asupra identificatorilor (aspect care nici
nu ar fi posibil la nivelul întregului Internet!). Fiecare va folosi identificatori convenabil aleși,
fără a se îngrijora dacă nu cumva altcineva a memorat afirmații despre același concept.
Ulterior, dacă se dorește fuzionarea afirmațiilor din mai multe surse, și fiecare sursă a
folosit alți identificatori pentru aceleași concepte, se pot insera în baza de cunoștințe relații de
echivalență8. Mai mult, există chiar situații în care se urmărește deducerea de astfel de
relații de echivalență.

3. Explicați principiul identității nonambigue în Web-ul Semantic precum și


tipurile de identificatori ce pot fi folosiți (cu exemple).

Nu e permis să se folosească același identificator pentru concepte diferite. Dacă se


fac afirmații despre oameni diferiți cu același nume, vor trebui să se construiască identificatori
diferiți pentru fiecare individ. Această diferențiere trebuie să fie garantată pentru întreaga rețea
WWW!
În baze de date, identitatea e asigurată la nivelul unei baze de date (valori-cheie
unice, nume unice de tabele etc.). Cheia primară e o coloană creată special pentru a aloca
identificatori diferiți fiecărui individ/obiect din tabel, evitând riscul ca alți identificatori
tradiționali, precum numele, să se repete în cadrul aceluiași tabel. În programare datele sunt
stocate în variabile cu nume unice într-un domeniu de vizibilitate. În aceste cazuri, identitatea e
asigurată cel mult la nivelul unei aplicații software, alte aplicații și alte baze de date ar putea
reutiliza aceiași identificatori. În Semantic Web însă, identitatea trebuie asigurată la nivelul
întregului Internet! Creatorii de cunoștințe trebuie să folosească identificatori despre care au
garanția că nimeni altcineva din Internet nu îi va folosi în alte scopuri.

4. Explicați și exemplificați modelul de date RDF

În RDF, terminologia oficială numește cele 3 componente, în ordinea:


 predicat, numit și proprietate (conceptul prin care se descrie subiectul);
 obiect (conceptul care asigură descrierea).
Reprezentarea abstractă a afirmațiilor RDF se realizează cu ajutorul grafurilor, în care
nodurile corespund subiectului și obiectului, iar arcele corespund proprietății:

5. Explicați noțiunea de cunoștințe contextuale și dați un exemplu în mod grafic


și în sintaxa TriG.

Contextul poate fi considerat orice concept ce caracterizează o afirmație în ansamblu


său, nu doar o parte a unei afirmații. Interpretarea pe care o acordăm contextului poate să
varieze:
 contextul ca sursă a afirmației, a unei credințe sau a unei citări:
Marian crede că Alin este frate cu Andrei.
 contextul ca loc/timp în care e valabilă afirmația – poate servi și la precizarea timpului
gramatical al afirmațiilor:
Maria și Alin sunt căsătoriți din 2010.
Maria lucrează pentru firma ABC în Cluj Napoca.
 contextul ca evaluare a unei relații:
Soarele se rotește în jurul Pământului este o afirmație falsă.
Pământul se rotește în jurul Soarelui cu 30 km/s.
E important de sesizat diferența semantică între a caracteriza o afirmație/relație și a
caracteriza doar o parte a unei afirmații. Considerăm exemplele:
Maria lucrează pentru firma ABC din Cluj Napoca.
Maria lucrează pentru firma ABC în Cluj Napoca.

6. Exemplificați și explicați sintaxa N-triples.


N-triples10 este sintaxă brută de serializare RDF. Aceasta e cea mai primitivă sintaxă și are un
set minim de reguli cu privire la scrierea afirmațiilor (reguli pe care le-am folosit deja în câteva
exemple anterioare):
 Între concepte trebuie să apară minim un spațiu sau un Tab;
 Orice afirmație (triplet) trebuie să se încheie cu un spațiu urmat de un punct și un
salt la rând nou (Enter);
 Identificatorii de tip URI se încadrează între <...>;
 Identitatea resurselor anonime e asigurată prin nume prefixate de ”_:”;
Obiectele-valoare sunt implicit de tip text (se trec între ghilimele indiferent de
tipul/semnificația lor) dar pot fi însoțite de:
o Un cod de limbă (care precizează în ce limbă e scrisă valoarea);
o Un tip de dată, de obicei dintre cele oferite de limbajul XML Schema (dacă
dorim ca valoarea să fie considerată de alt tip decât string); unicul tip oferit
de RDF este XMLLiteral (un șir de caractere ce conține cod XML bine
format).

7. Exemplificați și explicați sintaxa Turtle.


Turtle11 este o versiune optimizată sintactic pentru N-triples, creată cu scopul de a face
cunoștințele mai ușor de tastat și de citit. Scopul acestei sintaxe a fost să ofere o serie de
abrevieri, iar fișierele se salvează cu extensiile .ttl sau .n3.
Cea mai importantă facilitate sintactică e posibilitatea de a evita repetarea porțiunilor
comune din identificatorii URI, cu ajutorul unui prefix (spațiu de nume). De exemplu, în
loc de:

<http://expl.ro#Alin> <http://expl.ro#esteFrateCu> <http://expl.ro#Andrei> .


<http://expl.ro#Alin> <http://expl.ro#locuiesteIn> <http://expl.ro#Anglia> .
<http://expl.ro#Alin> <http://expl.ro#areNumele> "Alin” .

...vom putea defini un prefix locțiitor pentru partea de URI care se repetă (de
asemenea nu mai sunt necesare parantezele ascuțite):

@prefix x: <http://expl.ro#>. x:Alin x:FrateCu


x:Andrei . x:Alin x:locuiesteIn x:Anglia .
x:Alin x:areNumele "Alin” .

...sau, și mai simplu, definim un prefix vid:

@prefix : <http://expl.ro#>.
:Alin :FrateCu :Andrei .
:Alin :areVarsta 20 .

8. Exemplificați și explicați diferența între liste și containere în RDF.


Listele sunt mai apropiate claselor decât containerele, prin aceea că de obicei elementele
enumerate într-o listă au o semnificație comună, ar putea deveni elementele unei clase. De aceea,
vom vedea mai târziu, OWL se bazează pe liste la definirea claselor: permite ca o clasă să fie
creată prin enumerarea listei elementelor sale (și prin aceasta aplică și o închidere clasei); în
plus mai permite ca o clasă să fie definită prin intersecție sau reuniune aplicate asupra unei
liste de alte clase.

9. Exemplificați și explicați 3 tipuri de relații (proprietăți) introduse de


vocabularul OWL.

Proprietatea de simetrie a unei relații (owl:SymmetricProperty)


O variație a situației precedente este situația în care dorim să afirmăm că relația
funcționează în ambele sensuri fără a i se schimba identificatorul. În mod implicit tripletul RDF
e unidirecțional – pentru a afirma că două persoane sunt căsătorite trebuie să facem două
afirmații, indicând relația de căsătorie în ambele sensuri. Ca și în cazul precedent, putem
rezolva această situație la momentul interogării, sau stabilind de la bun început o regulă
OWL care să genereze automat relațiile inverse. Din exemplul…
@prefix : <http://expl.ro#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:eRudaCu a owl:SymmetricProperty.
:Ana :eRudaCu :Alin.
…se va deduce:
:Alin :eRudaCu :Ana.

Proprietatea de reflexivitate a unei relații (owl:ReflexiveProperty)


Aceasta este o submulțime a lui owl:SymmetricProperty și conține acele relații care
conectează un individ cu el însuși. Cu alte cuvinte, toate lucrurile din univers au aceiasi relație
cu ele însele. De exemplu, putem indica faptul că orice om se cunoaște pe sine,
astfel:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CunoastePe a owl:ReflexiveProperty.
:Ana a :Femeie.
…se va deduce:
:Ana a owl:NamedIndividual.
…iar în baza faptului că Ana este un individ…
:Ana :CunoastePe :Ana.

Proprietatea de tranzitivitate a unei relații (owl:TransitiveProperty)


Aceasta e o altă submulțime a lui owl:ObjectProperty, prin care afirmăm că o relație
care înlănțuie mai mulți indivizi e aplicabilă între primul și ultimul individ din lanț. Din
următorul exemplu…
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:eFrateCu a owl:TransitiveProperty.
:Alin :eFrateCu :Andrei.
:Andrei :eFrateCu :Mihai.
…se va deduce:
:Alin :eFrateCu :Mihai.

10. Oferiți 5 exemple de vocabulare controlate și explicați pe scurt utilitatea lor.

Ele pot fi și vocabulare controlate, propuse de diverse organizații pentru a deservi un


anumit domeniu, devenind suficient de populare încât să fie adoptate pe scară largă:
 FOAF16, set de concepte cu care se pot descrie relațiile dintre oameni;
 GoodRelations17, pentru a descrie cataloage de produse;
 Dublin Core18, pentru a descrie resurse informaționale (documente, cărți etc.);
 OpenGraph19, cu același scop ca FOAF, dar conceput de Facebook pentru a stoca
relațiile sociale;
 voID20, pentru a descrie baze de cunoștințe (de exemplu câte clase, proprietăți,
subiecte, obiecte conține);
 SPARQL Service Description21, pentru a descrie capabilitățile oferite de un server de tip
SPARQL endpoint (ce contexte oferă, ce versiune de SPARQL suportă etc.);
 OWL-Time22, pentru a indica în mod precis momente și perioade de timp (utilă în a
atașa contexte temporale afirmațiilor);
 GeoOWL23, pentru a indica în mod precis locații și concepte spațiale (utilă în a atașa
contexte spațiale afirmațiilor);
 DBPedia24, setul de concepte oferite de Wikipedia, fără a avea un domeniu de utilizare
specific. Obiectivul său este să devină un dicționar de referință pentru diverși termeni
comuni, o limbă comună la care să se alinieze cât mai multe baze de cunoștințe (un
deziderat periculos sub anumite aspecte, ce riscă să încalce principiile descentralizării
Web).

11. Explicați modul de utilizare a cererilor HTTP în accesarea cunoștințelor la


distanță.

Paradigma Linked Data se bazează pe accesarea prin HTTP a identificatorilor de


concepte, la care serverul să răspundă fie cu un set de cunoștințe despre acel concept
(identificatori cu foldere fictive), fie cu toată baza de cunoștințe din care clientul să-și
selecteze informația relevantă (identificatori cu ancore). Filtrarea informației relevante se
poate realiza cu SPARQL fie la nivelul clientului, fie la al serverului. Așadar sunt posibile
diferite scenarii de combinare între interogări și accesul la distanță, în funcție de ce facilități
oferă serverul.
S-au consacrat două protocoale bazate pe HTTP prin care are loc accesul la
cunoștințe oferite de servicii Web:
 Protocolul SPARQL27;
 Protocolul Graph Store28.
Ambele se bazează pe metodele cererilor HTTP:
 GET – pentru a accesa cunoștințe, cu posibilitatea de a atașa la adresa accesată
variabile care să indice mai precis ce anume dorim să accesăm;
 POST – pentru a trimite cunoștințe;
 PUT – pentru a înlocui cunoștințe existente pe server cu unele noi;
 DELETE – pentru a șterge cunoștințe de pe server;
 HEAD – pentru a testa dacă un server de cunoștințe răspunde;
 OPTIONS – pentru a verifica ce facilități oferă serverul de cunoștințe;
 PATCH – pentru a trimite o interogare capabilă să modifice cunoștințe.

12. Exemplificați și explicați inferențele permise de restricțiile de cardinalitate în


OWL.

Deducerea echivalenței indivizilor din cardinalitatea maximă (owl:maxCardinality)


aplicată ca restricție (owl:Restriction) asupra unei proprietăți (owl:onProperty):
Prin cardinalitate putem impune de câte ori poate fi implicat un anumit subiect într-o
anumită relație. Dacă numărul de relații depășește limita pe care o impunem, obiectele
suplimentare trebuie să fie echivalente cu unele dintre celelalte. Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
:Alin a :CopilCuUnParinte; areParintePe :Ana, alt:Maria.
…se va deduce:
:CopilCuUnParinte a owl:Restriction, owl:Class.
:Ana owl:sameAs alt:Maria.
Deoarece în prima fază am afirmat că Alin face parte din clasa celor cu un parinte (mai
exact, care au relația :areParintePe cu un singur obiect), iar apoi am indicat doi părinți, s-a
dedus că aceștia trebuie să fie una și aceeași persoană.

Observați modul de creare a clasei CopilCuUnParinte. Aceasta e de un tip particular,


owl:Restriction care e mulțimea acelor clase ce sunt create prin astfel de mecanisme de
restricționare a relațiilor (deci orice owl:Restriction e și clasă). Dacă proprietatea ce suferă
restricția are deja un domeniu declarat, clasa generată prin restricție va fi o submulțime a
acesteia. Din următorul set:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:areParintePe rdfs:domain Copil.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
se va deduce, pe lângă echivalența amintită, și că:
:CopilCuUnParinte rdfs:subClassOf :Copil.
Cu alte cuvinte, mulțimea copiilor cu un singur părinte e o submulțime a mulțimii
copiilor, obținută prin restricționarea numărului de utilizări.

Deducerea echivalenței indivizilor din cardinalitate îmbinată cu distincții


cunoscute (owl:cardinality):
Exemplul e similar celui de mai sus, dar cardinalitatea e mai mare decât 1, deci avem
nevoie și de o serie de distincții pentru a putea concluziona echivalența:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:ParinteCuDoiCopii owl:onProperty :AreCopilPe; owl:cardinality 2 .
:Alin a :ParinteCuDoiCopii, :AreCopilPe :Ana, Andreea, Mihai.
:Mihai owl:differentFrom :Ana, :Andreea.
Diferențierea lui Mihai față de restul copiilor lui Alin ne permite să concluzionăm care
copii ar putea fi echivalenți pentru a menține corectitudinea afirmației că Alin are 2 copii:
:ParinteCuDoiCopii a owl:Restriction.
:Ana owl:sameAs :Andreea.

Aici nu am mai folosit owl:maxCardinality ci cardinalitatea precisă: Alin are exact doi copii
distincți. Atenție însă, aceasta nu înseamnă că baza de cunoștințe trebuie să conțină doi copii
pentru Alin! În numele principiului Open World, o bază de cunoștințe nu e niciodată
completă, pot apare în viitor noi afirmații, deci se tolerează absența afirmațiilor despre copii lui
Alin. Nu se tolerează însă depășirea acestui număr (mai exact, se încearcă interpretarea
depășirii prin astfel de echivalențe, dacă nu există probe contrarii care să afirme distincția).

13. Exemplificați și explicați inferențele permise de restricțiile owl:hasValue,


owl:someValuesFrom și owl:allValuesFrom.

Necesitatea și suficiența (owl:Restriction, owl:onProperty, owl:hasValue,


owl:allValuesFrom, owl:someValuesFrom, owl:hasSelf)
Un individ poate fi alocat unei clase în funcție de relațiile la care participă (vezi
RDF Schema) dar și în funcție de indivizii cu care participă la acea relație, sau clasele
cărora acești indivizi aparțin. Demonstrăm mai întâi deducțiile posibile dintr-o relație cu un
anumit individ clar specificat:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:SatelitAlPamantului owl:onProperty :Orbiteaza; owl:hasValue :Pamantul.
Am afirmat că mulțimea :SatelitAlPamantului e formată din toate acele lucruri X
care au relația :Orbiteaza cu :Pamantul (care apar în afirmații de forma X :Orbiteaza
:Pamantul). Aceasta permite două tipuri de deducții:
 dacă se mai știe că…
:Luna :Orbiteaza :Pamantul.
…se poate deduce:
:Luna a :SatelitAlPamantului.
 în schimb dacă se știe că…
:Luna a :SatelitAlPamantului.
…se deduce:
:Luna :Orbiteaza :Pamantul.
Deci avem o deducție posibilă în ambele sensuri – apartenența la o clasă poate fi
produsă de existența unei relații cu un anumit individ dar și invers, relația cu un individ
dedusă din apartenența la o clasă.
În plus, din ambele situații se mai deduce:
:SatelitAlPamantului a owl:Restriction, owl:Class.
Cu alte cuvinte, avem de a face cu o clasă-restricție, noțiune explicată deja în
exemplele cu cardinalitatea: o clasă restricție este detectată automat din utilizarea lui
owl:onProperty, este formată din toți indivizii ce respectă restricția și este o submulțime a
domeniului proprietății ce suferă restricția. De exemplu, :Orbiteaza ar putea avea ca
domeniu clasa :Satelit, ceea ce ar face să se deducă următoarea afirmație, asigurând astfel și
alipirea restricției la taxonomia existentă de clase:
:SatelitAlPamantului rdfs:subClassOf :Satelit.

14. Exemplificați și explicați trei moduri de deducere a echivalenței indivizilor.

Deducerea echivalenței indivizilor din proprietatea funcțională


(owl:FunctionalProperty).
Proprietatea funcțională se comportă ca o funcție matematică: oricărui subiect îi
poate aloca un singur obiect. Dacă îi alocă mai multe, se va deduce că acestea sunt identități
multiple ale unui același obiect.
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Alin :areMamaPe :Ana.
:Alin :areMamaPe :Aneta.
:areMamaPe a owl:FunctionalProperty.
…se va deduce:
:Ana owl:sameAs :Aneta.
O persoană nu poate avea două mame naturale, deci cele două mame trebuie să fie
una și aceeași.

Dacă ajungem pe alte căi și la concluzia că :Ana și :Aneta nu au cum să fie aceeași
persoană, ajungem la contradicție. Acest aspect e valabil pentru toate exemplele ce urmează:
regulile prezentate vor detecta echivalențe atâta timp cât nu există alte reguli care să detecteze
distincția între aceiași indivizi. Altfel se vor produce contradicții. Detectarea automată a
echivalențelor poate automatiza maparea semantică între baze de cunoștințe din surse diferite,
generând automat echivalențe.

Deducerea echivalenței indivizilor din proprietatea invers funcțională


(owl:inverseFunctionalProperty).
Aceasta se comportă invers față de cea funcțională: pe orice obiect îl poate pune în
relație cu un singur subiect. Dacă apar mai multe subiecte, se va deduce echivalența lor.
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana :areEmail <mailto:ana@expl.ro>. alt:Aneta :areEmail
<mailto:ana@expl.ro>.
:areEmail a owl:InverseFunctionalProperty.
…se va deduce:
:Ana owl:sameAs alt:Aneta.
(ne bazăm pe prezumția că două persoane nu pot avea același e-mail, deci dacă
apare o astfel de situație e vorba de aceeași persoană)

Deducerea echivalenței indivizilor din setul de proprietăți cheie (owl:hasKey)


Aceasta este o versiune mai precisă a proprietății funcționale, sub două aspecte:
 se aplică la o combinație de mai multe proprietăți, care nu vor putea lua aceeași
combinație de valori (obiecte) pentru două subiecte din aceeași clasă;
 efectul e limitat doar la membrii unei clase.
Așadar, putem considera că e o transpunere a noțiunii de cheie primară mutiplă din
bazele de date relaționale! Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana :NrMatricol 100; :studentaLa :ASE, a :Student.
:Aneta :NrMatricol 100; studentaLa :ASE; a :Student.
:Student owl:hasKey (:NrMatricol :studentaLa).
…se va deduce:
:Ana owl:sameAs :Aneta.

Deducerea echivalenței indivizilor din cardinalitatea maximă (owl:maxCardinality) aplicată ca


restricție (owl:Restriction) asupra unei proprietăți (owl:onProperty):
Prin cardinalitate putem impune de câte ori poate fi implicat un anumit subiect într-o
anumită relație. Dacă numărul de relații depășește limita pe care o impunem, obiectele
suplimentare trebuie să fie echivalente cu unele dintre celelalte. Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
:Alin a :CopilCuUnParinte; areParintePe :Ana, alt:Maria.
…se va deduce:
:CopilCuUnParinte a owl:Restriction, owl:Class.
:Ana owl:sameAs alt:Maria.
Deoarece în prima fază am afirmat că Alin face parte din clasa celor cu un parinte (mai
exact, care au relația :areParintePe cu un singur obiect), iar apoi am indicat doi părinți, s-a
dedus că aceștia trebuie să fie una și aceeași persoană.

Observați modul de creare a clasei CopilCuUnParinte. Aceasta e de un tip particular,


owl:Restriction care e mulțimea acelor clase ce sunt create prin astfel de mecanisme de
restricționare a relațiilor (deci orice owl:Restriction e și clasă). Dacă proprietatea ce suferă
restricția are deja un domeniu declarat, clasa generată prin restricție va fi o submulțime a
acesteia. Din următorul set:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:areParintePe rdfs:domain Copil.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
se va deduce, pe lângă echivalența amintită, și că:
:CopilCuUnParinte rdfs:subClassOf :Copil.
Cu alte cuvinte, mulțimea copiilor cu un singur părinte e o submulțime a mulțimii
copiilor, obținută prin restricționarea numărului de utilizări.

Deducerea echivalenței indivizilor din cardinalitate îmbinată cu distincții


cunoscute (owl:cardinality):
Exemplul e similar celui de mai sus, dar cardinalitatea e mai mare decât 1, deci avem
nevoie și de o serie de distincții pentru a putea concluziona echivalența:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:ParinteCuDoiCopii owl:onProperty :AreCopilPe; owl:cardinality 2 .
:Alin a :ParinteCuDoiCopii, :AreCopilPe :Ana, Andreea, Mihai.
:Mihai owl:differentFrom :Ana, :Andreea.
Diferențierea lui Mihai față de restul copiilor lui Alin ne permite să concluzionăm care
copii ar putea fi echivalenți pentru a menține corectitudinea afirmației că Alin are 2 copii:
:ParinteCuDoiCopii a owl:Restriction.
:Ana owl:sameAs :Andreea.

Aici nu am mai folosit owl:maxCardinality ci cardinalitatea precisă: Alin are exact doi
copii distincți. Atenție însă, aceasta nu înseamnă că baza de cunoștințe trebuie să conțină doi
copii pentru Alin! În numele principiului Open World, o bază de cunoștințe nu e niciodată
completă, pot apare în viitor noi afirmații, deci se tolerează absența afirmațiilor despre copii
lui Alin. Nu se tolerează însă depășirea acestui număr (mai exact, se încearcă interpretarea
depășirii prin astfel de echivalențe, dacă nu există probe contrarii care să afirme distincția).

Deducerea echivalenței indivizilor din listă de elemente nedistincte (owl:oneOf) îmbinată cu


distincții cunoscute:
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:LunaIarna owl:oneOf (:Decembrie :Ianuarie :Februarie). alt:Gerar a :LunaIarna;
owl:differentFrom :Februarie, :Decembrie.
…se va deduce:
alt:Gerar owl:sameAs :Ianuarie.
Deducția e explicabilă prin caracterul închis al listei. Enumerarea indică faptul că pot
fi maxim 3 elemente în clasa :LunaIarna, iar dacă apare un al patrulea, trebuie să fie
echivalent cu unul din ceilalți (altfel ajungem la contradicție).

15. Exemplificați și explicați trei moduri de deducere a distincției indivizilor.


În continuare vom sugera o serie de căi pe care se poate deduce distincția indivizilor.
În practică distincția trebuie dedusă fie pentru a verifica dacă există discrepanțe
logice între concepte din baze de cunoștințe diferite (cu prefixe diferite), fie
pentru a verifica dacă o anumită baze de cunoștințe nu este cumva contradictorie cu
ea însăși.

Deducerea distincției dintre indivizi din disjuncție (owl:disjointWith). Din afirmațiile:


@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana a :Femeie.
:Marian a :Barbat.
:Femeie owl:disjointWith :Barbat.
…se va deduce:
:Ana owl:differentFrom :Marian.

Deducerea disjuncției dintre clase (și a distincției dintre indivizi) din


complement (owl:complementOf). Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana a :Femeie.
_:x owl:complementOf :Femeie.
:Marian a _:x.
…se va deduce:
_:x owl:disjointWith :Femeie.
…și de aici:
:Ana owl:differentFrom :Marian.

Deducerea distincției dintre indivizi, din proprietăți incompatibile


(owl:propertyDisjointWith). Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana :eMamaLui :Alin.
:Maria :eCopilulLui :Alin.
:eMamaLui owl:propertyDisjointWith :eCopilulLui.
…se va deduce:
:Ana owl:differentFrom :Maria.
Idem se poate deduce distincția obiectelor, dacă subiectul e fix și obiectele variază.

Deducerea disjuncției claselor sau proprietăților din listă de clase disjuncte (owl:AllDisjointClasses),
respectiv listă de proprietăți incompatibile (owl:AllDisjointProperties). Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:StudentGrupa1 owl:members (:Ana :Ann :Andrei).
:StudentGrupa1 a owl:AllDifferent.
:Gen owl:members (:Femeie :Barbat).
:Gen a owl:AllDisjointClasses.
:RelatieRudenie owl:members (:eMamaLui :eCopilulLui).
:RelatieRudenie a owl:AllDisjointProperties.
…se vor deduce (pe seturi):
:StudentGrupa1 a owl:Class. (din prima listă)
:Ana a :StudentGrupa1, owl:NamedIndividual.
:Ann a :StudentGrupa1, owl:NamedIndividual.
:Andrei a :StudentGrupa1, owl:NamedIndividual.
:Ana owl:differentFrom :Ann, :Andrei.
:Ann owl:differentFrom :Ana, :Andrei.
:Andrei owl:differentFrom :Ann, :Ana.
:Gen a owl:Class. (din a doua listă)
:Femeie a :Gen, owl:Class.
:Barbat a :Gen, owl:Class.
:Femeie owl:disjointWith :Barbat.
:RelatieRudenie a owl:Class. (din a treia listă)
:eMamaLui a :RelatieRudenie, rdf:Property.
:eCopilulLui a :RelatieRudenie, rdf:Property.
:eMamaLui owl:propertyDisjointWith :eCopilulLui.

Deducerea disjuncției (dar și a unor relații de incluziune) din reuniune de


clase disjuncte. Din afirmația:
@prefix : <http://expl.ro#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Om owl:disjointUnionOf (:Femeie :Barbat).
…se va deduce:
:Femeie rdfs:subClassOf :Om.
:Barbat rdfs:subClassOf :Om.
:Femeie owl:disjointWith :Barbat.
Practic e vorba de o nouă variantă a lui owl:AllDisjointClasses în care avem și
posibilitatea de a crea o supraclasă ce sunt înglobeze mulțimile disjuncte.

16. Exemplificați și explicați trei moduri de deducere a contradicțiilor.

17. Exemplificați și explicați trei moduri de extindere a taxonomiei de clase OWL


cu ajutorul unor operații pe mulțimi.

Enumerarea elementelor unei mulțimi (owl:oneOf, owl:distinctMembers)


O primă categorie, ce lărgește posibilitățile de descriere a taxonomiei de clase,
sunt operațiile cu mulțimi. Cea mai simplă este enumerarea directă a indivizilor unei mulțimi,
ca o listă ordonată și închisă (demonstrată deja și la deducerea echivalențelor). Avem două
moduri de a realiza acest lucru:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:EchipaFotbal owl:oneOf (:Steaua :Dinamo :Rapid :CainiiRosii).
sau
:EchipaFotbal owl:distinctMembers (:Steaua :Dinamo :Rapid).

Diferența între owl:oneOf și owl:distinctMembers este că în al doilea caz se


garantează distincția între indivizi (se deduc automat distincții între fiecare doi
membrdupă cum s-a arătat deja în secțiunea dedicată deducerii distincțiilor) în timp ce primul
caz lasă loc posibilității ca unele elemente să fie același element cu mai mulți
identificatori. Cele două afirmații vor produce:
:Steaua a :EchipaFotbal.
:Dinamo a :EchipaFotbal.
:Rapid a :EchipaFotbal.
:CainiiRosii a :EchipaFotbal. (doar din owl:oneOf)
A doua enumerare produce și distincțiile de care aminteam pentru fiecare pereche
de indivizi.

Intersecția și reuniunea (owl:intersectionOf, owl:unionOf)


În capitolul dedicat conceptelor RDF (secțiunea privind maparea) am arătat cum se pot
adăuga la taxonomie mulțimi-reuniune și mulțimi-intersecție prin folosirea lui rdfs:subClassOf.
OWL oferă o metodă mai directă de a preciza acest lucru:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:ScriitorClujean owl:intersectionOf (:Scriitor :Clujean).
:Om owl:unionOf (:Barbat :Femeie).
:Andrei a :ScriitorClujean, :Barbat.
…se vor deduce:
:Scriitor rdfs:subClassOf :ScriitorClujean. (din reuniune)
:Clujean rdfs:subClassOf :ScriitorClujean.
:Barbat rdfs:subClassOf :Om. (din intersecție)
:Femeie rdfs:subClassOf :Om.
…iar din acestea deducțiile discutate deja produc mai departe:
:Andrei a :Scriitor, :Clujean, :Om
(plus declarațiile de individ, clasă etc.)

Complementul și diferența (owl:complementOf)


Complementul unei mulțimi se folosește cu precădere pentru a detecta contradicții, într-
o manieră similară cu disjuncția, după cum s-a demonstrat deja. Complementul unei clase e
format din toate acele concepte ale lui owl:Thing care nu aparțin clasei respective. Începătorii
ar putea fi tentați să considere corectă afirmația de mai jos, considerând că cine nu e femeie
trebuie să fie bărbat:
:Barbat owl:complementOf :Femeie.
În realitate complementul mulțimii :Femeie e format din toate lucrurile din univers care
nu sunt femei, de exemplu o piatră. Pentru a defini corect mulțimea Barbat pornind de la
Femeie, va trebui să afirmăm:
:Barbat owl:intersectionOf (:Om _:X).
_:X complementOf :Femeie.
OWL nu oferă un concept aparte pentru operația de diferență, ci se bazează tocmai
pe acest șablon ce îmbină complementul cu intersecția.

În plus, un motor inferențial complet ar trebui să poată deduce toate legile


matematice legate de operații cu mulțimi, dintre care amintim:
 complementul reuniunii a două mulțimi e intersecția complementelor celor două
mulțimi:
:Om owl:unionOf (:Barbat :Femeie).
_:complOm owl:complementOf :Om
…se poate deduce:
_:x owl:complementOf :Barbat.
_:y owl:complementOf :Femeie.
_:complOm owl:intersectionOf (_:x _:y).
 complementul intersecției a două mulțimi e reuniunea complementelor celor două
mulțimi:
:ScriitorClujean owl:intersectionOf (:Scriitor :Clujean).
_:complSC owl:complementOf :ScriitorClujean.
…se poate deduce:
_:x owl:complementOf :Scriitor.
_:y owl:complementOf :Clujean.
_:complSC owl:unionOf (_:x _:y).
 complementul submulțimii unei mulțimi e submulțimea complementului acelei
mulțimi:
:Barbat rdfs:subClassOf :Om.
_:complBarbat owl:complementOf :Barbat.
…se poate deduce:
_:x owl:complementOf :Om.
_:x rdfs:subClassOf _:complBarbat.

18. Exemplificați și explicați trei exemple de utilizare a nodurilor anonime în


RDF.
În continuare vom discuta despre utilizarea nodurilor anonime: ca structuri de date,
mai exact concepte ce grupează mai multe informații.

_:adre
sa

2
0

200

Fig. 4 – Utilizarea nodurilor anonime în reprezentarea structurilor de date

Am sugerat deja că nodul anonim nu va putea apare în interogări, deci nu se


va putea pune întrebarea Care e orasul din _:adresa? însă se va putea pune întrebarea
Care e orașul în care locuiește Ana? (profitând de înlănțuirea relațiilor ”locuiesteIn” și
”Oras”, intermediată de nodul anonim, care devine astfel important doar prin poziția sa,
nu și prin identitate).

19. Ce este arborele DOM? Oferiți un exemplu, cu codul XML aferent, cu minim
3 nivele în arbore.
Modelul DOM este una din cele două soluţii consacrate (alături de SAX) pentru
extragerea informaţiilor dintr-un document XML, indiferent că acestea sunt stocate în numele
sau valorile elementelor, numele sau valorile atributelor sau în structurile XML auxiliare.
DOM nu este o aplicaţie în sine, ci un model abstract implementat la nivelul
parserelor, ca o colecţie de interfeţe de programare (API) ce folosesc paradigma obiectuală
pentru a transpune conţinutul oricărui document conform cu standardul XML în clase, obiecte
şi metode. Astfel,
DOM este independent de platformă şi limbajul de programare, fiind considerat un
strat între parser şi aplicaţiile consumatoare de XML. Practic, parserul citeşte date din sursa
XML şi alcătuieşte arborele DOM translatând imbricările între marcatori în relaţii tată-fiu şi
unităţile XML în noduri ale arborelui.
Nucleul DOM, numit DOM Core, este un set de interfeţe de programare de uz general la
care se adaugă module opționale precum cele adaptate pentru manipulare de de stiluri HTML,
care nu apar neapărat în toate implementările şi dintre care indicăm:
 DOM Views – pentru manipularea unei reprezentări particulare a unui document;
 DOM Events – un sistem de evenimente generice;
 DOM HTML – pentru manipularea de HTML clasic;
 DOM CSS – pentru manipulare dinamică a foilor de stil;
DOM Traversal an Range – pentru identificarea şi parcurgerea unor porţiuni de document care nu
reprezintă neapărat colecţii de noduri (fragmente, conţinut textual).
<produse>
<produs cod="p01">Televizor</produs>
</produse>
Un parser DOM va crea din acest exemplu următoarea ierarhie de noduri:

Document Node
Documentul
complet

NodeList

Element Node
<produse>

NodeList

Element Node
<produs>

NodeList NamedNodeMap

CharacterData
Text Node
„Televizor”

20. Care sunt efectele fundamentale oferite de Scriptaculous?


Efecte fundamentale:
•Morph – tranziție între un stil CSS și altul
•Opacity – modificarea transparenței
•Highlight – evidențiere (colorarea/pâlpâirea fundalului pentru atragerea
atenției)
•Move – deplasare pe o direcție;
•Scale – dimensionare (mărire/micșorare);
Parallel – definirea unui set de efecte care să se execute sincron și
simultan
Queues – definirea unei cozi (succesiuni) de efecte
Efecte combinate: combinații ale celor fundamentale, cu efecte similare celor
oferite de Powerpoint:
Appear, Fade, Shake, BlindUp, BlindDown etc.
Helpere:
Transitions, Methods, toggle, multiple
Comportamente:
Draggable, Droppable, Sortable, DelayedObserver
Comportamente avansate (controale GUI preprogramate):
InPlaceEditor, Autocompleter, Slider
21. Enumerați tipurile de biblioteci AJAX
 Nivel 0: mecanisme de nivel scăzut, reutilizabil, de conectare asincronă la server:
obiectul XHR sau cadrele interne;
 Nivel 1: instrumente de nivel înalt de comunicare cu serverul (ce maschează
detaliile nivelului 0) – Dojo, JSON-RPC, Prototype, Direct Web Remoting;
 Nivel 2: instrumente de nivel înalt de construire a interfeţei cu utilizatorul (construite
peste nivelul 1) – Dojo oferă instrumente şi la acest nivel, SmartClient,
Script.aculo.us (bazat pe Prototype), JQuery;
 Nivel 3: medii de dezvoltare a aplicaţiilor AJAX: Rails, Tapestry, AJAX.NET,
SAJ

22. Enumerați 8 beneficii aduse de biblioteca Prototype programării paginilor


 prescurtarea sintaxei JavaScript;
 metode noi de localizare a nodurilor DOM (pe bază de stiluri);
 extinderea claselor JavaScript;
 funcţii noi pentru lucrul cu colecţii de date (masive, obiecte);
 ascunderea şi eliminarea facilă de noduri DOM;
 inserare facilă de cod HTML în orice poziţie a paginii;
 activarea, dezactivarea şi focalizarea facilă a câmpurilor formularelor;
 determinarea poziţiei elementelor în pagină.

23. Realizați o comparație între XML și JSON, incluzând câte un exemplu din
fiecare.

In cele ce urmeaza vom realiza o comparatie intre formatele JSON si XML.


XML
<produse>
<produs denumire=Televizor pret=100/>
<produs denumire=Calculator pret=200/>
</produse>
Valoare JSON atribuita unui variabile:
Produse=[{denumire:televizor, pret:100},{denumire:Calculator,pret:200}]
Principiu XML:aplicatiile trebuie sa fie restrictive la receptarea datelor si permisive la
generarea lor
Principiul JSON:orice aplicatie trebuie sa fie permisiva la receptarea datelor si restrictiva la
generarea lor,adica sa poata prelucra orice structuri de date primite si sa fixeze niste reguli
stricte pentru strcturile de date generate,

24. Enumerați și explicați 6 metode, funcții sau atribute (JavaScript) prin care se
poate modifica formatul sau conținutul paginii HTML.

25. Care sunt beneficiile AJAX față de paginile Web tradiționale?


o Datele pot fi trimise de la client spre server la orice moment, JavaScript
putând declanşa transferuri HTTP oricând, cu sau fără notificarea
utilizatorului; răspunsul se returnează de la server în format text, fie brut, fie
structurat (XML, JSON), pentru a fi prelucrat prin funcţii JavaScript;
o Starea iniţială a aplicaţiei e determinată de transferul dinspre server a unui
întreg modul client, cu toate stările sale posibile (deci are loc un transfer
iniţial masiv care e totuşi suportat de calculatoarele moderne şi nu necesită
instalare, toate interpretoarele necesare fiind încorporate în browser);
o Fiecare stare a aplicaţiei e obţinută prin modificarea la nivel de client a
structurii interfeţei cu utilizatorul (structura DOM), pe baza unor date primite
de la server (trecerea dintr-o stare în alta nu presupune încărcare de pagină
nouă, deci mecanismele Back/Forward şi Bookmark nu funcţionează);
o Nu are loc refresh redundant, deoarece după încărcarea stării iniţiale serverul
livrează doar datele necesare aplicaţiei, nu toate elementele interfeţei;
o Cererile asincrone de date nu blochează funcţionarea interfeţei cu utilizatorul
(aşa cum face refreshul de pagină) – interfaţa continuă să funcţioneze în acele
stări care nu au nevoie de datele aşteptate de la server; aceasta asigură o
fluiditate rezonabilă a experienţei de utilizare, apropiată de cea a aplicaţiilor
desktop;
o Experienţa de utilizare şi utilizabilitatea sunt mult îmbunătăţite, nefiind
foarte afectate de schimbul intermitent de date cu serverul; în plus, gama de
evenimente la care reacţionează suprafaţa interfeţei utilizatorului e apropiată
de cea a aplicaţiilor desktop (ex: se poate declanşa un transfer de date la
trecerea cursorului peste o anumită zonă a paginii – care nu trebuie să fie
neapărat un buton sau o imagine, deci schimbul de date cu serverul poate fi
parţial ascuns faţă de utilizator);
Browserul execută o aplicaţie JavaScript cu interfaţă HTML

26. Oferiți 6 exemple de interogări XPath pe un exemplu de document XML.

Comanda/produs/@id
Cauta atributul id al elementelor produs din comanda
/comanda/produs
Afiseaza toate elementele produs din comanda
/comanda/*
Afiseaza elementele din comanda
/comanda/text()
Afiseaza nodurile text din comanda
/comanda/produs[1]
Returneaza primul produs din comanda
/comanda/produs[id]
Returneaza acele produse din comanda care contin elemente id

27. Realizați o comparație între DTD și XSDL (diferențe și asemănări).


DTD caracteristici:
o Permite crearea vocabularelor interne ce insotesc documentul;
o Are suport general fiind adoptat odata cu staandardul XML original;
o Fixeaza structura instantelor XML(oridine ocurente cardinalitate)
o Ofera tipizare slaba si valori implicite doar pentru atribute
o Permite crearea de notaii pentru diverse formate de date referite in instanta
o DTD nu creeaza documente XML bine formatate folosind o sintaxa de tip sgml.
o Suport pentru spatii de nume este rudimentar
XSDL ofera:
 Tipizare puternica
 Suport pentru spatiile de nume
 Derivarea tipurilor
 O modularitate ce permite convertirea facila a documentelor XML in ierarhii de structura de date
cu trasaturi obiectuale;
 Transfera indicatii de procesare si documentatie complexa spre consumator la nivelul clasei de
docuentatie
 Nu permite definirea unui sablo permis pentru elementul radacina

28. Realizați o comparație între XSLT și XPath (diferențe și asemănări).

XSLT foloseste o reperezentare de tip DOM dar are propriul vocabular de manipulare si
nu necesita folosirea interfetelor DOM.XSLT are si avantajul reutilizarii transformarilor.
XSLT este limbajul de transformare a documentelor XML si se bazeaza pe Xpath pentru
a extrage informatii dintr-un document sursa si a le pune intr-un document rezultat .De
obicei XSLT e folosit pentru a genera pagini HTML din date XML,deci poate fi folosit si
ca intrument AJAX
XSLT foloseste cai Xpath RELATIVE la nodul pe care sa pozitionat instructiunea-
parinte.
Xpath-este un limbaj de interogare pe care se bazeaza numeroase limbaje ce manipuleaza
cod XML.Xpath poate doar citi informatii nu si modifica.insera.sterge.pentru acestea se
apleleaza la functiile standard Dom sau la limbajele de transformare XSLT/Xquery

29. Realizați o comparație între DOM ș SAX (ce sunt, ce au în comun, prin ce
diferă).
SAX este util in special la localizarea unor fragmente mici in continut masiv
Sax incarca doar fragmente ale documentului XML intr-o fereastra de memorie limitata,prin
care se deruleaza sirul de caractere ce alcatuieste documentul.
Pentru Citirea si localizarea unor fragmente se recomanda SAX cu exceptia cazului in care
trebuie sa se urmareasca relatii intre componente indepartate .
Pentru modificari masive de date se recomanda DOM;numeroase implementari SAX trateaza
codul sursa ca read-only operatiile de modificare fiind emulate prin recrearea unei alte
versiuni a documentului,
Generare de xml dinamic- se recomanda DOM deoarece mentine arborele in memorie pe
parcursul procesului de agaugare a noii informatii
30. Care e diferența între buna formare și validitatea unui document XML (și
ce înseamnă fiecare)
• Principiul XML este că aplicaţiile trebuie să fie restrictive la receptarea datelor
(datele fiind validate sau transformate conform regulilor unui vocabular
predefinit de destinatar) şi permisive la generarea lor (fiecare aplicaţie poate
genera orice structură de date XML);
• Principiul JSON este că orice aplicaţie trebuie să fie permisivă la receptarea
datelor şi restrictivă la generarea lor, adică să poată prelucra orice structuri de
date primite şi să fixeze nişte reguli stricte pentru structurile de date generate;

10. GRAFICĂ

31. Explicați principiul subiectivității în Web-ul Semantic - Principiul AAA (al


subiectivității)
Acronimul AAA înseamnă ”Anyone may state Anything about Anything” 7. Așa cum
oricine poate scrie orice în propriile pagini Web, oricine trebuie să poată stoca orice
afirmații într-o bază de cunoștințe. Așadar, principiul e puternic legat de cel precedent, al
validității implicite: orice afirmație e considerată validă până când intră în contact cu o
afirmație contradictorie. Motivele sunt legate de principiul precedent:

 WWW este un mediu liber, nimeni nu trebuie să cenzureze informația pe care o


conține. Consumatorii informației din Web trebuie să decidă singuri asupra
credibilității surselor de informație. Modelele de reputație (note acordate de cititori,
butoane Like/Dislike etc.) pot ajuta în aceste decizii. Ele se adresează atât cititorilor
umani, cât și agenților software autonomi care vor trebui să ia decizii în numele
oamenilor;
 Cunoștințele nu trebuie neapărat să reflecte realitatea, trebuie să poată exprima și
”realități alternative” (lumi fantastice din lucrări literare, mitologii, viziuni
alternative asupra istoriei sau pur și simplu opinii neconformiste);
 Nimeni nu este creditat cu deținerea adevărul absolut. În istoria umanității au fost
momente în care afirmația Pământul este plat avea valoare axiomatică, autoritativă.
Semantic Web trebuie să fie pregătit pentru orice ”răsturnări de situație”, când teorii
aparent general acceptate sunt brusc invalidate de noi evidențe și experiențe (sau pur
și simplu de interesul individual al unui creator de cunoștințe);
 Autoritățile ce controlează informație tind să o cenzureze, să o deformeze sau pur și
simplu aplică un anumit nivel de subiectivitate în mod involuntar. E preferabil ca
subiectivitatea să fie echitabil aplicabilă în tot Internetul.

32. Explicați principiul identității multiple în Web-ul Semantic.

E permisă posibilitatea ca un același concept să aibă mai mulți identificatori! Acesta e


principiul identității multiple, care îl completează pe cel al identității nonambigue: Un
identificator nu poate fi folosit pentru mai multe concepte diferite, dar un concept poate
avea mai mulți identificatori!
Acest principiu permite ca diferiți creatori de cunoștințe să poată stoca afirmații despre
aceleași concepte fără a se pune de acord în prealabil asupra identificatorilor (aspect care nici
nu ar fi posibil la nivelul întregului Internet!). Fiecare va folosi identificatori convenabil aleși,
fără a se îngrijora dacă nu cumva altcineva a memorat afirmații despre același concept.
Ulterior, dacă se dorește fuzionarea afirmațiilor din mai multe surse, și fiecare sursă a
folosit alți identificatori pentru aceleași concepte, se pot insera în baza de cunoștințe relații de
echivalență8. Mai mult, există chiar situații în care se urmărește deducerea de astfel de
relații de echivalență.

33. Explicați principiul identității nonambigue în Web-ul Semantic precum și


tipurile de identificatori ce pot fi folosiți (cu exemple).

Nu e permis să se folosească același identificator pentru concepte diferite. Dacă se


fac afirmații despre oameni diferiți cu același nume, vor trebui să se construiască identificatori
diferiți pentru fiecare individ. Această diferențiere trebuie să fie garantată pentru întreaga rețea
WWW!

În baze de date, identitatea e asigurată la nivelul unei baze de date (valori-cheie


unice, nume unice de tabele etc.). Cheia primară e o coloană creată special pentru a aloca
identificatori diferiți fiecărui individ/obiect din tabel, evitând riscul ca alți identificatori
tradiționali, precum numele, să se repete în cadrul aceluiași tabel. În programare datele sunt
stocate în variabile cu nume unice într-un domeniu de vizibilitate. În aceste cazuri, identitatea e
asigurată cel mult la nivelul unei aplicații software, alte aplicații și alte baze de date ar putea
reutiliza aceiași identificatori. În Semantic Web însă, identitatea trebuie asigurată la nivelul
întregului Internet! Creatorii de cunoștințe trebuie să folosească identificatori despre care au
garanția că nimeni altcineva din Internet nu îi va folosi în alte scopuri.

34. Explicați și exemplificați modelul de date RDF


În RDF, terminologia oficială numește cele 3 componente, în ordinea:
 predicat, numit și proprietate (conceptul prin care se descrie subiectul);
 obiect (conceptul care asigură descrierea).
Reprezentarea abstractă a afirmațiilor RDF se realizează cu ajutorul grafurilor, în care
nodurile corespund subiectului și obiectului, iar arcele corespund proprietății:

35. Explicați noțiunea de cunoștințe contextuale și dați un exemplu în mod grafic


și în sintaxa TriG.

Contextul poate fi considerat orice concept ce caracterizează o afirmație în ansamblu


său, nu doar o parte a unei afirmații. Interpretarea pe care o acordăm contextului poate să
varieze:
 contextul ca sursă a afirmației, a unei credințe sau a unei citări:
Marian crede că Alin este frate cu Andrei.
 contextul ca loc/timp în care e valabilă afirmația – poate servi și la precizarea timpului
gramatical al afirmațiilor:
Maria și Alin sunt căsătoriți din 2010.
Maria lucrează pentru firma ABC în Cluj Napoca.
 contextul ca evaluare a unei relații:
Soarele se rotește în jurul Pământului este o afirmație falsă.
Pământul se rotește în jurul Soarelui cu 30 km/s.
E important de sesizat diferența semantică între a caracteriza o afirmație/relație și a
caracteriza doar o parte a unei afirmații. Considerăm exemplele:
Maria lucrează pentru firma ABC din Cluj Napoca.
Maria lucrează pentru firma ABC în Cluj Napoca.

36. Exemplificați și explicați sintaxa N-triples.


N-triples10 este sintaxă brută de serializare RDF. Aceasta e cea mai primitivă sintaxă și are un
set minim de reguli cu privire la scrierea afirmațiilor (reguli pe care le-am folosit deja în câteva
exemple anterioare):
 Între concepte trebuie să apară minim un spațiu sau un Tab;
 Orice afirmație (triplet) trebuie să se încheie cu un spațiu urmat de un punct și un
salt la rând nou (Enter);
 Identificatorii de tip URI se încadrează între <...>;
 Identitatea resurselor anonime e asigurată prin nume prefixate de ”_:”;
Obiectele-valoare sunt implicit de tip text (se trec între ghilimele indiferent de
tipul/semnificația lor) dar pot fi însoțite de:

o Un cod de limbă (care precizează în ce limbă e scrisă valoarea);


o Un tip de dată, de obicei dintre cele oferite de limbajul XML Schema (dacă
dorim ca valoarea să fie considerată de alt tip decât string); unicul tip oferit
de RDF este XMLLiteral (un șir de caractere ce conține cod XML bine
format).

37. Exemplificați și explicați sintaxa Turtle.

Turtle11 este o versiune optimizată sintactic pentru N-triples, creată cu scopul de a face
cunoștințele mai ușor de tastat și de citit. Scopul acestei sintaxe a fost să ofere o serie de
abrevieri, iar fișierele se salvează cu extensiile .ttl sau .n3.
Cea mai importantă facilitate sintactică e posibilitatea de a evita repetarea porțiunilor
comune din identificatorii URI, cu ajutorul unui prefix (spațiu de nume). De exemplu, în
loc de:

<http://expl.ro#Alin> <http://expl.ro#esteFrateCu> <http://expl.ro#Andrei> .


<http://expl.ro#Alin> <http://expl.ro#locuiesteIn> <http://expl.ro#Anglia> .
<http://expl.ro#Alin> <http://expl.ro#areNumele> "Alin” .

...vom putea defini un prefix locțiitor pentru partea de URI care se repetă (de
asemenea nu mai sunt necesare parantezele ascuțite):

@prefix x: <http://expl.ro#>. x:Alin x:FrateCu


x:Andrei . x:Alin x:locuiesteIn x:Anglia .
x:Alin x:areNumele "Alin” .

...sau, și mai simplu, definim un prefix vid:

@prefix : <http://expl.ro#>.
:Alin :FrateCu :Andrei .
:Alin :areVarsta 20 .

38. Exemplificați și explicați diferența între liste și containere în RDF.

Listele sunt mai apropiate claselor decât containerele, prin aceea că de obicei elementele
enumerate într-o listă au o semnificație comună, ar putea deveni elementele unei clase. De aceea,
vom vedea mai târziu, OWL se bazează pe liste la definirea claselor: permite ca o clasă să fie
creată prin enumerarea listei elementelor sale (și prin aceasta aplică și o închidere clasei); în
plus mai permite ca o clasă să fie definită prin intersecție sau reuniune aplicate asupra unei
liste de alte clase.

39. Exemplificați și explicați 3 tipuri de relații (proprietăți) introduse de


vocabularul OWL.

Proprietatea de simetrie a unei relații (owl:SymmetricProperty)


O variație a situației precedente este situația în care dorim să afirmăm că relația
funcționează în ambele sensuri fără a i se schimba identificatorul. În mod implicit tripletul RDF
e unidirecțional – pentru a afirma că două persoane sunt căsătorite trebuie să facem două
afirmații, indicând relația de căsătorie în ambele sensuri. Ca și în cazul precedent, putem
rezolva această situație la momentul interogării, sau stabilind de la bun început o regulă
OWL care să genereze automat relațiile inverse. Din exemplul…
@prefix : <http://expl.ro#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:eRudaCu a owl:SymmetricProperty.
:Ana :eRudaCu :Alin.
…se va deduce:
:Alin :eRudaCu :Ana.

Proprietatea de reflexivitate a unei relații (owl:ReflexiveProperty)


Aceasta este o submulțime a lui owl:SymmetricProperty și conține acele relații care
conectează un individ cu el însuși. Cu alte cuvinte, toate lucrurile din univers au aceiasi relație
cu ele însele. De exemplu, putem indica faptul că orice om se cunoaște pe sine,
astfel:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CunoastePe a owl:ReflexiveProperty.
:Ana a :Femeie.
…se va deduce:
:Ana a owl:NamedIndividual.
…iar în baza faptului că Ana este un individ…
:Ana :CunoastePe :Ana.

Proprietatea de tranzitivitate a unei relații (owl:TransitiveProperty)


Aceasta e o altă submulțime a lui owl:ObjectProperty, prin care afirmăm că o relație
care înlănțuie mai mulți indivizi e aplicabilă între primul și ultimul individ din lanț. Din
următorul exemplu…
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:eFrateCu a owl:TransitiveProperty.
:Alin :eFrateCu :Andrei.
:Andrei :eFrateCu :Mihai.
…se va deduce:
:Alin :eFrateCu :Mihai.
40. Oferiți 5 exemple de vocabulare controlate și explicați pe scurt utilitatea lor.

Ele pot fi și vocabulare controlate, propuse de diverse organizații pentru a deservi un


anumit domeniu, devenind suficient de populare încât să fie adoptate pe scară largă:
 FOAF16, set de concepte cu care se pot descrie relațiile dintre oameni;
 GoodRelations17, pentru a descrie cataloage de produse;
 Dublin Core18, pentru a descrie resurse informaționale (documente, cărți etc.);
 OpenGraph19, cu același scop ca FOAF, dar conceput de Facebook pentru a stoca
relațiile sociale;
 voID20, pentru a descrie baze de cunoștințe (de exemplu câte clase, proprietăți,
subiecte, obiecte conține);
 SPARQL Service Description21, pentru a descrie capabilitățile oferite de un server de tip
SPARQL endpoint (ce contexte oferă, ce versiune de SPARQL suportă etc.);
 OWL-Time22, pentru a indica în mod precis momente și perioade de timp (utilă în a
atașa contexte temporale afirmațiilor);
 GeoOWL23, pentru a indica în mod precis locații și concepte spațiale (utilă în a atașa
contexte spațiale afirmațiilor);
 DBPedia24, setul de concepte oferite de Wikipedia, fără a avea un domeniu de utilizare
specific. Obiectivul său este să devină un dicționar de referință pentru diverși termeni
comuni, o limbă comună la care să se alinieze cât mai multe baze de cunoștințe (un
deziderat periculos sub anumite aspecte, ce riscă să încalce principiile descentralizării
Web).

41. Explicați modul de utilizare a cererilor HTTP în accesarea cunoștințelor la


distanță.

Paradigma Linked Data se bazează pe accesarea prin HTTP a identificatorilor de


concepte, la care serverul să răspundă fie cu un set de cunoștințe despre acel concept
(identificatori cu foldere fictive), fie cu toată baza de cunoștințe din care clientul să-și
selecteze informația relevantă (identificatori cu ancore). Filtrarea informației relevante se
poate realiza cu SPARQL fie la nivelul clientului, fie la al serverului. Așadar sunt posibile
diferite scenarii de combinare între interogări și accesul la distanță, în funcție de ce facilități
oferă serverul.
S-au consacrat două protocoale bazate pe HTTP prin care are loc accesul la
cunoștințe oferite de servicii Web:
 Protocolul SPARQL27;
 Protocolul Graph Store28.
Ambele se bazează pe metodele cererilor HTTP:
 GET – pentru a accesa cunoștințe, cu posibilitatea de a atașa la adresa accesată
variabile care să indice mai precis ce anume dorim să accesăm;
 POST – pentru a trimite cunoștințe;
 PUT – pentru a înlocui cunoștințe existente pe server cu unele noi;
 DELETE – pentru a șterge cunoștințe de pe server;
 HEAD – pentru a testa dacă un server de cunoștințe răspunde;
 OPTIONS – pentru a verifica ce facilități oferă serverul de cunoștințe;
 PATCH – pentru a trimite o interogare capabilă să modifice cunoștințe.

42. Exemplificați și explicați inferențele permise de restricțiile de cardinalitate în


OWL.

Deducerea echivalenței indivizilor din cardinalitatea maximă


(owl:maxCardinality) aplicată ca restricție (owl:Restriction) asupra unei proprietă ți
(owl:onProperty):
Prin cardinalitate putem impune de câte ori poate fi implicat un anumit subiect într-o
anumită relație. Dacă numărul de relații depășește limita pe care o impunem, obiectele
suplimentare trebuie să fie echivalente cu unele dintre celelalte. Din afirmațiile:
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
:Alin a :CopilCuUnParinte; areParintePe :Ana, alt:Maria.
…se va deduce:
:CopilCuUnParinte a owl:Restriction, owl:Class.
:Ana owl:sameAs alt:Maria.
Deoarece în prima fază am afirmat că Alin face parte din clasa celor cu un parinte (mai
exact, care au relația :areParintePe cu un singur obiect), iar apoi am indicat doi părinți, s-a
dedus că aceștia trebuie să fie una și aceeași persoană.

Observați modul de creare a clasei CopilCuUnParinte. Aceasta e de un tip particular,


owl:Restriction care e mulțimea acelor clase ce sunt create prin astfel de mecanisme de
restricționare a relațiilor (deci orice owl:Restriction e și clasă). Dacă proprietatea ce suferă
restricția are deja un domeniu declarat, clasa generată prin restricție va fi o submulțime a
acesteia. Din următorul set:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:areParintePe rdfs:domain Copil.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
se va deduce, pe lângă echivalența amintită, și că:
:CopilCuUnParinte rdfs:subClassOf :Copil.
Cu alte cuvinte, mulțimea copiilor cu un singur părinte e o submulțime a mulțimii
copiilor, obținută prin restricționarea numărului de utilizări.

Deducerea echivalenței indivizilor din cardinalitate îmbinată cu distincții


cunoscute (owl:cardinality):
Exemplul e similar celui de mai sus, dar cardinalitatea e mai mare decât 1, deci avem
nevoie și de o serie de distincții pentru a putea concluziona echivalența:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:ParinteCuDoiCopii owl:onProperty :AreCopilPe; owl:cardinality 2 .
:Alin a :ParinteCuDoiCopii, :AreCopilPe :Ana, Andreea, Mihai.
:Mihai owl:differentFrom :Ana, :Andreea.
Diferențierea lui Mihai față de restul copiilor lui Alin ne permite să concluzionăm care
copii ar putea fi echivalenți pentru a menține corectitudinea afirmației că Alin are 2 copii:
:ParinteCuDoiCopii a owl:Restriction.
:Ana owl:sameAs :Andreea.

Aici nu am mai folosit owl:maxCardinality ci cardinalitatea precisă: Alin are exact doi copii
distincți. Atenție însă, aceasta nu înseamnă că baza de cunoștințe trebuie să conțină doi copii
pentru Alin! În numele principiului Open World, o bază de cunoștințe nu e niciodată
completă, pot apare în viitor noi afirmații, deci se tolerează absența afirmațiilor despre copii lui
Alin. Nu se tolerează însă depășirea acestui număr (mai exact, se încearcă interpretarea
depășirii prin astfel de echivalențe, dacă nu există probe contrarii care să afirme distincția).

43. Exemplificați și explicați inferențele permise de restricțiile owl:hasValue,


owl:someValuesFrom și owl:allValuesFrom.

Necesitatea și suficiența (owl:Restriction, owl:onProperty, owl:hasValue,


owl:allValuesFrom, owl:someValuesFrom, owl:hasSelf)
Un individ poate fi alocat unei clase în funcție de relațiile la care participă (vezi
RDF Schema) dar și în funcție de indivizii cu care participă la acea relație, sau clasele
cărora acești indivizi aparțin. Demonstrăm mai întâi deducțiile posibile dintr-o relație cu un
anumit individ clar specificat:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:SatelitAlPamantului owl:onProperty :Orbiteaza; owl:hasValue :Pamantul.
Am afirmat că mulțimea :SatelitAlPamantului e formată din toate acele lucruri X
care au relația :Orbiteaza cu :Pamantul (care apar în afirmații de forma X :Orbiteaza
:Pamantul). Aceasta permite două tipuri de deducții:
 dacă se mai știe că…
:Luna :Orbiteaza :Pamantul.

…se poate deduce:


:Luna a :SatelitAlPamantului.
 în schimb dacă se știe că…
:Luna a :SatelitAlPamantului.
…se deduce:
:Luna :Orbiteaza :Pamantul.
Deci avem o deducție posibilă în ambele sensuri – apartenența la o clasă poate fi
produsă de existența unei relații cu un anumit individ dar și invers, relația cu un individ
dedusă din apartenența la o clasă.
În plus, din ambele situații se mai deduce:
:SatelitAlPamantului a owl:Restriction, owl:Class.
Cu alte cuvinte, avem de a face cu o clasă-restricție, noțiune explicată deja în
exemplele cu cardinalitatea: o clasă restricție este detectată automat din utilizarea lui
owl:onProperty, este formată din toți indivizii ce respectă restricția și este o submulțime a
domeniului proprietății ce suferă restricția. De exemplu, :Orbiteaza ar putea avea ca
domeniu clasa :Satelit, ceea ce ar face să se deducă următoarea afirmație, asigurând astfel și
alipirea restricției la taxonomia existentă de clase:
:SatelitAlPamantului rdfs:subClassOf :Satelit.

44. Exemplificați și explicați trei moduri de deducere a echivalenței indivizilor.

Deducerea echivalenței indivizilor din proprietatea funcțională


(owl:FunctionalProperty).
Proprietatea funcțională se comportă ca o funcție matematică: oricărui subiect îi
poate aloca un singur obiect. Dacă îi alocă mai multe, se va deduce că acestea sunt identități
multiple ale unui același obiect.
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Alin :areMamaPe :Ana.

:Alin :areMamaPe :Aneta.


:areMamaPe a owl:FunctionalProperty.

…se va deduce:
:Ana owl:sameAs :Aneta.

O persoană nu poate avea două mame naturale, deci cele două mame trebuie să fie
una și aceeași.

Dacă ajungem pe alte căi și la concluzia că :Ana și :Aneta nu au cum să fie aceeași
persoană, ajungem la contradicție. Acest aspect e valabil pentru toate exemplele ce urmează:
regulile prezentate vor detecta echivalențe atâta timp cât nu există alte reguli care să detecteze
distincția între aceiași indivizi. Altfel se vor produce contradicții. Detectarea automată a
echivalențelor poate automatiza maparea semantică între baze de cunoștințe din surse diferite,
generând automat echivalențe.

Deducerea echivalenței indivizilor din proprietatea invers funcțională


(owl:inverseFunctionalProperty).

Aceasta se comportă invers față de cea funcțională: pe orice obiect îl poate pune în
relație cu un singur subiect. Dacă apar mai multe subiecte, se va deduce echivalența lor.
@prefix : <http://expl.ro#>.

@prefix alt: <http://altdomeniu.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Ana :areEmail <mailto:ana@expl.ro>. alt:Aneta :areEmail


<mailto:ana@expl.ro>.

:areEmail a owl:InverseFunctionalProperty.

…se va deduce:
:Ana owl:sameAs alt:Aneta.

(ne bazăm pe prezumția că două persoane nu pot avea același e-mail, deci dacă
apare o astfel de situație e vorba de aceeași persoană)

Deducerea echivalenței indivizilor din setul de proprietă ți cheie (owl:hasKey)


Aceasta este o versiune mai precisă a proprietății funcționale, sub două aspecte:
 se aplică la o combinație de mai multe proprietăți, care nu vor putea lua aceeași
combinație de valori (obiecte) pentru două subiecte din aceeași clasă;
 efectul e limitat doar la membrii unei clase.
Așadar, putem considera că e o transpunere a noțiunii de cheie primară mutiplă din
bazele de date relaționale! Din afirmațiile:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Ana :NrMatricol 100; :studentaLa :ASE, a :Student.


:Aneta :NrMatricol 100; studentaLa :ASE; a :Student.

:Student owl:hasKey (:NrMatricol :studentaLa).

…se va deduce:
:Ana owl:sameAs :Aneta.

Deducerea echivalenței indivizilor din cardinalitatea maximă (owl:maxCardinality)


aplicată ca restricție (owl:Restriction) asupra unei proprietă ți (owl:onProperty):
Prin cardinalitate putem impune de câte ori poate fi implicat un anumit subiect într-o
anumită relație. Dacă numărul de relații depășește limita pe care o impunem, obiectele
suplimentare trebuie să fie echivalente cu unele dintre celelalte. Din afirmațiile:
@prefix : <http://expl.ro#>.

@prefix alt: <http://altdomeniu.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .

:Alin a :CopilCuUnParinte; areParintePe :Ana, alt:Maria.

…se va deduce:
:CopilCuUnParinte a owl:Restriction, owl:Class.

:Ana owl:sameAs alt:Maria.

Deoarece în prima fază am afirmat că Alin face parte din clasa celor cu un parinte (mai
exact, care au relația :areParintePe cu un singur obiect), iar apoi am indicat doi părinți, s-a
dedus că aceștia trebuie să fie una și aceeași persoană.

Observați modul de creare a clasei CopilCuUnParinte. Aceasta e de un tip particular,


owl:Restriction care e mulțimea acelor clase ce sunt create prin astfel de mecanisme de
restricționare a relațiilor (deci orice owl:Restriction e și clasă). Dacă proprietatea ce suferă
restricția are deja un domeniu declarat, clasa generată prin restricție va fi o submulțime a
acesteia. Din următorul set:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:areParintePe rdfs:domain Copil.

:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .

se va deduce, pe lângă echivalența amintită, și că:


:CopilCuUnParinte rdfs:subClassOf :Copil.
Cu alte cuvinte, mulțimea copiilor cu un singur părinte e o submulțime a mulțimii
copiilor, obținută prin restricționarea numărului de utilizări.

Deducerea echivalenței indivizilor din cardinalitate îmbinată cu distincții


cunoscute (owl:cardinality):

Exemplul e similar celui de mai sus, dar cardinalitatea e mai mare decât 1, deci avem
nevoie și de o serie de distincții pentru a putea concluziona echivalența:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:ParinteCuDoiCopii owl:onProperty :AreCopilPe; owl:cardinality 2 .

:Alin a :ParinteCuDoiCopii, :AreCopilPe :Ana, Andreea, Mihai.

:Mihai owl:differentFrom :Ana, :Andreea.

Diferențierea lui Mihai față de restul copiilor lui Alin ne permite să concluzionăm care
copii ar putea fi echivalenți pentru a menține corectitudinea afirmației că Alin are 2 copii:
:ParinteCuDoiCopii a owl:Restriction.

:Ana owl:sameAs :Andreea.

Aici nu am mai folosit owl:maxCardinality ci cardinalitatea precisă: Alin are exact doi
copii distincți. Atenție însă, aceasta nu înseamnă că baza de cunoștințe trebuie să conțină doi
copii pentru Alin! În numele principiului Open World, o bază de cunoștințe nu e niciodată
completă, pot apare în viitor noi afirmații, deci se tolerează absența afirmațiilor despre copii
lui Alin. Nu se tolerează însă depășirea acestui număr (mai exact, se încearcă interpretarea
depășirii prin astfel de echivalențe, dacă nu există probe contrarii care să afirme distincția).

Deducerea echivalenței indivizilor din listă de elemente nedistincte (owl:oneOf)


îmbinată cu distincții cunoscute:
@prefix : <http://expl.ro#>.

@prefix alt: <http://altdomeniu.ro#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:LunaIarna owl:oneOf (:Decembrie :Ianuarie :Februarie). alt:Gerar a :LunaIarna;


owl:differentFrom :Februarie, :Decembrie.

…se va deduce:
alt:Gerar owl:sameAs :Ianuarie.

Deducția e explicabilă prin caracterul închis al listei. Enumerarea indică faptul că pot
fi maxim 3 elemente în clasa :LunaIarna, iar dacă apare un al patrulea, trebuie să fie
echivalent cu unul din ceilalți (altfel ajungem la contradicție).
45. Exemplificați și explicați trei moduri de deducere a distincției indivizilor.
În continuare vom sugera o serie de căi pe care se poate deduce distincția indivizilor.
În practică distincția trebuie dedusă fie pentru a verifica dacă există discrepanțe
logice între concepte din baze de cunoștințe diferite (cu prefixe diferite), fie
pentru a verifica dacă o anumită baze de cunoștințe nu este cumva contradictorie cu
ea însăși.

Deducerea distincției dintre indivizi din disjuncție (owl:disjointWith). Din afirmațiile:


@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Ana a :Femeie.

:Marian a :Barbat.

:Femeie owl:disjointWith :Barbat.

…se va deduce:
:Ana owl:differentFrom :Marian.

Deducerea disjuncției dintre clase (și a distincției dintre indivizi) din


complement (owl:complementOf). Din afirmațiile:

@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Ana a :Femeie.

_:x owl:complementOf :Femeie.

:Marian a _:x.

…se va deduce:
_:x owl:disjointWith :Femeie.

…și de aici:
:Ana owl:differentFrom :Marian.

Deducerea distincției dintre indivizi, din proprietă ți incompatibile


(owl:propertyDisjointWith). Din afirmațiile:

@prefix : <http://expl.ro#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.


:Ana :eMamaLui :Alin.

:Maria :eCopilulLui :Alin.

:eMamaLui owl:propertyDisjointWith :eCopilulLui.

…se va deduce:
:Ana owl:differentFrom :Maria.

Idem se poate deduce distincția obiectelor, dacă subiectul e fix și obiectele variază.

Deducerea disjuncției claselor sau proprietă ților din listă de clase disjuncte
(owl:AllDisjointClasses), respectiv listă de proprietă ți incompatibile (owl:AllDisjointProperties).
Din afirmațiile:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:StudentGrupa1 owl:members (:Ana :Ann :Andrei).

:StudentGrupa1 a owl:AllDifferent.

:Gen owl:members (:Femeie :Barbat).

:Gen a owl:AllDisjointClasses.

:RelatieRudenie owl:members (:eMamaLui :eCopilulLui).

:RelatieRudenie a owl:AllDisjointProperties.

…se vor deduce (pe seturi):


:StudentGrupa1 a owl:Class. (din prima listă)

:Ana a :StudentGrupa1, owl:NamedIndividual.

:Ann a :StudentGrupa1, owl:NamedIndividual.

:Andrei a :StudentGrupa1, owl:NamedIndividual.

:Ana owl:differentFrom :Ann, :Andrei.

:Ann owl:differentFrom :Ana, :Andrei.

:Andrei owl:differentFrom :Ann, :Ana.

:Gen a owl:Class. (din a doua listă)

:Femeie a :Gen, owl:Class.

:Barbat a :Gen, owl:Class.

:Femeie owl:disjointWith :Barbat.

:RelatieRudenie a owl:Class. (din a treia listă)

:eMamaLui a :RelatieRudenie, rdf:Property.

:eCopilulLui a :RelatieRudenie, rdf:Property.


:eMamaLui owl:propertyDisjointWith :eCopilulLui.

Deducerea disjuncției (dar și a unor relații de incluziune) din reuniune de


clase disjuncte. Din afirmația:

@prefix : <http://expl.ro#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:Om owl:disjointUnionOf (:Femeie :Barbat).

…se va deduce:
:Femeie rdfs:subClassOf :Om.

:Barbat rdfs:subClassOf :Om.

:Femeie owl:disjointWith :Barbat.

Practic e vorba de o nouă variantă a lui owl:AllDisjointClasses în care avem și


posibilitatea de a crea o supraclasă ce sunt înglobeze mulțimile disjuncte.

46. Exemplificați și explicați trei moduri de deducere a contradicțiilor.

47. Exemplificați și explicați trei moduri de extindere a taxonomiei de clase OWL


cu ajutorul unor operații pe mulțimi.

Enumerarea elementelor unei mulțimi (owl:oneOf, owl:distinctMembers)


O primă categorie, ce lărgește posibilitățile de descriere a taxonomiei de clase,
sunt operațiile cu mulțimi. Cea mai simplă este enumerarea directă a indivizilor unei mulțimi,
ca o listă ordonată și închisă (demonstrată deja și la deducerea echivalențelor). Avem două
moduri de a realiza acest lucru:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:EchipaFotbal owl:oneOf (:Steaua :Dinamo :Rapid :CainiiRosii).

sau
:EchipaFotbal owl:distinctMembers (:Steaua :Dinamo :Rapid).

Diferența între owl:oneOf și owl:distinctMembers este că în al doilea caz se


garantează distincția între indivizi (se deduc automat distincții între fiecare doi
membrdupă cum s-a arătat deja în secțiunea dedicată deducerii distincțiilor) în timp ce primul
caz lasă loc posibilității ca unele elemente să fie același element cu mai mulți
identificatori. Cele două afirmații vor produce:
:Steaua a :EchipaFotbal.
:Dinamo a :EchipaFotbal.

:Rapid a :EchipaFotbal.

:CainiiRosii a :EchipaFotbal. (doar din owl:oneOf)

A doua enumerare produce și distincțiile de care aminteam pentru fiecare pereche


de indivizi.

Intersecția și reuniunea (owl:intersectionOf, owl:unionOf)


În capitolul dedicat conceptelor RDF (secțiunea privind maparea) am arătat cum se pot
adăuga la taxonomie mulțimi-reuniune și mulțimi-intersecție prin folosirea lui rdfs:subClassOf.
OWL oferă o metodă mai directă de a preciza acest lucru:
@prefix : <http://expl.ro#>.

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.

@prefix owl: <http://www.w3.org/2002/07/owl#>.

:ScriitorClujean owl:intersectionOf (:Scriitor :Clujean).

:Om owl:unionOf (:Barbat :Femeie).

:Andrei a :ScriitorClujean, :Barbat.

…se vor deduce:


:Scriitor rdfs:subClassOf :ScriitorClujean. (din reuniune)

:Clujean rdfs:subClassOf :ScriitorClujean.

:Barbat rdfs:subClassOf :Om. (din intersecție)

:Femeie rdfs:subClassOf :Om.

…iar din acestea deducțiile discutate deja produc mai departe:


:Andrei a :Scriitor, :Clujean, :Om

(plus declarațiile de individ, clasă etc.)

Complementul și diferența (owl:complementOf)


Complementul unei mulțimi se folosește cu precădere pentru a detecta contradicții, într-
o manieră similară cu disjuncția, după cum s-a demonstrat deja. Complementul unei clase e
format din toate acele concepte ale lui owl:Thing care nu aparțin clasei respective. Începătorii
ar putea fi tentați să considere corectă afirmația de mai jos, considerând că cine nu e femeie
trebuie să fie bărbat:
:Barbat owl:complementOf :Femeie.

În realitate complementul mulțimii :Femeie e format din toate lucrurile din univers care
nu sunt femei, de exemplu o piatră. Pentru a defini corect mulțimea Barbat pornind de la
Femeie, va trebui să afirmăm:
:Barbat owl:intersectionOf (:Om _:X).

_:X complementOf :Femeie.


OWL nu oferă un concept aparte pentru operația de diferență, ci se bazează tocmai
pe acest șablon ce îmbină complementul cu intersecția.

În plus, un motor inferențial complet ar trebui să poată deduce toate legile


matematice legate de operații cu mulțimi, dintre care amintim:
 complementul reuniunii a două mulțimi e intersecția complementelor celor două
mulțimi:
:Om owl:unionOf (:Barbat :Femeie).

_:complOm owl:complementOf :Om

…se poate deduce:


_:x owl:complementOf :Barbat.

_:y owl:complementOf :Femeie.

_:complOm owl:intersectionOf (_:x _:y).

 complementul intersecției a două mulțimi e reuniunea complementelor celor două


mulțimi:
:ScriitorClujean owl:intersectionOf (:Scriitor :Clujean).

_:complSC owl:complementOf :ScriitorClujean.

…se poate deduce:


_:x owl:complementOf :Scriitor.

_:y owl:complementOf :Clujean.

_:complSC owl:unionOf (_:x _:y).

 complementul submulțimii unei mulțimi e submulțimea complementului acelei


mulțimi:
:Barbat rdfs:subClassOf :Om.

_:complBarbat owl:complementOf :Barbat.

…se poate deduce:


_:x owl:complementOf :Om.

_:x rdfs:subClassOf _:complBarbat.

48. Exemplificați și explicați trei exemple de utilizare a nodurilor anonime în


RDF.

În continuare vom discuta despre utilizarea nodurilor anonime: ca structuri de date,


mai exact concepte ce grupează mai multe informații.
_:adre
sa

2
0

200

Fig. 4 – Utilizarea nodurilor anonime în reprezentarea structurilor de date

Am sugerat deja că nodul anonim nu va putea apare în interogări, deci nu se


va putea pune întrebarea Care e orasul din _:adresa? însă se va putea pune întrebarea
Care e orașul în care locuiește Ana? (profitând de înlănțuirea relațiilor ”locuiesteIn” și
”Oras”, intermediată de nodul anonim, care devine astfel important doar prin poziția sa,
nu și prin identitate).

49. Ce este arborele DOM? Oferiți un exemplu, cu codul XML aferent, cu minim
3 nivele în arbore.
Modelul DOM este una din cele două soluţii consacrate (alături de SAX) pentru
extragerea informaţiilor dintr-un document XML, indiferent că acestea sunt stocate în numele
sau valorile elementelor, numele sau valorile atributelor sau în structurile XML auxiliare.
DOM nu este o aplicaţie în sine, ci un model abstract implementat la nivelul
parserelor, ca o colecţie de interfeţe de programare (API) ce folosesc paradigma obiectuală
pentru a transpune conţinutul oricărui document conform cu standardul XML în clase, obiecte
şi metode. Astfel,
DOM este independent de platformă şi limbajul de programare, fiind considerat un
strat între parser şi aplicaţiile consumatoare de XML. Practic, parserul citeşte date din sursa
XML şi alcătuieşte arborele DOM translatând imbricările între marcatori în relaţii tată-fiu şi
unităţile XML în noduri ale arborelui.
Nucleul DOM, numit DOM Core, este un set de interfeţe de programare de uz general la
care se adaugă module opționale precum cele adaptate pentru manipulare de de stiluri HTML,
care nu apar neapărat în toate implementările şi dintre care indicăm:
 DOM Views – pentru manipularea unei reprezentări particulare a unui document;
 DOM Events – un sistem de evenimente generice;
 DOM HTML – pentru manipularea de HTML clasic;
 DOM CSS – pentru manipulare dinamică a foilor de stil;
DOM Traversal an Range – pentru identificarea şi parcurgerea unor porţiuni de document care nu
reprezintă neapărat colecţii de noduri (fragmente, conţinut textual).

<produse>

<produs cod="p01">Televizor</produs>
</produse>

Un parser DOM va crea din acest exemplu următoarea ierarhie de noduri:

Document Node
Documentul
complet

NodeList

Element Node
<produse>

NodeList

Element Node
<produs>

NodeList NamedNodeMap

CharacterData
Text Node
„Televizor”

50. Care sunt efectele fundamentale oferite de Scriptaculous?


Efecte fundamentale:
•Morph – tranziție între un stil CSS și altul
•Opacity – modificarea transparenței
•Highlight – evidențiere (colorarea/pâlpâirea fundalului pentru atragerea
atenției)
•Move – deplasare pe o direcție;
•Scale – dimensionare (mărire/micșorare);
Parallel – definirea unui set de efecte care să se execute sincron și
simultan
Queues – definirea unei cozi (succesiuni) de efecte
Efecte combinate: combinații ale celor fundamentale, cu efecte similare celor
oferite de Powerpoint:
Appear, Fade, Shake, BlindUp, BlindDown etc.
Helpere:
Transitions, Methods, toggle, multiple
Comportamente:
Draggable, Droppable, Sortable, DelayedObserver
Comportamente avansate (controale GUI preprogramate):
InPlaceEditor, Autocompleter, Slider

51. Enumerați tipurile de biblioteci AJAX


 Nivel 0: mecanisme de nivel scăzut, reutilizabil, de conectare asincronă la server:
obiectul XHR sau cadrele interne;
 Nivel 1: instrumente de nivel înalt de comunicare cu serverul (ce maschează
detaliile nivelului 0) – Dojo, JSON-RPC, Prototype, Direct Web Remoting;
 Nivel 2: instrumente de nivel înalt de construire a interfeţei cu utilizatorul (construite
peste nivelul 1) – Dojo oferă instrumente şi la acest nivel, SmartClient,
Script.aculo.us (bazat pe Prototype), JQuery;
 Nivel 3: medii de dezvoltare a aplicaţiilor AJAX: Rails, Tapestry, AJAX.NET,
SAJ

52. Enumerați 8 beneficii aduse de biblioteca Prototype programării paginilor


 prescurtarea sintaxei JavaScript;
 metode noi de localizare a nodurilor DOM (pe bază de stiluri);
 extinderea claselor JavaScript;
 funcţii noi pentru lucrul cu colecţii de date (masive, obiecte);
 ascunderea şi eliminarea facilă de noduri DOM;
 inserare facilă de cod HTML în orice poziţie a paginii;
 activarea, dezactivarea şi focalizarea facilă a câmpurilor formularelor;
 determinarea poziţiei elementelor în pagină.

53. Realizați o comparație între XML și JSON, incluzând câte un exemplu din
fiecare.

In cele ce urmeaza vom realiza o comparatie intre formatele JSON si XML.

XML

<produse>

<produs denumire=Televizor pret=100/>


<produs denumire=Calculator pret=200/>

</produse>

Valoare JSON atribuita unui variabile:

Produse=[{denumire:televizor, pret:100},{denumire:Calculator,pret:200}]

Principiu XML:aplicatiile trebuie sa fie restrictive la receptarea datelor si permisive la


generarea lor

Principiul JSON:orice aplicatie trebuie sa fie permisiva la receptarea datelor si restrictiva la


generarea lor,adica sa poata prelucra orice structuri de date primite si sa fixeze niste reguli
stricte pentru strcturile de date generate,

54. Enumerați și explicați 6 metode, funcții sau atribute (JavaScript) prin care se
poate modifica formatul sau conținutul paginii HTML.

55. Care sunt beneficiile AJAX față de paginile Web tradiționale?

o Datele pot fi trimise de la client spre server la orice moment, JavaScript


putând declanşa transferuri HTTP oricând, cu sau fără notificarea
utilizatorului; răspunsul se returnează de la server în format text, fie brut, fie
structurat (XML, JSON), pentru a fi prelucrat prin funcţii JavaScript;
o Starea iniţială a aplicaţiei e determinată de transferul dinspre server a unui
întreg modul client, cu toate stările sale posibile (deci are loc un transfer
iniţial masiv care e totuşi suportat de calculatoarele moderne şi nu necesită
instalare, toate interpretoarele necesare fiind încorporate în browser);
o Fiecare stare a aplicaţiei e obţinută prin modificarea la nivel de client a
structurii interfeţei cu utilizatorul (structura DOM), pe baza unor date primite
de la server (trecerea dintr-o stare în alta nu presupune încărcare de pagină
nouă, deci mecanismele Back/Forward şi Bookmark nu funcţionează);
o Nu are loc refresh redundant, deoarece după încărcarea stării iniţiale serverul
livrează doar datele necesare aplicaţiei, nu toate elementele interfeţei;
o Cererile asincrone de date nu blochează funcţionarea interfeţei cu utilizatorul
(aşa cum face refreshul de pagină) – interfaţa continuă să funcţioneze în acele
stări care nu au nevoie de datele aşteptate de la server; aceasta asigură o
fluiditate rezonabilă a experienţei de utilizare, apropiată de cea a aplicaţiilor
desktop;
o Experienţa de utilizare şi utilizabilitatea sunt mult îmbunătăţite, nefiind
foarte afectate de schimbul intermitent de date cu serverul; în plus, gama de
evenimente la care reacţionează suprafaţa interfeţei utilizatorului e apropiată
de cea a aplicaţiilor desktop (ex: se poate declanşa un transfer de date la
trecerea cursorului peste o anumită zonă a paginii – care nu trebuie să fie
neapărat un buton sau o imagine, deci schimbul de date cu serverul poate fi
parţial ascuns faţă de utilizator);
Browserul execută o aplicaţie JavaScript cu interfaţă HTML
56. Oferiți 6 exemple de interogări XPath pe un exemplu de document XML.

Comanda/produs/@id
Cauta atributul id al elementelor produs din comanda
/comanda/produs
Afiseaza toate elementele produs din comanda
/comanda/*
Afiseaza elementele din comanda
/comanda/text()
Afiseaza nodurile text din comanda
/comanda/produs[1]
Returneaza primul produs din comanda
/comanda/produs[id]
Returneaza acele produse din comanda care contin elemente id

57. Realizați o comparație între DTD și XSDL (diferențe și asemănări).

DTD caracteristici:

o Permite crearea vocabularelor interne ce insotesc documentul;


o Are suport general fiind adoptat odata cu staandardul XML original;
o Fixeaza structura instantelor XML(oridine ocurente cardinalitate)
o Ofera tipizare slaba si valori implicite doar pentru atribute
o Permite crearea de notaii pentru diverse formate de date referite in instanta
o DTD nu creeaza documente XML bine formatate folosind o sintaxa de tip sgml.
o Suport pentru spatii de nume este rudimentar

XSDL ofera:

 Tipizare puternica
 Suport pentru spatiile de nume
 Derivarea tipurilor
 O modularitate ce permite convertirea facila a documentelor XML in ierarhii de structura de
date cu trasaturi obiectuale;
 Transfera indicatii de procesare si documentatie complexa spre consumator la nivelul clasei de
docuentatie
 Nu permite definirea unui sablo permis pentru elementul radacina
58. Realizați o comparație între XSLT și XPath (diferențe și asemănări).

XSLT foloseste o reperezentare de tip DOM dar are propriul vocabular de manipulare si
nu necesita folosirea interfetelor DOM.XSLT are si avantajul reutilizarii transformarilor.
XSLT este limbajul de transformare a documentelor XML si se bazeaza pe Xpath pentru
a extrage informatii dintr-un document sursa si a le pune intr-un document rezultat .De
obicei XSLT e folosit pentru a genera pagini HTML din date XML,deci poate fi folosit si
ca intrument AJAX
XSLT foloseste cai Xpath RELATIVE la nodul pe care sa pozitionat instructiunea-
parinte.
Xpath-este un limbaj de interogare pe care se bazeaza numeroase limbaje ce manipuleaza
cod XML.Xpath poate doar citi informatii nu si modifica.insera.sterge.pentru acestea se
apleleaza la functiile standard Dom sau la limbajele de transformare XSLT/Xquery

59. Realizați o comparație între DOM ș SAX (ce sunt, ce au în comun, prin ce
diferă).
SAX este util in special la localizarea unor fragmente mici in continut masiv

Sax incarca doar fragmente ale documentului XML intr-o fereastra de memorie limitata,prin
care se deruleaza sirul de caractere ce alcatuieste documentul.

Pentru Citirea si localizarea unor fragmente se recomanda SAX cu exceptia cazului in care
trebuie sa se urmareasca relatii intre componente indepartate .

Pentru modificari masive de date se recomanda DOM;numeroase implementari SAX trateaza


codul sursa ca read-only operatiile de modificare fiind emulate prin recrearea unei alte
versiuni a documentului,

Generare de xml dinamic- se recomanda DOM deoarece mentine arborele in memorie pe


parcursul procesului de agaugare a noii informatii

60. Care e diferența între buna formare și validitatea unui document XML (și
ce înseamnă fiecare)

• Principiul XML este că aplicaţiile trebuie să fie restrictive la receptarea datelor


(datele fiind validate sau transformate conform regulilor unui vocabular
predefinit de destinatar) şi permisive la generarea lor (fiecare aplicaţie poate
genera orice structură de date XML);
• Principiul JSON este că orice aplicaţie trebuie să fie permisivă la receptarea
datelor şi restrictivă la generarea lor, adică să poată prelucra orice structuri de
date primite şi să fixeze nişte reguli stricte pentru structurile de date generate;

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