Was passiert gerade mit den RDF-Speicherlösungen?

Das Semantic Web und Linked Data sind Ă€hnlich wie der nahe Weltraum: Es gibt dort kein Leben. Um dorthin fĂŒr einen mehr oder weniger lĂ€ngeren Zeitraum zu gehen ... nun, ich weiß nicht, was man euch in der Kindheit auf die Frage "Ich möchte Astronaut werden" geantwortet hat. Aber man kann das Geschehen auch von der Erde aus beobachten; es ist viel einfacher, Hobbyastronom oder sogar Profi zu werden.

In diesem Artikel geht es um frische Trends aus der Welt der RDF-Speicher, nicht Ă€lter als einige Monate. Die Metapher im ersten Absatz wurde von einem episch großen Werbebild unterhalb inspiriert.


Episches Bild

Was passiert gerade mit den RDF-Speicherlösungen?

I. GraphQL fĂŒr den Zugriff auf RDF

Es wird gesagt,, dass GraphQL den Anspruch erhebt, eine universelle Sprache fĂŒr den Zugriff auf Datenbanken zu sein. Wie sieht es jedoch mit der Möglichkeit aus, ĂŒber GraphQL auf RDF zuzugreifen?

„Out of the box“ bieten folgende Möglichkeiten:

Wenn das Speicher keine solche Möglichkeit bietet, kann man sie selbst umsetzen, indem man einen entsprechenden „Resolver“ schreibt. So wurde es beispielsweise im französischen Projekt DataTourismegemacht. Oder man kann mittlerweile einfach HyperGraphQL.

ausprobieren. Aus Sicht eines orthodoxen AnhĂ€ngers des Semantic Web und Linked Data ist all dies natĂŒrlich enttĂ€uschend, da es anscheinend fĂŒr Integrationen gedacht ist, die um die nĂ€chsten Daten-Silos aufgebaut werden, und nicht fĂŒr Plattformen (selbstverstĂ€ndlich RDF-Speicher) geeignet sind.

Die EindrĂŒcke aus dem Vergleich von GraphQL mit SPARQL bleiben gemischt.

  • Einerseits wirkt GraphQL wie ein entfernter Verwandter von SPARQL: Es werden typische REST-Probleme wie Überabfragen und Fragmentierung gelöst – ohne die man wahrscheinlich nicht einmal als AbfragesprachegezĂ€hlt werden könnte, selbst wenn es nur fĂŒr das Web ist;
  • andererseits enttĂ€uscht die strenge Schema-Anforderungen von GraphQL. Entsprechend erscheint seine „IntrospektivitĂ€t“ im Vergleich zur vollstĂ€ndigen ReflexivitĂ€t von RDF als sehr eingeschrĂ€nkt. Und es gibt keinen passenden Analogie zu property paths, weshalb nicht einmal klar ist, warum es „Graph-” heißt.

II. Adapter fĂŒr MongoDB

Ein Trend, der komplementÀr zu dem vorherigen ist.

Im weiteren Sinne kann man ĂŒber Adapter fĂŒr JSON-Quellen sprechen, die mehr oder weniger „on-the-fly“ das in diesen Quellen gespeicherte JSON als RDF darstellen, und man kann sich an das schon lange existierende SPARQL Generateerinnern, das man anpassen kann, zum Beispiel, zu Apache Jena.

Zusammenfassend lĂ€sst sich sagen, dass RDF-Speicher eine vollstĂ€ndige Bereitschaft fĂŒr Integrationen und den Betrieb unter Bedingungen der „polyglotten Persistenz“ zeigen. Es ist jedoch bekannt, dass dieser Trend schon lange nicht mehr angesagt ist, und ihm folgt die Multimodelle. Wie steht es um Multimodelle in der Welt der RDF-Speicher?

Kurz gesagt: gar nicht. Dem Thema multimodale Datenbanken sollte ein eigener Artikel gewidmet werden, aber derzeit kann festgestellt werden, dass es keine multimodalen Datenbanken gibt, die auf einem Graphmodell basieren (eine Variante davon könnte RDF sein). Über eine geringe MultimodalitĂ€t – die UnterstĂŒtzung alternativer Graphmodelle durch RDF-Speicher – wird im Kapitel V.

