Ua like ka Pūnaewele Semantic a me ka ʻIkepili Linked me ka lewa waho: ʻaʻohe ola ma laila. No ka hele ʻana i laila no kekahi manawa lōʻihi ... ʻaʻole au i ʻike i ka mea a lākou i ʻōlelo ai iā ʻoe i kou wā kamaliʻi i kāu ʻōlelo ʻana, "Makemake au e lilo i astronaut." Akā hiki iā ʻoe ke nānā i nā mea e hana nei mai ka Honua; ʻoi aku ka maʻalahi o ka lilo ʻana i mea akamai a i ʻole he mea kilo hōkū ʻoihana.
E kūkākūkā kēia ʻatikala i nā ʻano hou i ka honua o ka mālama ʻana i nā RDF, ʻaʻole i ʻoi aku ma mua o kekahi mau mahina. Ua hoʻoulu ʻia ka hoʻohālikelike ma ka paukū mua e ke kiʻi hoʻolaha nui ma lalo o ka ʻoki.
Kiʻi epic

I. GraphQL no ka loaʻa ʻana o RDF
ʻO ia ka manaʻo o GraphQL e lilo i ʻōlelo ʻike ʻikepili āpau. Pehea e pili ana i ka hiki ke komo i ka RDF me ka hoʻohana ʻana iā GraphQL?
Ma waho o ka pahu hāʻawi ʻia kēia manawa e:
- ʻīlio hōkū (, );
- Nā huahana TopQuadrant (, ).
Inā ʻaʻole hāʻawi ka waihona i kahi manawa kūpono, hiki ke hoʻokō kūʻokoʻa ma ke kākau ʻana i kahi "hoʻoponopono" kūpono. ʻO kēia ka mea a lākou i hana ai, no ka laʻana, i ka papahana Farani . A i ʻole hiki iā ʻoe ke kākau hou i kekahi mea, akā lawe wale .
Mai ka manaʻo o ka orthodox adherent o ka Semantic Web and Linked Data, he mea kaumaha kēia mau mea a pau, no ka mea, ua manaʻo ʻia no ka hoʻohui ʻana i kūkulu ʻia a puni ka silo data aʻe, a ʻaʻole kūpono nā paepae (nā hale kūʻai RDF, ʻoiaʻiʻo) .
ʻElua mau manaʻo mai ka hoʻohālikelike ʻana iā GraphQL me SPARQL.
- Ma kekahi ʻaoʻao, ua like ʻo GraphQL me kahi ʻohana mamao o SPARQL: hoʻonā i nā pilikia o ka resampling a me ka nui o nā nīnau maʻamau no REST - me ka ʻole, ʻaʻole hiki ke noʻonoʻo. ʻōlelo nīnau, ma ka liʻiliʻi loa no ka pūnaewele;
- Ma ka ʻaoʻao ʻē aʻe, ʻo ka schema koʻikoʻi o GraphQL he mea hōʻeha. No laila, ʻo kona "introspectiveness" he mea liʻiliʻi loa ia i hoʻohālikelike ʻia i ka reflexivity piha o RDF. A ʻaʻohe mea hoʻohālikelike o nā ala waiwai, no laila ʻaʻole maopopo loa ke kumu o "Graph-".
II. Nā mea hoʻopili no MongoDB
He ʻano hoʻohui i ka mua.
- ma Stardog i kēia manawa - ʻo ia hoʻi, nā mea āpau ma ka GraphQL hoʻokahi - hoʻonohonoho i ka palapala ʻana o ka ʻikepili MongoDB i loko o nā kiʻi RDF virtual;
- ʻO GraphDB i hala koke aku nei e hoʻokomo i nā ʻāpana i SPARQL ma MongoDB Query.
Inā mākou e kamaʻilio ākea e pili ana i nā mea hoʻololi i nā kumu JSON, e ʻae ai i ka nui a i ʻole ka liʻiliʻi "ma ka lele" e hōʻike i ka JSON i mālama ʻia i kēia mau kumu e like me RDF, hiki iā mākou ke hoʻomanaʻo i ka lōʻihi loa. , hiki ke hoʻololi ʻia, , iā Apache Jena.
I ka hōʻuluʻulu ʻana i nā ʻano mua ʻelua, hiki iā mākou ke ʻōlelo e hōʻike ana nā waihona RDF i ka mākaukau piha no ka hoʻohui ʻana a me ka hana i nā kūlana o ka "polyglot persistence". Ua ʻike ʻia naʻe, ua lōʻihi ka hele ʻana o kēia hope, a ke pani ʻia nei e hoʻohālike nui. Pehea e pili ana i ka multi-modeling i ka honua o ka waihona RDF?
I ka pōkole, ʻaʻohe ala. Makemake wau e hoʻolaʻa i kahi ʻatikala ʻokoʻa i ke kumuhana o nā DBMS multi-model, akā i kēia manawa hiki ke hoʻomaopopo ʻia ʻaʻohe DBMSs multi-model "hoʻokumu ʻia" ma kahi kiʻi kiʻi (hiki ke manaʻo ʻia ʻo RDF he ʻano ia) . ʻO kekahi mau hiʻohiʻona liʻiliʻi - kākoʻo mālama RDF no kahi kumu hoʻohālike LPG ʻē aʻe - e kūkākūkā ʻia ma .
III. OLTP vs. OLAP
Eia naʻe, ʻo ia ka Gartner ʻO kēlā multimodel he kūlana sine qua non ma mua lumi hana DBMS. Hiki ke hoʻomaopopo ʻia kēia: ma ke ʻano o "mālama multivariate", e kū mai nā pilikia nui me ka transactionality.
Aia ma hea nā waihona RDF ma ka pālākiō OLTP-OLAP? Penei ka'u e olelo aku ai: aole malaila aole hoi maanei. No ka hōʻike ʻana i ka mea i manaʻo ʻia, pono ke kolu o ka pōkole. Ma ke ʻano he koho e manaʻo wau OLIP — Ka Hoʻoponopono Naʻauao Online.
Eia naʻe, ʻoiai:
- ʻaʻole liʻiliʻi nā mīkini hoʻohui me MongoDB i hoʻokō ʻia ma GraphDB e hana a kākau i nā pilikia hana;
- ʻO ka Stardog ke hele nei a ʻoi loa engine, hou me ka pahu hopu e hoʻomaikaʻi i ka hoʻopaʻa 'oihana.
I kēia manawa, e ʻae mai iaʻu e hoʻolauna i kahi mea pāʻani hou ma ka mākeke. Mai nā mea hana o IBM Netezza lāua ʻo Amazon Redshift — . Ua paʻi ʻia kahi kiʻi mai kahi hoʻolaha no kahi huahana i hoʻokumu ʻia ma ka hoʻomaka o ka ʻatikala. Hoʻonoho ʻo AnzoGraph iā ia iho ma ke ʻano he hopena GOLAP. Pehea kou makemake iā SPARQL me nā hana pukaaniani? —
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }IV. RocksDB
Ua kiʻekiʻe i ka hoʻolaha ʻana o Stardog 7 Beta, ka mea i ʻōlelo e hoʻohana ʻo Stardog iā RocksDB ma ke ʻano he ʻōnaehana mālama kumu - kahi hale kūʻai waiwai nui, kahi Facebook fork o Google's LevelDB. No ke aha e pono ai ke kamaʻilio e pili ana i kekahi ʻano?
ʻO ka mea mua, e hoʻokolokolo ana , ʻaʻole wale nā waihona RDF i "hoʻololi" i RocksDB. Aia nā papahana e hoʻohana iā RocksDB ma ke ʻano he mīkini mālama ma ArangoDB, MongoDB, MySQL a me MariaDB, Cassandra.
ʻO ka lua, hana ʻia nā papahana (ʻo ia hoʻi, ʻaʻole nā huahana) ma nā kumuhana kūpono ma RocksDB.
No ka laʻana, hoʻohana ʻo eBay iā RocksDB ma no kāu "papakau ʻike". Ma ke ala, he ʻakaʻaka ke heluhelu: Ua hoʻomaka ka ʻōlelo noiʻi ma ke ʻano he ʻano ulu home, akā i kēia manawa ua hoʻololi ʻia e like me SPARQL. E like me ka hoʻohenehene: ʻaʻole pili i ka nui o ka ʻike kiʻi a mākou e hana ai, hoʻopau mākou me RDF.
ʻO kekahi laʻana - kahi i ʻike ʻia i kekahi mau mahina i hala . Ma mua o kona hoʻokomo ʻia ʻana, pono e ʻike ʻia ka ʻike mōʻaukala Wikidata ma o i ka API Mediawiki maʻamau. Hiki i kēia manawa me ka SPARQL maʻemaʻe. "Ma lalo o ka puʻu" aia kekahi RocksDB. Ma ke ala, ua hana ʻia ʻo WDHQS, me he mea lā, e ka mea nāna i lawe mai iā Freebase i ka Google Knowledge Graph.
Kākoʻo V. LPG
E hoʻomanaʻo wau iā ʻoe i ka ʻokoʻa nui ma waena o nā kiʻi LPG a me nā kiʻi RDF.
I ka LPG, hiki ke hoʻolilo ʻia nā waiwai scalar i nā hiʻohiʻona edge, ʻoiai i ka RDF hiki ke hāʻawi ʻia i nā "ʻano" lihi (akā ʻaʻole wale nā waiwai scalar, akā i nā pilina maʻamau). ʻO kēia palena o RDF i hoʻohālikelike ʻia me LPG kekahi ʻano hana hoʻohālike. ʻOi aku ka paʻakikī o nā palena o LPG i hoʻohālikelike ʻia me RDF, akā ʻoi aku ka like o nā kiʻi LPG e like me nā kiʻi mai kahi puke Harari ma mua o nā kiʻi RDF, ʻo ia ke kumu e makemake ai nā kānaka iā lākou.
ʻIke loa, hāʻule ka hana o ka "LPG support" i ʻelua ʻāpana:
- hana i nā hoʻololi i ke kumu hoʻohālike RDF e hiki ai ke hoʻohālikelike i nā hale LPG i loko;
- hana i nā hoʻololi i ka ʻōlelo nīnau RDF e hiki ai ke komo i ka ʻikepili i kēia ʻano hoʻohālike i hoʻololi ʻia, a i ʻole ka hoʻokō ʻana i ka hiki ke hana i nā nīnau i kēia kumu hoʻohālike ma nā ʻōlelo hulina LPG kaulana.
V.1. Kükohu ikepili
Aia kekahi mau ala e hiki ai ma aneʻi.
V.1.1. Waiwai Singleton
ʻO ke ala pololei loa i ka hoʻohui ʻana iā RDF a me LPG paha :
- Ma kahi o, no ka laʻana, ka predicate
:isMarriedTohoʻohana ʻia nā predicates:isMarriedTo1,:isMarriedTo2a pēlā aku nō. - A laila lilo kēia mau predicates i mau kumuhana o nā triplets hou:
:isMarriedTo1 :since "2013-09-13"^^xsd:datea me kekahi poʻe'ē aʻe. - Hoʻokumu ʻia ka pilina o kēia mau manawa o nā predicates me kahi predicate maʻamau e nā triplets o ke ʻano
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - ʻIke pololei
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, akā e noʻonoʻo i ke kumu ʻaʻole pono ʻoe e kākau wale:isMarriedTo1 rdf:type :isMarriedTo.
Hoʻoholo ʻia ka pilikia o ka "LPG support" ma ka pae RDFS. Pono ia hoʻoholo e hoʻokomo i ka mea kūpono . Pono paha kekahi mau hoʻololi no nā hale kūʻai RDF e kākoʻo ana i ka hoʻopili ʻana i nā hopena, akā i kēia manawa, hiki ke noʻonoʻo ʻia ʻo Singleton Property he ʻano hana hoʻohālike ʻē aʻe.
V.1.2. Hana Pono
Loaʻa nā ʻano hoʻokokoke liʻiliʻi ma muli o ka ʻike ʻana e hiki ke hoʻokō koke ʻia nā mea waiwai e nā triplets. Ma ka hiki iā mākou ke ʻōlelo e pili ana i nā triplets, hiki iā mākou ke kamaʻilio e pili ana i nā hiʻohiʻona waiwai.
ʻO ka ʻoi aku ka ikaika o kēia mau ala , aka RDR, i ka hohonu o Blazegraph. Mai kinohi mai nou iho a me AnzoGraph. Hoʻoholo ʻia ka paʻa o ke ala e ka ʻoiaʻiʻo i loko o kāna ʻano nā hoʻololi kūpono i . ʻO ka manaʻo, akā, maʻalahi loa. Ma Turtle serialization o RDF hiki iā ʻoe ke kākau i kahi mea e like me kēia:
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .V.1.3. ʻO nā ala ʻē aʻe
ʻAʻole hiki iā ʻoe ke hoʻoluhi i nā semantics maʻamau, akā e manaʻo wale ʻia he mau mea hōʻailona ko nā triplets, ʻo ia hoʻi, nā URI, a hana i nā triplets hou me kēia mau URI. ʻO nā mea i koe e hāʻawi i ke komo i kēia mau URI ma SPARQL. No laila ʻīlio hōkū.
Ma Allegrograph ma ke ala waena. Ua ʻike ʻia ʻo nā mea ʻike triplet ma Allegrograph , akā i ka hoʻokō ʻana i nā ʻano ʻekolu ʻaʻole lākou e kū i waho. Eia nō naʻe, mamao loa ia mai nā semantics maʻamau. He mea nui ia ʻaʻole URI nā ʻano triplet, a ʻo nā waiwai o kēia mau hiʻohiʻona hiki ke lilo i literals wale nō. Loaʻa ka poʻe kākoʻo LPG i kā lākou makemake. Ma ka hōʻano NQX i hana kūikawā ʻia, he ʻano like me ka mea ma luna no RDF* e like me kēia:
:bob :marriedTo :alice {"since" : "2013-09-13"}V.2. Nīnau ʻōlelo
No ke kākoʻo ʻana i ka LPG ma kekahi ʻano a i ʻole ma ka pae hoʻohālike, pono ʻoe e hana i nā nīnau e pili ana i ka ʻikepili ma ia ʻano hoʻohālike.
- Kākoʻo ʻo Blazegraph no nā nīnau nīnau RDF* и . He nīnau SPARQL* penei:
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }- Kākoʻo pū ʻo Anzograph a e kokua ana , he ʻōlelo nīnau ma Neo4j.
- Kākoʻo ʻo Stardog iā ia iho SPARQL a me Gremlin. Hiki iā ʻoe ke kiʻi i ka triplet URI a me ka "meta-information" ma SPARQL me ka hoʻohana ʻana i kahi mea e like me kēia:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Kākoʻo ʻo Allegrograph iā ia iho SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }Ma ke ala, ua kākoʻo ʻo GraphDB i kekahi manawa iā Tinkerpop/Gremlin me ke kākoʻo ʻole ʻana i ka LPG, akā ua pau kēia i ka mana 8.0 a i ʻole 8.1.
VI. Hoʻopaʻa laikini
ʻAʻohe mea i hoʻohui hou ʻia i ka hui ʻana o nā "triplestore of choice" a me nā "open source triplestore". ʻAʻole mamao loa nā hale kūʻai ʻikepili RDF open-source hou mai ka lilo ʻana i koho kūpono no ka hoʻohana ʻana i kēlā me kēia lā, a ua pani ʻia ke code kumu no nā hale kūʻai ʻikepili RDF hou a mākou e makemake ai e hoʻohana (e like me AnzoGraph). ʻOi aku ka likelika ua loaʻa kekahi mau hōʻemi...
ʻOiaʻiʻo, ʻaʻole i pani ʻia ka open source i ka wā ma mua, akā ʻaʻole i ʻike ʻia kekahi mau waihona waihona open source i mea kūpono ke koho. ʻO Virtuoso, nona kahi paʻi opensource, i koʻu manaʻo, e luʻu ana i nā pōpoki. Ua kūʻai ʻia ʻo Blazegraph e AWS a ua hoʻokumu ʻia ke kumu o Amazon Neptune; i kēia manawa ʻaʻole maopopo inā e hoʻokuʻu hou ʻia ma kahi liʻiliʻi. ʻO Jena wale nō i koe ...
Inā ʻaʻole koʻikoʻi nui ka open source, akā makemake ʻoe e hoʻāʻo, a laila ʻoi aku ka liʻiliʻi o nā mea āpau ma mua. ʻo kahi laʻana:
- ʻīlio hōkū e hāʻawi i ka mana manuahi (eia naʻe, ua pālua ka manawa hoʻokolokolo o ka mana maʻamau);
- в , kahi i hiki ai iā ʻoe ke koho mua i kahi hoʻolālā kumu manuahi, ua hoʻōki i nā hoʻopaʻa inoa mea hoʻohana hou.
Ma keʻano laulā, no ka maʻamau IT kanaka, ua lilo ka hakahaka i mea hiki ʻole ke loaʻa; ua lilo kona hoʻomohala ʻana i ka nui o nā hui.
Source: www.habr.com
