Semantički web i Linked Data sliče bliskom svemiru: život tamo ne postoji. Da biste otputovali tamo na malo duži vremenski period… pa, ne znam što su vam govorili u djetinjstvu u odgovoru na "želim postati astronaut". No, možete promatrati događanja i dok ste na Zemlji; postati amater astronom ili čak profesionalac daleko je jednostavnije.
U članku će se raspraviti o svježim trendovima iz svijeta RDF skladišta, koji nisu stariji od nekoliko mjeseci. Metafora u prvom odlomku inspirirana je epskih razmjera reklamnom slikom ispod.
Epska slika

I. GraphQL za pristup RDF-u
, da GraphQL pretendira postati univerzalni jezik za pristup bazama podataka. A kakva je situacija s mogućnošću pristupa RDF-u koristeći GraphQL?
"Iz kutije" takvu mogućnost pružaju:
- Stardog (, );
- proizvodi TopQuadrant (, ).
Ako skladište ne pruža takvu mogućnost, realiziraju je sami, pišući odgovarajući "resolver". Tako su postupili, primjerice, u francuskom projektu . Ili možete samo uzeti .
S gledišta ortodoksnog pristaše Semantičkog weba i Linked Data, sve to izgleda, naravno, tužno, jer se čini predviđeno za integracije koje se oslanjaju na nove data silo, a ne prikladne za platforme (naravno, RDF skladišta).
Utisci o usporedbi GraphQL-a i SPARQL-a ostaju dvoznačni.
- S jedne strane, GraphQL izgleda kao daleki rođak SPARQL-a: rješava karakteristične probleme iz REST-a kao što su višekratni zahtjevi i višestruko povlačenje - bez čega, vjerojatno, ne bi mogao biti smatran jezikom upita, čak i za web;
- S druge strane, žestoka shematičnost GraphQL-a razočarava. Posljedično, njegova "introspektivnost" čini se vrlo ograničenom u usporedbi s punom refleksivnošću RDF-a. I nema nikakvog ekvivalenta property paths, tako da nije ni jasno zašto se zove "Graph-".
II. Adapteri za MongoDB
Trend koji dopunjuje prethodni.
- u Stardogu sada — posebice, sve na istom GraphQL-u — omogućiti mapping podataka iz MongoDB-a u virtualne RDF grafove;
- GraphDB je nedavno omogućio umetanje fragmenata iz MongoDB Query-a u SPARQL.
Govoreći općenitije, o adapterima za JSON izvore koji omogućuju više-manje "u hodu" predstavljanje JSON-a pohranjenog u tim izvorima kao RDF, treba spomenuti i prilično dugo postojeći , koji se može prilagoditi, , za Apache Jena.
Sažimajući prva dva trenda, može se reći da RDF skladišta pokazuju potpunu spremnost za integracije i funkcioniranje u uvjetima "višestranog skladištenja" (polyglot persistence). Poznato je, međutim, da ovo posljednje već davno nije u modi, i na njegovo mjesto multimodelnost. A kakva je situacija s multimodelnošću u svijetu RDF skladišta?
U kratkim crtama, nikakva. Temi multimodelnih DBMS-a želim posvetiti poseban članak, dok se zasad može primijetiti da multimodelni DBMS-i, "temeljeni" na grafičkom modelu (jedan od njegovih varijanti može biti RDF), trenutno ne postoje. O nekoj maloj multimodelnosti — podršci RDF skladištima za alternativni grafički model LPG — bit će riječi u .
III. OLTP vs. OLAP
Ipak, i Gartner kaže , da je multimodelnost osnovni uvjet, prije svega za operativne DBMS-e. Što je i razumljivo: u situaciji "višestranog skladištenja" glavni problemi javljaju se s transakcionalnošću.
Samo, gdje se na ljestvici OLTP—OLAP nalaze RDF skladišta? Odgovorio bih ovako: ni ovdje ni tamo. Da bismo označili ono za što su namijenjena, potrebna nam je neka treća kratica. Kao opciju bih predložio OLIP — Online Intellectual Processing.
Ipak, ipak:
- mehanizmi integracije реализовани у GraphDB, nisu nimalo manje za zaobilaženje problema s performansama zapisivanja;
- Stardog ide još dalje i potpuno motor, ponovo s ciljem povećanja performansi zapisivanja.
A sada dozvolite da predstavim novog igrača na tržištu. od stvaratelja IBM Netezza i Amazon Redshift — . Slika iz reklame proizvoda na njegovoj bazi objavljena je na početku članka. AnzoGraph se pozicionira kao GOLAP rješenje. Što kažete na SPARQL s funkcijama prozora? —
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }IV. RocksDB
Već je na najavu Stardog 7 Beta, gdje je rečeno da Stardog planira koristiti RocksDB kao temeljni sustav skladištenja — skladište "ključ-vrijednost", Facebook-ov fork Googlove LevelDB. Zašto se već razgovara o nekom trendu?
Prvo, prema , na RocksDB "prilaze" ne samo RDF skladišta. Postoje projekti za korištenje RocksDB kao skladišnog motora u ArangoDB, MongoDB, MySQL i MariaDB, Cassandra.
Drugo, na RocksDB se razvijaju projekti (tj. ne proizvodi) relevantne tematike.
Na primjer, eBay koristi RocksDB u za svoj «graf znanja». Usput, zanimljivo je pročitati: jezični okvir započeo je kao domaći format, ali u posljednje vrijeme se sve više prelazi na sličniji SPARQL. Kao u vicevu: bez obzira koliko puta radimo graf znanja, uvijek nam ispadne RDF.
Drugi primjer — usluga . Prije njegova pojavljivanja, za povijesne podatke o Wikidatama trebalo je koristiti standardni Mediawiki API. Sada je mnogo toga moguće uz čisti SPARQL. «Ispod haube» također se nalazi RocksDB. Usput, WDHQS je, izgleda, napravila osoba koja se bavila unosom Freebasea u Google Knowledge Graph.
V. Podrška LPG
Podsjećam na glavnu razliku između LPG-grafova i RDF-grafova.
U LPG-u, na primjerima rubova mogu se dodavati skalarni atributi, dok se u RDF-u oni mogu dodati samo na «tipove» rubova (ali ne samo skalarni atributi, već i obične veze). Ova ograničenost RDF-a u odnosu na LPG raznim tehnikama modeliranja. Međutim, ograničenja LPG-a u odnosu na RDF je teže prevladati, ali LPG-grafovi više sliču na slike iz udžbenika Hararija, što ih čini privlačnijima ljudima.
Očigledno, zadatak «podrške LPG» dijeli se u dva dijela:
- uvođenje promjena u RDF modelu koje omogućuju simulaciju LPG konstrukcija;
- uvođenje promjena u jeziku upita za RDF koje omogućuju pristup podacima u ovom izmijenjenom modelu — ili implementacija mogućnosti upita o ovom modelu na popularnim jezicima upita za LPG.
V.1. Model podataka
Postoji nekoliko mogućih pristupa.
V.1.1. Singleton Atribut
Najizravniji pristup harmonizaciji RDF-a i LPG-a je, vjerojatno, :
- Umjesto, na primjer, predikata
:isMarriedTokoriste se predikati:isMarriedTo1,:isMarriedTo2itd. - Zatim ti predikati postaju subjekti novih trojki:
:isMarriedTo1 :since "2013-09-13"^^xsd:dateitd. - Veza tih instanci predikata s općim predikatom uspostavlja se trojkama poput
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - Očigledno je da
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, ali razmislite zašto nije dobro pisati jednostavno:isMarriedTo1 rdf:type :isMarriedTo.
Zadatak «podrške LPG» ovdje se rješava na razini RDFS-a. Takvo rješenje zahtijeva uvođenje u odgovarajući . Možda će biti potrebne izmjene od RDF skladišta koja podržavaju pridruživanje posljedica, a dok se to ne dogodi, Singleton Property se može smatrati još jednom tehnikom modeliranja.
V.1.2. Pravilna Reifikacija
Manje naivni pristupi proizašli su iz spoznaje da se instanciraju svojstva zajedno s trojicama. Imajući mogućnost govoriti o trojicama, steći ćemo mogućnost razgovora o instancama svojstava.
Najozbiljniji od ovih pristupa je , također poznat kao RDR, u srži Blazegraph-a. Od samog početka za sebe i AnzoGraph. Ozbiljnost pristupa određena je tim da u okviru njega odgovarajuće promjene u . Suština, međutim, veoma je jednostavna. U Turtle serijalizaciji RDF-a sada možemo pisati otprilike ovako:
<> :since "2013-09-13"^^xsd:date .V.1.3. Ostali pristupi
Nije potrebno brinuti se o formalnoj semantici, već jednostavno smatrati da trojice imaju određene identifikatore, koji su naravno URI, i sastavljati nove trojice s tim URI-ima. Ostaje samo omogućiti pristup tim URI-ima u SPARQL-u. Tako Stardog.
U Allegrographu posrednim putem. Poznato je da identifikatori trojica u Allegrographu , ali kada se implementiraju triple attributes, ne izlaze van. Ipak, do formalne semantike je veoma daleko. Zanimljivo je da atributi trojica nisu URI, a vrijednosti tih atributa također mogu biti samo litere. Pristaše LPG-a dobivaju točno ono što su željeli. U posebno izmišljenom formatu NQX primjer, sličan onome navedenom za RDF*, izgleda ovako:
:bob :marriedTo :alice {"since" : "2013-09-13"}V.2. Jezici upita
Podržavši na neki način LPG na razini modela, potrebno je omogućiti upite za podatke u takvom modelu.
- Blazegraph podržava upite za RDF* putem i . Upit za SPARQL* izgleda ovako:
SELECT * { <> :since ?since }- AnzoGraph također podržava i planira podržati , jezik upita u Neo4j.
- Stardog podržava vlastiti SPARQL i Gremlin. URI trepeta i „metainformacije“ mogu se dobiti u SPARQL-u koristeći otprilike takvu konstrukciju:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Allegrograph također podržava vlastiti SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }Usput, GraphDB je neko vrijeme podržavala Tinkerpop/Gremlin, ne podržavajući pritom LPG, ali u verziji 8.0 ili 8.1 to je prestalo.
VI. Oštriji Uvjeti Licenciranja
Nema novih dodataka u presjeku između ‘triplestore of choice’ i ‘open source triplestore’ u posljednje vrijeme. Nova RDF skladišta s otvorenim izvorom još uvijek nisu ostvarila dobre pozicije za svakodnevnu upotrebu, a izvorni kod novih RDF skladišta koja bi se mogla koristiti (poput AnzoGraph) je zatvoren. Čini se da se čak može govoriti i o smanjenju…
Naravno, prethodno otvoreni izvor ne postaje zatvoren, ali neka skladišta s otvorenim izvorom postepeno prestaju biti smatrana dostojnim izborom. Smatram da Virtuoso, koji ima opensource izdanje, tonuti u bugovima. Blazegraph je kupio AWS i postao temelj za Amazon Neptune; sada nije jasno hoće li biti još jednog izdanja. Ostaje samo Jena…
Ako otvoreni izvor nije toliko važan, a želite samo isprobati, situacija je i dalje manje povoljna nego ranije. Na primjer:
- Stardog distribuirati besplatnu verziju (međutim, dvostruko je produžen probni period za običnu verziju);
- u , gdje je ranije bilo moguće odabrati besplatni osnovni plan, obustavljena je registracija novih korisnika.
Ukratko, za običnog IT korisnika svemir postaje sve nedostupniji, a njegovo istraživanje postaje privilegija korporacija.
Izvor: habr.com
