Mis toimub praegu RDF-i hoidlates?

Semantiline veeb ja lingitud andmed on nagu kosmoses: seal pole elu. Minna sinna enam-vĂ€hem pikaks ajaks... no ma ei tea, mida nad sulle lapsepĂ”lves ĂŒtlesid vastuseks "Ma tahan saada astronaudiks". Kuid te saate jĂ€lgida, mis toimub Maal olles; Palju lihtsam on saada amatöörastronoomiks vĂ”i isegi professionaaliks.

Artikkel keskendub hiljutistele, mitte vanematele kui mitme kuu vanustele suundumustele RDF-i ladustamise maailmas. Esimese lÔigu metafoor oli inspireeritud lÔike all olevast eepilises suuruses reklaampildist.


Eepiline pilt

Mis toimub praegu RDF-i hoidlates?

I. GraphQL RDF-i juurdepÀÀsu jaoks

Nad ĂŒtlesidet GraphQL-i eesmĂ€rk on saada universaalseks andmebaasi juurdepÀÀsukeeleks. Kuidas on lood RDF-i juurdepÀÀsu vĂ”imalusega GraphQL-i abil?

Selle vÔimaluse pakuvad karbist vÀljas:

Kui hoidla sellist vĂ”imalust ei paku, saab selle iseseisvalt realiseerida, kirjutades vastava “lahendaja”. Seda nad tegid nĂ€iteks Prantsusmaa projektis Andmeturism. VĂ”i ei saa enam midagi kirjutada, vaid lihtsalt vĂ”ta HyperGraphQL.

Semantilise veebi ja lingitud andmete ortodoksse jĂ€rgija seisukohalt on see kĂ”ik muidugi kurb, kuna tundub, et see on mĂ”eldud integratsioonide jaoks, mis on ĂŒles ehitatud jĂ€rgmise andmesilo ĂŒmber, mitte sobivate platvormide jaoks (muidugi RDF-i poed) .

GraphQL-i ja SPARQL-i vÔrdlemise muljed on kahesugused.

  • Ühest kĂŒljest nĂ€eb GraphQL vĂ€lja nagu SPARQL-i kauge sugulane: see lahendab REST-ile omased resamplimise ja pĂ€ringute paljususe probleemid - ilma milleta poleks ilmselt vĂ”imalik kaaluda. pĂ€ringu keel, vĂ€hemalt veebi jaoks;
  • Teisest kĂŒljest valmistab GraphQL-i jĂ€ik skeem pettumuse. SeetĂ”ttu tundub selle "introspektiivsus" RDF-i tĂ€ieliku refleksiivsusega vĂ”rreldes vĂ€ga piiratud. Ja omaduste radadel pole analoogi, seega pole isegi vĂ€ga selge, miks see on "Graafik".

II. Adapterid MongoDB jaoks

Eelmist tÀiendav trend.

  • Stardogis praegu ehk - eelkĂ”ige kĂ”ik samal GraphQL-il - konfigureerige MongoDB andmete kaardistamine virtuaalseteks RDF-graafikuteks;
  • GraphDB on hiljuti vĂ”imaldab sisestage fragmendid MongoDB Query SPARQL-i.

Kui rÀÀkida laiemalt JSON-i allikate adapteritest, mis vĂ”imaldavad enam-vĂ€hem "lennult" esindada neisse allikatesse salvestatud JSON-i RDF-ina, vĂ”ib meenutada ĂŒsna kauaaegset. SPARQL Genereeri, mida saab reguleerida, nĂ€iteks, Apache Jenale.

Kahe esimese suundumuse kokkuvĂ”tteks vĂ”ime öelda, et RDF-mĂ€luseadmed nĂ€itavad tĂ€ielikku valmisolekut integreerimiseks ja töötamiseks "polĂŒgloti pĂŒsivuse" tingimustes. Teadaolevalt on see viimane aga ammu moest vĂ€ljas ja seda asendab on tulemas mitme mudeliga. Kuidas on lood multimodelleerimisega RDF-salvestuse maailmas?

