2016-05-29 26 views
1

Ich benutze Virtuoso. Es ist auf einem Server installiert. Ich versuche ein großes RDF-Diagramm von meinem Virtuoso zu entfernen. Es enthält 2.590.994.053 Tripel. Ich habe versucht, das Diagramm mit dem folgenden Befehl zu löschen.Virtuoso Large RDF Graph Entfernung

Aber nach dem Ausführen für eine lange Zeit gibt mir Virtuoso folgenden Fehler.

*** Error 08S01: [Virtuoso Driver]CL065: Lost connection to server at line 6 of Top-Level:SPARQL DROP SILENT GRAPH <http://ndssl.bi.vt.edu/chicago/>

Dies löschen Befehl auch meinen Virtuoso-Server herunter. Ich versuche es auch mit SPARQL CLEAR Befehl. Nach einer langen Laufzeit wird es ebenfalls beendet.

BTW, Ich habe Speichergröße auf 128 GB erhöht und legen Sie die folgenden Konfigurationswerte. Es funktioniert jedoch nicht.

NumberOfBuffers   = 10900000 
MaxDirtyBuffers   = 8000000 
MaxCheckpointRemap  = 650000000 

Bitte lassen Sie mich wissen, wie kann ich diese große Grafik von meinem Virtuoso triple Speicher entfernen. Ich habe auch einige andere Graphen in Virtuoso. Ich möchte diese nicht entfernen.

+1

Bitte fragen Sie ein solches Tool bestimmte Frage auf der Virtuoso-Mailingliste. – AKSW

+0

Wie @AKSW vorschlägt, werden Virtuoso-spezifische Fragen oft am besten an die [Virtuoso Users Mailingliste] (https://lists.sourceforge.net/lists/listinfo/virtuoso-users/) oder das [OpenLink Support Forum] weitergeleitet. (http://boards.openlinkssw.com/support/index.php). (ObDisclaimer: Ich arbeite für [OpenLink Software] (http://www.openlinkssw.com/), Produzent von [Virtuoso] (http://virtuoso.openlinksw.com/).) Bitte beachten Sie die folgenden Dokumente: [Wie kann ich Löschen von Diagrammen, die eine große Anzahl von Tripeln enthalten, aus dem Virtuoso Quad Store?] (http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtTipsAndTricksGuideDeleteLargeGraphs) – TallTed

Antwort

1

Wie in How can I delete graphs containing large numbers of triples from the Virtuoso Quad Store? dokumentiert -

standardmäßig triple Deletion wird als Teil einer Transaktion ausgeführt wird, die in einem Speicher gespeichert wird, bis der Vorgang abgeschlossen ist, und in die Datenbank übernommen. Während eines typischen Serverbetriebs kann das Löschen eines oder mehrerer Graphen mit einer großen Anzahl von Tripeln (im Allgemeinen Millionen oder mehr) den verfügbaren Speicher bis zu dem Punkt verbrauchen, an dem die Operation nicht abgeschlossen werden kann, und daher können die Graphen nicht gelöscht werden.

Solche großen Graphen können gelöscht werden, indem der Transaktionsprotokollmodus vor dem Löschen der Graphen oder Tripel auf autocommit geändert wird. Dies ist leicht mit der Virtuoso log_enable() Funktion mit den Einstellungen log_enable(3,1) möglich.

auf seinem eigenen, vor dem Löschvorgang über iSQL (entweder Befehlszeile oder der Leiter variant) genannt werden, Diese Funktion kann wie gezeigt:

auch
SQL> SPARQL CLEAR GRAPH <graph-name>;

log_enable()SQL> log_enable(3,1); kann als ein in einer SPARQL/Update-Abfrage spezifiziertes Pragma aufgerufen werden (Anmerkung: Diese Abfrage wird für die Ausführung über die SPARQL-Schnittstelle geschrieben; wenn sie über eine SQL-Schnittstelle ausgeführt wird, muss das Schlüsselwort SPARQL vorangestellt werden):

DEFINE sql:log-enable 3
CLEAR GRAPH <graph-name>

Triples können auch direkt aus der RDF_QUAD Tabelle über SQL gelöscht werden, beachten Sie jedoch, dass diese Methode wird keine Freitextindexdaten entfernen, die mit dem Graphen verbunden sein könnten, die CLEAR GRAPH ... automatisch tun würde. Die SQL-Operation würde wie folgt aussehen:

SQL> log_enable(3,1);
SQL> DELETE FROM rdf_quad WHERE g = iri_to_id ('http://mygraph.org');