Semantic Web αα·α Linked Data ααΊααΌα ααΆααα αααΆααααα α αα·αααΆαααΈαα·ααα ααΈαααααα ααΎααααΈαα ααΈααααααα»αααααααααΌα α¬αα·α ααΆαααα... αααα»ααα·αααΉαααΆαα½αααααΆαααααΆααα’αααααΈα’αααΈααΆαααΈααααα ααΎααααΈααααΎαααααΉα "αααα»αα ααααααΆαααΆα’αααΆαααΆαα·α"α ααα»ααααα’αααα’αΆα ααααααααΎαα’αααΈααααααα»αααΎαα‘αΎαααααααααααα ααΎαααααΈ; ααΆααΆααααααΆααααα½ααααα»αααΆαααααΆαααΆααΆααΆαα·ααΌαααααααα α·ααα α¬ααΌααααΈααα’αααααααΆαα
α’αααααααΉααααααααΎααΆαααααΈα ααααα·αα αΆααααΆαα αααΎααα αα·ααααΆααΆαααΈαα·ααααααΆααααα»α RDF α ααΆααααααααααααα αααα»ααααΆααααααΈ 1 ααααΌαααΆααααα»ααααα·ααααααΌαααΆαααααΆαααΆαα·ααααααααααααΆαααα αααΈαααΆααα αααααααΆαααΆααα
ααΌαααΆαααΈαααΆα