ÜhesĂ”naga, mitte mingil juhul. Tahaksin pĂŒhendada eraldi artikli mitme mudeliga DBMS-ide teemale, kuid praegu vĂ”ib mĂ€rkida, et praegu ei ole graafikumudelil “pĂ”hinevaid” mitme mudeliga DBMS-e (selle tĂŒĂŒbiks vĂ”ib pidada ka RDF-i) . MĂ”nda vĂ€ikest multimodelleerimist – alternatiivse LPG graafikumudeli RDF-i salvestustuge – arutatakse artiklis V jagu.

III. OLTP vs. OLAP

Samas seesama Gartner kirjutabet multimudel on sine qua non tingimus eelkÔige selleks operatsiooniruumid DBMS. See on arusaadav: "mitme muutujaga ladustamise" olukorras tekivad peamised probleemid tehingulisusega.

Aga kus asuvad RDF-mĂ€luruumid OLTP-OLAP-i skaalal? Vastaksin nii: ei seal ega siin. Et nĂ€idata, milleks need on mĂ”eldud, on vaja mĂ”nda kolmandat lĂŒhendit. Ühe variandina pakun vĂ€lja OLIP — intellektuaalne töötlemine vĂ”rgus.

Siiski ikkagi:

  • GraphDB-s rakendatud MongoDB-ga integreerimismehhanismid pole vĂ€hem tĂ€htsad mĂ”eldud kirjutamise jĂ”udlusprobleemide lahendamiseks;
  • Stardog lĂ€heb veelgi kaugemale ja tĂ€ielikult kirjutab ĂŒmber mootor, taas eesmĂ€rgiga parandada salvestamise jĂ”udlust.

NĂŒĂŒd lubage mul tutvustada turule uut tegijat. IBM Netezza ja Amazon Redshifti loojatelt - AnzoGraph. Pilt selle pĂ”hjal tehtud toote reklaamist postitati artikli algusesse. AnzoGraph positsioneerib end GOLAP-i lahendusena. Kuidas teile SPARQL aknafunktsioonidega meeldib? —

SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE {  
  }

IV. RocksDB

Juba kĂ”rgemal seal oli link Stardog 7 Beta teadaandele, milles öeldi, et Stardog kavatseb kasutada RocksDB-d aluseks oleva salvestussĂŒsteemina - vĂ”tmevÀÀrtuste pood, Google'i LevelDB Facebooki hark. Miks tasub rÀÀkida teatud trendist?

Esiteks, otsustades Wikipedia artikkel, mitte ainult RDF-mĂ€lusid ei „siirdata” RocksDB-sse. On projekte RocksDB kasutamiseks salvestusmootorina ArangoDB-s, MongoDB-s, MySQL-is ja MariaDB-s, Cassandras.

Teiseks luuakse RocksDB-s projekte (st mitte tooteid) asjakohastel teemadel.

NĂ€iteks eBay kasutab RocksDB-d platvorm oma "teadmiste graafiku" jaoks. Muide, naljakas on lugeda: pĂ€ringukeel sai alguse kodus kasvatatud vormingust, kuid viimasel ajal on see muutunud palju rohkem SPARQL-i sarnaseks. Nagu naljas: ĂŒkskĂ”ik kui suure teadmiste graafiku me teeme, jĂ”uame ikkagi RDF-i.

Teine nĂ€ide – see, mis ilmus paar kuud tagasi Wikidata ajaloo pĂ€ringuteenus. Enne selle tutvustamist tuli Wikidata ajaloolisele teabele juurde pÀÀseda MWAPI standardsele Mediawiki API-le. NĂŒĂŒd on puhta SPARQL-iga palju vĂ”imalik. “Kaoti all” on ka RocksDB. Muide, nĂ€ib, et WDHQS-i tegi isik, kes importis Freebase'i Google'i teadmiste graafikusse.

