Semantic Web ΠΈ Linked Data ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ Π±Π»ΠΈΠΆΠ½Π΅ΠΌΡ ΠΊΠΎΡΠΌΠΎΡΡ: ΠΆΠΈΠ·Π½ΠΈ ΡΠ°ΠΌ Π½Π΅Ρ. Π§ΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡΡΡ ΡΡΠ΄Π° Π½Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠΊβ¦ Π½Ρ, Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π²Π°ΠΌ Π² Π΄Π΅ΡΡΡΠ²Π΅ Π² ΠΎΡΠ²Π΅Ρ Π½Π° Β«Ρ ΠΎΡΡ ΡΡΠ°ΡΡ ΠΊΠΎΡΠΌΠΎΠ½Π°Π²ΡΠΎΠΌΒ». ΠΠΎ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡ Π½Π° ΠΠ΅ΠΌΠ»Π΅; ΡΡΠ°ΡΡ Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΎΠΌ-Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅.
Π ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎ ΡΠ²Π΅ΠΆΠΈΡ , Π½Π΅ ΡΡΠ°ΡΠ΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΡΠ΅Π², ΡΡΠ΅Π½Π΄Π°Ρ ΠΈΠ· ΠΌΠΈΡΠ° RDF-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ. ΠΠ΅ΡΠ°ΡΠΎΡΠ° Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π°Π±Π·Π°ΡΠ΅ Π±ΡΠ»Π° Π½Π°Π²Π΅ΡΠ½Π° ΡΠΏΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΎΠΉ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ.
ααΌαααΆαααΈαααΆα
I. GraphQL αααααΆααααΆαα αΌαααααΎ RDF
αααα αααα’αα α±ααΆααααααααΌαααΆααααααααΌααααα
- 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 ααΎαα’αΆα
ααααΉαα‘αΎααα·αααΌαα’αααΈαααααΆαααααααααΌαα
αααααααααααΈαα·ααααΆααΆαααΈαααααΌα ααΎαα’αΆα
αα·ααΆαααΆαααΆ ααΆααααα»α RDF αααα αΆαααΈααΆαααααααααα½ααααααααααααΆααααΆαααααΎαααΆα αααααα αα·αααααα·ααααα·ααΆααα
αααα»ααααααααααα "ααΆαααααΌ polyglot" α αααααΆαααΆαααΆααααα ααΆααααΌαααΆαααααΉαααΆ αααΌααααααααα α’ααααααααααΌαααα αΎα α αΎαααααΌαααΆααααα½αααα
αα·ααΆαα±ααααααΈ ααααΆαααααΌαααα αααα»αα
ααα§αααα·αα’αααααααΆα
ααααα‘αααα½αα
αααααααααΆααααα DBMSs αα α»ααααΌ ααα»αααααααααΆαααααααα ααΆα’αΆα
ααααΌαααΆαααααααααΆααααΆαα
αα
α»αααααααα·αααΆα DBMSs αα α»ααααΌ "ααα’ααααΎ" ααΎααααΌααααΆα αα (RDF α’αΆα
α
αΆαααα»αααΆααΆααααααααααααΆ) . ααααΌαα α»ααααΌααΌα
αα½αα
ααα½α - ααΆαααΆααααααΆααααα»α RDF αααααΆααααααΌααααΆα αα LPG αααα½α - ααΉαααααΌαααΆααα·ααΆααααΆαα
αααα»α
III. OLTP αααααΉα OLAP
ααααααΆαααΆααααα Gartner ααΌα
ααααΆα
ααα»ααααααΎαααααααααα»α RDF αααα·ααα ααΎααΆαααααααΆα OLTP-OLAP αα α―ααΆ? αααα»αααΉαααααΎαααΆααα·ααΈαααα ααΆαααα ααΈααα α¬αα ααΈαααα ααΎααααΈαααα αΆαααΈα’αααΈααααα½αααααΆαααααα αα α’ααααααΆααααΈααΈααΊααααΌαααΆαα ααΆαααααΎαααααααα»αααΌαααααΆα α’αΌααΈα - ααααΎαααΆααααααΆααΆαα’ααΈαααΊαα·αα
ααααααΆαααΆααααααα ααα
- ααααααΆαααααΆααα½ααααα
αΌαααΆαα½α MongoDB αααααααΌαααΆαα’αα»αααααα
αααα»α GraphDB ααΊαα·ααα·α
ααα
ααΆααααα ααΎααααΈααααΎααΆααα»ααα·αααΆαααααααααα αΆααΆαα’αα»αααα; - Stardog αα
ααΆααααααααΆααα·αααΆαααααα»α
αααααα‘αΎααα·α αααΆαααΈα αααααααααΆαα½αααΉαααααα ααααΎα±αααααααΎαα‘αΎαααΌαααααΎαααΆαααα
Π ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° Π½Π° ΡΡΠ½ΠΊΠ΅. ΠΎΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ IBM Netezza ΠΈ Amazon Redshift β
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { β¦ }
IV. RocksDB
αααααααΆαα αΎαα
ααΈαα½αααΆααα·αα·α
ααααααα
ααΈααΈα αααααα (ααααα·ααααααα·ααα) ααΎαααααΆαααααΆαααααααααααΌαααΆααααααΎαα‘αΎααα ααΎ RocksDB α
α§ααΆα ααα eBay ααααΎ RocksDB αααα»α
α§ααΆα ααααα½αααα - αα½ααααααΆααααα αΆααααα½αααΆαααΈααα»ααααΆααααα»αα
V. ααΆαααΆαααα LPG
αααα»αααΌαααααΉαα’αααα’αααΈααΆααα»αααααΆααααΆαααααΆαααααΆα αα LPG αα·αααααΆα αα RDF α
αα
αααα»α LPG αααααααααααααα· scalar α’αΆα
ααααΌαααΆαααααααα
α±αα edge instances ααααααααααα
αααα»α RDF αα½αααΆα’αΆα
ααααΌαααΆαααααααα
edge "types" ααααα»ααααα (ααα»αααααα·αααααΉααααααααααααααααα· scalar ααα»ααααααα ααα»ααααααααΆαααΆαααααΆααααααααΆααααα)α αααααααααα RDF αααααΎαααααααααα
ααΉα LPG
ααΆααααααα ααΆααα·α αα αα "ααΆαααΆαααα 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 α ααΆααααααα
α
α·ααααααααααααααΌαα±ααααΆαααΆααα½ααααα
αΌααα
αααα»αααΆααααααα
V.1.2. ααΆαβααβαααααΌαβααααΌαβααΆαβαααααα
αα·ααΈααΆααααααααααααααα·α ααΎαα ααααΈααΆαααΉαααΆααααα»α’α ααααααααα’αΆα ααΎαα‘αΎαααααΆαααααααΈααα αααβα’αΆα βαα·ααΆαβα’αααΈβαα½αβα’αααΈβααΈβαα αααβααΎαβααΉαβα’αΆα βαα·ααΆαβα’αααΈβααααα»βααααααα
αα·ααΈααΆαααααααααΉαααΆααααα»ααααα·ααΈααΆαααααααΆαααααααΊ
<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .
V.1.3. αα·ααΈααΆαααααααααααααα
α’αααβαα·αβα’αΆα
βααααΆαβααΆαα½αβαααβααααΌαβααΆαβααΆαβαα ααα»ααααβααααΆααβααβαααααβααΆ triplets ααΆαβα§αααααβαααααΆααβααΆααααΆαα αααβααΆ URIs αα·αβαααααΎαβ triplets ααααΈβααΆαα½α URIs ααΆαααααα α’αααΈααααα
ααααααααΊααααααα·αααα·α
αΌαααααΎ URI ααΆααααααα
αααα»α SPARQLα ααΌα
αααα
αα
αααα»α Allegrograph
:bob :marriedTo :alice {"since" : "2013-09-13"}
α.α’. ααΆααΆαααα½α
αααααΆαααΆαααα LPG αααα»ααααααααΆααα½α α¬αα½ααααααααααα ααααα·αααααΌ α’αααααααΌαααααΎα±ααααΆα’αΆα ααααΎαααα½αααΎαα·αααααααααα»αααααΌααααααα
- Blazegraph αααααΆαααααα½α RDF * ααΆαααα
SPARQL* ΠΈGremlin . αααα½α SPARQL* ααΎααα ααΌα αααα
SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }
- Anzograph ααααΆαααααααααα
SPARQL* α αΎαααΉαααΆαααααααΈααΊα ααΆααΆαααα½ααα αααα»α 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Β» Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΎΡΡ. ΠΠΎΠ²ΡΠΌ RDF-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π°Π»Π΅ΠΊΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½ΠΎΠ²ΡΡ RDF-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ (ΡΠΎΠ³ΠΎ ΠΆΠ΅ AnzoGraph), Π·Π°ΠΊΡΡΡ. Π‘ΠΊΠΎΡΠ΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π΄Π°ΠΆΠ΅ ΠΎΠ± ΡΠ±Π°Π²Π»Π΅Π½ΠΈΡΡ β¦
ααΆβααΆαβαα·αβααΆαα αααααβααΎαβα αα βαα·αβααααΌαβααΆαβαα·αβαααα»αβαααβαααααβααβαα ααα»ααααβααααΆααβαααααβααΎαβα αα βαα½αβα ααα½αβαα·αβααααΌαβααΆαβααβααΎαβααΎαβααΆβαα½αβααααΎαααΎαβαααβααα Virtuoso αααβααΆαβααΆαβααααα»αααβααααΆαβααΆβαααααβααΎαβα αα ααΊβααΆαβαααα·αβαααα»αβαααα»αβαααβαααα»αβααα α»αα Blazegraph ααααΌαααΆααα·αααα AWS αα·ααααααΎαααΌαααααΆααα Amazon Neptune α α₯α‘αΌααααααΆαα·αα αααΆααααααΆααΎααΉαααΆαααΆαα ααααααΆααααΆαα αα ααΆαααα½ααααααααααα αα ααααα Jena...
ααααα·αααΎαααααααΎαα αα αα·αααααΆαααα ααα»ααααα’αααααααΆααααα ααααΆαααααααΆ αααα’αααΈααααα·αααΌαααΆααααααΌα αα»ααααα α§ααΆα ααα:
- ααααΆα
ααα α ααα αΆαααααα₯ααα·ααααα (αααααΆαααΆαααΆαααααααααααααΆαααααααααααααααααΆααΆαααΎαα‘αΎααααααα); - Π²
GraphDB Cloud , Π³Π΄Π΅ ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΠ»Π°Π½, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ .
ααΆααΌαα αααααΆααα’ααα IT ααΆααααα αααααααααααααΆαααααα·αα’αΆα α αΌαααααΎαααΆαααΆα ααΆαα’αα·ααααααααααααΆαααα»αααααΆαααΆααΆααΈαααααααΆα αααΎαα
ααααα: www.habr.com