Semantic Web a Linked Data jsou podobné blízkému vesmíru: život tam není. Abychom se tam vydali na delší dobu... no, nevím, co vám v dětství říkali na otázku "chci být astronautem". Ale pozorovat, co se děje, lze i na Zemi; stát se amatérským nebo dokonce profesionálním astronomem je mnohem snazší.
Tento článek se zaměří na aktuální trendy ze světa RDF úložišť, které jsou maximálně několik měsíců staré. Metafora v prvním odstavci byla inspirována epickou reklamní grafikou pod tímto odstavcem.
Epická grafika

I. GraphQL pro přístup k RDF
, že GraphQL se pokouší stát univerzálním jazykem pro přístup k databázím. Jak je to ale s možností přístupu k RDF pomocí GraphQL?
"Z krabice" tuto možnost poskytují:
- Stardog (, );
- produkty TopQuadrant (, ).
Pokud úložiště tuto možnost nenabízí, implementují ji sami napsáním příslušného „rozpoznávače“ (resolver). Tak to udělali například ve francouzském projektu . Nebo už nemusíme nic psát, stačí vzít .
Z pohledu ortodoxního zastánce Semantic Web a Linked Data je to samozřejmě smutné, protože to vypadá, že je určeno pro integrace stavěné kolem dalších data silos, nikoli pro platformy (samozřejmě, RDF úložišť).
Dojmy ze srovnání GraphQL se SPARQL zůstávají rozporuplné.
- Na jedné straně, GraphQL vypadá jako vzdálený příbuzný SPARQL: řeší typické problémy REST, jako je nadměrné načítání a vícenásobné dotazy — bez kterých by se asi nedalo považovat za jazyk dotazů, i když pro web;
- Na druhé straně, zklamává rigidnost struktury GraphQL. Odpovídajícím způsobem se jeho „introspektivnost“ zdá být velmi omezená v porovnání s plnou reflexivitou RDF. A neexistuje žádný ekvivalent property paths, takže není jasné, proč se nazývá "Graph-".
II. Adaptory pro MongoDB
Trend, který doplňuje předchozí.
- ve Stardog nyní — zejména na stejném GraphQL — je nastavena konverze dat z MongoDB do virtuálních RDF grafů;
- GraphDB nedávno umožňuje vkládat fragmenty MongoDB Query do SPARQL.
Pokud mluvíme obecněji o adaptorech k JSON zdrojům, které umožňují více či méně „na běžícím pásu“ představovat JSON uložený v těchto zdrojích jako RDF, můžeme vzpomenout na poměrně starý , který lze připojit, , k Apache Jena.
Shrnující první dva trendy lze říci, že RDF úložiště vykazují plnou připravenost k integracím a fungování v podmínkách „polyglot persistence“. Je známo, že to poslední už dávno není v módě a na jeho místo multimodelnost. A jak to vypadá s multimodelností ve světě RDF úložišť?
Pokud to shrneme, tak nijak. Tématu multimodelních DBMS bychom chtěli věnovat samostatný článek, zatím si můžeme povšimnout, že multimodelní DBMS, „založené“ na grafovém modelu (jednu jeho variantu lze považovat za RDF), v současnosti neexistují. O nějaké malé multimodelnosti — podpoře RDF úložišti alternativního grafového modelu LPG — bude vyprávěno v .
III. OLTP vs. OLAP
Nicméně, i Gartner , že multimodelnost je podmínka sine qua non především pro operační DBMS. To je samozřejmé: v situaci „polyglot persistence“ vznikají hlavní problémy s transakčností.
Ale kde se nacházejí RDF úložiště na škále OLTP—OLAP? Odpověděl bych takto: ani tam, ani tam. K označení toho, k čemu jsou určena, je potřeba nějaká třetí zkratka. Jako variantu bych navrhl OLIP — Online Intellectual Processing.
A přesto:
- mechanismy integrace v GraphDB jsou určené nejen pro obcházení problémů s výkonem zápisu; přepisuje
- motor, opět s cílem zvýšit výkon zápisu. AnzoGraph
. Obrázek z reklamy na produkt založený na něm byl umístěn na začátku článku. AnzoGraph se prezentuje jako GOLAP řešení. Co říkáte na SPARQL s oknovými funkcemi? — IV. RocksDB
Dříve užbyl odkaz
na oznámení Stardog 7 Beta, kde se říkalo, že Stardog hodlá použít jako podkladový systém úložiště RocksDB — úložiště „klíč-hodnota“, facebookový fork googleovského LevelDB. Proč už stojí za to mluvit o určitém trendu? článku na Wikipedii
, na RocksDB „přecházejí“ nejen RDF úložiště. Existují projekty zaměřené na použití RocksDB jako úložiště v ArangoDB, MongoDB, MySQL a MariaDB, Cassandra. , do RocksDB „přesazují“ nejen RDF úložiště. Existují projekty, které využívají RocksDB jako úložný engine v ArangoDB, MongoDB, MySQL a MariaDB, Cassandra.
Za druhé, na RocksDB se realizují projekty (tj. nikoli produkty) odpovídající tematice.
Například eBay používá RocksDB v pro svůj „graf znalostí“. Mimochodem, je zajímavé číst: jazyk dotazů začal jako interní formát, ale v poslední době se hodně přibližuje SPARQL.. Jako v anekdotě: kolik knowledge graph nevytváříme, vždy dostaneme RDF.
Dalším příkladem je služba, která se objevila před několika měsíci, . Před jejím vznikem jsme museli na historické údaje Wikidat přistupovat přes přes standardní Mediawiki API. Nyní je mnoho věcí možné na čistém SPARQL. „Pod kapotou“ také běží RocksDB. Mimochodem, WDHQS vytvořil, zdá se, člověk, který se zabýval importem Freebase do Google Knowledge Graph.
V. Podpora LPG
Připomínám hlavní rozdíl mezi LPG grafy a RDF grafy.
V LPG mohou být k instancím hraně přidělovány skalární vlastnosti, zatímco v RDF mohou být přidělovány pouze k „typům“ hran. (Na druhou stranu, nejen skalární vlastnosti, ale i běžné vztahy). Tento limit RDF ve srovnání s LPG různými technikami modelování. Limit LPG v porovnání s RDF se překonává obtížněji, ale LPG grafy jsou více podobné obrázkům z učebnice Harari, proto je lidé chtějí.
Je zřejmé, že úkol „podporovat LPG“ se dělí na dvě části:
- provedení změn do modelu RDF, které umožňují imituje v něm LPG konstrukce;
- provedení změn v dotazovacím jazyce RDF, které umožňují přístup k datům v tomto změněném modelu, — nebo implementace možnosti dotazovat se na tento model v populárních dotazovacích jazycích LPG.
V.1. Data Model
Zde existuje několik možných přístupů.
V.1.1. Singleton Property
Nejvíce doslovný přístup k harmonizaci RDF a LPG — to je asi :
- Namísto například predikátu
:isMarriedTopoužívají se predikáty:isMarriedTo1,:isMarriedTo2atd. - Pak se tyto predikáty stávají subjekty nových trojic:
:isMarriedTo1 :since "2013-09-13"^^xsd:datea další. - Vztah těchto instancí predikátů s obecným predikátem se nastavuje trojicemi typu
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - Je zřejmé, že
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, ale zamyslete se, proč byste neměli prostě napsat:isMarriedTo1 rdf:type :isMarriedTo.
Úkol „podporující LPG“ se zde řeší na úrovni RDFS. Takové řešení vyžaduje provedení změn v odpovídajícím . Některé změny mohou být vyžadovány od RDF úložišť, která podporují připojení odvozenin, zatímco Singleton Property lze zatím chápat jednoduše jako další techniku modelování.
V.1.2. Reifikace správně
Méně naivní přístupy vycházejí z uvědomění si, že instance vlastností mohou být plně instancovány trojicemi. Pokud budeme schopni něco říct o trojicích, budeme mít možnost hovořit i o instancích vlastností.
Nejrozsáhlejší z těchto přístupů je , také známý jako RDR, v útrobách Blazegraphu. Od samého počátku pro sebe a AnzoGraph. Solidnost přístupu se určuje tím, že v jeho rámci očekávané změny v . Podstata je však nesmírně jednoduchá. V Turtle serializaci RDF již teď můžeme psát přibližně takto:
<> :since "2013-09-13"^^xsd:date .V.1.3. Další přístupy
Nemusíme se zabývat formální sémantikou, jednoduše můžeme brát v úvahu, že trojice mají určité identifikátory, které jsou samozřejmě URI, a sestavovat nové trojice s těmito URI. Bude stačit poskytnout přístup k těmto URI ve SPARQL. Tímto způsobem Stardog.
V Allegrographu prostřední cestou. Je známo, že identifikátory trojic v Allegrographu , ale při implementaci trojkových atributů venku se nezobrazují. Nicméně ke formální sémantice je to stále velmi daleko. Zajímavé je, že atributy trojic nejsou URI a hodnoty těchto atributů také mohou být jen literály. Vyznavači LPG dostávají přesně to, co chtěli. V speciálně vynalezeném formátu NQX příklad, podobný uvedenému výše pro RDF*, vypadá takto:
:bob :marriedTo :alice {"since" : "2013-09-13"}V.2. Dotazovací jazyky
Podporujíc tím či oním způsobem LPG na úrovni modelu, je třeba umožnit provádění dotazů k datům v takovém modelu.
- Blazegraph pro dotazy na RDF* podporuje a Dotaz na SPARQL* vypadá takto:
SELECT * { <> :since ?since }- AnzoGraph také podporuje a plánuje podporovat , dotazovací jazyk v Neo4j.
- Stardog podporuje vlastní SPARQL a Gremlin. Získat v SPARQL URI trojice a "meta-informace" lze pomocí přibližně takové konstrukce:
SELECT * {
BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
?id :since ?since
}- Allegrograph také podporuje vlastní SPARQL:
SELECT * { ("since" ?since) franz:attributesNameValue ( :bob :marriedTo ?wife ) }Mimochodem, GraphDB nějakou dobu podporovala Tinkerpop/Gremlin, aniž by v tom čase podporovala LPG, ale ve verzi 8.0 nebo 8.1 to přestalo.
VI. Zpřísnění licencí
V poslední době nedošlo k žádným přírůstkům na pomezí mezi „triplestore of choice“ a „open source triplestore“. Nové RDF úložiště s otevřeným zdrojovým kódem se stále vzdaluje od toho, aby se stalo správnou volbou pro každodenní použití a zdrojový kód nových RDF úložišť, která by stála za vyzkoušení (například AnzoGraph), je uzavřen. Spíše lze mluvit o úbytcích…
Samozřejmě, že otevřený zdrojový kód se dříve nezavře, ale některá úložiště s otevřeným zdrojovým kódem postupně přestávají být považována za seriózní volbu. Virtuoso, které má open-source verzi, podle mého názoru tonou v chybách. Blazegraph byl zakoupen AWS a stal se základem Amazon Neptune; nyní není jasné, zda bude ještě nějaké nové vydání. Zůstává pouze Jena…
Pokud ovšem otevřený zdrojový kód není příliš důležitý a chcete si prostě vyzkoušet, je to také méně optimistické než dříve. Například:
- Stardog distribuci bezplatné verze (nicméně doba zkušebního období se zdvojnásobila);
- v , kde dříve bylo možné zvolit bezplatný základní plán, byla pozastavena registrace nových uživatelů.
Obecně platí, že pro obyčejného IT uživatele se vesmír stává stále méně a méně dostupným, jeho zvládnutí se stává výsadou korporací.
Zdroj: habr.com
