He aha ka hana me ka waihona RDF i kēia mau lā?

Ua like ka Semantic Web a me Linked Data i waho: ʻaʻohe ola ma laila. No ka hele ʻana i laila no kahi manawa lōʻihi a liʻiliʻi paha ... ʻAʻole maopopo iaʻu ka mea a lākou i haʻi ai iā ʻoe i ko lākou wā kamaliʻi e pane ana i ka "makemake wau e lilo i astronaut." Akā hiki iā ʻoe ke nānā i nā mea e hana nei ma ka Honua; ʻOi aku ka maʻalahi o ka lilo ʻana i astronomer amateur a i ʻole ʻoihana.

E nānā ka ʻatikala i nā mea hou, ʻaʻole i ʻoi aku ma mua o kekahi mau mahina, nā ʻano mai ka honua o ka mālama RDF. Hoʻoulu ʻia ka metaphor ma ka paukū mua e ke kiʻi hoʻolaha epic-sized ma lalo o ka ʻoki.


Kiʻi epic

He aha ka hana me ka waihona RDF i kēia mau lā?

I. GraphQL no ka loaʻa ʻana o RDF

ʻLelo lākouʻ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:

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 DataTourisme. A i ʻole hiki iā ʻoe ke kākau hou i kekahi mea, akā lawe wale HyperGraphQL.

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 hiki paha - ʻ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 Ontotext GraphDB i hala iho nei Ua apono 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. Hanana SPARQL, hiki ke hoʻololi ʻia, Eia kekahi lā, 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 e hele mai ana 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 pauku V.

III. OLTP vs. OLAP

Eia naʻe, ʻo ia ka Gartner He kākauʻ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 manaoia e hana a kākau i nā pilikia hana;
  • ʻO ka Stardog ke hele nei a ʻoi loa kākau hou engine, hou me ka pahu hopu e hoʻomaikaʻi i ka hoʻopaʻa 'oihana.

I kēia manawa e hoʻolauna wau i kahi mea pāʻani hou i ka mākeke. Mai nā mea hana o IBM Netezza a me Amazon Redshift - AnzoGraph™. 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 he loulou 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 ʻatikala Wikipedia, ʻ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 kahua hoʻonani 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 Wikidata History Query Service. Ma mua o kona hoʻokomo ʻia ʻana, pono e ʻike ʻia ka ʻike mōʻaukala Wikidata ma o MWAPI 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 lanakila 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:

  1. 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;
  2. 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 waiwai hoʻokahi:

  • Ma kahi o, no ka laʻana, ka predicate :isMarriedTo hoʻohana ʻia nā predicates :isMarriedTo1, :isMarriedTo2 a pēlā aku nō.
  • A laila lilo kēia mau predicates i mau kumuhana o nā triplets hou: :isMarriedTo1 :since "2013-09-13"^^xsd:date a 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 kūlana. 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 RDF*, aka RDR, hānau ʻia i ka hohonu o Blazegraph. Mai kinohi mai koho ʻia 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 hāʻawi ʻia nā hoʻololi kūpono i RDF Semantics. ʻ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 hiki mai ʻīlio hōkū.

Ma Allegrograph hele ma ke ala waena. Ua ʻike ʻia ʻo nā mea ʻike triplet ma Allegrograph ka mea, 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* SPARQL* и ʻO Gremlin. He nīnau SPARQL* penei:

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

  • Kākoʻo pū ʻo Anzograph SPARQL* a e kokua ana ʻĀpopo, he ʻōlelo nīnau ma Neo4j.
  • Kākoʻo ʻo Stardog iā ia iho hoʻonui SPARQL a me hou 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 hoʻonui 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 hou i hoʻohui ʻia i ka hui ʻana o ka "triplestore of choice" a me "open source triplestore" sets. ʻO nā hale kūʻai RDF hou wehe ʻia he ala lōʻihi mai ka lilo ʻana i koho maikaʻi no ka hoʻohana ʻana i kēlā me kēia lā, a ʻo nā hale kūʻai triple hou aʻu e makemake ai e hoʻohana (e like me AnzoGraph) he kumu paʻa. Akā, hiki iā mākou ke kamaʻilio e pili ana i ka emi ʻana ...

ʻ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);
  • в Kapua GraphDB, kahi i hiki ai iā ʻoe ke koho i kahi hoʻolālā kumu manuahi, ua hoʻopaʻa inoa ʻia nā 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

Pākuʻi i ka manaʻo hoʻopuka