Vad hÀnder med RDF-lagring nu?

Den semantiska webben och lĂ€nkad data Ă€r som nĂ€ra rymden: det finns inget liv dĂ€r. Att vistas dĂ€r under en mer eller mindre lĂ„ng tidsperiod
 ja, jag vet inte vad man sa till en som barn som svar pĂ„ "Jag vill bli astronaut". Men man kan observera vad som hĂ€nder medan man Ă€r pĂ„ jorden; det Ă€r mycket lĂ€ttare att bli amatör eller till och med professionell astronom.

Artikeln kommer att diskutera nya, inte Àldre Àn nÄgra mÄnader, trender frÄn RDF-lagringsvÀrlden. Metaforen i första stycket inspirerades av en reklambild av stor storlek under snittet.


Episk bild

Vad hÀnder med RDF-lagring nu?

I. GraphQL för RDF-Ätkomst

De sÀgeratt GraphQL siktar pÄ att bli ett universellt databasÄtkomstsprÄk. Hur Àr det med möjligheten att fÄ Ätkomst till RDF med GraphQL?

Den hÀr möjligheten tillhandahÄlls av:

Om förvaret inte ger en sÄdan möjlighet kan det implementeras oberoende genom att skriva en lÀmplig "resolver". SÄ gjorde de till exempel i det franska projektet Dataturism. Eller sÄ kan man inte lÀngre skriva nÄgot, utan bara ta HyperGraphQL.

Ur synvinkeln för en ortodox anhÀngare av den semantiska webben och lÀnkade data Àr allt detta naturligtvis trÄkigt, eftersom det verkar designat för integrationer byggda kring nÀsta datasilo, och inte lÀmpliga plattformar (RDF-butiker, förstÄs) .

Intrycken frÄn att jÀmföra GraphQL med SPARQL Àr tvÄfaldiga.

  • Å ena sidan ser GraphQL ut som en avlĂ€gsen slĂ€kting till SPARQL: det löser problemen med omsampling och mĂ„ngfalden av frĂ„gor som Ă€r typiska för REST - utan vilka det förmodligen inte skulle vara möjligt att övervĂ€ga frĂ„gesprĂ„k, Ă„tminstone för webben;
  • Å andra sidan Ă€r det stela schemat för GraphQL en besvikelse. Följaktligen verkar dess "introspektivitet" mycket begrĂ€nsad jĂ€mfört med RDF:s fulla reflexivitet. Och det finns ingen analog av fastighetsvĂ€gar, sĂ„ det Ă€r inte ens sĂ€rskilt tydligt varför det Ă€r "Graph-".

II. Adaptrar för MongoDB

En trend som kompletterar den tidigare.

  • i Stardog nu kanske - i synnerhet alla pĂ„ samma GraphQL - konfigurera mappningen av MongoDB-data till virtuella RDF-grafer;
  • GraphDB har nyligen det gör infoga fragment i SPARQL pĂ„ MongoDB Query.

Om vi ​​talar mer allmĂ€nt om adaptrar till JSON-kĂ€llor, som tillĂ„ter mer eller mindre "on the fly" att representera JSON som lagras i dessa kĂ€llor som RDF, kan vi minnas den ganska lĂ„ngvariga SPARQL Generera, som kan justeras, exempelvis, till Apache Jena.

För att sammanfatta de tvÄ första trenderna kan vi sÀga att RDF-lagringar visar full beredskap för integration och drift under förhÄllanden med "polyglot-bestÀndighet". Det Àr dock kÀnt att detta senare lÀnge har gÄtt ur mode och hÄller pÄ att ersÀttas av kommande multimodell. Hur Àr det med multimodellering i en vÀrld av RDF-lagring?

Kort sagt, inget sÀtt. Jag skulle vilja Àgna en separat artikel till Àmnet multi-modell DBMS, men för nÀrvarande kan det noteras att det för nÀrvarande inte finns nÄgra multi-modell DBMS "baserade" pÄ en grafmodell (RDF kan betraktas som en typ av det) . Vissa smÄ multimodelleringar - RDF-lagringsstöd för en alternativ LPG-grafmodell - kommer att diskuteras i avsnitt V.

III. OLTP vs. OLAP

Dock samma Gartner skriveratt multimodell Ă€r en absolut nödvĂ€ndig förutsĂ€ttning frĂ€mst för operationssalar DBMS. Detta Ă€r förstĂ„eligt: ​​i en situation med "multivariatlagring" uppstĂ„r de största problemen med transaktionalitet.

