ã»ãã³ãã£ã㯠Web ãšãªã³ã¯ã ããŒã¿ã¯å®å®ç©ºéã®ãããªãã®ã§ãããã«ã¯çåœã¯ååšããŸããã å€ããå°ãªããé·æçã«ããã«è¡ãããšâŠåäŸã®é ããå®å®é£è¡å£«ã«ãªãããããšããèšèã«äœãšçãããã¯åãããŸããã ããããå°çäžã«ããéãäœãèµ·ãã£ãŠããããèŠãããšãã§ããŸãã ã¢ããã¥ã¢å€©æåŠè ã«ãªãããšããããã¯ããã«ãªãããšããã¯ããã«ç°¡åã§ãã
ãã®èšäºã§ã¯ãæ°ãæ以å ã® RDF ã¹ãã¬ãŒãžã®äžçã®ææ°ã®ãã¬ã³ãã«çŠç¹ãåœãŠãŸãã æåã®æ®µèœã®æ¯å©ã¯ãã«ããã®äžã«ãã壮倧ãªããã¢ãŒã·ã§ã³ç»åããã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãŠããŸãã
I. RDF ã¢ã¯ã»ã¹ã®ããã® GraphQL
ããã«äœ¿ãããã®æ©äŒã¯ã以äžã«ãã£ãŠæäŸãããŸãã
- ã¹ã¿ãŒããã°(
ããã° ,ããã¥ã¡ã³ã ); - ãããã¯ã¢ãã©ã³ã補å (
ãŠã§ãã㌠,ããã¥ã¡ã³ã ).
ãªããžããªããã®ãããªæ©äŒãæäŸããªãå Žåã¯ãé©åãªããªãŸã«ããŒãïŒãªãŸã«ããŒïŒãäœæããããšã«ãã£ãŠç¬ç«ããŠå®è£
ãããŸãã ããã¯ãããšãã°ãã©ã³ã¹ã®ãããžã§ã¯ãã§è¡ãããŸããã
ã»ãã³ãã£ã㯠Web ãšãªã³ã¯ã ããŒã¿ã®æ£çµ±æŽŸä¿¡å¥è ã®èŠ³ç¹ãããããšãããã¯ãã¹ãŠæ²ããããšã§ãããªããªããããã¯æ¬¡ã®ããŒã¿ ãµã€ããäžå¿ã«æ§ç¯ãããçµ±åãç®çãšããŠããããã«èŠããé©åãªãã©ãããã©ãŒã (ãã¡ãã RDF ã¹ãã¬ãŒãž) ã§ã¯ãªãããã§ãã ã
GraphQL ãš SPARQL ãæ¯èŒããææ³ã¯ XNUMX ã€ãããŸãã
- äžæ¹ã§ãGraphQL 㯠SPARQL ã®é ã芪æã®ããã«èŠããŸããã€ãŸããREST ã«ããããåéžæãšè€æ°ã®ã¯ãšãªã®åé¡ã解決ããŸããããããªããã°ããããããSPARQL ãèæ ®ããããšã¯äžå¯èœã§ãããã ã¯ãšãªèšèªå°ãªããšããŠã§ãã«é¢ããŠã¯ã
- äžæ¹ã§ãGraphQL ã®å³æ Œãªã¹ããŒã ã¯æ··ä¹±ãæããŸãã ãããã£ãŠããã®ãå çæ§ãã¯ãRDF ã®å®å šãªååž°æ§ã«æ¯ã¹ãŠéåžžã«éå®ãããŠããããã«èŠããŸãã ãŸãããããã㣠ãã¹ã«çžåœãããã®ã¯ãªãããããªããGraph-ããªã®ãããæ確ã§ã¯ãããŸããã
II. MongoDB çšã¢ããã¿ãŒ
åã®ãã¬ã³ããè£å®ãããã¬ã³ãã
- ä»ã¯ã¹ã¿ãŒããã°ã§
å€å - ç¹ã«ããã¹ãŠåã GraphQL äžã§ - MongoDB ããŒã¿ã®ä»®æ³ RDF ã°ã©ããžã®è¡šç€ºãæ§æããŸãã - æè¿Ontotext GraphDB
èš±å¯ãã MongoDB Query ã® SPARQL ãã©ã°ã¡ã³ãã«æ¿å ¥ããŸãã
ããåºãèšãã°ããããã®ãœãŒã¹ã«ä¿åãããŠãã JSON ã RDF ãšããŠè¡šçŸããããšãå€ããå°ãªããããªã³ã¶ãã©ã€ãã§å¯èœã«ãã JSON ãœãŒã¹ãžã®ã¢ããã¿ãŒã«ã€ããŠèšãã°ãããªãé·ãéæ¢åã®ãã®ãæãåºãããšãã§ããŸãã
æåã® XNUMX ã€ã®åŸåãèŠçŽãããšãRDF ãªããžããªã¯ããè€æ°ã®ã¹ãã¬ãŒãžã(å€èšèªæ°žç¶æ§) ã®æ¡ä»¶ã§ã®çµ±åãšæ©èœã«å¯Ÿããå®å
šãªæºåãæŽã£ãŠããããšã瀺ããŠãããšèšããŸãã ãããããã®åŸè
ã¯é·ãéæ代é
ãã§ãããããã«åã£ãŠä»£ããããããšãç¥ãããŠããŸãã
èŠããã«ãç¡çã§ãã ãã«ãã¢ãã« DBMS ã®ãããã¯ã«ã€ããŠã¯å¥ã®èšäºã«ãŸãšããããšæããŸãããä»ã®ãšãããã°ã©ã ã¢ãã« (RDF ã¯ãã®ããªãšãŒã·ã§ã³ãšèããããšãã§ããŸã) ã«ãåºã¥ããããã«ãã¢ãã« DBMS ã¯ååšããªãããšãããããŸãã ããã€ãã®å°èŠæš¡ãªãã«ãã¢ããªã³ã° - ä»£æ¿ LPG ã°ã©ã ã¢ãã«ã® RDF ã¹ãã¬ãŒãžã«ãããµããŒã - ã«ã€ããŠã¯ãã§èª¬æããŸãã
â ¢ïŒ OLTP vs. OLAP
ããããåãã¬ãŒãããŒã§ãã
ããããOLTP-OLAP ã¹ã±ãŒã«ã®ã©ãã« RDF ãªããžããªãããã®ã§ãããã? ç§ãªãããçããã§ãããïŒãããã«ãããã«ããããŸããã ãããã®ç®çã瀺ãã«ã¯ãXNUMX çªç®ã®ç¥èªãå¿ èŠã§ãã ãªãã·ã§ã³ãšããŠç§ãææ¡ãããã®ã¯ ãªãªãã â ãªã³ã©ã€ã³ç¥çåŠçã
ãã ããããã§ã:
- GraphDB ãš MongoDB ã«å®è£
ãããçµ±åã¡ã«ããºã ã¯ãå°ãªããšãéèŠãªãã®ã§ã¯ãããŸããã
æå³ãããŸãã æžã蟌ã¿ããã©ãŒãã³ã¹ã®åé¡ãåé¿ããããã - ã¹ã¿ãŒããã°ã¯ããã«é²åããå®å
šã«é²åããŸã
æžãæããŸã ãããæžã蟌ã¿ããã©ãŒãã³ã¹ã®åäžãç®çãšãããšã³ãžã³ã§ãã
ããã§ã¯ãåžå Žã«æ°ãããã¬ãŒã€ãŒã玹ä»ããŸãããã IBM Netezza ãš Amazon Redshift ã®äœæè
ãã -
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { ⊠}
IV. ããã¯ã¹DB
ãã§ã«äžã«ãããŸã
ãŸãå€æããã«ã
次ã«ã該åœããäž»é¡ã®ãããžã§ã¯ã (ã€ãŸã補åã§ã¯ãããŸãã) ã RocksDB äžã§äœæãããŸãã
ããšãã°ãeBay 㯠RocksDB ã次ã®ããã«äœ¿çšããŠããŸãã
å¥ã®äŸ - æ°ãæåã«ç»å Ž
V. LPG ã®ãµããŒã
LPG ã°ã©ããš RDF ã°ã©ãã®äž»ãªéããæãåºãããŠãã ããã
LPG ã§ã¯ãã¹ã«ã©ãŒ ããããã£ã¯ãšããž ã€ã³ã¹ã¿ã³ã¹ã«æ¥ç¶ã§ããŸãããRDF ã§ã¯ããšããžã®ãã¿ã€ããã«ã®ã¿æ¥ç¶ã§ããŸã (ãã ããã¹ã«ã©ãŒ ããããã£ã ãã§ãªããéåžžã®ãªã³ã¯ãæ¥ç¶ã§ããŸã)ã LPG ãšæ¯èŒãã RDF ã®ãã®å¶é
æããã«ããLPG ããµããŒãããããšããã¿ã¹ã¯ã¯ XNUMX ã€ã®éšåã«åãããŸãã
- RDF ã¢ãã«ã«å€æŽãå ããŠããã®äžã§ LPG æ§é ãã·ãã¥ã¬ãŒãã§ããããã«ããŸãã
- RDF ã¯ãšãªèšèªã«å€æŽãå ããŠããã®å€æŽãããã¢ãã«å ã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããããäžè¬ç㪠LPG ã¯ãšãªèšèªã§ãã®ã¢ãã«ãã¯ãšãªããæ©èœãå®è£ ããŸãã
V.1. ããŒã¿ã»ã¢ãã«
ããã§èããããã¢ãããŒãã¯ããã€ããããŸãã
V.1.1ã ã·ã³ã°ã«ãã³ããããã£
RDF ãš LPG ã調åãããããã®æãæåéãã®ã¢ãããŒãã¯ããããã次ã®ãšããã§ãã
- ããšãã°è¿°èªã®ä»£ããã«
:isMarriedTo
è¿°èªã䜿ãããŠãã:isMarriedTo1
,:isMarriedTo2
ãããŠãtãDã - ãããã®è¿°èªã¯ãæ°ããããªãã¬ããã®äž»èªã«ãªããŸãã
:isMarriedTo1 :since "2013-09-13"^^xsd:date
ç - ãããã®è¿°èªã®ã€ã³ã¹ã¿ã³ã¹ãšå
±éã®è¿°èªãšã®æ¥ç¶ã¯ã次ã®åœ¢åŒã®ããªãã¬ããã«ãã£ãŠç¢ºç«ãããŸãã
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo
. - æããã«ã
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type
ãããããåã«æžãã¹ãã§ã¯ãªãçç±ãèããŠãã ããã:isMarriedTo1 rdf:type :isMarriedTo
.
ãLPG ãµããŒããã®ã¿ã¹ã¯ã¯ãããã§ã¯ RDFS ã¬ãã«ã§è§£æ±ºãããŸãã ãã®ãããªæ±ºå®ã«ã¯ãé¢é£ããæ¿çã«å«ããå¿
èŠããããŸãã
V.1.2ã å ·äœåã¯æ£ããè¡ããã
ããŸãåçŽã§ã¯ãªãã¢ãããŒãã¯ããããã㣠ã€ã³ã¹ã¿ã³ã¹ãããªãã¬ããã«ãã£ãŠå®å šã«ã€ã³ã¹ã¿ã³ã¹åããããšããèªèããçãŸããŸãã ããªãã¬ããã«ã€ããŠèª¬æã§ããããšã«ããããããã㣠ã€ã³ã¹ã¿ã³ã¹ã«ã€ããŠã説æã§ããŸãã
ãããã®ã¢ãããŒãã®äžã§æã確å®ãªãã®ã¯ã
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .
V.1.3ã ä»ã®ã¢ãããŒã
圢åŒçãªæå³è«ãæ°ã«ããå¿
èŠã¯ãããŸããããããªãã¬ããã«ã¯ããã€ãã®èå¥å (ãã¡ãã URI) ãããããããã® URI ã䜿çšããŠæ°ããããªãã¬ãããæ§æãããšåçŽã«èããŠãã ããã æ®ã£ãŠããã®ã¯ãSPARQL ã§ãããã® URI ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšã ãã§ãã ããã§
ã¢ã¬ã°ãã°ã©ãã§
:bob :marriedTo :alice {"since" : "2013-09-13"}
V.2. ã¯ãšãªèšèª
ã¢ãã« ã¬ãã«ã§äœããã®æ¹æ³ã§ LPG ããµããŒããããããã®ãããªã¢ãã«ã§ããŒã¿ãã¯ãšãªã§ããããã«ããå¿ èŠããããŸãã
- Blazegraph ã«ãã RDF* ã¯ãšãªã®ãµããŒã
ã¹ããŒã¯ã«* Оã°ã¬ã ãªã³ ã SPARQL* ã¯ãšãªã¯æ¬¡ã®ããã«ãªããŸãã
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }
- ã¢ã³ãŸã°ã©ãããµããŒã
ã¹ããŒã¯ã«* ãããŠãµããŒãããäºå®ã§ãCypher ãNeo4j ã®ã¯ãšãªèšèªã - Stardog ã¯ç¬èªã®ã¡ã³ããã³ã¹ãè¡ã£ãŠããŸã
æ¡åŒµ ã¹ããŒã¯ã«ãšãŸã ã°ã¬ã ãªã³ã 次ã®ãããªãã®ã䜿çšããŠãSPARQL ã§ããªãã¬ããã® URI ãšãã¡ã¿æ å ±ããååŸã§ããŸãã
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}
- Allegrograph ã¯ç¬èªã®ãµããŒãããµããŒãããŠããŸã
æ¡åŒµ ã¹ããŒã¯ã«:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }
ã¡ãªã¿ã«ãGraphDB ã¯äžæ LPG ããµããŒãããã« Tinkerpop/Gremlin ããµããŒãããŠããŸããããããŒãžã§ã³ 8.0 ãŸã㯠8.1 ã§åæ¢ããŸããã
VI. ã©ã€ã»ã³ã¹ã®å³æ Œå
ãéžæããããªãã«ã¹ãã¢ãã»ãããšããªãŒãã³ãœãŒã¹ ããªãã«ã¹ãã¢ãã»ããã®äº€å·®éšåã«æè¿è¿œå ããããã®ã¯ãããŸããã æ°ãããªãŒãã³ãœãŒã¹ã® RDF ã¹ãã¢ã¯æ¥åžžäœ¿çšã«ã¯æ±ºããŠé©ããŠããããç§ã䜿çšãããæ°ããããªãã« ã¹ã㢠(ããšãã°ãAnzoGraph) ã®ãœãŒã¹ ã³ãŒãã¯ã¯ããŒãºãããŠããŸãã ããããåæžã«ã€ããŠè©±ãããšãã§ããŸã...
ãã¡ããã以åã¯ãªãŒãã³ãœãŒã¹ãééçã ã£ãããã§ã¯ãããŸããããäžéšã®ãªãŒãã³ãœãŒã¹ ãªããžããªã¯åŸã ã«éžæã«å€ããªããšèããããŠããŸãã ç§ã®æèŠã§ã¯ããªãŒãã³ãœãŒã¹çããã Virtuoso ã¯ãã°ã«æºã¡ãŠããŸãã Blazegraph 㯠AWS ã«è²·åãããAmazon Neptune ã®åºç€ã圢æããŸããã ä»ã®ãšãããå°ãªããšãããš XNUMX åã®ãªãªãŒã¹ããããã©ããã¯äžæã§ãã æ®ãã¯ãžã§ãã ãâŠ
ãªãŒãã³ãœãŒã¹ãããã»ã©éèŠã§ã¯ãªããããã è©ŠããŠã¿ããå Žåã¯ããã¹ãŠã以åã»ã©ãã©è²ã§ã¯ãªããªããŸãã äŸãã°ïŒ
- ã¹ã¿ãŒããã°
æ¢ãŸã ç¡æçãé åžããŸãïŒãã ããéåžžçã®è©Šçšæéã¯XNUMXåã«ãªããŸãïŒã - в
ã°ã©ãDBã¯ã©ãŠã ã§ã¯ããããŸã§ç¡æã®åºæ¬ãã©ã³ãéžæã§ããŠãããšãããæ°èŠãŠãŒã¶ãŒç»é²ãåæ¢ãããŠããŸãã
äžè¬ã«ãå®å®ã¯äžè¬ã® IT çŽ äººã«ãšã£ãŠã¯ãŸããŸãã¢ã¯ã»ã¹ã§ããªããªãããã®éçºã¯å€ãã®äŒæ¥ã«ãã£ãŠè¡ãããããã«ãªã£ãŠããŠããŸãã
åºæïŒ habr.com