III. OLTP vs. OLAP

Gartner selbst berichtet, dass MultimodalitĂ€t eine conditio sine qua non in erster Linie fĂŒr operationale Datenbanken ist. Das ist auch verstĂ€ndlich: In einer Situation der „polyglotten Persistenz“ treten die Hauptprobleme mit der TransaktionalitĂ€t auf.

Doch wo stehen RDF-Speicher auf der OLTP-OLAP-Skala? Ich wĂŒrde so antworten: weder hier noch dort. Um zu kennzeichnen, wofĂŒr sie gedacht sind, braucht es eine dritte AbkĂŒrzung. Als Vorschlag wĂŒrde ich OLIP — Online Intellectual Processing.

Doch dennoch:

  • Die in GraphDB umgesetzten Integrationsmechanismen mit MongoDB sind nicht zuletzt dafĂŒr vorgesehen, um Probleme mit der Schreibgeschwindigkeit zu umgehen;
  • Stardog geht sogar noch weiter und komplett schreibt die Engine neu, wiederum mit dem Ziel, die Schreibgeschwindigkeit zu erhöhen.

Lassen Sie mich nun einen neuen Akteur auf dem Markt vorstellen. Von den Machern von IBM Netezza und Amazon Redshift — AnzoGraph. Das Bild aus der Werbung fĂŒr das Produkt wurde zu Beginn des Artikels veröffentlicht. AnzoGraph positioniert sich als GOLAP-Lösung. Wie gefĂ€llt Ihnen SPARQL mit Fensterfunktionen? —

SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE {  
  }

IV. RocksDB

Oben wurde bereits auf die AnkĂŒndigung von Stardog 7 Beta verwiesen, in der erwĂ€hnt wurde, dass Stardog beabsichtigt, RocksDB als zugrunde liegendes Speichersystem zu nutzen — ein „Key-Value“-Speicher, ein Facebook-Fork von Googles LevelDB. Warum sollte man bereits von einem Trend sprechen?

Erstens, laut einem Artikel in Wikipedia, migrieren nicht nur RDF-Speicher zu RocksDB. Es gibt Projekte, die RocksDB als Speichermotor in ArangoDB, MongoDB, MySQL und MariaDB, Cassandra verwenden.

Zweitens werden auf RocksDB Projekte (d. h. keine Produkte) zu diesem Thema entwickelt.

Zum Beispiel nutzt eBay RocksDB in der Plattform fĂŒr sein „Wissen graf“. Übrigens ist es interessant zu lesen: die Abfragesprache begann als ein hauseigenes Format, hat sich aber kĂŒrzlich mehr und mehr wie SPARQL entwickelt. Wie im Witz: so viele Wissensgraphen wir erstellen, es wird immer RDF.

Ein weiteres Beispiel ist der vor einigen Monaten entstandene Wikidata History Query Service. Vor seiner Entstehung musste man fĂŒr historische Informationen zu Wikidata ĂŒber MWAPI auf die Standard-Mediawiki-API zugreifen. Jetzt ist vieles mit reinem SPARQL möglich. „Unter der Haube“ lĂ€uft dort auch RocksDB. Übrigens hat WDHQS anscheinend jemand gemacht, der beim Import von Freebase in den Google Knowledge Graph tĂ€tig war.

V. UnterstĂŒtzung von LPG

Ich erinnere an den Hauptunterschied zwischen LPG-Grafen und RDF-Grafen.

In LPG können an Instanzen von Kanten skalarische Eigenschaften angehĂ€ngt werden, wĂ€hrend sie in RDF nur an „Typen“ von Kanten angehĂ€ngt werden können (dafĂŒr können sie jedoch nicht nur skalare Eigenschaften, sondern auch normale Beziehungen haben). Diese EinschrĂ€nkung von RDF im Vergleich zu LPG wird ĂŒberwunden durch bestimmte Modellierungstechniken. Die EinschrĂ€nkung von LPG im Vergleich zu RDF ist schwerer zu ĂŒberwinden, aber LPG-Grafen Ă€hneln mehr als RDF-Grafen den Bildern aus Hararis Lehrbuch, weshalb die Menschen sie wollen.

