Podatkovna baza

Uporabljene tehnologije

Torej najprej na kratko. Uporabili bi OWL (Web Ontology Language), nekaj več o njemu tukaj
OWL je zgrajen na RDFS ki za format podatkov uporablja RDF , le da mu doda še nekaj dodatnih možnosti za opisovanje razredov in lastnosti in je trenutno standard za semantičen splet po W3C. Nekaj več o tem kako so podatki organizirani sem že napisal v mailu, pa lahko dodam še tukaj:

Se pravi določi se neka shema razredov in podrazredov (class), kateri imajo lahko lastnosti (properties), ki so lahko objecttype ali datatype. Torej če gremo na nek preprost primer, imamo
class:"Book" in subclass: "Sci-fi book" ki ima object property "hasOwner:" in še enega "hasLicense:", ter datatype property "hasPrice:"
Instanca tega subclassa pa je "Lord of the Rings", z lastnostmi "hasOwner: Alex" in "hasLicense:Free", kjer sta "Alex" in "Free" spet instanci nekih razredov (Owner in License). Poleg tega pa ima še property "hasPrice:0", pri čemer gre preprosto za integer.

Opis razredov, podrazredov in potrebnih lastnosti med razredi pa je narejen v ontologiji, za katero se lahko uporabi Protege .
Ta del grajenja ontologije je nekako najbolj vsebinsko pomemben del, tu se namreč določi katere razrede za našo aplikacijo potrebujemo, zato bi ta del morali narediti skupaj. Za začetek pa kot smo rekli bi naredili preprosto ontologijo z nekaj razredi in lastnostmi, dodatne spremembe pa bi dodali potem ko imamo narejen osnoven prototip in komunikacijo med front-endom in back-endom.

Podatke ki so zapisani v OWL obliki, pa bi potem preko APIja narejenega v Javi(framework Jena) zapisovali in nato dostopali do njih preko RESTa v NoSQL bazi Allegrograph.

Se pravi edina komunikacija do front-enda, bi bil API in tu se bo potrebno uskladiti kako bo ta komunikacija poteka.

Drugi del pa bi bil potem tudi "obogatenje" naših podatkov s pomočjo prosto dostopnih podatkov organiziranih v Linked Data Cloud Kot sem že opisal v prvem predlogu, bi tukaj dostopali do dodatnih informacij o naših razredih in jim dodajali lastnosti. Ta del bi tehnološko gledano zaenkrat pustil, je potrebno še raziskati točno kako dostopati do tega in to dodajati, bo pa dodano ko malo raziščem še ta del.

Grajenje aplikacije

Zgoraj je napisano vse bolj osnovno, bi pa tu dodal še bolj natančne opise kako bi potekalo grajenje aplikacije, ki pridejo v poštev predvsem za Janeza, ki bi sodeloval pri temu delu aplikacije.

Predlagam da se za začetek spoznaš z Protege-jem Na spletni strani imajo tudi tutorial , ki se ga splača vsaj preleteti. V program dodaš eno od prosto dostopnih ontologij in pogledaš kako so podatki spravljeni in kako se da spreminjati in graditi ontologijo.

Lahko se zgradi neko osnovno ontologijo in nato naslednji korak bi bil da se to ontologijo uvozi v Java Jena framework in se tu z uporabo Jena API-ja doda nove podatke in nato nad njimi izvede nekaj queryov s pomočjo jezika SPARQL Za Jeno sta na voljo 2 tutoriala ki precej dobro opišeta kako se framework uporablja, zapisuje podatke v RDF in nato dostopa do njih preko SPARQL queryjev,

Še tretji korak bi bil potem postavitev Allegrograph NoSQL baze in zapisovanje in dostopanje do naših podatkov na tej bazi. Komunikacija do baze bi potekala preko Jena-e in API-ja dostopnega na domači strani Allegrograph.

Toliko zaenkrat, wiki se bo še dopolnjeval ko se tehnologija še bolj natančno določi in pridemo dlje v grajenju aplikacije.