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

I. GraphQL fĂŒr den Zugriff auf RDF
, 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:
- Stardog (, );
- Produkte von TopQuadrant (, ).
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 gemacht. Oder man kann mittlerweile einfach .
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.
- In Stardog kann man jetzt â insbesondere alles auf demselben GraphQL â die Darstellung von MongoDB-Daten in virtuellen RDF-Grafen konfigurieren;
- GraphDB ermöglicht es seit kurzem, SPARQL-Elemente in MongoDB-Abfragen einzufĂŒgen.
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 erinnern, das man anpassen kann, , 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 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 .
III. OLTP vs. OLAP
Gartner selbst , 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 vorgesehen, um Probleme mit der Schreibgeschwindigkeit zu umgehen;
- Stardog geht sogar noch weiter und komplett 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 â . 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 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 , 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 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 . Vor seiner Entstehung musste man fĂŒr historische Informationen zu Wikidata ĂŒber 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 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:
- Ănderungen am RDF-Modell vornehmen, die es ermöglichen, LPG-Konstruktionen zu imitieren;
- Ă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 :
- Statt zum Beispiel des PrÀdikats
:isMarriedTowerden die PrÀdikate:isMarriedTo1,:isMarriedTo2usw. - Dann werden diese PrÀdikate zum Subjekt neuer Tripel:
:isMarriedTo1 :since "2013-09-13"^^xsd:dateu. 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 Einige Ă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 , auch bekannt als RDR, im Inneren von Blazegraph. Von Anfang an fĂŒr sich und AnzoGraph gewĂ€hlt. Die SoliditĂ€t des Ansatzes wird durch die Tatsache bestimmt, dass er entsprechende Ănderungen in beinhaltet. 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 Stardog.
In Allegrograph auf intermediĂ€rem Wege. Es ist bekannt, dass Tripel-Identifikatoren in Allegrograph , 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* und Eine Abfrage in SPARQL* sieht wie folgt aus:
SELECT * { <> :since ?since }- Anzograph unterstĂŒtzt auch und plant die UnterstĂŒtzung von , der Abfragesprache in Neo4j.
- Stardog unterstĂŒtzt sein eigenes SPARQL und 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 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 die Verbreitung einer kostenlosen Version (allerdings ist die Testphase der normalen Version auf das Doppelte gewachsen);
- in , 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