Offensichtlich zerfĂ€llt die Aufgabe der „UnterstĂŒtzung von LPG“ in zwei Teile:

  1. Änderungen am RDF-Modell vornehmen, die es ermöglichen, LPG-Konstruktionen zu imitieren;
  2. Änderungen an der Abfragesprache fĂŒr RDF vornehmen, um auf die Daten in diesem geĂ€nderten Modell zuzugreifen, — oder die Möglichkeit zur Abfrage dieses Modells in gĂ€ngigen Abfragesprachen fĂŒr LPG realisieren.

V.1. Datenmodell

Hier gibt es mehrere mögliche AnsÀtze.

V.1.1. Singleton-Eigenschaft

Der direkteste Ansatz zur Harmonisierung von RDF und LPG ist wahrscheinlich singleton property:

  • Statt zum Beispiel des PrĂ€dikats :isMarriedTo werden die PrĂ€dikate :isMarriedTo1, :isMarriedTo2 usw.
  • Dann werden diese PrĂ€dikate zum Subjekt neuer Tripel: :isMarriedTo1 :since "2013-09-13"^^xsd:date u. a.
  • Die Verbindung dieser Instanzen von PrĂ€dikaten mit dem allgemeinen PrĂ€dikat wird durch Tripel der Art :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • Offensichtlich gilt, rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, aber denken Sie darĂŒber nach, warum man nicht einfach schreiben sollte :isMarriedTo1 rdf:type :isMarriedTo.

Die Aufgabe der „UnterstĂŒtzung von LPG“ wird hier auf der Ebene von RDFS gelöst. Diese Lösung erfordert Änderungen im entsprechenden StandardEinige Änderungen könnten von RDF-Speichern erforderlich sein, die das AnhĂ€ngen von Folgerungen unterstĂŒtzen. Bis dahin kann die Singleton-Eigenschaft einfach als eine weitere Modellierungstechnik betrachtet werden.

V.1.2. Reifikation richtig gemacht

Weniger naive AnsĂ€tze ergeben sich aus dem Bewusstsein, dass Eigenschaftsinstanzen durchaus mit Tripeln instanziiert werden können. Wenn wir etwas ĂŒber Tripel sagen können, haben wir auch die Möglichkeit, ĂŒber Instanzen von Eigenschaften zu sprechen.

Der solideste dieser AnsĂ€tze ist RDF*, auch bekannt als RDR, geboren im Inneren von Blazegraph. Von Anfang an wurde es fĂŒr sich und AnzoGraph gewĂ€hlt. Die SoliditĂ€t des Ansatzes wird durch die Tatsache bestimmt, dass er angeboten entsprechende Änderungen in RDF Semanticsbeinhaltet. Die Essenz ist jedoch Ă€ußerst einfach. In der Turtle-Serialisierung von RDF kann man nun etwa Folgendes schreiben:

<> :since "2013-09-13"^^xsd:date .

V.1.3. Andere AnsÀtze

Man kann sich um formale Semantik keine Sorgen machen und einfach annehmen, dass Tripel einige Identifikatoren haben, die selbstverstĂ€ndlich URIs sind, und neue Tripel mit diesen URIs bilden. Man mĂŒsste nur den Zugriff auf diese URIs in SPARQL ermöglichen. So von Insidern und Beobachtern kommen. Eine offizielle Stellungnahme dazu gibt es bisher nicht. Stardog.