V. LPG tugi

Lubage mul teile meelde tuletada peamist erinevust LPG ja RDF graafikute vahel.

LPG-s saab skalaarseid omadusi mÀÀrata servaeksemplaridele, samas kui RDF-is saab neid mÀÀrata ainult serva "tĂŒĂŒpidele" (aga mitte ainult skalaarsetele omadustele, vaid ka tavalistele ĂŒhendustele). See RDF-i piirang vĂ”rreldes LPG-ga ĂŒletada ĂŒht vĂ”i teist modelleerimistehnikat. LPG piiranguid vĂ”rreldes RDF-iga on raskem ĂŒletada, kuid LPG graafikud sarnanevad pigem Harari Ă”piku kui RDF-i graafikutega, mistĂ”ttu inimesed neid tahavad.

Ilmselt jaguneb "LPG-toe" ĂŒlesanne kaheks osaks:

  1. RDF mudelis muudatuste tegemine, mis vÔimaldavad simuleerida selles LPG struktuure;
  2. RDF-i pÀringukeeles muudatuste tegemine, mis vÔimaldavad juurdepÀÀsu selle modifitseeritud mudeli andmetele, vÔi selle mudeli kohta pÀringute tegemise vÔimaluse rakendamine populaarsetes LPG-pÀringukeeltes.

V.1. Andmemudel

Siin on mitu vÔimalikku lÀhenemist.

V.1.1. Singletoni kinnisvara

TĂ”enĂ€oliselt on kĂ”ige otsesem lĂ€henemine RDF-i ja LPG ĂŒhtlustamisele ĂŒksiku vara:

  • NĂ€iteks predikaadi asemel :isMarriedTo kasutatakse predikaate :isMarriedTo1, :isMarriedTo2 ja t. d.
  • Need predikaadid saavad seejĂ€rel uute kolmikute subjektideks: :isMarriedTo1 :since "2013-09-13"^^xsd:date jne
  • Nende predikaatide esinemisjuhtude seos ĂŒhise predikaadiga tehakse kindlaks vormi kolmikute abil :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • Ilmselt rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, aga mĂ”elge, miks te ei peaks lihtsalt kirjutama :isMarriedTo1 rdf:type :isMarriedTo.

LPG toe probleem on siin lahendatud RDFS-i tasemel. Selline otsus nĂ”uab lisamist vastavasse ŃŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚. MĂ”nda muudatust vĂ”ib vaja minna RDF-poodide puhul, mis toetavad tagajĂ€rgede lisamist, kuid praegu vĂ”ib Singleton Propertyt pidada lihtsalt jĂ€rjekordseks modelleerimistehnikaks.

V.1.2. Reifikatsioon on Ôigesti tehtud

VÀhem naiivsed lÀhenemisviisid tulenevad mÔistmisest, et atribuutide eksemplarid on kolmikute abil tÀielikult muututavad. Kui saame öelda midagi kolmikute kohta, saame rÀÀkida ka varajuhtumitest.

KĂ”ige jĂ”ulisem neist lĂ€henemisviisidest on RDF*, ehk RDR, sĂŒndinud Blazegraphi sĂŒgavuses. See on algusest peale valitud enda ja AnzoGraphi jaoks. LĂ€henemise tugevuse mÀÀrab asjaolu, et selle raames pakutud vastavad muudatused RDF semantika. Asi on aga ÀÀrmiselt lihtne. RDF-i Turtle'i serialiseerimisel saate nĂŒĂŒd kirjutada midagi sellist:

<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .

V.1.3. Muud lÀhenemised

Te ei saa jĂ€nnata formaalse semantikaga, vaid lihtsalt eeldada, et kolmikutel on teatud identifikaatorid, mis on loomulikult URI-d, ja luua nende URI-dega uusi kolmikuid. JÀÀb ĂŒle vaid anda juurdepÀÀs neile URI-dele SPARQL-is. Niisiis saabub TĂ€hekoer.

