Semantički web

Semantički web i Oblak povezanih podataka

Ove web stranice izgrađene su uz pomoć tehnologija Semantičkog weba i slijedeći načela Povezanih podataka (en. Linked Data).
Jedna od osnovnih tehnologija na kojoj počiva Semantički Web je RDF model podataka. Svi podaci koje možete pronaći na našim Web stranicama nalaze se u RDF grafu i javno su dostupni preko standardiziranog web servisa, tzv. "SPARQL pristupne točke" (en. SPARQL endpoint). Upitni jezik, SPARQL, nalik je upitnom jeziku za baze podataka, SQL, s nekoliko promjena, potrebnih kako bi se jezik prilagodio strukturi grafa nad kojom se obavljaju upiti.

Kako bi vidjeli koji sve tipovi podataka postoje u grafu, možemo postaviti sljedeći upit:



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Izvršavanjem gornjeg upita, vidimo kako postoji nekoliko razreda (klasa, tipova) podataka čiji identifikator započinje sa "http://zpr.fer.hr/sw-ns#". Kako bi si olakšali pisanje, navesti ćemo ga kao "PREFIX" u upitu. Usput, navedimo još jedan česti prefix, dcterms, za skup opisan u Dublin core rječniku. Sada popis naziva svih predmeta u grafu možemo dohvatiti pomoću sljedećeg upita:



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Gornjim upitom dohvatili smo sve nazive predmeta, no kako su u grafu predmetima pridruženi i hrvatski i engleski nazivi, u rezultatu su se pojavila po dva naziva za svaki predmet. To možemo filtrirati korištenjem funkcije LANG. Također, zapise možemo i sortirati uz pomoć ključne riječi "ORDER BY":



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Ako želimo dohvatiti popis svih osoba na zavodu, postavit ćemo sljedeći upit:
(Ovdje valja uočiti nekoliko detalja: umjesto rdf:type mogli smo, kao u ranijem primjerima koristiti skraćeni oblik: "a", mogli smo i skroz izbaciti rdf:type no, da u grafu postoje i druga bića sa definiranim svojstvom foaf:name, npr. kućni ljubimci, tada bismo dohvatili i njih, umjesto foaf:name za "ime i prezime" mogli smo koristiti foaf:givenName i foaf:familyName kako bi dobili razdvojena imena i prezimena)



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Proširimo gornji upit, tako da dohvatimo identifikator, ime, prezime, zvanje ili funkciju, te email adresu svih djelatnika zavoda. Usput, sortirajmo rezultate po prezimenu. I ponovno, kako bi izbjegli duplikate u nazivima zvanja, filtrirajmo ih tako da se prikažu samo nazivi zvanja na hrvatskom jeziku.



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Ponekad nismo sigurni koji se sve podaci nalaze u grafu pa bi voljeli postaviti upit oblika "SELECT * FROM...". U SPARQL-u takav upit izgleda ovako (dohvatit ćemo sve podatke o svim projektima u grafu):
(Napomena: uočite da je ovoliku količinu podataka teško čitati u pretpostavljenom formatu, za čitljiviji zapis, postavite izlazni format na XML i izaberite xml-to-html XSLT transfsormaciju)



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Svi predikati (svojstva) iz prostora imena "zpr" za koje to ima smisla, imaju i odgovarajuća "obrnuta" svojstva. Npr. u našem upitu se možemo pitati "Na kojim sve predmetima je osoba X nositelj", i obrnuto, "Tko je sve nositelj na nekom predmetu" na dva različita načina, koristeći svojstva "zpr:nositelj" (što je skraćeno od "imaNositelja") ili "zpr:jeNositelj". Npr, sljedeća dva upita spojena u UNION će dati isti rezultat:



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Alternativno, za upite tipa "da vidimo što tu ima" može se iskoristiti i DESCRIBE SPARQL upit, specifičnost ovog upitnog jezika. Za postavljanje ovog upita moramo unaprijed znati identifikator čiji "opis" želimo da nam vrati DESCRIBE upit. Npr. za predmet s identifikatorom: "<http://www.zpr.fer.hr/predmet.php?sifpred=19676>":
(Napomena: rezultat upita je serijalizacija RDF grafa, i uglavnom nije namijenjena za "čitanje")



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Podaci o znanstvenim radovima preuzeti su iz CROSBI baze podataka i koriste različite identifikatore za iste resurse, npr. ista osoba označena je različitim identifikatorom u ZprWeb i u CROSBI grafu podataka. Ovo je uobičajena pojava u svijetu povezanih podataka, i postoji mehanizam kojim se omogućava "izjednačavanje" takvih resursa. Sljedeći upit dohvatit će engleske naslove svih radova osobe čiji identifikator u ZPR grafu je "<http://www.zpr.fer.hr/osoba.php?sif=LB011>":



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .

Sljedeći upit će, za istu osobu, dohvatiti popis svih radova u posljednjih 10 godina. Dohvatit će se naslov na oba jezika, tip rada, autori, godina izdavanja, te opcionalno ime konferencije i skupa ili naziv časopisa u kojem je rad objavljen. Za podatke koji možda postoje, a možda i nedostaju u grafu, koristit ćemo ključnu riječ OPTIONAL:
(Napomena: ako nismo sigurni koji podaci se sigurno nalaze u grafu, preporuča se koristiti OPTIONAL, kako ne bi slučajno ispustili neki zapis iz rezultata)



Format: Za XML, koristi XSLT: Postavi accept header na text/plain .