Men var finns RDF-lagringar pĂ„ OLTP-OLAP-skalan? Jag skulle svara sĂ„ hĂ€r: varken dĂ€r eller hĂ€r. För att ange vad de Ă€r avsedda för behövs nĂ„gon tredje förkortning. Som ett alternativ skulle jag föreslĂ„ OLIP — Intellektuell bearbetning online.

Men fortfarande:

  • integrationsmekanismerna med MongoDB implementerade i GraphDB Ă€r inte minst avsedd att komma runt skrivprestandaproblem;
  • Stardog gĂ„r Ă€nnu lĂ€ngre och fullstĂ€ndigt skriver om motor, Ă„terigen med mĂ„let att förbĂ€ttra inspelningsprestandan.

LĂ„t mig nu presentera en ny aktör pĂ„ marknaden. FrĂ„n skaparna av IBM Netezza och Amazon Redshift — AnzoGraph. En bild frĂ„n en annons för en produkt baserad pĂ„ den lades upp i början av artikeln. AnzoGraph positionerar sig som en GOLAP-lösning. Hur gillar du SPARQL med fönsterfunktioner? —

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

IV. RocksDB

Redan högre det fanns en lÀnk till tillkÀnnagivandet av Stardog 7 Beta, som sa att Stardog skulle anvÀnda RocksDB som ett underliggande lagringssystem - en nyckel-vÀrde butik, en Facebook-gaffel av Googles LevelDB. Varför Àr det vÀrt att prata om en viss trend?

För det första att döma av Wikipedia-artikel, inte bara RDF-lagringar "transplanteras" till RocksDB. Det finns projekt för att anvÀnda RocksDB som lagringsmotor i ArangoDB, MongoDB, MySQL och MariaDB, Cassandra.

För det andra skapas projekt (det vill sÀga inte produkter) om relevanta Àmnen pÄ RocksDB.

Till exempel anvÀnder eBay RocksDB i plattform för din "kunskapsgraf". Förresten, det Àr roligt att lÀsa: frÄgesprÄket började som ett inhemskt format, men pÄ senare tid har det övergÄtt till att bli mycket mer likt SPARQL. Som i skÀmtet: oavsett hur mycket kunskapsgraf vi gör, sÄ hamnar vi fortfarande pÄ RDF.

Ett annat exempel - ett som dök upp för nÄgra mÄnader sedan Wikidata History Query Service. Innan den introducerades behövde Wikidatas historiska information nÄs via MWAPI till Mediawikis standard-API. Nu Àr mycket möjligt med ren SPARQL. "Under huven" finns Àven RocksDB. Förresten, WDHQS gjordes, verkar det som, av personen som importerade Freebase till Google Knowledge Graph.

V. LPG-stöd

LÄt mig pÄminna dig om huvudskillnaden mellan LPG-grafer och RDF-grafer.

I LPG kan skalĂ€ra egenskaper tilldelas kantinstanser, medan de i RDF bara kan tilldelas kant-”typer” (men inte bara skalĂ€ra egenskaper, utan Ă€ven vanliga anslutningar). Denna begrĂ€nsning av RDF jĂ€mfört med gasol betagen en eller annan modelleringsteknik. BegrĂ€nsningarna för LPG jĂ€mfört med RDF Ă€r svĂ„rare att övervinna, men LPG-grafer Ă€r mer som bilder frĂ„n en Harari-lĂ€robok Ă€n RDF-grafer, vilket Ă€r anledningen till att folk vill ha dem.

Uppenbarligen delas uppgiften med "LPG-stöd" i tvÄ delar:

  1. göra Àndringar i RDF-modellen som gör det möjligt att simulera LPG-strukturer i den;
  2. göra Àndringar i RDF-frÄgesprÄket som gör det möjligt att komma Ät data i denna modifierade modell, eller implementera möjligheten att göra frÄgor till denna modell i populÀra LPG-frÄgesprÄk.

V.1. Datamodell

Det finns flera möjliga tillvÀgagÄngssÀtt hÀr.

V.1.1. Singleton Property

Det mest bokstavliga sÀttet att harmonisera RDF och LPG Àr förmodligen singelfastighet:

  • IstĂ€llet för till exempel predikatet :isMarriedTo predikat anvĂ€nds :isMarriedTo1, :isMarriedTo2 och t. d.
  • Dessa predikat blir sedan föremĂ„l för nya trillingar: :isMarriedTo1 :since "2013-09-13"^^xsd:date etc.
  • Kopplingen av dessa förekomster av predikat med ett gemensamt predikat etableras av formens tripletter :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • Det Ă€r uppenbart att rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, men tĂ€nk pĂ„ varför du inte bara ska skriva :isMarriedTo1 rdf:type :isMarriedTo.

