Nini kinatokea kwa hifadhi ya RDF sasa?

Wavuti ya Semantiki na Data Zilizounganishwa ni kama anga za juu: hakuna maisha huko. Ili kwenda huko kwa muda mrefu zaidi au pungufu... Sijui walikuambia nini ukiwa mtoto wakijibu "Nataka kuwa mwanaanga." Lakini unaweza kutazama kile kinachotokea ukiwa duniani; Ni rahisi zaidi kuwa mwanaastronomia amateur au hata mtaalamu.

Nakala hiyo itazingatia mtindo wa hivi karibuni, sio zaidi ya miezi kadhaa, kutoka kwa ulimwengu wa hifadhi ya RDF. Sitiari katika aya ya kwanza imechochewa na taswira ya utangazaji ya ukubwa wa epic chini ya kata.


Picha ya Epic

Nini kinatokea kwa hifadhi ya RDF sasa?

I. GraphQL kwa ufikiaji wa RDF

Wanasemakwamba GraphQL inalenga kuwa lugha ya ufikiaji ya hifadhidata kwa wote. Vipi kuhusu uwezo wa kupata RDF kwa kutumia GraphQL?

Nje ya boksi fursa hii imetolewa na:

Ikiwa hazina haitoi kipengele kama hicho, inaweza kutekelezwa kwa kujitegemea kwa kuandika "suluhishi" linalofaa. Hivi ndivyo walivyofanya, kwa mfano, katika mradi wa Ufaransa DataTourisme. Au huwezi tena kuandika chochote, lakini chukua tu HyperGraphQL.

Kwa mtazamo wa mfuasi wa Orthodox wa Mtandao wa Semantic na Takwimu Zilizounganishwa, hii yote, kwa kweli, ni ya kusikitisha, kwani inaonekana iliyoundwa kwa miunganisho iliyojengwa karibu na silo ya data inayofuata, na majukwaa yasiyofaa (duka za RDF, bila shaka) .

Maoni kutoka kwa kulinganisha GraphQL na SPARQL ni mbili.

  • Kwa upande mmoja, GraphQL inaonekana kama jamaa wa mbali wa SPARQL: inasuluhisha shida za kusawazisha tena na wingi wa maswali ambayo ni ya kawaida kwa REST - bila ambayo, labda, haingewezekana kuzingatia. lugha ya kuuliza, angalau kwa wavuti;
  • Kwa upande mwingine, schema ngumu ya GraphQL inakatisha tamaa. Ipasavyo, "uchunguzi" wake unaonekana kuwa mdogo sana ikilinganishwa na kubadilika kamili kwa RDF. Na hakuna analog ya njia za mali, kwa hivyo haijulikani hata kwa nini ni "Grafu-".

II. Adapta za MongoDB

Mwelekeo unaosaidia ule uliopita.

  • Katika Stardog sasa labda - haswa, zote kwenye GraphQL sawa - sanidi ramani ya data ya MongoDB kwenye grafu za RDF za kawaida;
  • Ontotext GraphDB ina hivi karibuni inaruhusu ingiza vipande kwenye SPARQL kwenye Hoja ya MongoDB.

Ikiwa tutazungumza kwa upana zaidi juu ya adapta kwa vyanzo vya JSON, ambavyo huruhusu zaidi au kidogo "kuruka" kuwakilisha JSON iliyohifadhiwa katika vyanzo hivi kama RDF, tunaweza kukumbuka muda mrefu sana. SPARQL Tengeneza, ambayo inaweza kurekebishwa, kwa mfano, kwa Apache Jena.

Kwa muhtasari wa mielekeo miwili ya kwanza, tunaweza kusema kwamba hifadhi za RDF zinaonyesha utayari kamili wa kuunganishwa na uendeshaji katika hali ya "uwezo wa polyglot". Inajulikana, hata hivyo, kwamba mwisho huu kwa muda mrefu umekuwa nje ya mtindo, na unabadilishwa na anakuja mifano mingi. Vipi kuhusu uundaji wa aina nyingi katika ulimwengu wa hifadhi ya RDF?

Kwa kifupi, hakuna njia. Ningependa kutoa nakala tofauti kwa mada ya DBMS za modeli nyingi, lakini kwa sasa inaweza kuzingatiwa kuwa kwa sasa hakuna DBMS za aina nyingi "kulingana" na mfano wa grafu (RDF inaweza kuzingatiwa aina yake) . Baadhi ya miundo midogo mingi - usaidizi wa hifadhi ya RDF kwa modeli mbadala ya grafu ya LPG - itajadiliwa ndani sehemu ya V.

III. OLTP dhidi ya OLAP

Hata hivyo, Gartner sawa anaandikamultimodel hiyo ni sine qua non condition kimsingi kwa vyumba vya upasuaji DBMS. Hii inaeleweka: katika hali ya "uhifadhi wa multivariate", matatizo makuu hutokea kwa shughuli.

