Verwenden SPARQL UPDATELOAD, um Daten in Neptune zu importieren - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden SPARQL UPDATELOAD, um Daten in Neptune zu importieren

Die Syntax des SPARQL UPDATE LOAD Befehls ist in der SPARQL1.1-Aktualisierungsempfehlung angegeben:

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT   –   (Optional) Bewirkt, dass die Operation auch dann erfolgreich ist, wenn bei der Verarbeitung ein Fehler aufgetreten ist.

    Dies kann nützlich sein, wenn eine einzelne Transaktion mehrere Anweisungen enthält, z. B. "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;", und die Transaktion abgeschlossen werden soll, auch wenn einige der entfernten Daten nicht verarbeitet werden konnten.

  • URL of data to be loaded   — (Erforderlich) Gibt eine Remote-Datendatei an, die Daten enthält, die in ein Diagramm geladen werden sollen.

    Die Remote-Datei muss eine der folgenden Erweiterungen haben:

    • .ntfürNTriples.

    • .nqfürNQuads.

    • .trig für Trig.

    • .rdffürRDF/XML.

    • .ttl für Turtle.

    • .n3 für N3.

    • .jsonldfür JSON -LD.

  • INTO GRAPH(named graph into which to load the data)   — (Optional) Gibt den Graphen an, in den die Daten geladen werden sollen.

    Neptune ordnet jedem Triple ein benanntes Diagramm zu. Sie können den standardmäßigen benannten Graphen mithilfe des Fallbacks named-graph URI wie folgt angebenhttp://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph:

    INTO GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>
Anmerkung

Wenn Sie viele Daten laden müssen, empfehlen wir Ihnen, den Neptune Bulk Loader zu verwenden, anstatt. UPDATE LOAD Weitere Informationen zum Massen-Loader finden Sie unter Verwenden des Amazon Neptune Bulk Loaders zum Aufnehmen von Daten.

Sie können mit SPARQL UPDATE LOAD Daten direkt aus Amazon S3 oder aus Dateien laden, die von einem selbst gehosteten Webserver abgerufen wurden. Die zu ladenden Ressourcen müssen sich in derselben Region wie der Neptune-Server befinden, und der Endpunkt für die Ressourcen muss in der erlaubt sein. VPC Informationen zum Erstellen eines Amazon-S3-Endpunkts finden Sie unter Einen Amazon S3 VPC S3-Endpunkt erstellen.

Alles SPARQL UPDATE LOAD URIs muss mit beginnen. https:// Dazu gehört Amazon S3URLs.

Im Gegensatz zum Neptune-Massen-Loader ist ein Aufruf an SPARQL UPDATE LOAD vollständig transaktional.

Laden von Dateien direkt von Amazon S3 in Neptune mit SPARQL UPDATE LOAD

Da Neptune es Ihnen nicht erlaubt, bei der Verwendung eine IAM Rolle an Amazon S3 zu übergeben SPARQL UPDATELOAD, muss entweder der fragliche Amazon S3-Bucket öffentlich sein oder Sie müssen ein vorsigniertes Amazon S3 URL in der Abfrage verwenden. LOAD

Um eine vorsignierte Datei URL für eine Amazon S3 S3-Datei zu generieren, können Sie einen AWS CLI Befehl wie diesen verwenden:

aws s3 presign --expires-in (number of seconds) s3://(bucket name)/(path to file of data to load)

Anschließend können Sie das vorsignierte Ergebnis URL in Ihrem LOAD Befehl verwenden:

curl https://(a Neptune endpoint URL):8182/sparql \ --data-urlencode 'update=load (pre-signed URL of the remote Amazon S3 file of data to be loaded) \ into graph (named graph)'

Weitere Informationen finden Sie auf der Seite zum Thema Authentifizieren von Anforderungen: Verwenden von Abfrageparametern. Die Boto3-Dokumentation zeigt, wie ein Python-Skript verwendet wird, um ein vorsigniertes zu generieren. URL