Problemet med "LPG-stöd" löses hÀr pÄ RDFS-nivÄ. Ett sÄdant beslut krÀver införande i lÀmpligt standard. Vissa förÀndringar kan krÀvas för RDF-butiker som stöder bifogade konsekvenser, men för nÀrvarande kan Singleton Property ses som bara en annan modelleringsteknik.

V.1.2. Reifikation gjort rÀtt

Mindre naiva tillvÀgagÄngssÀtt hÀrrör frÄn insikten att egendomsinstanser Àr helt instansierbara av trillingar. Genom att kunna sÀga nÄgot om trillingar kommer vi att kunna prata om fastighetsinstanser.

Den mest robusta av dessa metoder Àr RDF*, aka RDR, född i Blazegraphs djup. Det Àr frÄn första början vald för dig sjÀlv och AnzoGraph. TillvÀgagÄngssÀttets soliditet bestÀms av det faktum att inom dess ram erbjuds motsvarande förÀndringar i RDF semantik. PoÀngen Àr dock extremt enkel. I Turtle serialization of RDF kan du nu skriva nÄgot sÄ hÀr:

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

V.1.3. Andra tillvÀgagÄngssÀtt

Du kan inte bry dig om formell semantik, utan helt enkelt anta att tripletter har vissa identifierare, som naturligtvis Àr URI:er, och skapa nya tripletter med dessa URI:er. Allt som ÄterstÄr Àr att ge tillgÄng till dessa URI:er i SPARQL. SÄ ankommer Stardog.

I Allegrograph Äkte pÄ ett mellanliggande sÀtt. Det Àr kÀnt att triplettidentifierare i Allegrograph finns, men nÀr de implementerar trippelattribut sticker de inte ut. Det Àr dock fortfarande vÀldigt lÄngt ifrÄn formell semantik. Det Àr anmÀrkningsvÀrt att triplettattribut inte Àr URI:er, och vÀrdena för dessa attribut kan ocksÄ bara vara bokstavliga. LPG-anhÀngare fÄr precis vad de ville ha. I det speciellt uppfunna NQX-formatet ser ett exempel liknande det ovan för RDF* ut sÄ hÀr:

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

V.2. FrÄga sprÄk

Efter att ha stött LPG pÄ ett eller annat sÀtt pÄ modellnivÄ behöver du göra det möjligt att göra förfrÄgningar pÄ data i en sÄdan modell.

  • Blazegraph för RDF*-frĂ„gor stöder SPARQL* Đž Gremlin. En SPARQL*-frĂ„ga ser ut sĂ„ hĂ€r:

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

  • Anzograph stöder ocksĂ„ SPARQL* och kommer att stödja Cypher, ett frĂ„gesprĂ„k i Neo4j.
  • Stardog stödjer sina egna förlĂ€ngning SPARQL och igen Gremlin. Du kan fĂ„ triplett-URI och "metainformation" i SPARQL med nĂ„got sĂ„ hĂ€r:

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

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

Förresten, GraphDB stödde vid en tidpunkt Tinkerpop/Gremlin utan att stödja LPG, men detta slutade i version 8.0 eller 8.1.

VI. SkÀrpning av licenser

Det har inte gjorts nÄgra tillÀgg till skÀrningspunkten mellan "valfri trippelbutik" och "öppen kÀllkods-triplestore" pÄ sistone. Nya RDF-butiker med öppen kÀllkod Àr lÄngt ifrÄn ett bra val för dagligt bruk, och kÀllkoden för nya RDF-butiker som vi skulle vilja anvÀnda (samma AnzoGraph) Àr stÀngd. Snarare kan vi till och med prata om subtraktioner...

Naturligtvis har öppen kÀllkod inte stÀngts av tidigare, men vissa arkiv med öppen kÀllkod ses lÄngsamt inte lÀngre som vÀrda att vÀlja. Virtuoso, som har en öppen kÀllkodsutgÄva, drunknar enligt mig i buggar. Blazegraph köptes av AWS och utgjorde grunden för Amazon Neptune; nu Àr det oklart om det blir minst en release till. Bara Jena Àr kvar...

Om öppen kÀllkod inte Àr sÀrskilt viktigt, men du bara vill prova, sÄ Àr allt ocksÄ mindre rosenrött Àn tidigare. Till exempel:

  • Stardog stannar distribuera gratisversionen (dock har provperioden för den vanliga versionen fördubblats);
  • ĐČ GraphDB Cloud, dĂ€r man tidigare kunde vĂ€lja ett gratis grundabonnemang, har stoppat registreringar av nya anvĂ€ndare.

I allmÀnhet, för den genomsnittlige IT-personen, blir rymden mer och mer otillgÀnglig, dess utveckling blir företagens lott.

KĂ€lla: will.com

LĂ€gg en kommentar