Ang Semantic Web ug Linked Data sama sa outer space: walay kinabuhi didto. Aron makaadto didto sulod sa mas daghan o dili kaayo taas nga yugto sa panahon ... maayo, wala ko kabalo kung unsa ang ilang gisulti kanimo isip usa ka bata isip tubag sa "Gusto kong mahimong astronaut." Apan mahimo nimong maobserbahan kung unsa ang nahitabo samtang dinhi sa Yuta; Mas dali nga mahimong usa ka amateur astronomer o bisan usa ka propesyonal.
Ang artikulo mag-focus sa bag-o, dili mas tigulang sa daghang mga bulan, mga uso gikan sa kalibutan sa pagtipig sa RDF. Ang metapora sa unang parapo giinspirar sa epic-sized nga hulagway sa advertising ubos sa cut.
Epiko nga hulagway

I. GraphQL para sa RDF access
nga ang GraphQL nagtinguha nga mahimong unibersal nga database access nga pinulongan. Unsa man ang bahin sa abilidad sa pag-access sa RDF gamit ang GraphQL?
Gawas sa kahon kini nga oportunidad gihatag pinaagi sa:
- Stardog (, );
- TopQuadrant nga mga produkto (, ).
Kung ang repository wala maghatag sa ingon nga oportunidad, mahimo kini nga ipatuman nga independente pinaagi sa pagsulat sa usa ka angay nga "resolver". Kini ang ilang gibuhat, pananglitan, sa proyekto sa Pransya . O dili ka na makasulat bisan unsa, apan pagkuha na lang .
Gikan sa punto sa panglantaw sa usa ka orthodox adherent sa Semantic Web ug Linked Data, kining tanan, siyempre, makapasubo, tungod kay kini daw gidisenyo alang sa mga panagsama nga gitukod sa palibot sa sunod nga data silo, ug dili angay nga mga plataporma (RDF tindahan, siyempre) .
Ang mga impresyon gikan sa pagtandi sa GraphQL sa SPARQL duha ka pilo.
- Sa usa ka bahin, ang GraphQL morag usa ka layo nga paryente sa SPARQL: kini nagsulbad sa mga problema sa resampling ug multiplicity sa mga pangutana nga kasagaran alang sa REST - kung wala kini, tingali, dili posible nga ikonsiderar. pangutana nga pinulongan, labing menos alang sa web;
- Sa laing bahin, ang estrikto nga schema sa GraphQL makapahigawad. Tungod niini, ang "introspectiveness" niini daw limitado kaayo kon itandi sa hingpit nga reflexivity sa RDF. Ug wala'y analogue sa mga agianan sa kabtangan, mao nga dili kaayo klaro kung ngano nga kini "Graph-".
II. Mga adaptor alang sa MongoDB
Usa ka uso nga komplementaryo sa nauna.
- sa Stardog karon - sa partikular, tanan sa parehas nga GraphQL - i-configure ang pagmapa sa datos sa MongoDB ngadto sa virtual nga RDF graphs;
- Ang GraphDB bag-o lang isulod ang mga tipik sa SPARQL sa MongoDB Query.
Kung maghisgot kita og mas lapad mahitungod sa mga adapter sa JSON nga mga tinubdan, nga nagtugot sa mas daghan o dili kaayo "on the fly" nga magrepresentar sa JSON nga gitipigan niini nga mga tinubdan isip RDF, atong mahinumduman ang dugay na. , nga mahimong i-adjust, , ngadto sa Apache Jena.
Ang pag-summarize sa unang duha ka mga uso, makaingon kita nga ang mga storage sa RDF nagpakita sa hingpit nga kaandam alang sa paghiusa ug operasyon sa mga kondisyon sa "pagpadayon sa polyglot". Nahibal-an, bisan pa, nga kini nga ulahi dugay na nga wala sa uso, ug gipulihan sa multi-modelo. Unsa man ang bahin sa multi-modeling sa kalibutan sa pagtipig sa RDF?
Sa laktod, dili. Gusto nakong ipahinungod ang usa ka bulag nga artikulo sa hilisgutan sa mga multi-modelo nga DBMS, apan sa pagkakaron matikdan nga sa pagkakaron walay mga multi-modelo nga DBMS nga "base" sa usa ka modelo sa graph (RDF mahimong isipon nga usa ka matang niini) . Pipila ka gagmay nga multi-modeling - RDF storage support alang sa alternatibong LPG graph model - hisgotan sa .
III. OLTP vs. OLAP
Bisan pa, ang parehas nga Gartner kana nga multimodel kay usa ka sine qua non nga kondisyon para sa operating room DBMS. Kini masabtan: sa usa ka sitwasyon sa "multivariate storage", ang mga nag-unang problema mitungha sa transactionality.
Apan asa nahimutang ang mga storage sa RDF sa OLTP-OLAP scale? Ako motubag niining paagiha: bisan didto ni dinhi. Aron ipakita kung unsa ang katuyoan niini, gikinahanglan ang usa ka ikatulo nga minubo. Isip usa ka kapilian akong isugyot OLIP — Online nga Intelektwal nga Pagproseso.
Bisan pa, sa gihapon:
- ang mga mekanismo sa panagsama sa MongoDB nga gipatuman sa GraphDB dili labing gamay sa pagtrabaho sa palibot sa pagsulat sa mga isyu sa performance;
- Ang Stardog nagpadayon pa ug hingpit engine, pag-usab uban sa tumong sa pagpalambo sa recording performance.
Karon tuguti ako nga ipaila ang usa ka bag-ong magdudula sa merkado. gikan sa mga tiglalang sa IBM Netezza ug Amazon Redshift - . Usa ka hulagway gikan sa usa ka advertisement alang sa usa ka produkto nga gibase niini gi-post sa sinugdanan sa artikulo. Gipahimutang sa AnzoGraph ang kaugalingon isip solusyon sa GOLAP. Giunsa nimo gusto ang SPARQL nga adunay mga function sa bintana? —
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }IV. RocksDB
Mas taas na sa pag-anunsyo sa Stardog 7 Beta, nga nag-ingon nga ang Stardog mogamit sa RocksDB ingon usa ka sukaranan nga sistema sa pagtipig - usa ka tindahan nga hinungdanon nga kantidad, usa ka tinidor sa Facebook sa LevelDB sa Google. Ngano nga takus ang paghisgot bahin sa usa ka us aka uso?
Una, sa paghukom pinaagi sa , dili lamang mga storage sa RDF ang "gibalhin" ngadto sa RocksDB. Adunay mga proyekto nga gamiton ang RocksDB isip storage engine sa ArangoDB, MongoDB, MySQL ug MariaDB, Cassandra.
Ikaduha, ang mga proyekto (nga mao, dili mga produkto) sa may kalabutan nga mga hilisgutan gihimo sa RocksDB.
Pananglitan, ang eBay naggamit sa RocksDB sa para sa imong "knowledge graph". By the way, kataw-anan basahon: ang pangutana nga lengguwahe nagsugod isip usa ka home grown nga format, apan bag-o lang kini nag-transition nga mas sama sa SPARQL. Sama sa komedya: bisag unsa pa ka daghan sa kahibalo nga graph ang atong gihimo, kita gihapon ang mahuman sa RDF.
Laing pananglitan - usa nga nagpakita pipila ka bulan ang milabay . Sa wala pa ang pagpaila niini, ang kasayuran sa kasaysayan sa Wikidata kinahanglan nga ma-access pinaagi sa ngadto sa standard Mediawiki API. Karon daghan ang posible sa puro nga SPARQL. "Ubos sa hood" adunay usab RocksDB. Pinaagi sa dalan, ang WDHQS gihimo, ingon og, sa tawo nga nag-import sa Freebase sa Google Knowledge Graph.
V. LPG nga suporta
Tugoti ako nga pahinumdoman ka sa nag-unang kalainan tali sa LPG graphs ug RDF graphs.
Sa LPG, ang mga propyedad sa scalar mahimong ma-assign sa mga edge instances, samtang sa RDF mahimo ra silang i-assign sa mga "types" sa ngilit (apan dili lamang mga scalar properties, kondili mga ordinaryo usab nga koneksyon). Kini nga limitasyon sa RDF kumpara sa LPG usa o lain nga teknik sa pagmodelo. Ang mga limitasyon sa LPG kumpara sa RDF mas lisud buntogon, apan ang LPG graphs mas sama sa mga hulagway gikan sa Harari textbook kay sa RDF graphs, mao nga gusto kini sa mga tawo.
Dayag nga, ang tahas sa "suporta sa LPG" nahulog sa duha ka bahin:
- paghimo og mga pagbag-o sa modelo sa RDF nga nagpaposible sa pagsundog sa mga istruktura sa LPG niini;
- paghimo og mga pagbag-o sa RDF query language nga nagpaposible sa pag-access sa datos niining giusab nga modelo, o pagpatuman sa abilidad sa paghimo og mga pangutana niini nga modelo sa popular nga LPG nga pangutana nga mga pinulongan.
V.1. Modelo sa datos
Adunay daghang posible nga mga pamaagi dinhi.
V.1.1. Singleton Property
Ang labing literal nga pamaagi sa pagharmonya sa RDF ug LPG mao tingali :
- Imbes, pananglitan, ang predicate
:isMarriedTogigamit ang mga predicate:isMarriedTo1,:isMarriedTo2i t. d. - Kini nga mga predicate mahimong mga hilisgutan sa bag-ong triplets:
:isMarriedTo1 :since "2013-09-13"^^xsd:dateug uban pa. - Ang koneksyon niini nga mga higayon sa mga predicate sa usa ka komon nga predicate gitukod pinaagi sa triplets sa porma
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - Dayag nga,
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, apan hunahunaa kon nganong dili ka na lang magsulat:isMarriedTo1 rdf:type :isMarriedTo.
Ang problema sa "LPG support" nasulbad dinhi sa lebel sa RDFS. Ang ingon nga desisyon nanginahanglan paglakip sa angay . Ang pipila ka mga pagbag-o mahimong gikinahanglan alang sa mga tindahan sa RDF nga nagsuporta sa paglakip sa mga sangputanan, apan sa pagkakaron, ang Singleton Property mahimong isipon nga usa lamang ka pamaagi sa pagmodelo.
V.1.2. Ang Pagbag-o Gibuhat sa Husto
Ang dili kaayo walay kapuslanan nga mga pamaagi naggikan sa pagkaamgo nga ang mga instances sa propyedad hingpit nga dali nga madala sa triplets. Pinaagi sa pagsulti og usa ka butang mahitungod sa triplets, kita makahimo sa paghisgot mahitungod sa mga panghitabo sa kabtangan.
Ang labing lig-on niini nga mga pamaagi mao ang , aka RDR, sa kahiladman sa Blazegraph. Gikan pa sa sinugdanan para sa imong kaugalingon ug sa AnzoGraph. Ang kalig-on sa pamaagi gitino sa kamatuoran nga sulod sa gambalay niini katugbang nga mga pagbag-o sa . Ang punto, bisan pa, yano ra kaayo. Sa Turtle serialization sa RDF mahimo nimong isulat ang usa ka butang nga sama niini:
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .V.1.3. Ubang mga pamaagi
Dili ka makahasol sa pormal nga mga semantiko, apan ibutang lang nga ang mga triplet adunay piho nga mga identifier, nga, siyempre, mga URI, ug paghimo og bag-ong mga triplet uban niini nga mga URI. Ang nahabilin mao ang paghatag ug akses sa kini nga mga URI sa SPARQL. Busa Stardog.
Sa Allegrograph sa intermediate nga paagi. Nahibal-an nga ang triplet identifier sa Allegrograph , apan kung nag-implementar sa triple attributes dili sila magpabilin. Bisan pa, layo pa kaayo kini sa pormal nga semantika. Mamatikdan nga ang triplet nga mga hiyas dili mga URI, ug ang mga kantidad niini nga mga hiyas mahimo usab nga literal. Ang LPG adherents makakuha gayud sa ilang gusto. Sa espesyal nga naimbento nga NQX format, ang usa ka pananglitan nga susama sa usa sa ibabaw para sa RDF* ingon niini:
:bob :marriedTo :alice {"since" : "2013-09-13"}V.2. Pangutana nga mga pinulongan
Ang pagsuporta sa LPG sa usa ka paagi o lain sa lebel sa modelo, kinahanglan nimo nga himuon nga posible ang paghimo og mga pangutana sa datos sa ingon nga modelo.
- Blazegraph para sa RDF* nga mga pangutana nagsuporta и . Ang usa ka pangutana sa SPARQL* ingon niini:
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }- Ang Anzograph nagsuporta usab ug musuporta , usa ka pangutana nga pinulongan sa Neo4j.
- Gisuportahan sa Stardog ang iyang kaugalingon SPARQL ug Gremlin. Makuha nimo ang triplet URI ug "meta-information" sa SPARQL gamit ang usa ka butang nga sama niini:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Gisuportahan usab sa Allegrograph ang kaugalingon niini SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }Pinaagi sa dalan, ang GraphDB sa usa ka higayon misuporta sa Tinkerpop/Gremlin nga walay pagsuporta sa LPG, apan kini mihunong sa bersyon 8.0 o 8.1.
VI. Paghugot sa mga lisensya
Wala'y bag-o nga mga pagdugang sa intersection sa "triplestore of choice" ug "open source triplestore" sets. Ang bag-ong open source nga mga tindahan sa RDF layo pa sa pagka maayong pagpili alang sa adlaw-adlaw nga paggamit, ug ang bag-ong mga tindahan sa RDF nga gusto nakong gamiton (sama sa AnzoGraph) kay sirado nga tinubdan. Hinuon, mahimo pa naton hisgutan ang bahin sa pagkunhod ...
Siyempre, ang open source wala pa gisirhan kaniadto, apan ang pipila ka open source nga mga repository hinay-hinay nga wala na makita nga angayan nga pilion. Ang Virtuoso, nga adunay usa ka opensource nga edisyon, sa akong opinyon, nalumos sa mga bug. Ang Blazegraph gipalit sa AWS ug nahimong basehan sa Amazon Neptune; karon dili klaro kung adunay bisan usa pa nga pagpagawas. Si Jena na lang ang nahabilin...
Kung ang bukas nga gigikanan dili kaayo hinungdanon, apan gusto nimo nga sulayan kini, nan ang tanan dili kaayo rosy kaysa kaniadto. Pananglitan:
- Stardog iapud-apod ang libre nga bersyon (bisan pa, ang panahon sa pagsulay sa regular nga bersyon nadoble);
- в , diin kaniadto makapili ka ug libre nga batakang plano, gisuspinde ang mga bag-ong rehistrasyon sa tiggamit.
Sa kinatibuk-an, alang sa kasagaran nga tawo sa IT, ang wanang nahimong labi nga dili ma-access; ang pag-uswag niini nahimong daghang mga korporasyon.
Source: www.habr.com