Außerdem muss der Inhaltstyp der Dateien, die geladen werden sollen, korrekt eingestellt sein.

  1. Sie legen den Inhaltstyp von Dateien beim Hochladen in Amazon S3 mithilfe des Parameters -metadata wie folgt fest:

    aws s3 cp test.nt s3://bucket-name/my-plain-text-input/test.nt --metadata Content-Type=text/plain aws s3 cp test.rdf s3://bucket-name/my-rdf-input/test.rdf --metadata Content-Type=application/rdf+xml
  2. Vergewissern Sie sich, dass die Medientyp-Informationen tatsächlich vorhanden sind. Führen Sie Folgendes aus:

    curl -v bucket-name/folder-name

    Die Ausgabe dieses Befehls sollte die Medientyp-Informationen anzeigen, die Sie beim Hochladen der Dateien festlegen.

  3. Anschließend können Sie diese Dateien mit dem Befehl SPARQL UPDATE LOAD in Neptune importieren:

    curl https://your-neptune-endpoint:port/sparql \ -d "update=LOAD <https://s3.amazonaws.com/bucket-name/my-rdf-input/test.rdf>"

Die obigen Schritte funktionieren nur für einen öffentlichen Amazon S3 S3-Bucket oder für einen Bucket, auf den Sie mithilfe eines vorsignierten Amazon S3 URL in der LOAD Abfrage zugreifen.

Sie können auch einen Web-Proxy-Server einrichten, um Dateien aus einem privaten Amazon-S3-Bucket zu laden, wie unten gezeigt:

Verwenden eines Webservers zum Laden von Dateien in Neptune mit SPARQL UPDATE LOAD
  1. Installieren Sie einen Webserver auf einem Computer, auf dem VPC Neptune und die zu ladenden Dateien gehostet werden. Bei Verwendung von Amazon Linux könnten Sie Apache beispielsweise wie folgt installieren:

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. Definieren Sie die MIME Art (en) des RDF Dateiinhalts, den Sie laden möchten. SPARQLverwendet den vom Webserver gesendeten Content-type Header, um das Eingabeformat des Inhalts zu bestimmen. Sie müssen daher die entsprechenden MIME Typen für den Webserver definieren.

    Angenommen, Sie verwenden die folgenden Dateierweiterungen zum Identifizieren von Dateiformaten:

    • .ntfürNTriples.

    • .nqfürNQuads.

    • .trig für Trig.

    • .rdffürRDF/XML.

    • .ttl für Turtle.

    • .n3 für N3.

    • .jsonldfür JSON -LD.

    Wenn Sie Apache 2 als Webserver verwenden, würden Sie die Datei /etc/mime.types bearbeiten und die folgenden Typen hinzufügen:

    text/plain nt application/n-quads nq application/trig trig application/rdf+xml rdf application/x-turtle ttl text/rdf+n3 n3 application/ld+json jsonld
  3. Vergewissern Sie sich, dass die Zuordnung MIME vom Typ -type funktioniert. Sobald Ihr Webserver betriebsbereit ist und Sie RDF Dateien in den Formaten Ihrer Wahl hosten, können Sie die Konfiguration testen, indem Sie von Ihrem lokalen Host eine Anfrage an den Webserver senden.

    Sie können beispielsweise eine Anfrage wie z. B. die Folgende senden:

    curl -v http://localhost:80/test.rdf

    Anschließend sollten Sie in einer detaillierten Ausgabe von curl eine Zeile ähnlich der Folgenden sehen:

    Content-Type: application/rdf+xml

    Daran ist zu erkennen, dass die Zuweisung des Inhaltstyps erfolgreich definiert wurde.

  4. Sie sind jetzt bereit, Daten mit dem SPARQL UPDATE folgenden Befehl zu laden:

    curl https://your-neptune-endpoint:port/sparql \ -d "update=LOAD <http://web_server_private_ip:80/test.rdf>"
Anmerkung

Die Verwendung von SPARQL UPDATE LOAD kann eine Zeitüberschreitung auf dem Webserver auslösen, wenn die zu ladende Quelldatei groß ist. Neptune verarbeitet die Daten der Datei, während sie hinein gestreamt werden. Für eine große Datei kann dies den auf dem Server konfigurierten Zeitüberschreitungswert überschreiten. Dies wiederum kann dazu führen, dass der Server die Verbindung schließt, was zu der folgenden Fehlermeldung führen kann, wenn Neptune im Stream auf ein unerwartetes Ereignis EOF stößt:

{ "detailedMessage":"Invalid syntax in the specified file", "code":"InvalidParameterException" }

Wenn Sie diese Meldung erhalten und nicht annehmen, dass Ihre Quelldatei ungültige Syntax enthält, versuchen Sie, die Zeitüberschreitungseinstellungen auf dem Webserver zu erhöhen. Sie können das Problem auch diagnostizieren, indem Sie Debug-Protokolle auf dem Server aktivieren und nach Zeitüberschreitungen suchen.