Das semantische Web und Linked Data sind wie der nahe Weltraum: Es gibt dort kein Leben. Um fĂŒr einen mehr oder weniger lĂ€ngeren Zeitraum dorthin zu reisen⊠nun, ich weiĂ nicht, was man Ihnen in Ihrer Kindheit als Antwort auf âIch möchte Astronaut werdenâ gesagt hat. Aber man kann das Geschehen auch von der Erde aus beobachten; Astronom zu werden, sei es als Hobby oder professionell, ist viel einfacher.
In diesem Artikel geht es um frische, nicht Àlter als einige Monate, Trends aus der Welt der RDF-Speicher. Die Metapher im ersten Absatz wurde von einem epischen Werbebild unter dem Schnitt inspiriert.
Das epische Bild

I. GraphQL fĂŒr den Zugriff auf RDF
, dass GraphQL den Anspruch erhebt, eine universelle Sprache fĂŒr den Zugriff auf Datenbanken zu werden. Wie steht es jedoch um die Möglichkeit des Zugriffs auf RDF ĂŒber GraphQL?
Diese Möglichkeit bieten:
- Stardog (, );
- Produkte von TopQuadrant (, ).
Wenn das Speicher nicht die Möglichkeit bietet, wird sie selbst implementiert, indem man einen entsprechenden âResolverâ schreibt. So handhabte es beispielsweise das französische Projekt . Oder man kann bereits alles so lassen, wie es ist, und einfach .
Aus der Sicht eines orthodoxen BefĂŒrworters des Semantic Web und von Linked Data ist das alles natĂŒrlich bedauerlich, da es scheinbar fĂŒr Integrationen gedacht ist, die um neue Daten-Silos herum gebaut werden, anstatt fĂŒr Plattformen (selbstverstĂ€ndlich die RDF-Speicher).
Die EindrĂŒcke vom Vergleich zwischen GraphQL und SPARQL sind zwiespĂ€ltig.
- Einerseits wirkt GraphQL wie ein entfernter Verwandter von SPARQL: Es adressiert typische Probleme von REST wie Ăberabfragen und die Vielzahl an Anfragen â ohne die man wohl kaum als Abfragesprachegilt, auch wenn es nur fĂŒr das Web ist;
- Andererseits enttĂ€uscht die strenge Schemata von GraphQL. Entsprechend scheint seine âIntrospektivitĂ€tâ im Vergleich zur vollstĂ€ndigen ReflexivitĂ€t von RDF sehr eingeschrĂ€nkt. Und es gibt kein Ăquivalent zu Property Paths, sodass unklar bleibt, warum es âGraph-â genannt wird.
II. Adapter fĂŒr MongoDB
Ein Trend, der komplementÀr zu vorherigen ist.
- In Stardog ist es jetzt â insbesondere alles in demselben GraphQL â möglich, die Daten von MongoDB in virtuelle RDF-Grafen abzubilden;
- GraphDB hat kĂŒrzlich Fragmenten fĂŒr MongoDB-Queries in SPARQL einzufĂŒgen.
Wenn wir breiter ĂŒber JSON-Adapter sprechen, die es ermöglichen, den in diesen Quellen gespeicherten JSON mehr oder weniger âon the flyâ als RDF darzustellen, können wir auch an die bereits seit einiger Zeit existierende erinnern, die an Apache Jena angepasst werden kann.
Zusammenfassend lĂ€sst sich zu den ersten beiden Trends sagen, dass RDF-Speicher vollstĂ€ndig bereit fĂŒr Integrationen sind und unter Bedingungen der âpolyglotten Persistenzâ operieren. Es ist jedoch bekannt, dass Letzteres schon seit einiger Zeit nicht mehr en vogue ist, und es seinem die MultimodalitĂ€t gibt. Wie steht es um die MultimodalitĂ€t in der Welt der RDF-Speicher?
Kurz gesagt: gar nicht. Das Thema multimodale DBMS verdient einen eigenen Artikel, doch derzeit kann festgestellt werden, dass es derzeit keine multimodalen DBMS gibt, die âaufâ dem Graphmodell basieren (eine Variante davon könnte man als RDF betrachten). Ăber eine gewisse kleine MultimodalitĂ€t â die UnterstĂŒtzung alternativer Graphmodelle durch RDF-Speicher â wird im .
III. OLTP vs. OLAP
Ăbrigens, auch Gartner sagt, dass MultimodalitĂ€t eine conditio sine qua non vor allem fĂŒr operative Datenbankmanagementsysteme. Das liegt auf der Hand: Bei der Situation der 'multivariaten Speicherung' treten die gröĂten Probleme mit der TransaktionsfĂ€higkeit auf.
Nur wo stehen RDF-Speicher auf der Skala von OLTP zu OLAP? Ich wĂŒrde sagen: weder hier noch da. Um zu kennzeichnen, wofĂŒr sie gedacht sind, benötigt man eine dritte AbkĂŒrzung. Eine Möglichkeit wĂ€re. OLIP â Online Intellektuelle Verarbeitung.
Aber dennoch:
- Die in GraphDB realisierten Integrationsmechanismen mit MongoDB sind nicht zuletzt um Probleme bei der Schreibperformance zu umgehen;
- Stardog geht sogar noch weiter und die Engine komplett, wiederum mit dem Ziel, die Schreibperformance zu steigern.
Und nun erlauben Sie mir, einen neuen Akteur auf dem Markt vorzustellen. Vom Schöpfer von IBM Netezza und Amazon Redshift â . Das Bild aus der Produktwerbung wurde zu Beginn des Artikels angefĂŒgt. AnzoGraph positioniert sich als GOLAP-Lösung. Wie wĂ€re es mit SPARQL und Fensterfunktionen? â
SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { ⊠}IV. RocksDB
Oben war bereits fĂŒr die AnkĂŒndigung von Stardog 7 Beta, in der erwĂ€hnt wurde, dass Stardog RocksDB als zugrunde liegendes Speichersystem verwenden wird â ein Key-Value-Speicher, der aus Facebooks Fork von Googles LevelDB hervorgegangen ist. Warum ist es jetzt sinnvoll, von einem Trend zu sprechen?
Erstens, laut , wird nicht nur auf RDF-Speicherlösungen auf RocksDB umgestiegen. Es gibt Projekte, die RocksDB als Speicher-Engine in ArangoDB, MongoDB, MySQL und MariaDB sowie Cassandra nutzen.
Zweitens werden auf RocksDB thematisch entsprechende Projekte (d. h. keine Produkte) entwickelt.
Zum Beispiel nutzt eBay RocksDB in der fĂŒr sein âWissensgraphâ. Ăbrigens ist es interessant zu lesen: die Abfragesprache begann als selbstentwickeltes Format, hat aber in letzter Zeit den Ăbergang zu etwas vollzogen, das viel mehr wie SPARQL aussieht. Wie in einem Witz: so viele Wissensgraphen wir auch erstellen, es bleibt immer RDF.
Ein weiteres Beispiel ist der kĂŒrzlich erschienene . Vor seiner EinfĂŒhrung musste man fĂŒr historische Informationen zu Wikidata ĂŒber auf die Standard-API von Mediawiki zugreifen. Jetzt ist vieles mit reinem SPARQL möglich. âUnter der Haubeâ steckt auch RocksDB. Ăbrigens wurde WDHQS anscheinend von jemandem entwickelt, der sich mit dem Import von Freebase in den Google Knowledge Graph beschĂ€ftigt hat.
V. UnterstĂŒtzung fĂŒr LPG
Ich erinnere an den Hauptunterschied zwischen LPG-Grafen und RDF-Grafen.
Bei LPG können Skalareigenschaften an die Kanteninstanzen angehĂ€ngt werden, wĂ€hrend sie bei RDF nur an die "Typen" der Kanten angehĂ€ngt werden können (wobei nicht nur Skalareigenschaften, sondern auch gewöhnliche Beziehungen möglich sind). Diese EinschrĂ€nkung von RDF im Vergleich zu LPG durch unterschiedliche Modellierungstechniken. Die EinschrĂ€nkungen von LPG im Vergleich zu RDF sind schwieriger zu ĂŒberwinden, aber LPG-Grafen sind mehr als RDF-Grafen wie Abbildungen aus Hararis Lehrbuch, weshalb sie von Menschen bevorzugt werden.
Offensichtlich lĂ€sst sich die Aufgabe der "UnterstĂŒtzung von LPG" in zwei Teile gliedern:
- Ănderungen am RDF-Modell vorzunehmen, die es ermöglichen, LPG-Konstruktionen zu simulieren;
- Ănderungen an der RDF-Abfragesprache vorzunehmen, die es ermöglichen, auf Daten in diesem verĂ€nderten Modell zuzugreifen, oder die Möglichkeit zu schaffen, Anfragen an dieses Modell in gĂ€ngigen Abfragesprachen zu stellen.
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 wohl :
- Anstelle von beispielsweise dem PrÀdikat
:isMarriedTowerden die PrÀdikate:isMarriedTo1,:isMarriedTo2usw. verwendet. - Dann werden diese PrÀdikate zu Subjekten neuer Tripel:
:isMarriedTo1 :seit "2013-09-13"^^xsd:dateund so weiter. - Die Verbindung dieser Instanzen von PrÀdikaten mit dem gemeinsamen PrÀdikat wird durch Tripel der Art hergestellt
:isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo. - Offensichtlich
rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, aber denken Sie daran, warum es nicht sinnvoll ist, einfach zu schreiben:isMarriedTo1 rdf:type :isMarriedTo.
Die Aufgabe der âUnterstĂŒtzung von LPGâ wird hier auf RDFS-Ebene gelöst. Diese Lösung erfordert Ănderungen an dem entsprechenden Einige Ănderungen können von RDF-Speichern erforderlich sein, die die Anbindung von Folgerungen unterstĂŒtzen, wĂ€hrend Singleton Property vorerst einfach als weitere Modellierungstechnik betrachtet werden kann.
V.1.2. Richtig ausgefĂŒhrte Reifikation
Weniger naive AnsĂ€tze ergeben sich aus dem Bewusstsein, dass Instanzen von Eigenschaften durchaus durch Tripel instanziiert werden. Wenn wir in der Lage sind, etwas ĂŒber Tripel zu sagen, erlangen wir auch die Möglichkeit, ĂŒber Instanzen von Eigenschaften zu sprechen.
Der solideste dieser AnsĂ€tze ist , auch RDR genannt, in den Tiefen von Blazegraph. Es wurde von Anfang an RDF Semantics bestimmt. entsprechende Ănderungen in Die Grundidee ist jedoch Ă€uĂerst einfach. Bei der Turtle-Serialisierung von RDF kann man jetzt etwa so schreiben:
<> :since "2013-09-13"^^xsd:date .V.1.3. Andere AnsÀtze
Man kann sich die formale Semantik ersparen und einfach annehmen, dass Tripel bestimmte Identifikatoren haben, die natĂŒrlich URIs sind, und mit diesen URIs neue Tripel bilden. Es bleibt nur, den Zugriff auf diese URIs in SPARQL zu ermöglichen. So Stardog.
In Allegrograph einen Zwischenweg. Es ist bekannt, dass die Identifikatoren von Tripeln in Allegrograph , aber bei der Implementierung von Triple-Attributen nicht nach auĂen sichtbar sind. Dennoch ist die formale Semantik noch weit entfernt. Bemerkenswert ist, dass die Attribute von Tripeln keine URIs sind und die Werte dieser Attribute ebenfalls nur Literale sein können. Die AnhĂ€nger der LPG erhalten genau das, was sie wollten. In einem eigens entwickelten NQX-Format sieht ein Beispiel, Ă€hnlich dem oben fĂŒr RDF*, so aus:
:bob :marriedTo :alice {"since" : "2013-09-13"}V.2. Abfragesprachen
Nachdem LPG in irgendeiner Form auf Modellebene unterstĂŒtzt wurde, muss es möglich sein, Abfragen an Daten in einem solchen Modell zu stellen.
- Blazegraph unterstĂŒtzt fĂŒr Abfragen an RDF* und . Eine Anfrage in SPARQL* sieht so aus:
SELECT * { <> :since ?since }- AnzoGraph unterstĂŒtzt auch und plant, weiterhin zu unterstĂŒtzen , die Abfragesprache in Neo4j.
- Stardog bietet ein eigenes von SPARQL an und Gremlin. Um in SPARQL die URI eines Tripels und "Meta-Informationen" zu erhalten, kann folgende Konstruktion verwendet 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, wĂ€hrend sie LPG nicht unterstĂŒtzte, jedoch wurde dies in Version 8.0 oder 8.1 eingestellt.
VI. VerschÀrfung der Lizenzen
In letzter Zeit gab es keine ErgĂ€nzungen im Schnittpunkt zwischen "triplestore of choice" und "open source triplestore". Neuen RDF-Speichern mit offenem Quellcode fehlen noch die Eigenschaften, um eine gute Wahl fĂŒr den tĂ€glichen Gebrauch zu sein, und der Quellcode neuer RDF-Speicher, die genutzt werden möchten (wie AnzoGraph), ist geschlossen. Man könnte sogar von RĂŒckgĂ€ngen sprechenâŠ
NatĂŒrlich wird Open Source nicht geschlossen, aber einige Open-Source-Repositories werden zunehmend nicht mehr als wĂ€hlenswert angesehen. Virtuoso, das eine Open-Source-Edition hat, ist meiner Meinung nach von Bugs geplagt. Blazegraph wurde von AWS ĂŒbernommen und bildet die Grundlage fĂŒr Amazon Neptune; nun ist unklar, ob es ĂŒberhaupt noch eine weitere Veröffentlichung geben wird. Bleibt nur noch JenaâŠ
Wenn Open Source jedoch nicht besonders wichtig ist und man es einfach ausprobieren möchte, sieht es auch nicht besser aus als frĂŒher. Zum Beispiel:
- Stardog kostenloses Modell ein (die Testphase wurde allerdings verdoppelt);
- in , wo man frĂŒher einen kostenlosen Basisplan wĂ€hlen konnte, wurde die Registrierung neuer Nutzer ausgesetzt.
Im Allgemeinen wird der Weltraum fĂŒr den durchschnittlichen IT-Nutzer immer unzugĂ€nglicher, seine ErschlieĂung bleibt den Unternehmen vorbehalten.
Quelle: habr.com