In Allegrograph lĂ€ks vahepealsel viisil. On teada, et Allegrographis kolmikute identifikaatorid on, kuid kolmekordsete atribuutide rakendamisel ei paista need silma. Siiski on see formaalsest semantikast veel vĂ€ga kaugel. TĂ€helepanuvÀÀrne on, et kolmiku atribuudid ei ole URI-d ja nende atribuutide vÀÀrtused vĂ”ivad olla ka ainult literaalid. LPG jĂ€rgijad saavad tĂ€pselt seda, mida nad tahtsid. Spetsiaalselt leiutatud NQX-vormingus nĂ€eb ĂŒlaltoodud RDF*-i jaoks sarnane nĂ€ide vĂ€lja selline:

:bob :marriedTo :alice {"since" : "2013-09-13"}

V.2. PĂ€ringu keeled

Olles LPG-d ĂŒhel vĂ”i teisel viisil mudeli tasemel toetanud, peate vĂ”imaldama sellises mudelis andmete kohta pĂ€ringuid teha.

  • Blazegraph RDF* pĂ€ringute jaoks toetab SPARQL* Đž Gremlin. SPARQL* pĂ€ring nĂ€eb vĂ€lja selline:

 SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }

  • Anzograaf toetab ka SPARQL* ja kavatseb toetada Salakiri, Neo4j pĂ€ringukeel.
  • Stardog toetab omasid laienemine SPARQL ja uuesti Gremlin. Kolmiku URI ja metateabe saate SPARQL-is, kasutades midagi sellist:

SELECT * {
    BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
    ?id :since ?since
}

 SELECT * { ("since" ?since)  franz:attributesNameValue  ( :bob :marriedTo ?wife ) }

Muide, GraphDB toetas omal ajal Tinkerpopi/Gremlinit ilma LPG-d toetamata, kuid see peatus versioonis 8.0 vÔi 8.1.

VI. Litsentside karmistamine

Komplektide „valik kolmikpood” ja „avatud lĂ€htekoodiga kolmepood” ristumiskohta pole hiljuti lisatud. Uued avatud lĂ€htekoodiga RDF-i poed pole kaugeltki hea valik igapĂ€evaseks kasutamiseks ja uued RDF-poed, mida tahaksin kasutada (nagu AnzoGraph), on suletud lĂ€htekoodiga. Pigem vĂ”ib rÀÀkida isegi langustest...

Muidugi ei ole avatud lĂ€htekoodiga ressurssi varem suletud, kuid mĂ”nda avatud lĂ€htekoodiga hoidlat ei peeta enam aeglaselt valimist vÀÀrt. Virtuoso, millel on avatud lĂ€htekoodiga vĂ€ljaanne, on minu arvates vigadesse uppumas. Blazegraphi ostis AWS ja see moodustas Amazon Neptune'i aluse; nĂŒĂŒd on ebaselge, kas tuleb veel vĂ€hemalt ĂŒks vĂ€ljalase. JÀÀb vaid Jena...

Kui avatud lÀhtekoodiga pole suurt tÀhtsust, aga tahad lihtsalt proovida, siis on ka kÔik varasemast vÀhem roosiline. NÀiteks:

  • TĂ€hekoer lĂ”peb levitage tasuta versiooni (tavaversiooni prooviperiood on aga kahekordistunud);
  • ĐČ GraphDB pilv, kus varem sai valida tasuta pĂ”hipaketi, on peatanud uute kasutajate registreerimised.

Üldjuhul muutub ruum keskmise IT-inimese jaoks ĂŒha kĂ€ttesaamatuks, selle arendamine on korporatsioonide pĂ€ralt.

Allikas: www.habr.com

Lisa kommentaar