I. GraphQL αααααΆααααΆαα αΌαααααΎ RDF
ααα GraphQL ααΆααααααααααααΆαααΆααΆααΆα αΌαααααΎααΌαααααΆααα·αααααααααα α α»ααααααααΆααααα»αααΆαα αΌαααααΎ RDF αααααααΎ GraphQL?
αααα αααα’αα α±ααΆααααααααΌαααΆααααααααΌααααα
- Stardog (, );
- ααα·ααα TopQuadrant (, ).
ααααα·αααΎααααΆαααα·ααααααα±ααΆααααααααα ααΆα’αΆα ααααΌαααΆαα’αα»αααααααα―αααΆααααααααΆαααααα "α’ααααααααααΆα" αααααααααα αααααΆα’αααΈααααα½αααααΆαααααΎα§ααΆα ααααα αααα»αααααααααααααΆααΆαα . α¬α’ααααα·αα’αΆα αααααα’αααΈααααα ααα»ααααααααΆαααααα .
ααΆαααααααααα’ααααααααΆααααααΆαααααα·αααα’αΌααααΌααααααααααΆα Semantic αα·ααα·αααααααααααΆαααααΆαα ααΆααα’αααααααΆααΆααα·αααΆααααΊααααα αααααααΆα αΆααααΌα ααΆααααΌαααΆααα ααΆα‘αΎααααααΆααααΆααα½ααααα αΌααααααΆααααααΎαα‘αΎααα αα»ααα·ααααΈα‘αΌαα·αααααααααααΆαα αα·ααα·ααααα·ααΆαααααα (α αΆα RDF ααΆααΆααα·αααΆαα) .
α αααΆααα’αΆααααααααΈααΆααααααααα GraphQL ααΆαα½α SPARQL ααΊααΈαααα
- αααααΆααα·αααα GraphQL ααΎααα ααΌα ααΆααΆα αααΆαα·ααααΆααααα SPARQLα ααΆαααααααΆααααα αΆααααΆαααααααΌα‘αΎααα·α αα·αα αααΎααααααα½ααααααΆαααααααααααααΆαααααΆαα REST - ααΎααααΆαααΆαααα ααααΆααΆαα·αα’αΆα αα·α αΆαααΆααΆαααα ααΆααΆαααα½ααααΆαα αα ααΆαααααααΆαααααααΆα;
- αααααΆααα·αααα αααααααΆαααααΉααααα GraphQL ααΆαααΆαααα α·αααα ααΌα ααααα αΎα "ααΆααα·ααα»αααΆαα»α" ααααααΆα αΆααααΌα ααΆααΆαααααα·αααΎαααααααααα ααΉαααΆααααα»ααααα αΆαααααααααα RDF α α αΎααα·αααΆα analogue ααααααΌαα’α αααααααααα ααΌα ααααααΆαα·αα αααΆααααααΆα ααα»α’αααΈααΆαααΆααΆααΆ "Graph-"α
II. α’αΆααΆααααααααααΆαα MongoDB
αα·ααααΆααΆαβαα½αβαααβαααααβααααααβαα βααΉαβαα·ααααΆααΆαβαα»αα
- αα αααα»α Stardog α₯α‘αΌαααα - ααΆαα·αααααΆααα’αααα ααΎ GraphQL ααΌα ααααΆ - ααααααα ααΆααααααααααΆαααΌααααααΈαα·αααααα MongoDB αα ααΆααααΆα αα RDF αα·αααα·αα
- GraphDB ααααΈαααα αααα αΌαααααααα αααα»α SPARQL αα ααΎ MongoDB Query α
ααααα·αααΎααΎααα·ααΆαα±ααααΆααααααΌααααΌααΆαα’αααΈα’αΆααΆααααααα ααΉαααααα JSON αααα’αα»ααααΆαα±αα "ααααΆαα" α αααΎαα¬αα·α ααΎααααΈααααΆαα±αα JSON ααααααα»ααα αααα»ααααααααΆαααααααΆ RDF ααΎαα’αΆα ααααΉαα‘αΎααα·αααΌαα’αααΈαααααΆαααααααααΌαα αααα’αΆα αααααααΌαααΆα αα ααΆαα Apache Jena α
αααααααααααΈαα·ααααΆααΆαααΈαααααΌα ααΎαα’αΆα αα·ααΆαααΆαααΆ ααΆααααα»α RDF αααα αΆαααΈααΆαααααααααα½ααααααααααααΆααααΆαααααΎαααΆα αααααα αα·αααααα·ααααα·ααΆααα αααα»ααααααααααα "ααΆαααααΌ polyglot" α αααααΆαααΆαααΆααααα ααΆααααΌαααΆαααααΉαααΆ αααΌααααααααα α’ααααααααααΌαααα αΎα α αΎαααααΌαααΆααααα½αααα αα α»ααααΌα α α»αβααΆαβααααΎβαααΌαααβα αααΎαβαααα»αβαα·ααβααβααΆαβαααα»α RDF αα·α?
αα·ααΆαα±ααααααΈ ααααΆαααααΌαααα αααα»αα ααα§αααα·αα’αααααααΆα ααααα‘αααα½αα αααααααααΆααααα DBMSs αα α»ααααΌ ααα»αααααααααΆαααααααα ααΆα’αΆα ααααΌαααΆαααααααααΆααααΆαα αα α»αααααααα·αααΆα DBMSs αα α»ααααΌ "ααα’ααααΎ" ααΎααααΌααααΆα αα (RDF α’αΆα α αΆαααα»αααΆααΆααααααααααααΆ) . ααααΌαα α»ααααΌααΌα αα½αα ααα½α - ααΆαααΆααααααΆααααα»α RDF αααααΆααααααΌααααΆα αα LPG αααα½α - ααΉαααααΌαααΆααα·ααΆααααΆαα αααα»α .
III. OLTP αααααΉα OLAP
ααααααΆαααΆααααα Gartner ααΌα ααααΆα multimodel αααααΊααΆαααααααα sine qua non ααΆα αααααααααΆαα ααααααααααα·ααααα·ααΆα DBMS αααα’αΆα αααααΆαα αα αααα»αααααΆαααΆααα "ααΆααααα»ααα α»αα»αααΆα" αααα αΆα ααααααΎαα‘αΎαααΆαα½αααΉαααααα·ααααα·ααΆαα
ααα»ααααααΎαααααααααα»α RDF αααα·ααα ααΎααΆαααααααΆα OLTP-OLAP αα α―ααΆ? αααα»αααΉαααααΎαααΆααα·ααΈαααα ααΆαααα ααΈααα α¬αα ααΈαααα ααΎααααΈαααα αΆαααΈα’αααΈααααα½αααααΆαααααα αα α’ααααααΆααααΈααΈααΊααααΌαααΆαα ααΆαααααΎαααααααα»αααΌαααααΆα α’αΌααΈα - ααααΎαααΆααααααΆααΆαα’ααΈαααΊαα·αα
ααααααΆαααΆααααααα ααα
- ααααααΆαααααΆααα½ααααα αΌαααΆαα½α MongoDB αααααααΌαααΆαα’αα»αααααα αααα»α GraphDB ααΊαα·ααα·α ααα ααΎααααΈααααΎααΆααα»ααα·αααΆαααααααααα αΆααΆαα’αα»αααα;
- Stardog αα ααΆααααααααΆααα·αααΆαααααα»α αααΆαααΈα αααααααααΆαα½αααΉαααααα ααααΎα±αααααααΎαα‘αΎαααΌαααααΎαααΆαααα
α₯α‘αΌαααααααα»αααΌαααααΆαα’ααααααααααΈαα ααΆααααΈααααΆαα ααΈα’ααααααααΎα IBM Netezza αα·α Amazon Redshift - . ααΌαααΆαααΈααΆαααααΆαααΆαα·ααααααααααααΆααααα·αααααα’ααααΎααΆααααΌαααΆααααα αααα ααΎαα’αααααα AnzoGraph ααΆαααααα½αααΆααΆαααααααααΆα GOLAP α ααΎα’αααα αΌαα α·ααα SPARQL ααΆαα½αααΉααα»αααΆααααα’α½α αααΆαααΌα ααααα ? β
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { β¦ }IV. RocksDB
αααααααΆαα αΎαα α ααααααΆααααααΆααααα Stardog 7 Beta αααααΆααα·ααΆαααΆ Stardog ααΉαααααΎααααΆαα RocksDB ααΆαααααααααααα»ααα·ααααααααΌαααααΆα - ααααΆαααααααααααΆαα αααααΆα§αααααααααΎααααΆαα Facebook αα LevelDB αααα Google α α ααα»α’αααΈααΆαααΆααΆααΆαααααααα·ααΆαα’αααΈαα·ααααΆααΆαααΆααααΆαααα½α?
ααΈαα½αααΆααα·αα·α ααααααα αα·αααααΉαααααΆααααα»α RDF ααααΌαααΆα "ααααΌα" αα RocksDB ααα»αααααααα ααΆαααααααααααΎααααΆαα RocksDB ααΆαααΆαααΈααααα»ααα αααα»α ArangoDB, MongoDB, MySQL αα·α MariaDB, Cassandra α
ααΈααΈα αααααα (ααααα·ααααααα·ααα) ααΎαααααΆαααααΆαααααααααααΌαααΆααααααΎαα‘αΎααα ααΎ RocksDB α
α§ααΆα ααα eBay ααααΎ RocksDB αααα»α αααααΆαα "ααααΆα ααα ααααααΉα" ααααα’αααα αα·ααΆαα’ααα αΉαααΆαα½αα±ααα’ααααααΎα αααα»αααΆαα’αΆαα ααΆααΆαααα½αααΆαα αΆααααααΎαααΆαααααααααααΆααα»ααα αααα ααα»ααααααααΈααααααΆααΆααα·ααααα»αααααΆααααααΌααα ααΆ SPARQL ααΆααααα αααΎαα. ααΌα αα αααα»αααΏααααααααα αα·αααΆααααΆα ααα ααααααΉαααα»ααααΆααα ααΎααα αααααα ααααΆαα½α RDF α
α§ααΆα ααααα½αααα - αα½ααααααΆααααα αΆααααα½αααΆαααΈααα»ααααΆααααα»αα . αα»ααααααΆαααααΆαααααααΆ ααααααΆααααααααα·ααΆααααα Wikidata ααααΌαααα αΌαααααΎ αα API αααααααΆα Mediawiki α α₯α‘αΌααααα αααΎαα’αΆα ααααΎαα ααΆαααΆαα½α SPARQL αα»αααα "αα ααααααααααΆαα" ααααΆα RocksDB αααααα ααααα·ααΈααα WDHQS ααααΌαααΆααααααΎαα‘αΎα ααΆα αΆααααΌα ααΆαααα’ααααααααΆαα αΌα Freebase αα αααα»α Google Knowledge Graph α
V. ααΆαααΆαααα LPG
αααα»αααΌαααααΉαα’αααα’αααΈααΆααα»αααααΆααααΆαααααΆαααααΆα αα LPG αα·αααααΆα αα RDF α
αα αααα»α LPG αααααααααααααα· scalar α’αΆα ααααΌαααΆαααααααα α±αα edge instances ααααααααααα αααα»α RDF αα½αααΆα’αΆα ααααΌαααΆαααααααα edge "types" ααααα»ααααα (ααα»αααααα·αααααΉααααααααααααααααα· scalar ααα»ααααααα ααα»ααααααααΆαααΆαααααΆααααααααΆααααα)α αααααααααα RDF αααααΎαααααααααα ααΉα LPG αα αα αααααααααΌαα½αα¬ααααααααα αααααααααα LPG ααΎαααααααααα ααΉα RDF ααΊαα·ααΆαααΆααααα»αααΆααααααα ααα»ααααααααΆα αα LPG ααΊααΌα ααΆααΌαααΆαααΈααααα αα·ααααΆ Harari ααΆαααααΆα αα RDF αααααΆααΌαα ααα»αααααα»αααα ααααΆααα½αααα
ααΆααααααα ααΆααα·α αα αα "ααΆαααΆαααα LPG" α ααα ααααΆααΈααααααα
- ααΆαααααΆααααααΌαααααΌ RDF αααααααΎα±ααααΆα’αΆα ααααΎαα ααΆαααΎααααΈαααααααααΎαα ααΆααααααααα§ααααα LPG αα αααα»αααΆ;
- ααααΎααΆαααααΆααααααΌαααΆααΆαααα½α RDF αααααααΎα±ααααΆα’αΆα α αΌαααααΎαα·αααααααα αααα»αααααΌαααααΆαααααααααα α¬α’αα»αααααααααααΆααααα»αααΆαααααΎαααα½ααα ααΆααααααΌαααααΆααΆααΆαααα½α LPG ααααααα·ααα
α.α‘. ααααΌαα·αααααα
ααΆααα·ααΈααΆαααααααΆα αααΎααααα’αΆα ααααΎααΆααα ααΈαααα
V.1.1. α’α αααααααα Singleton
αα·ααΈααΆαααααααααΉαααααΌααααα»ααααα»αααΆαα α»αααααα»αααααΆ RDF αα·α LPG ααΊαααα ααααΆ :
- α§ααΆα ααααααα½αα±ααααΆαααααΆαααα
:isMarriedToααΆαααααΆααααααααΌαααΆαααααΎ:isMarriedTo1,:isMarriedTo2αααα»ααα·αα αα - ααααααααΆαααΆαααααααααΆαααΆααααααααα»ααααΌαααΈααααΈα
:isMarriedTo1 :since "2013-09-13"^^xsd:dateαα·αα’ααααααα - ααΆαααααΆααααα§ααΆα αααααΆαααααααΆαα½α predicate ααΌαα
ααααΌαααΆααααααΎαα‘αΎααααααααααααΈ
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - ααΆα
αααΆααααΆαα
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:typeααα»αααααα·αα’αααΈααΌαα ααα»αααα’ααααα·ααα½αααααα:isMarriedTo1 rdf:type :isMarriedTo.
αααα αΆαα "ααΆαααΆαααα LPG" ααααΌαααΆααααααααΆααα ααΈααααα ααααα·α RDFS α ααΆααααααα α α·ααααααααααααααΌαα±ααααΆαααΆααα½ααααα αΌααα αααα»αααΆααααααα . ααΆαααααΆααααααΌααα½αα ααα½αα’αΆα ααααΌαααΆαααΆαααΆααααααΆααα αΆα RDF αααααΆααααααΆαααααΆαααααα·ααΆα ααα»αααααααααΆαααααααα Singleton Property α’αΆα ααααΌαααΆααααα·αααΆααααΆααααααΆαα αα αααααααααΌαα½αααααααααααα»αααααα
V.1.2. ααΆαβααβαααααΌαβααααΌαβααΆαβαααααα
αα·ααΈααΆααααααααααααααα·α ααΎαα ααααΈααΆαααΉαααΆααααα»α’α ααααααααα’αΆα ααΎαα‘αΎαααααΆαααααααΈααα αααβα’αΆα βαα·ααΆαβα’αααΈβαα½αβα’αααΈβααΈβαα αααβααΎαβααΉαβα’αΆα βαα·ααΆαβα’αααΈβααααα»βααααααα
αα·ααΈααΆαααααααααΉαααΆααααα»ααααα·ααΈααΆαααααααΆαααααααΊ α α ααΆααααΆ RDR, αα αααα»αααααα αα Blazegraph α ααΆβααΆααβααΈβααΎαβααααΌα αααααΆαααααα½αα’ααα αα·α AnzoGraph α ααΆαααΉαααΆααααα·ααΈααΆαααααααααΌαααΆαααααααααααΆααα·ααααααΆαα αααα»ααααααααααααααααΆα ααΆαααααΆααααααΌααααααααΌαααααΆαα αααα»α . αααααΆαααΆαααΆαααααα ααα»α ααΊααΆααααααΆααα αα αααα»ααααααα’ααααΎααα RDF α₯α‘αΌααααα’αααα’αΆα αααααα’αααΈαα½αααΌα αααα
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .V.1.3. αα·ααΈααΆαααααααααααααα
α’αααβαα·αβα’αΆα βααααΆαβααΆαα½αβαααβααααΌαβααΆαβααΆαβαα ααα»ααααβααααΆααβααβαααααβααΆ triplets ααΆαβα§αααααβαααααΆααβααΆααααΆαα αααβααΆ URIs αα·αβαααααΎαβ triplets ααααΈβααΆαα½α URIs ααΆαααααα α’αααΈααααα ααααααααΊααααααα·αααα·α αΌαααααΎ URI ααΆααααααα αααα»α SPARQLα ααΌα αααα Stardog α
αα αααα»α Allegrograph ααΆααααααααααα ααΆααααΌαααΆαααααΉαααΆα§ααααααααααΆααααΈαααα αααα»α Allegrograph ααα»αααααα αααα’αα»αααααα»αααααααααΈαα αα½ααααα·αααΆααα ααααααΆαααΆααααα ααΆαα ααααααΆαααΈα’ααααααααααΌαααΆαα αα½αααααααααΆααααΆαα»ααααααα triplet αα·ααααααΆ URI αα α αΎαααααααααα»αααααααααΆαααααααα’αΆα ααααΆααααααΆααααααααααα»αααααα α’ααααααααΆααααααΆαα LPG ααα½αααΆαα’αααΈααααα½αααα ααααΆαα αα αααα»ααααααααααΆα NQX αααααααΌαααΆααααααΎαααΆαα·ααα α§ααΆα ααααααααααα ααΉααα½αααΆαααΎαααααΆαα RDF* ααΎααα ααΌα αααα
:bob :marriedTo :alice {"since" : "2013-09-13"}α.α’. ααΆααΆαααα½α
αααααΆαααΆαααα LPG αααα»ααααααααΆααα½α α¬αα½ααααααααααα ααααα·αααααΌ α’αααααααΌαααααΎα±ααααΆα’αΆα ααααΎαααα½αααΎαα·αααααααααα»αααααΌααααααα
- Blazegraph αααααΆαααααα½α RDF * ααΆαααα ΠΈ . αααα½α SPARQL* ααΎααα ααΌα αααα
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }- Anzograph ααααΆαααααααααα α αΎαααΉαααΆαααα ααΆααΆαααα½ααα αααα»α Neo4j α
- Stardog ααΆαααααααα½αα―α SPARQL αα·α α ααααααααΈαα α’αααα’αΆα ααα½αααΆα URI ααΈαα αα·α "ααααααΆαααααΆ" αα αααα»α SPARQL αααααααΎα’αααΈαα½αααΌα αααα
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Allegrograph ααααΆαααααααα½αα―ααααααα SPARQLα
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }ααααα·ααΈααα GraphDB αααα»αααααααα½αααΆαααΆαααα Tinkerpop/Gremlin ααααα·αααΆαααα LPG ααα»ααααααΆααΆαααααα αααα»ααααα 8.0 α¬ 8.1 α
VI. ααΆαααΉααααααΉαα’αΆααααΆααααα
αα·αααΆαααΆαααααααααΆαααααααΈααααα ααααα ααα»α ααααααααααααα»α "triplestore of choice" αα·α "open source triplestore" sets ααα α αΆα RDF αααααααΎαα αα ααααΈααΊααΆααααΌααααααααααΆαααΈααΆαααααΆαααΆαααααΎαααααα’αααααΆααααΆαααααΎααααΆαααααα αΆααααα α αΎαα αΆα RDF ααααΈααααααα»αα ααααααΎ (ααΌα ααΆ AnzoGraph) ααΊααΆααααααα·αα αααα»ααα αα·α ααΎαα’αΆα αα·ααΆαα’αααΈααΆαααα α»α...
ααΆβααΆαβαα·αβααΆαα αααααβααΎαβα αα βαα·αβααααΌαβααΆαβαα·αβαααα»αβαααβαααααβααβαα ααα»ααααβααααΆααβαααααβααΎαβα αα βαα½αβα ααα½αβαα·αβααααΌαβααΆαβααβααΎαβααΎαβααΆβαα½αβααααΎαααΎαβαααβααα Virtuoso αααβααΆαβααΆαβααααα»αααβααααΆαβααΆβαααααβααΎαβα αα ααΊβααΆαβαααα·αβαααα»αβαααα»αβαααβαααα»αβααα α»αα Blazegraph ααααΌαααΆααα·αααα AWS αα·ααααααΎαααΌαααααΆααα Amazon Neptune α α₯α‘αΌααααααΆαα·αα αααΆααααααΆααΎααΉαααΆαααΆαα ααααααΆααααΆαα αα ααΆαααα½ααααααααααα αα ααααα Jena...
ααααα·αααΎαααααααΎαα αα αα·αααααΆαααα ααα»ααααα’αααααααΆααααα ααααΆαααααααΆ αααα’αααΈααααα·αααΌαααΆααααααΌα αα»ααααα α§ααΆα ααα:
- ααααΆα α ααα αΆαααααα₯ααα·ααααα (αααααΆαααΆαααΆαααααααααααααΆαααααααααααααααααΆααΆαααΎαα‘αΎααααααα);
- Π² αααααΈαα»αα’αααα’αΆα ααααΎαααΎαααααααααΌαααααΆααααα₯ααα·ααααα ααΆαααα’αΆαααΆαα α»ααααααα’αααααααΎααααΆααααααΈα
ααΆααΌαα αααααΆααα’ααα IT ααΆααααα αααααααααααααΆαααααα·αα’αΆα α αΌαααααΎαααΆαααΆα ααΆαα’αα·ααααααααααααΆαααα»αααααΆαααΆααΆααΈαααααααΆα αααΎαα
ααααα: www.habr.com