In Allegrograph auf einen Gegenvorschlag ein und stimmten zu, Teile des Codes von Zinc in den Hauptkern zu ĂŒbertragen. Im Wesentlichen werden einige Komponenten von Zinc in den Kernel ĂŒbertragen, jedoch nicht als separate API, sondern als Teil des Crypto-API. Beispielsweise sind im Crypto-API bereits auf intermediĂ€rem Wege. Es ist bekannt, dass Tripel-Identifikatoren in Allegrograph einen, aber bei der Implementierung von Triple-Attributen nach außen sind sie nicht sichtbar. Doch auch zur formalen Semantik ist es noch ein weiter Weg. Bemerkenswert ist, dass die Tripelattribute keine URIs sind und dass die Werte dieser Attribute ebenfalls nur Literale sein können. AnhĂ€nger von LPG erhalten genau das, was sie wollten. In einem eigens entwickelten NQX-Format sieht ein Beispiel, das dem oben genannten fĂŒr RDF* Ă€hnelt, so aus:

:bob :marriedTo :alice {"since" : "2013-09-13"}

V.2. Abfragesprachen

Nachdem LPG auf Modell-Ebene unterstĂŒtzt wurde, sollte es ermöglicht werden, Anfragen an die Daten in einem solchen Modell zu stellen.

  • Blazegraph unterstĂŒtzt fĂŒr Abfragen zu RDF* SPARQL* und Gremlin.Eine Abfrage in SPARQL* sieht wie folgt aus:

 SELECT * { <> :since ?since }

  • Anzograph unterstĂŒtzt auch SPARQL* und plant die UnterstĂŒtzung von Cypher, der Abfragesprache in Neo4j.
  • Stardog unterstĂŒtzt sein eigenes Erweiterung SPARQL und erneut Gremlin. In SPARQL kann die URI des Tripels und die "Meta-Information" etwa mit folgender Konstruktion abgerufen werden:

SELECT * {
    BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
    ?id :since ?since
}

  • Allegrograph unterstĂŒtzt ebenfalls sein eigenes Erweiterung SPARQL:

 SELECT * { ("since" ?since)  franz:attributesNameValue  ( :bob :marriedTo ?wife ) }

Übrigens unterstĂŒtzte GraphDB eine Zeit lang Tinkerpop/Gremlin, unterstĂŒtzte dabei aber kein LPG. In Version 8.0 oder 8.1 wurde dies eingestellt.

VI. VerschÀrfung der Lizenzen

In letzter Zeit gab es keine VerstĂ€rkung im Schnittpunkt der Mengen "triplestore of choice" und "open source triplestore". Neue RDF-Speicher mit offenem Quellcode sind immer noch weit davon entfernt, eine gute Wahl fĂŒr den tĂ€glichen Gebrauch zu sein, und der Quellcode neuer RDF-Speicher, die man gerne nutzen wĂŒrde (wie AnzoGraph), ist geschlossen. Man könnte sogar von einem RĂŒckgang sprechen...

NatĂŒrlich wird der offene Quellcode nicht einfach geschlossen, aber einige Speicher mit offenem Quellcode werden allmĂ€hlich nicht mehr als wĂŒnschenswerte Wahl betrachtet. Virtuoso, das eine Open-Source-Edition hat, ist meiner Meinung nach voller Bugs. Blazegraph wurde von AWS gekauft und bildet die Grundlage fĂŒr Amazon Neptune; jetzt ist unklar, ob es noch einen weiteren Release geben wird. Es bleibt nur Jena...

Wenn der offene Quellcode jedoch nicht besonders wichtig ist und man einfach nur ausprobieren möchte, sieht es auch weniger rosig aus als frĂŒher. Zum Beispiel:

  • Stardog stoppt die Verbreitung einer kostenlosen Version (allerdings ist die Testphase der normalen Version auf das Doppelte gewachsen);
  • in GraphDB Cloud, wo frĂŒher ein kostenloser Basisplan gewĂ€hlt werden konnte, ist die Registrierung neuer Benutzer eingestellt worden.

Insgesamt wird der Weltraum fĂŒr den durchschnittlichen IT-Nutzer immer unzugĂ€nglicher, und seine Erschließung wird zum GeschĂ€ft der Unternehmen.

Quelle: habr.com

60GB SSD 8Gb DDR4