2016-11-07 1 views
1

Gemäß the GraphDB documentation ist es möglich, direkt mit der zugrunde liegenden RDF4J-Datenbank zu programmieren. Es widerspricht meiner Intuition, dass auf dieselben Datenbankdateien gleichzeitig von zwei separaten Anwendungen zugegriffen werden kann. Wird dies korrekt gehandhabt, einschließlich gleichzeitiger Schreibvorgänge?Kann eine Anwendung direkt gegen die zugrunde liegende RDF4J-Datenbank von GraphDB programmieren?

Ich glaube, GraphDB verwendet eine ältere Sesame 2.9 Version. Wurde das Dateiformat mit der neuesten Version von RDF4J 2.1 geändert? Oder muss ich stattdessen diese ältere Sesame-Version verwenden?

Ich gehe davon aus, dass, wenn alles oben genannte korrekt ist, es einen großen Leistungsbonus im Vergleich zu HTTP-Konnektivität gibt. Gibt es Testergebnisse, die dies unterstützen?

Antwort

1

Ich glaube, GraphDB verwendet eine ältere Sesame 2.9 Version. Hat sich die Datei Format mit der neuesten Version RDF4J 2.1 geändert? Oder muss ich stattdessen diese ältere Sesame-Version verwenden?

Sesam 2.9 verwendet immer noch Java 7, Sesam 4 und RDF4J Java 8

Das Dateiformat nicht ändern verwenden, aber die Programmierung API geändert ziemlich viel zwischen Sesame2 und 4 so, wenn GraphDB nutzt wirklich Sesam 2.9 als Sie müssen dieselbe Version verwenden.

für weitere Informationen auch http://docs.rdf4j.org/migration/

2

sehen Ich denke, hier ein wenig Verwirrung gibt. GraphDB hat keine "zugrundeliegende RDF4J/Sesame-Datenbank". Umgekehrt ist es umgekehrt: RDF4J/Sesame bietet eine standardisierte Java-Zugriffs-API für RDF-Datenbanken und GraphDB ist eine Implementierung dieser API.

Sie können programmatisch auf einen GraphDB-Speicher zugreifen, indem Sie die Sesame-APIs verwenden, wie in der GraphDB-Dokumentation erläutert. Sesame bietet Möglichkeiten, auf eine lokale Datenbank (eingebettet in Ihre eigene Anwendung) oder eine entfernte Datenbank (über HTTP erreichbar) zuzugreifen. Wie Sie richtig vermutet haben, können Sie nicht lokal mit mehreren Anwendungen auf eine Datenbank zugreifen - wenn mehr als eine Anwendung Zugriff benötigt, sollten Sie beide Anwendungen über HTTP auf die Datenbank zugreifen lassen (oder eine Anwendung direkt mit der anderen Anwendung sprechen, aber dies erfordert a viele benutzerdefinierte Codierung).

Wie für Sesame 2.9 vs RDF4J, wie @ChristophE richtig hingewiesen, gibt es einige Unterschiede (siehe die migration guide für Details), so dass Ihre Version von GraphDB wahrscheinlich noch nicht mit RDF4J arbeiten wird. Die nächste bevorstehende Version von GraphDB wird jedoch Unterstützung für RDF4J haben.

Leistung: Die Kommunikation über HTTP verursacht natürlich eine Leistungseinbuße im Vergleich zum direkten Zugriff. Ich habe keine genauen Zahlen für Sie, fürchte ich. Sowohl Sesame/RDF4J selbst, als auch GraphdB wurden entwickelt, um diesen Nachteil so weit wie möglich zu minimieren, so dass es nicht so schlecht ist, wie Sie vielleicht denken, ganz.

Verwandte Themen