Lakini hifadhi za RDF ziko wapi kwenye mizani ya OLTP-OLAP? Ningejibu hivi: hakuna huko wala hapa. Ili kuonyesha ni nini zimekusudiwa, muhtasari wa tatu unahitajika. Kama chaguo ningependekeza OLIP - Usindikaji wa kiakili mtandaoni.

Walakini, bado:

  • mifumo ya ujumuishaji na MongoDB inayotekelezwa katika GraphDB sio ndogo iliyokusudiwa kufanya kazi karibu na kuandika maswala ya utendaji;
  • Stardog huenda hata zaidi na kabisa anaandika upya injini, tena kwa lengo la kuboresha utendaji wa kurekodi.

Sasa wacha nimtambulishe mchezaji mpya sokoni. Kutoka kwa waundaji wa IBM Netezza na Amazon Redshift - AnzoGraphβ„’. Picha kutoka kwa tangazo la bidhaa kulingana nayo iliwekwa mwanzoni mwa kifungu. AnzoGraph inajiweka kama suluhisho la GOLAP. Unapendaje SPARQL na vitendaji vya dirisha? -

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

IV. RocksDB

Tayari juu kulikuwa na kiungo kwa tangazo la Stardog 7 Beta, ambayo ilisema kwamba Stardog itatumia RocksDB kama mfumo wa msingi wa kuhifadhi - duka la thamani kuu, uma wa Facebook wa LevelDB ya Google. Kwa nini inafaa kuzungumza juu ya mwenendo fulani?

Kwanza, kwa kuzingatia Makala ya Wikipedia, sio tu hifadhi za RDF "zinapandikizwa" hadi RocksDB. Kuna miradi ya kutumia RocksDB kama injini ya kuhifadhi katika ArangoDB, MongoDB, MySQL na MariaDB, Cassandra.

Pili, miradi (yaani, sio bidhaa) kwenye mada husika huundwa kwenye RocksDB.

Kwa mfano, eBay hutumia RocksDB katika jukwaa kwa "grafu ya maarifa" yako. Kwa njia, inafurahisha kusoma: lugha ya kuuliza ilianza kama muundo wa nyumbani, lakini hivi majuzi imekuwa ikibadilika kuwa zaidi kama SPARQL. Kama ilivyo kwenye utani: haijalishi tunatengeneza grafu ya maarifa kiasi gani, bado tunaishia na RDF.

Mfano mwingine - moja ambayo ilionekana miezi michache iliyopita Huduma ya Maswali ya Historia ya Wikidata. Kabla ya utangulizi wake, taarifa za kihistoria za Wikidata zilipaswa kufikiwa kupitia MWAPI kwa API ya kawaida ya Mediawiki. Sasa mengi yanawezekana na SPARQL safi. "Chini ya kofia" pia kuna RocksDB. Kwa njia, WDHQS ilitengenezwa, inaonekana, na mtu aliyeingiza Freebase kwenye Grafu ya Maarifa ya Google.

V. LPG msaada

Acha nikukumbushe tofauti kuu kati ya grafu za LPG na grafu za RDF.

Katika LPG, mali ya scalar inaweza kupewa matukio ya makali, wakati katika RDF wanaweza tu kupewa "aina" za makali (lakini si tu mali ya scalar, lakini pia viunganisho vya kawaida). Kizuizi hiki cha RDF ikilinganishwa na LPG kushinda mbinu moja au nyingine ya modeli. Vikwazo vya LPG ikilinganishwa na RDF ni vigumu zaidi kushinda, lakini grafu za LPG ni kama picha kutoka kwa kitabu cha kiada cha Harari kuliko grafu za RDF, ndiyo maana watu wanazitaka.

Ni wazi, kazi ya "msaada wa LPG" iko katika sehemu mbili:

  1. kufanya mabadiliko kwa mfano wa RDF ambayo inafanya uwezekano wa kuiga miundo ya LPG ndani yake;
  2. kufanya mabadiliko kwa lugha ya hoja ya RDF ambayo hurahisisha kupata data katika muundo huu uliorekebishwa, au kutekeleza uwezo wa kuuliza muundo huu katika lugha maarufu za hoja za LPG.

V.1. Mfano wa data

Kuna mbinu kadhaa zinazowezekana hapa.

V.1.1. Mali ya Singleton

Njia halisi zaidi ya kuoanisha RDF na LPG labda ni mali ya singleton:

  • Badala ya, kwa mfano, kiima :isMarriedTo predicates hutumiwa :isMarriedTo1, :isMarriedTo2 na kadhalika.
  • Vihusishi hivi basi huwa mada za mapacha watatu: :isMarriedTo1 :since "2013-09-13"^^xsd:date nk
  • Uunganisho wa matukio haya ya predicates na predicate ya kawaida ni imara na triplets ya fomu :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • Ni wazi, rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, lakini fikiria kwa nini hupaswi kuandika tu :isMarriedTo1 rdf:type :isMarriedTo.

