ืืื ืืจื ื ืกืื ืื ืื ืชืื ืื ืืงืืฉืจืื ืื ืืื ืืืื ืืืืฆืื: ืืื ืฉื ืืืื. ืืืืช ืืฉื ืืืืื ืืจืื ืคืืืช ืื ืืืชืจ... ืื ื ืื ืืืืข ืื ืืืจื ืื ืืชืืจ ืืื ืืชืืืื ื"ืื ื ืจืืฆื ืืืืืช ืืกืืจืื ืืื". ืืื ืืชื ืืืื ืืฆืคืืช ืืื ืฉืงืืจื ืืืื ืฉืืชื ืขื ืืืืจ ืืืจืฅ; ืืืืืช ืืกืืจืื ืื ืืืื ืื ืืคืืื ืืงืฆืืขื ืื ืืจืื ืืืชืจ ืงื.
ืืืืืจ ืืชืืงื ืืืจื ืืื ืืจืืื, ืื ื ืื ืืืชืจ ืืืื ืืืืฉืื, ืืขืืื ืืืืกืื RDF. ืืืืืคืืจื ืืคืกืงื ืืจืืฉืื ื ืืื ืืืฉืจืืช ืชืืื ืช ืืคืจืกืื ืืืคืืช ืืชืืช ืืืืจื.
I. GraphQL ืขืืืจ ืืืฉื ื-RDF
ืืืืฅ ืืงืืคืกื, ืืืืื ืืช ืื ื ืืชื ืช ืขื ืืื:
- stardog(
ืืืื ,ืชืืขืื ); - ืืืฆืจื TopQuadrant (
ืกืืื ืจ ืืงืืื ,ืชืืขืื ).
ืื ืืืืืจ ืืื ื ืืกืคืง ืืืืื ืืช ืืื, ืืื ืืืืฉื ืืืืคื ืขืฆืืื ืขื ืืื ืืชืืืช ื"resolver" ืืืชืืื (resolver). ืื ื ืขืฉื, ืืืฉื, ืืคืจืืืงื ืืฆืจืคืชื
ืื ืงืืืช ืืืื ืฉื ืืกืื ืืืจืชืืืืงืกื ืฉื ืืจืฉืช ืืกืื ืืืช ืืื ืชืื ืื ืืืงืืฉืจืื, ืื ืื ืืืืื ืขืฆืื, ืฉืื ื ืจืื ืฉืืื ืืืืขื ืืืื ืืืจืฆืืืช ืฉื ืื ื ืกืืื ืืืืืจืช ืื ืชืื ืื ืืืื, ืืื ืืคืืืคืืจืืืช ืืชืืืืืช (ืืืืื, ืืืกืื RDF) .
ืืืชืจืฉืืืช ืืืฉืืืืช GraphQL ืขื SPARQL ืื ืืคืืืืช.
- ืืฆื ืืื, GraphQL ื ืจืื ืืื ืงืจืื ืืฉืคืื ืจืืืง ืฉื SPARQL: ืืื ืคืืชืจ ืืช ืืืขืืืช ืฉื ืืืืจื ืืืืฉ ืืฉืืืืชืืช ืืจืืืืช ืืืืคืืื ืืืช ื-REST - ืฉืืืขืืืื, ืื ืจืื, ืื ื ืืชื ืืืื ืืฉืงืื ืฉืคืช ืฉืืืืชื, ืืคืืืช ืขืืืจ ืืืื ืืจื ื;
- ืืฆื ืฉื ื, ืืชืืื ืืช ืื ืืงืฉื ืฉื GraphQL ืืืจืืื. ืืืชืื, ื ืจืื ืฉื"ืืื ืืจืืกืคืงืืืืืืช" ืฉืื ืืืืืืช ืืืื ืืืฉืืืื ืืจืคืืงืกืืืืืช ืืืืื ืฉื RDF. ืืืื ืื ืืืื ืื ืชืืื ื ืืกืื, ืื ืืคืืื ืื ืืืื ืืจืืจ ืืื ืื "ืืจืฃ-".
II. ืืชืืืื ืขืืืจ MongoDB
ืืืื ืืฉืืืื ืืงืืืืชื.
- ืขืืฉืื ืืกืืืจืืื
ืืืื - ืืคืจื, ืืื ืืืืชื GraphQL - ืืืืจ ืืช ืืชืฆืืื ืฉื ื ืชืื ื MongoDB ืืืจืคื RDF ืืืจืืืืืืื; - Ontotext GraphDB ืืืืจืื ื
ืืื ืืืคืฉืจืช ืืื ืก ืืชืื ืงืืขื SPARQL ืืฉืืืืชืช MongoDB.
ืื ืืืืจืื ืืฆืืจื ืจืืื ืืืชืจ, ืขื ืืชืืืื ืืืงืืจืืช JSON ืฉืืืคืฉืจืื ืคืืืช ืื ืืืชืจ "ืืชื ืืขื" ืืืืฆื ืืช ื-JSON ืืืืืืกื ืืืงืืจืืช ืืื ื-RDF, ืื ื ืืื ืื ืืืืืจ ืืช ืืงืืื ืืืฉื ืื ืืจืื ืืื
ืื ื ืกืื ืืช ืฉืชื ืืืืืืช ืืจืืฉืื ืืช, ืื ื ืืืืืื ืืืืจ ืฉืืืืจื RDF ืืคืืื ืื ืืืื ืืช ืืืื ืืืื ืืืจืฆืื ืืชืคืงืื ืืชื ืืื ืฉื "ืืืกืื ืืจืืื" (ืืชืืื ืจื-ืืืชืืช). ืื ืืืืข, ืขื ืืืช, ืื ืืืืจืื ืืืจ ืืืื ืืฆื ืืืืืคื ื, ืืืืืืืฃ ืืืชื
ืืงืืฆืืจ, ืืื ืืฆื. ืื ื ืจืืฆื ืืืงืืืฉ ืืืืจ ื ืคืจื ืื ืืฉื ืฉื DBMS ืืจืืื ืืืืืื, ืื ืืขืช ืขืชื ืืชื ืืืื ืืจืืืช ืฉืืื DBMS ืจื ืืืื "ืืืืกืก" ืขื ืืืื ืืืจืฃ (RDF ืืืื ืืืืืฉื ืืืืจืืืฆืื ืฉืื) ืืขืช. ืืื ืืืืืื ืืจืืืื ืงืื ืื - ืชืืืื ืขื ืืื ืืืกืื RDF ืฉื ืืืื ืืจืฃ ืืค"ื ืืืืคื - ืืืืื ื ื
III. OLTP ืืขืืืช OLAP
ืขื ืืืช, ืืืชื ืืจืื ืจ
ืืื ืืืื ืืกืืื OLTP-OLAP ื ืืฆืืื ืืืืจื RDF? ืืืืชื ืขืื ื ืื: ืื ืฉื ืืื ืืื. ืืื ืืฆืืื ืืื ืื ืืืืขืืื, ืืฉ ืฆืืจื ืืงืืฆืืจ ืฉืืืฉื ืืืฉืื. ืืืืคืฆืื ืืืืชื ืืฆืืข OLIP - ืขืืืื ืืื ืืืงืืืืื ืืงืืื.
ืขื ืืืช, ืขืืืื:
- ืื ืื ืื ื ืืืื ืืืจืฆืื ืืืืืฉืืื ื- GraphDB ืขื MongoDB ืื ืื ืืคืืืชืื
ืืชืืืื ืืขืงืืฃ ืืขืืืช ืืืฆืืขืื ืืืชืืื; - Stardog ืืืื ืืคืืื ืจืืืง ืืืชืจ ืืืืจื
ืืฉืืชื ืื ืืข, ืฉืื ืืืืจื ืืฉืคืจ ืืช ืืืฆืืขื ืืืชืืื.
ืืขืืฉืื ืืจืฉื ืื ืืืฆืื ืฉืืงื ืืืฉ ืืฉืืง. ืืืืืฆืจืื ืฉื IBM Netezza ืืืืืื Redshift -
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { โฆ }
IV. RocksDB
ืืืจ ืืืขืื
ืจืืฉืืช, ืื ืืฉืคืื ืืคื
ืฉื ืืช, ืคืจืืืงืืื (ืืืืืจ, ืื ืืืฆืจืื) ืฉื ืื ืืฉื ืืืงืืื ื ืขืฉืื ืขื RocksDB.
ืืืืืื, eBay ืืฉืชืืฉ ื- RocksDB ื
ืืืืื ื ืืกืคืช - ืืืคืืขื ืืคื ื ืืกืคืจ ืืืืฉืื
V. ืชืืืืช ืืค"ื
ืชื ืื ืืืืืืจ ืื ืืช ืืืืื ืืขืืงืจื ืืื ืืจืคื GPG ืืืจืคื RDF.
ื-LPG ื ืืชื ืืฆืจืฃ ืืืคืืื ืื ืกืงืืจืื ืืืืคืขื ืงืฆื, ืืขืื ืฉื-RDF ื ืืชื ืืฆืจืฃ ืืืชื ืจืง ื"ืืืคืืกืื" ืงืฆื (ืื ืื ืจืง ืืืคืืื ืื ืกืงืืจืื, ืืื ืื ืงืืฉืืจืื ืจืืืืื). ืืืืื ืื ืฉื RDF ืืืฉืืืื ืืืค"ื
ืืจืืจ, ืืืฉืืื ืฉื "ืชืืืื ืืืค"ื" ืืชืืืงืช ืืฉื ื ืืืงืื:
- ืืืฆืืข ืฉืื ืืืื ืืืืื RDF ืืืืคืฉืจืื ืืืืืช ืื ืืื ื ืืค"ื;
- ืืืฆืืข ืฉืื ืืืื ืืฉืคืช ืืฉืืืืชืืช RDF ืืืืคืฉืจืื ืืืฉื ืื ืชืื ืื ืืืืื ืฉืื ื ืื, ืื ืืืฉืื ืืืืืืช ืืืฆืข ืฉืืืืชืืช ืืืืื ืื ืืฉืคืืช ืฉืืืืชืืช LPG ืคืืคืืืจืืืช.
V.1. ืืืื ื ืชืื ืื
ืืฉ ืืื ืืื ืืืฉืืช ืืคืฉืจืืืช.
V.1.1. ื ืืก ืืืื
ืืืืฉื ืืืืืืืืช ืืืืชืจ ืืืจืืื ืื ืฉื RDF ื-LPG ืืื ืื ืจืื
- ืืืงืื, ืืืฉื, ืืคืจืืืงื
:isMarriedTo
ื ืขืฉื ืฉืืืืฉ ืืคืจืืืงืืื:isMarriedTo1
,:isMarriedTo2
ืืฉื ืืื. ื. - ืืคืจืืืงืืื ืืืื ืืืคืืื ืืืืจ ืืื ืื ืืฉืืื ืฉื ืฉืืืฉืืืช ืืืฉืืช:
: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. ืืืฉืืช ืืืจืืช
ืืชื ืื ืืืื ืืืชืขืกืง ืืกืื ืืืงื ืคืืจืืืืช, ืืื ืคืฉืื ืืงืืช ืืืฉืืื ืฉืืฉืืืฉืืืช ืืฉ ืืื ืืืืื, ืฉืื, ืืืืื, URIs, ืืืืจืืื ืฉืืืฉืืืช ืืืฉืืช ืขื URIs ืืื. ืื ืื ืฉื ืืชืจ ืืื ืืชืช ืืืฉื ื-URI ืืืื ื-SPARQL. ืื
ืืืืืจืืืจืคืื
:bob :marriedTo :alice {"since" : "2013-09-13"}
V.2. ืฉืคืืช ืฉืืืืชืืช
ืืืืจ ืฉืชืืืช ื-LPG ืืฆืืจื ืืื ืื ืืืจืช ืืจืืช ืืืื, ืืชื ืฆืจืื ืืืคืฉืจ ืฉืืืืชืืช ื ืชืื ืื ืืืืื ืืื.
- ืชืืื ืืฉืืืืชืืช Blazegraph for RDF*
SPARQL* ะธืฉึตืื . ืฉืืืืชืช SPARQL* ื ืจืืืช ืื:
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }
- Anzograph ืื ืชืืื
SPARQL* ืืืื ืืืื ืืชืืืืืฉืื ืกืชืจืื , ืฉืคืช ืืฉืืืืชื ื-Neo4j. - ืกืืืจืืื ืฉืืืจืช ืขื ืฉืื
ืืืืื SPARQL ืืฉืื ืืจืืืื. ืืชื ืืืื ืืงืื ืืช URI ืฉื ืฉืืืฉืืื ื"ืืื-ืืืืข" ื-SPARQL ืืืืฆืขืืช ืืฉืื ืืื:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}
- ืืืืจืืจืฃ ืชืืื ืื ืืขืฆืื
ืืืืื SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }
ืืื, GraphDB ืชืื ื-Tinkerpop/Gremlin ืืืช ืืืช ืืืื ืืชืืื ื-LPG, ืืื ืื ืืคืกืืง ืืืจืกื 8.0 ืื 8.1.
VI. ืืืืืง ืจืืฉืืื ืืช
ืื ืืื ืชืืกืคืืช ืืืืจืื ื ืืฆืืืช ืฉื ืขืจืืืช "ืืจืืคื ืกืืืจ ืืืืืจื" ื"ืืจืืคื ืกืืืจ ืืงืื ืคืชืื". ืื ืืืืช RDF ืืืฉืืช ืืงืื ืคืชืื ืจืืืงืืช ืืืืืืช ืืืืจื ืืืื ืืฉืืืืฉ ืืืืืืื, ืืงืื ืืืงืืจ ืฉื ืื ืืืืช ืืจืืคื ืืืฉืืช ืฉืืื ืืืืชื ืจืืฆื ืืืฉืชืืฉ (ืืืฉื, AnzoGraph) ืกืืืจ. ืืืงืื ืืืช, ืื ืื ื ืืืืืื ืืืืจ ืขื ืืคืืชืืช...
ืืืืื, ืืงืื ืืคืชืื ืืขืืจ ืืื ื ืกืืืจ, ืื ืืืง ืืืืืจื ืืงืื ืืคืชืื ืืืจ ืื ื ืืฉืืื ืืืืจืื ืจืืืืื ืืืืืจื. ืืืจืืืืื, ืฉืืฉ ืื ืืืืืจืช ืงืื ืคืชืื, ืืืขืชื, ืืืืขืช ืืืืืื. Blazegraph ื ืงื ื ืขื ืืื AWS ืืืืืื ืืช ืืืกืืก ืืืืืื ื ืคืืื; ืืขืช ืื ืืจืืจ ืื ืชืืื ืขืื ืฉืืจืืจ ืืื ืืคืืืช. ืจืง ื'ื ื ื ืฉืืจื...
ืื ืืงืื ืืคืชืื ืื ืืืื ืืฉืื, ืืื ืืชื ืจืง ืจืืฆื ืื ืกืืช, ืื ืืื ืื ืคืืืช ืืจืื ืืืขืืจ. ืืืืืื:
- ืกืืืจืืื
ืืคืกืืง ืืืคืืฅ ืืช ืืืจืกื ืืืื ืืืช (ืขื ืืืช, ืชืงืืคืช ืื ืืกืืื ืฉื ืืจืืืื ืืืืคืื); - ะฒ
ืขื ื GraphDB , ืืืื ืฉืงืืื ืืื ืืืืืช ืืืืืจ ืืช ืืชืืื ืืช ืืืกืืกืืช ืืืื ืืืช, ืจืืฉืื ืืฉืชืืฉ ืืืฉ ืืืฉืขื.
ืืืืคื ืืืื, ืืืื ืืืคื ืืืืืช ืืืชืจ ืืืืชืจ ืืืชื ื ืืืฉ ืขืืืจ ืืืืื IT ืจืืื, ืืคืืชืื ืฉืื ืืืคื ืื ืืืช ืืชืืืืืื.
ืืงืืจ: www.habr.com