Tatizo la "msaada wa LPG" linatatuliwa hapa kwa kiwango cha RDFS. Uamuzi kama huo unahitaji kuingizwa katika sahihi kiwango. Baadhi ya mabadiliko yanaweza kuhitajika kwa maduka ya RDF ambayo yanaauni matokeo ya kuambatisha, lakini kwa sasa, Singleton Property inaweza kuzingatiwa kama mbinu nyingine ya uigaji.

V.1.2. Urekebishaji Umefanywa kwa Haki

Mbinu duni za ujinga zinatokana na utambuzi kwamba hali ya mali inaweza kutambulika kabisa kwa mapacha watatu. Kwa kuwa na uwezo wa kusema kitu kuhusu mapacha watatu, tutaweza kuzungumza juu ya matukio ya mali.

Imara zaidi ya njia hizi ni RDF*, kwa jina la RDR, kuzaliwa katika kina cha Blazegraph. Ni tangu mwanzo kabisa kuchaguliwa kwa ajili yako mwenyewe na AnzoGraph. Uimara wa mbinu imedhamiriwa na ukweli kwamba ndani ya mfumo wake inayotolewa mabadiliko yanayolingana katika Semantiki za RDF. Hoja, hata hivyo, ni rahisi sana. Katika usanifu wa Turtle wa RDF sasa unaweza kuandika kitu kama hiki:

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

V.1.3. Mbinu zingine

Huwezi kujisumbua na semantiki rasmi, lakini chukulia tu kuwa mapacha watatu wana vitambulishi fulani, ambavyo bila shaka ni URIs, na kuunda mapacha watatu kwa kutumia URI hizi. Kilichosalia ni kutoa ufikiaji wa URI hizi katika SPARQL. Hivyo fika Nyota.

Katika Allegrograph akaenda kwa njia ya kati. Inajulikana kuwa vitambulishi vya pembetatu katika Allegrograph kuna, lakini wakati wa kutekeleza sifa tatu hazishiki nje. Hata hivyo, bado iko mbali sana na semantiki rasmi. Ni muhimu kukumbuka kuwa sifa tatu sio URIs, na maadili ya sifa hizi pia zinaweza kuwa halisi tu. Wafuasi wa LPG hupata kile walichotaka. Katika umbizo la NQX iliyoundwa mahususi, mfano sawa na ule ulio hapo juu wa RDF* unaonekana kama hii:

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

V.2. Lugha za maswali

Baada ya kuunga mkono LPG kwa njia moja au nyingine katika kiwango cha mfano, unahitaji kufanya uwezekano wa kufanya maswali kwenye data katika mfano kama huo.

  • Blazegraph ya hoja za RDF* inasaidia SPARQL* ΠΈ Gremlin. Hoja ya SPARQL* inaonekana kama hii:

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

  • Anzograph pia inasaidia SPARQL* na anaenda kuunga mkono Cypher, lugha ya swali katika Neo4j.
  • Stardog inasaidia yake mwenyewe upanuzi SPARQL na tena Gremlin. Unaweza kupata URI tatu na "maelezo ya meta" katika SPARQL kwa kutumia kitu kama hiki:

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

  • Allegrograph pia inasaidia yake mwenyewe upanuzi SPARQL:

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

Kwa njia, GraphDB wakati mmoja iliunga mkono Tinkerpop/Gremlin bila kutumia LPG, lakini hii ilisimama katika toleo la 8.0 au 8.1.

VI. Kuimarishwa kwa leseni

Hakujawa na nyongeza za hivi majuzi kwenye makutano ya seti za "triplestore of choice" na "open source triplestore". Duka mpya za chanzo huria za RDF ziko mbali kutokana na kuwa chaguo zuri kwa matumizi ya kila siku, na maduka mapya matatu ambayo ningependa kutumia (kama AnzoGraph) yamefungwa. Badala yake, tunaweza kuzungumza juu ya kupungua ...

Bila shaka, chanzo huria hakijafungwa hapo awali, lakini baadhi ya hazina za chanzo huria hazionekani tena kuwa za kuchaguliwa. Virtuoso, ambayo ina toleo la opensource, kwa maoni yangu, inazama kwenye mende. Blazegraph ilinunuliwa na AWS na kuunda msingi wa Amazon Neptune; sasa haijulikani ikiwa kutakuwa na angalau toleo moja zaidi. Imebaki Jena pekee...

Ikiwa chanzo wazi sio muhimu sana, lakini unataka tu kujaribu, basi kila kitu pia ni cha chini kuliko hapo awali. Kwa mfano:

  • Nyota ataacha kusambaza toleo la bure (hata hivyo, kipindi cha majaribio ya toleo la kawaida limeongezeka mara mbili);
  • Π² Wingu la GraphDB, ambapo hapo awali unaweza kuchagua mpango wa msingi wa bure, usajili mpya wa watumiaji umesimamishwa.

Kwa ujumla, kwa mtu wa kawaida wa IT, nafasi inazidi kutoweza kufikiwa; maendeleo yake yanakuwa mashirika mengi.

Chanzo: mapenzi.com

Kuongeza maoni